ich war hier: MEErrorBackpropagation

Das Fehlerrückkopplungsnetz


Das Fehlerrückkopplungsnetz (= error backpropagation) ist ein überwachtes Lernverfahren.
Das bedeutet, dass es einen Experten geben muss der zu jedem Eingabemuster die Ausgabe kennt.
Das Netz besteht aus mindestens 2 Schichten die vollständig vernetzt sind.
Das Netz lernt durch ändern der (Kanten-) Gewichte (zwischen den einzelnen Schichten).


A. Aufbau

FRKN Aufbau - Quelle: HS Schmalkalden/Fakultät Informatik

Lernregel Ausgabeschicht:
formel
\Delta \omega_{ij}^{(o)} = \eta o_i^{(h)} * \delta_j^{(o)T}
formel
formel
\eta
formel
- Lernschrittweite
formel
\delta_j^{(o)T}
formel
- Aktivierungsfehler beim empfangenden Neuron
formel
o_i^{(h)}
formel
- Ausgabe des sendendes Neurons
formel
\delta_j^{(o)}
formel

Lernregel versteckte Schicht:
formel
\Delta \omega_{ij}^{(h)} = \eta x_i \delta_j^{(h)T}
formel
formel
\eta
formel
- Lernschrittweite
formel
\delta_j^{(h)T}
formel
- Aktivierungsfehler beim empfangenden Neuron
formel
x_i
formel
-Eingabe (Trainingsmuster)
Zielfunktion: minimiere den mittleren quadratischen Fehler der Ausgabeschicht
formel
E= (\frac 12) \sum_{j=1}^{n_N^{(o)}} \delta_j^{(o)^2}
formel
Dieser Fehler muss immer positiv sein

B. Vorgehensweise:
gegeben sein ein neuronales Netz, eine Eingabe (Trainingsmuster), Ausgabe (des Trainingsmusters vom Experten, diese wird erst bei der Berechnung des Fehlers benötigt)

FRKN 1 - Quelle: HS Schmalkalden/Fakultät Informatik

formel
x= \left\lgroup \matrix{4 \cr 2}\right\rgroup
formel
t=1

1. Gewichte werden (zufällig) initialisiert
formel
\omega^{(h)} = \left\lgroup \matrix{0.11 & 0.17\cr 0.15 & 0.13}\right\rgroup
formel
formel
\omega^{(o)} = \left\lgroup \matrix{0.2 \cr 0.25}\right\rgroup
formel

FRKN 2 - Quelle: HS Schmalkalden/Fakultät Informatik

2. Vorwärtsrechnen
Regeln:
formel
net^{(h)}= \omega^{(h)T} x
formel
formel
net^{(o)}= \omega^{(o)T} o^{(o)}
formel
formel
o^{(h)}= f'_{act}(net^{(h)})
formel
formel
o^{(o)}= f'_{act}(net^{(o)})
formel

Anwenden:
formel
net^{(h)}= \omega^{(h)T} x
formel
formel
net^{(h)}= \left\lgroup \matrix{0.11 & 0.17\cr 0.15 & 0.13}\right\rgroup ^T \left\lgroup \matrix{4 \cr 2}\right\rgroup
formel
formel
net^{(h)}= \left\lgroup \matrix{0.11 & 0.15\cr 0.17 & 0.13} \right\rgroup \left\lgroup \matrix{4 \cr 2}\right\rgroup
formel
formel
net^{(h)}=\left\lgroup \matrix{0.74 \cr 0.94}\right\rgroup
formel

FRKN 3 - Quelle: HS Schmalkalden/Fakultät Informatik

formel
o^{(h)}=f'_{act}(net^{(h)}
formel
formel
f'_{act}(net^{(h)}
formel
, ist die Aktivierungsfunktion des Neurons. In der Praxis bestimmt sie, ob ein Neuron sich aktiviert (feuert) oder nicht. Sie muss differenzierbar sein, also ihre Ableitung darf nicht überall gleich null sein.
In diesem Beispiel soll sie aber keine große Rolle spielen. Zur Vereinfachung, wir die Vereinbarung getroffen, dass die Neuronen immer feuern.

