====== Neuronale Netze ====== {{ .:pasted:20260106-103728.png?100}} Viele Probleme sind **nicht linear separierbar**, d.h. man kann keine Trennlinie zwischen den unterschiedlichen Klassen von Punkten finden. In diesen Fällen verschaltet man mehrere Neuronen zu einem **neuronalen Netz**. ===== Beispielaufgabe ===== {{ .:pasted:20260106-113708.png?600}} Konstruieren Sie ein möglichst einfaches neuronales Netz, das als Ausgangswert genau dann 1 liefert, wenn der Eingangsvektor $(x_1\ x_2)$ im grün dargestellten Dreieck liegt (einschließlich der Punkte auf den Dreiecksseiten). Als Aktivierungsfunktionen stehen die Heaviside-Funktion und die Identität zur Verfügung. ==== Lösung ==== === Plan: === Wir konstruieren zunächst * ein Neuron, das genau dann feuert (d.h. 1 ausgibt), wenn der Eingangsvektor auf der Halbebene rechts von der blauen Gerade liegt, * eines, das genau dann feuert, wenn der Eingangsvektor auf der Halbebene unter der roten Gerade liegt und * eines, das genau dann feuert, wenn der Eingangsvektor auf der Halbebene über der gelben Gerade liegt. (Die Geraden werden jeweils mit zur Halbebene gerechnet.) Wir fügen dann ein weiteres Neuron hinzu, das genau dann feuert, wenn die drei anderen Neuronen feuern. Das ist genau dann der Fall, wenn ein Punkt in der Schnittmenge der drei Halbebenen liegt, also im grünen Dreieck. === Los geht's! === Die Halbebene rechts von der blauen Gerade besteht aus genau den Punkten $(x_1/x_2)$, für die gilt, $x_2 \ge -3x_1 + 6$, also $$3x_1 + x_2 - 6 \ge 0$$ Das Neuron, das bei genau diesen Punkten feuert, sieht so aus: {{ .:pasted:20260106-122506.png?200 }} Die Halbebene unter der roten Gerade besteht aus genau den Punkten $(x_1/x_2)$, für die gilt, $x_2 \le -0,4x_1 + 4$, also $$-0,4x_1 - x_2 + 4 \ge 0$$ Das Neuron, das bei genau diesen Punkten feuert, sieht so aus: {{ .:pasted:20260106-122808.png?200 }} Die Halbebene über der gelben Gerade besteht aus genau den Punkten $(x_1/x_2)$, für die gilt, $x_2 \ge 2$ Das Neuron, das bei genau diesen Punkten feuert, sieht so aus: {{ .:pasted:20260106-125703.png?200 }} Wir ergänzen diese drei Neuronen jetzt noch um * eine **Eingabeschicht**, die die Daten verteilt (beachten Sie die **Identität als Aktivierungsfunktion**!) * ein Neuron in der **Ausgabeschicht**, das genau dann feuert, wenn alle drei Neuronen der Zwischenschicht feuern. {{ .:pasted:20260106-125733.png?700 }} === Probe === Der Punkt $(1,5/3)$ liegt offenbar im grünen Dreieck. Wir geben ihn ins neuronale Netz und führen eine **forward propagation** durch, um die Ausgabe zu berechnen. * Ausgabe des blauen Neurons: $H(3\cdot x_1 + 1\cdot x_2 - 6) = H(1,5) = 1$ * Ausgabe des roten Neurons: $H(-0,4\cdot x_1 - 1\cdot x_2 - (-4)) = H(0,4) = 1$ * Ausgabe des gelben Neurons: $H(1\cdot x_2 - 2) = H(1) = 1$ * Ausgabe des Neurons in der Ausgabeschicht: $H(1 \cdot 1 + 1 \cdot 1 + 1 \cdot 1 - 3) = H(0) = 1$ **Passt!** Der Punkt $(4/3)$ liegt offenbar **nicht** im grünen Dreieck. Wir geben ihn ins neuronale Netz und führen eine **forward propagation** durch, um die Ausgabe zu berechnen. * Ausgabe des blauen Neurons: $H(3\cdot x_1 + 1\cdot x_2 - 6) = H(9) = 1$ * Ausgabe des roten Neurons: $H(-0,4\cdot x_1 - 1\cdot x_2 - (-4)) = H(-0,6) = 0$ * Ausgabe des gelben Neurons: $H(1\cdot x_2 - 2) = H(1) = 1$ * Ausgabe des Neurons in der Ausgabeschicht: $H(1 \cdot 1 + 1 \cdot 0 + 1 \cdot 1 - 3) = H(-1) = 0$ **Passt!** Erinnerung: $H(x)$ ist die **Heavyside-Funktion**: $H(x) = \begin{cases} 0 & \text{für } x < 0 \\ 1 & \text{für } x \ge 0 \end{cases}$. Ein **neuronales Netz** besteht aus einer Vielzahl von Neuronen, die üblicherweise in **Schichten** angeordnet sind: * In der **Eingabeschicht** befinden sich genau so viele Neuronen wie es Eingabedaten gibt. Die Neuronen nutzen die Identität als Aktivierungsfunktion und 0 als Schwellenwert, sodass sie die Daten nur unverändert "durchleiten". * Es folgen ein- oder mehrere **Zwischenschicht(en)** (auch **verdeckte Schichten** genannt). * In der **Ausgabeschicht** gibt es üblicherweise so viele Neuronen, wie es Klassen an Daten gibt, die unterschieden werden sollen. ===== Aufgabe 2 ===== Konstruieren Sie ein möglichst einfaches neuronales Netz, das als Ausgangswert genau dann 1 liefert, wenn der Eingangsvektor $(x_1\ x_2)$ im grün dargestellten Dreieck liegt (einschließlich der Punkte auf den Dreiecksseiten). Als Aktivierungsfunktionen stehen die Heaviside-Funktion und die Identität zur Verfügung. {{ .:pasted:20260106-133017.png?700 }} ===== Aufgabe 3 ===== Diskutieren Sie für die folgenden Problemstellungen, * welche Eingangsdaten benötigt werden, * welche Aktivierungsfunktion sich für die Neuronen der Ausgabeschicht eignet, * wie viele Eingangs- bzw. Ausgangsneuronen das neuronale Netz haben sollte und * wie die Eingabe- und Ausgabedaten kodiert werden könnten. Hier die Problemstellungen * Vorhersage der Temperatur an einem einzelnen Ort um 10:00 Uhr des nächsten Tages (Wetterbericht) * Vorhersage des Rohölpreises um 10:00 Uhr des nächsten Tages * Steuerung des Lenkrades eines autonomen Fahrzeugs * Einteilung von Äpfeln in verschiedene Güteklassen [[.aufgabe3:start|Lösungsvorschlag]]