Informatik

Ein einfaches Netz

Jetzt setzt du alles zusammen: Neuronen, Schichten und Aktivierungsfunktionen. Eine Netz-Klasse verbindet mehrere Schichten und führt die Forward Propagation durch.

Die Architektur

Wir bauen ein Netz mit:

  • Eingabeschicht: 2 Neuronen (z.B. Gewicht und Süßigkeit)
  • Verdeckte Schicht: 3 Neuronen, Sigmoid
  • Ausgabeschicht: 1 Neuron, Sigmoid (Wert zwischen 0 und 1)
flowchart LR
    subgraph "Eingabe"
        E1["Neuron 1"]
        E2["Neuron 2"]
    end
    subgraph "Verdeckt (Sigmoid)"
        V1["Neuron 1"]
        V2["Neuron 2"]
        V3["Neuron 3"]
    end
    subgraph "Ausgabe (Sigmoid)"
        A1["Neuron 1"]
    end
    E1 --> V1
    E1 --> V2
    E1 --> V3
    E2 --> V1
    E2 --> V2
    E2 --> V3
    V1 --> A1
    V2 --> A1
    V3 --> A1

Die Netz-Klasse

Bevor du das Programm ausführst: Die Ausgabe ist ein Wert zwischen 0 und 1 (wegen Sigmoid). Nahe 0 bedeutet „Birne", nahe 1 bedeutet „Apfel". Welchen Wert erwartest du für die Eingabe {0.9, 0.7} — eher Apfel oder Birne?

Tipp

Die Eingabe {0.9, 0.7} könnte für einen Apfel stehen (hohes Gewicht, hohe Süßigkeit). Man würde also eine Ausgabe nahe 1 erwarten. Aber Vorsicht: Die Gewichte wurden von Hand gesetzt, nicht gelernt. Schau genau hin, was wirklich herauskommt.

Dieses Netz ist die komplette Architektur eines neuronalen Netzes in Java:

  • Neuron hat Gewichte, Bias und eine Aktivierungsfunktion (Polymorphie).
  • Schicht hat mehrere Neuronen (1:n-Assoziation) und berechnet alle nacheinander.
  • Netz hat mehrere Schichten (1:n-Assoziation) und führt Forward Propagation durch.
  • Die Daten fließen von Schicht zu Schicht — jede Ausgabe wird zur Eingabe der nächsten.

a) Führe das Programm aus. Ist die Ausgabe näher an 0 (Birne) oder an 1 (Apfel)?

b) Probiere eine andere Eingabe: {0.3, 0.2} (kleine Frucht, wenig Süßigkeit). Ändert sich die Ausgabe?

c) Ändere die Gewichte der Ausgabeschicht alle auf positive Werte (z.B. 0.5). Wie verändert sich die Ausgabe für {0.9, 0.7}?

Tipp zu a) und b)

Vergleiche die beiden Ausgaben nicht mit 0 oder 1, sondern miteinander und mit 0.5. Wie weit liegen sie auseinander? Und liegt der „Apfel" wirklich höher als die „Birne"?

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Warum es die verdeckte Schicht braucht

In Lektion 4.2 bist du an XOR gescheitert — ein einzelnes Neuron kann es nicht. Dieses Netz hat dieselbe Architektur wie dein Programm: 2 Eingaben, 3 verdeckte Neuronen, 1 Ausgabe. Damit geht es.

a) Die Gewichte stehen noch auf den Werten aus dem Programm. Schau in die Wahrheitstabelle: Wie viele der vier XOR-Zeilen stimmen?

b) Öffne Gewichte des Netzes und drücke auf XOR-Lösung. Jetzt stimmen alle vier. Sieh dir die beiden ersten verdeckten Neuronen an: Eines rechnet ODER, das andere UND. Welches ist welches?

c) Setze das Gewicht von h2 zur Ausgabe auf einen positiven Wert. Welche Zeile kippt zuerst, und warum gerade die?

d) Drücke auf Zufällig und dann mehrmals erneut. Wie oft kommt XOR dabei heraus? Was sagt dir das darüber, warum Netze trainiert werden müssen?

Tipp zu b)

Stelle die Eingabe nacheinander auf (1 | 0) und (1 | 1) und lies die Werte in h1 und h2 ab. Welches Neuron feuert schon bei einer einzelnen 1, welches erst bei zwei?

Lösung. Erfrage das Passwort bei deiner Lehrkraft.

Selbsttest

Ein einfaches Netz

Teilbare URL erstellen

Abschnitte auswählen