Dadurch ergibt sich:
formel
o^{(h)}=net^{(h)}
formel

Das gilt analog für die Ausgabeschicht:
formel
net^{(o)} = \omega^{(o)T} o^{(h)}
formel
formel
net^{(o)} = \left\lgroup \matrix{0.2 \cr 0.25}\right\rgroup ^T \left\lgroup \matrix{0.74 \cr 0.94} \right\rgroup
formel
formel
net^{(o)}= \left\lgroup \matrix{0.2 & 0.25}\right\rgroup \left\lgroup \matrix{0.74 \cr 0.94} \right\rgroup
formel
formel
net^{(o)} = (0.383)
formel
formel
o^{(o)}=net^{(o)}
formel

FRKN 4 - Quelle: HS Schmalkalden/Fakultät Informatik

3. Fehler berechnen
formel
E= (\frac 12) \sum_{j=1}^{n_N^{(o)}} \delta_j^{(o)^2}
formel
, ist der Gesamtfehler aller Ausgänge. Bei größeren Netzen, würden mehrere Ausgabewerte entstehen, die alle mit der erwarteten Ausgabe des Experten verglichen werden müssen. Der absolute Fehler jedes Ausgabe-Neurons ist dabei
formel
\delta_j^{(o)} = o_j^{(o)}-t_j
formel
.
Anwendung:
In diesem Beispiel gibt es nur einen Ausgabewert.
Daher ist
formel
\delta^{(o)} = o^{(o)}-t
formel
formel
\delta^{(o)} = (0.383) - 1 = -0.617
formel
formel
E=(\frac 12)*(-0.617)^2 = 0.19
formel

E soll minimiert werden.
formel
\delta^{(o)}
formel
soll 0 sein. In der Praxis wird
formel
\delta^{(o)}
formel
nur sehr selten wirklich 0 werden, er sollte aber so nah wie möglich an 0 sein.
4. Lernschrittweite
Die Lernschrittweite ist ein Faktor der angibt, wie stark das neuronale Netz in jedem Schritt adaptiert wird. Sie wird meistens vom Anwender des neuronalen Netzes festgelegt. Es gibt auch Varianten, wo die Lernschrittweite dynamisch oder fortlaufend (periodisch) angepasst wird.
In diesem Beispiel soll
formel
\eta=0.1
formel
sein und sich nicht verändern.
5. Fehler zurückführen
Regel:
formel
\Delta \omega_{ij}^{(o)} = \eta o_i^{(h)} \delta_j^{(o)T}
formel
formel
'\omega^{(o)} = \omega^{(o)} - \Delta \omega_{ij}^{(o)}
formel
formel
'\omega^{(o)} = \omega^{(o)} - \eta o_i^{(h)} \delta_j^{(o)T}
formel

formel
\Delta \omega_{ij}^{(h)} = \eta x_i \delta_j^{(h)}
formel
formel
'\omega^{(h)} = \omega^{(h)} - \Delta \omega_{ij}^{(h)}
formel
formel
'\omega^{(h)} = \omega^{(h)} - \eta x_i \delta_j^{(h)T}
formel
formel
\delta_j^{(h)} = \sum_{i=1} \omega_{ij}^{(o)} \delta_i^{(o)}
formel
formel
'\omega - neues Kantengewicht
formel

Anwendung:
formel
'\omega^{(o)} = \omega^{(o)} - \eta o_i^{(h)} \delta_j^{(o)T}
formel
formel
'\omega^{(o)} = \left\lgroup \matrix{0.2 \cr 0.25}\right\rgroup -0.1 * \left\lgroup \matrix{0.74 \cr 0.94}\right\rgroup * (-0.617)
formel
formel
'\omega^{(o)} = \left\lgroup \matrix{0.2457 \cr 0.308}\right\rgroup
formel

