Ein Multi-Layer-Perzeptron (MLP), auch Feedforwardnetz genannt

Werbung
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
Herunterladen