Modell eines MLP Ein Multi-Layer-Perzeptron (MLP), auch Feedforwardnetz genannt, besteht aus Schichten von Neuronen mit Verbindungen von jedem Neuron einer Schicht, außer der letzten, zu allen Neuronen der nächsten Schicht. Die erste Schicht ist die Schicht der Eingabeneuronen, die letzte Schicht die der Ausgabeneuronen, Schichten dazwischen heißen verborgene Schichten („hidden layers“). Hat ein MLP n Eingabeneuronen und m Ausgabeneuronen, so berechnet es eine Funktion f : ℜ n → ℜ m , die wir als Nächstes definieren. Das Gewicht der Verbindung von Neuron a in Schicht s zu Neuron b in Schicht s+1 notieren wir durch wba, der Schwellwert von Neuron a wird mit θa bezeichnet, seine Aktivierungsfunktion (beispielsweise die Sigmoide) wird mit fa bezeichnet. Merke: wba = Gewicht der Verbindung zu Neuron b von Neuron a. a wba b Diese Notation für die Gewichte ist die in der Literatur gebräuchliche. Dynamik eines MLP (Vorwärtswelle) Bei Eingabe eines n-dimensionalen reellen Vektors x wird in einer Vorwärtswelle (also induktiv von links nach rechts über die Schichten) der Nettoinput netb eines jeden Neurons b mit Ausnahme der Eingabeneuronen und der Ausgabewert ya eines jeden Neurons a • Für jedes Eingabeneuron a ist ya = xa , es wird also der angelegte Eingabewert selbst unverändert ausgegeben. • Für jedes Neuron b, das kein Eingabeneuron ist, ist sein Nettoinput die gewichtete Summe aller Ausgabeneuronen der vorigen Schicht: netb = • ∑w ba a in Schicht vor Neuron b ya − θ b Für jedes Neuron b, das kein Eingabeneuron ist, ist sein Ausgabewert yb = f b (netb ) Wollen wir die funktionale Abhängigkeit der Werte netb und ya von x und w, θ hervorheben, so schreiben wir statt netb und ya auch netb(x) oder netb(x,w,θ) und ya(x) oder ya(x,w,θ). Training eines MLP (Rückwärtswelle) Quadratischer Fehler auf einem festen Trainingspaar (x,d) (als Funktion aller Gewichte w) error ( w) = error ( w, x, d ) = 1 ( yb ( w) − d b ) 2 ∑ 2 Ausgabe − neuronen b Datenfluss a b wba netb ya → yb δ-Regel Δw = −η∇error ( w) Δwba = −η ∂error ( w) ∂wba ∂error ( w) ∂error ( w) ∂netb = δ b ⋅ ya ⋅ = ∂wba ∂netb ∂wba mit δb = ∂error ( w) ∂netb error(w) Die Veränderung von Gewicht wba ist also gleich dem negativen Produkt aus der Aktivierung ya des präsynaptischen Neurons a und einem Fehlerterm δb des postsynaptischen Neurons b. Dies ist das Schema, das wir bereits als δ-Regel kennen gelernt haben. Nun sind die Fehlerterme δb zu berechnen. Die geht in einer Rückwärtswelle von den Ausgabeneuronen zurück zu den Eingabeneuronen. • Falls b ein Ausgabeneuron ist, so ergibt sich: δb = • ∂error ( w) ∂error ( w) ∂yb = ⋅ = ( yb − db ) ⋅ f b ' (netb ) ∂netb ∂yb ∂netb Falls b kein Ausgabeneuron ist, so ergibt sich unter Annahme, dass für alle Neuronen c in der Schicht rechts von der Schicht von Neuron b der Fehlerterm δc bereits berechnet ist: δb = ∂error ( w) ∂error ( w) ∂netc ∂netc ∂yb = ⋅ = δc ⋅ ⋅ = f b ' (netb ) ∑ ∑ ∑ δ c wcb ∂netb ∂netc ∂netb alle Neuronen c ∂yb ∂netb alle Neuronen c alle Neuronen c in Schicht rechts von Neuron b in Schicht rechts von Neuron b in Schicht rechts von Neuron b Datenfluss b c wcb netb → yb netc → yc error(w) Für die Sigmoide f als Aktivierungsfunktion sehen die Rekursionsformeln wegen f’(net) = f(net)(1 – f(net) = y(1 – y) wie folgt aus: • Für Ausgabeneuronen b: δ b = yb (1 − yb )( yb − d b ) • Für sonstige Neuronen b: δ b = yb (1 − yb ) ∑δ w c cb alle Neuronen c in Schicht rechts von Neuron b