formel
'\omega^{(h)} = \omega^{(h)} - \eta x_i \delta_j^{(h)T}
formel
formel
'\omega^{(h)} = \left\lgroup \matrix{0.11 & 0.17 \cr 0.15 & 0.13}\right\rgroup - 0.1 * \left\lgroup \matrix{4 \cr 2}\right\rgroup * \left\lgroup \matrix{0.2*(-0.617) \cr 0.25*(-0.617)}\right\rgroup^T
formel
formel
'\omega^{(h)} = \left\lgroup \matrix{0.1594 & 0.2317 \cr 0.1747 & 0.1608}\right\rgroup
formel

FRKN 5 - Quelle: HS Schmalkalden/Fakultät Informatik

6. erneut Vorwärtsrechnen mit aktualisierten Gewichten
Wir erinnern uns:
Regel:
formel
net^{(h)}= \omega^{(h)T} x
formel
formel
net^{(o)}= \omega^{(o)T} o^{(o)}
formel
formel
o^{(h)}= f'_{act}(net^{(h)})
formel
formel
o^{(o)}= f'_{act}(net^{(o)})
formel

Anwenden:
formel
net^{(h)}= \omega^{(h)T} x
formel
formel
net^{(h)}= \left\lgroup \matrix{0.1594 & 0.2317 \cr 0.1747 & 0.1608}\right\rgroup^T \left\lgroup\matrix{4 \cr 2}\right\rgroup
formel
formel
net^{(h)}= \left\lgroup \matrix{0.1594 & 0.1747 \cr 0.2317 & 0.1608}\right\rgroup \left\lgroup\matrix{4 \cr 2}\right\rgroup
formel
formel
net^{(h)} = \left\lgroup \matrix{0.9868 \cr 1.2485}\right\rgroup
formel
Wir erinnern uns:
formel
o^{(h)}=net^{(h)}
formel


formel
net^{(o)} = \omega^{(o)T} o^{(h)}=
formel
formel
net^{(o)} = \left\lgroup \matrix{0.2457 \cr 0.308}\right\rgroup ^T \left\lgroup \matrix{0.9868 \cr 1.2485}\right\rgroup
formel
formel
net^{(o)} = \left\lgroup \matrix{0.2457 & 0.308}\right\rgroup \left\lgroup \matrix{0.9868 \cr 1.2485}\right\rgroup
formel
formel
net^{(o)} = \left\lgroup \matrix{0.6270}\right\rgroup
formel
Wir erinnern uns:
formel
o^{(o)}=net^{(o)}
formel

FRKN 6 - Quelle: HS Schmalkalden/Fakultät Informatik

7. aktuellen Fehler berechnen
Wir erinnern uns:
formel
E= (\frac 12) \sum_{j=1}^{n_N^{(o)}} \delta_j^{(o)^2}
formel
formel
\delta^{(o)} = o^{(o)}-t
formel

formel
\delta^{(o)}=(0.627) - 1 = -0.373
formel
formel
E= (\frac 12) * (-0.373)^2 = 0.06956
formel

0.627 ist näher an 1 dran, als 0.383.
Der Fehler ist kleiner geworden, das Netz ist jetzt besser adaptiert.

In der Praxis würde dieser Fehler jetzt wieder zurück gerechnet werden und anschließend wieder vorwärts usw. solange bis, er Null ist oder ein Abbruchkriterium erfüllt ist.
Diese Abbruchkriterien könnten sein, dass der Fehler nah genug an Null ist (Schwellwert) oder dass eine (vorher eingestellte) maximale Anzahl an Durchläufen durchgerechnet worden sind.




Quellen:
https://medium.com/datathings/neural-networks-and-backpropagation-explained-in-a-simple-way-f540a3611f5e
https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/
Diese Seite wurde noch nicht kommentiert.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki