Mehrschichtige Neuronale Netze

Werbung
Mehrschichtige Neuronale Netze
Delta-Regel
Back-Propagation of Errors
Back-propagation through time /
Rekurrente Netze
Die “XOR-Problematik”
AND
XOR
2
2
1
1
O1
w0  1.5
w1  1
1
w2  1
2
?
Einfache Folgerungen:
• Es gibt Probleme, die nur mit mehrschichtigen
Netzen gelöst werden können
• Es muß noch erörtert werden, wie dies im
Einzelnen geschehen kann
Ein neuronales Netz, mit dem man XOR lösen könnte:
O1
W11
W13
W12
V1
V2
V3  1
w22
w11
w21
w23
w12
w13
1
2
3  1
…fehlen nur noch die richtigen Gewichte.
Die Idee von Back-Propagation
• Das Netz soll “selbstständig” lernen, seine
Gewichte anzupassen
• Dieses Anpassen der Gewichte erfolgt so
lange, bis die gewünschte Funktion erlernt
ist
Wie sieht das ungefähr aus?
1)
2)
Backward Propagation of Errors
Forward Propagation of Input Signals
Was passiert im Netz?
h jµ   w jkkµ
(6.1)


Vjµ  g(h jµ )  g   w jkkµ 
 k

(6.2)


hiµ   WijVjµ   Wij g   w jkkµ 
 k

j
j
(6.3)





µ
µ
O  g(h )  g  WijVj   g  Wij g   w jkk  
 k

 j

 j
(6.4)
k
µ
i
µ
i
Berechnungen im 1. Layer
O1
W11
h jµ   w jkkµ
k
 
W12
Vjµ  g h jµ
V1
V2
w11
w22
w21
1
h10  w11 10  w12 20
(6.1)
w12
2
h20  w21 10  w22 20
(6.2)
Berechnungen im 2. Layer
hiµ  WijVjµ
O1
(6.3)
j
W11
W12
h10  W11 V10  W12 V20
V1
V2
w11
w22
w21
1
w12
2
 
Oiµ  g hiµ
(6.4)
Gradientenverfahren
Eine neue Fehler-Funktion
1
µ
µ 2
E w     i  Oi 
2 µi
(6.5)
wird zu:



1  µ
µ
E w     i  g   Wij g   w jkk   
 k
  
2 µi 
 j
2
(6.6)
Gradienten-Berechnung (1)
E
Wij  
Wij
 
   i  Oi  g hi Vj

(6.7)
   iVj

 i  g hi  i  Oi 
(6.8)
Gradienten-Berechnung (2)
E
w jk  
w jk

E Vj
 V  w

j
jk
 
 
   i  Oi  g hi Wij g h j k
i
 
   iWij g h j k
i
(6.9)
   j k

 j  g h j  Wij i
i
(6.10)
Die allgemeine Back-Propagation
Update-Regel
w pq  

 output  Vinput
(6.11)
patterns
Delta für Hidden-to-output Neuronen:
 i  g hi  i  Oi 
(6.8)
Delta für Input/Hidden-to-hidden Neuronen
 j  g h j  Wij i
i
(6.10)
Vorgehensweise für BackPropagation
1. Wir initialisieren die Gewichte mit kleinen
Zufallszahlen….
2. …wählen ein Muster als Eingabe….
3. …berechnen die Auswirkungen der Eingabe auf
das Netz…
4. …und erhalten schließlich die Abweichung der
Ausgabe vom gewünschten Wert (im Idealfall
natürlich = 0 !)
Der eigentliche Clou:
5. Wir berechnen die Fehler der anderen
Gewichte (z.B. input-to-hidden), indem
wir sie von dem Fehler der Ausgabe
ableiten!
6. Nachdem wir alle Fehler berechnet haben,
updaten wir alle Gewichte….
7. …und machen mit dem nächsten Pattern
bei Step 2 weiter. :-)
Genaueres zu den Steps 4) und 5) :
“Backward propagation of errors”
1
O1
W11
 iM  g hiM  iµ  Vi M 
 im1  g him1  w mji  mj
W12
j
V1
V2
w11
w22
w12
1
w21
2
Was macht diese Vorgehensweise so
vorteilhaft?
• Verwendet man eine günstige Aktivierungsfunktion,
muss man keine Ableitungen mehr berechnen!
• Günstig heißt in diesem Fall, man kann die
Ableitung der Funktion durch die Funktion selbst
darstellen (z.B. Sigmoid oder tanh)
• Mit bekanntem Output O=g(h) ist dann auch die
Ableitung bekannt
Nochmal ins Detail:
Der Output ist uns bekannt und die Delta-Regel ebenso:
 
Oiµ  g hiµ
 iµ  g hiµ  iµ  Oiµ 
Wir verwenden eine sigmoide Funktion, deren Ableitung g’ man
wieder mit g beschreiben kann:
1
g h  2 g h 1 g h
g h   f h  
2  h
1 e
Mit 1/2 wird aus
 iµ  g hiµ  iµ  Oiµ 
 iµ  Oiµ 1  Oiµ  iµ  Oiµ 
Optimierungsmöglichkeiten für
den Algorithmus
•
•
•
•
Verwendung von anderen Fehler-Funktionen
Momentum-Terms
Verschiedene andere Minimierungsverfahren
Vermeidung von lokalen Minima
Beispiele für die Anwendung von
Backprop
•
•
•
•
•
Verallgemeinerung von XOR (Parity)
Sonar: Zielerkennung
Navigation eines Fahrzeugs
Bildkomprimierung
Erkennung von handgeschriebenen PLZNummern
• Spracherkennung (nur sehr eingeschränkt)
Rekurrente Back-Propagation
• Erweiterung des Back-PropagationAlgorithmus auf beliebige Netze
• Bedingung: das Netz muss in einen stabilen
Zustand konvergieren
Zwei Beispiele:
Aus eins wird zwei


dVi

 Vi  g   wijVj  i 
dt
 j


 
dYi
 Yi   g hp w piY p  Ei
dt
p
Wie funktioniert BackPropagation bei rekurrenten
Netzen?
• Pattern auswählen, Eingaben ins Netz “schicken”
• Warten, bis das Netz in einen stabilen Zustand
konvergiert
• Berechnung der Ausgabe-Fehler
• Fehler ins zugehörige error-propagation-Netz
“schicken” und warten bis dieses in einen stabilen
Zustand konvergiert
• Mit den Ausgaben dieses Netzes die neuen
Gewichte berechnen
Lernen von zeitlichen Abfolgen
• Sequenzerkennung
• Reproduktion von Mustern
• Zeitliche Zuordnung
“Back-Propagation through time”
• Modellierung eines voll rekurrenten Netzes durch
ein reines Feed-Forward-Netz
• Nur beim Umgang mit kleinen Sequenzen sinnvoll
• Für jeden Zeitschritt t = 1, 2, …, T werden die
Einheiten des rekurrenten Netzes dupliziert (also
T-mal)
• Im Feed-Forward-Netz werden in jedem Layer die
Original-Gewichte verwendet
Ein konkretes Beispiel:
V14
w12
w21
w11
V13
w12
w11
V1
V2
w21
w22
w22
w12
w21
w22
w12
w21
t=2
V22
w11
V11
t=3
V23
w11
V12
t=4
V24
w22
V21
t=1
Was bringt das?
• Das resultierende Feed-Forward-Netz kann
mit Back-Propagation trainiert werden
• Hat man einmal die Gewichte berechnet,
kann man wieder das rekurrente Netz
benutzen
Resumé
• Back-Propagation ist eine interessante Methode
um “Supervised Learning” zu ermöglichen
• Back-Propagation ist allerdings nur bei stark
eingegrenzten Problemfeldern effizient einsetzbar
• Es gibt Bereiche, in denen Back-Propagation
trotzdem nicht mit “herkömmlichen” Algorithmen
mithalten kann
Herunterladen