Kurs:Maschinelles Lernen/Neuronale Netze trainieren

Aus testwiki
Zur Navigation springen Zur Suche springen

Vorherige Seite: K4 - Grundidee der Neuronalen Netze
Nächste Seite : K5 - k-Means Algorithmus

Gradientenabstieg

Auch zum Trainieren Neuronaler Netze kann das Empirische Risiko R^ bei einem vorliegenden Datensatz mit Hilfe des Gradientenabstiegs trainiert werden. Da die Gewichte der einzelnen Schichten, die Parameter, die varriert werden, darstellen, müssen die Gradienten bzgl. dieser bestimmt werden. Da nun aber das Neuronale Netz durch eine Verkettung von Funktionen beschrieben wird, ist hierfür vor allem die allgemeine Kettenregel

f(x(t))dfdti=k=1dfxkdxkdti

benötigt.

Back Propagation

Um dies an einem Beispiel zu verdeutlichen wird ein Neuronales Netz mit L=2 Schichten betrachtet. In der ersten Schicht wird ein zweidimensionaler Vektor angenommen und auf einen zweidimensionalen Vektor abgebildet S1:22, während die zweite und letzte Schicht einen einen zweidimensionalen Vektor entgegen nimmt und auf ein Zahl x(2) abbildet S2:2.

Zunächst lässt sich der Gradient bzgl. des eindimensionalen Verzerrungswvektors w0(2) der letzten Schicht bestimmen. Die Abhängigkeit von diesem Vektor ist im empirischen Risiko im Ausgabewert x(2) vorhanden, so dass zunächst

dR^dw0(2)=R^x(2)dx(2)dw0(2)

bestimmt werden kann. Da sich x(2) durch

x(2)=ϕ2(z(2))

mit

z(2)=W_(2)x(1)+w0(2)

ausdrücken lässt, kann so der Term

dx(2)dw0(2)=dx(2)dz(2)dz(2)dw0(2)=ϕ2(z(2))

gefunden werden. In diesem speziellen Fall lässt sich dieser Term zwar allein durch die Ableitung der Aktivierungsfunktion bestimmen, es soll hier aber zunächst der allgemeinere Ausdruck

dR^dw0(2)=R^x(2)dx(2)dz(2)dz(2)dw0(2)=R^x(2)ϕ'2(z(2))

verwendet werden.

Da die Schicht S2 einen zweidimensionalen Vektor auf eine Zahl abbildet, können die Gewichte durch einen Vektor w(2) dargestellt werden. Durch eine ähnliche Rechnung, kann so

dR^dwi(2)=R^x(2)dx(2)dz(2)dz(2)dwi(2)=R^x(2)ϕ'2(z(2))xi(1)

gefunden werden. Hierin fällt auf, dass die ersten beiden Terme bereits für den Gradient bzgl. w0(2) bestimmt wurden. Das heißt, wird der Gradient bzgl. w0 ermittelt und die ersten beiden Terme berechnet, so müssen diese nicht erneut für den Gradienten bzgl. wi(2) bestimmt werden. Auf diese Weise lassen sich Ressourcen sparen.

In der Schicht S1 wird ein zweidimensionaler auf einen zweidimensionalen Vektor abgebildet. Es muss also ein Verzerrungsvektor w0(1) betrachtet werden. So kann für den Gradient bzgl. dieses Vektors zunächst der Ausdruck

dR^dw0,i(1)=R^x(2)dx(2)dz(2)dz(2)dw0,i(1)

gefunden werden. Da z(2) von x(1)=ϕ1(z(1)) und dieses wiederum von den w0,i(1) abhängt, kann dieser Ausdruck weiter auf

dR^dw0,i(1)=R^x(2)dx(2)dz(2)j=12dz(2)dxj(1)k=12dxj(1)dzk(1)dzk(1)dw0,i(1)=R^x(2)ϕ'2(z(2))j=12wj(2)(ϕ1,jzi(1))

umgeformt werden. Auch hieran ist zu erkennen, dass die ersten beiden Terme wieder durch die vorherigen Berechnungen bekannt sind.

Schlussendlich ist noch der Gradient bezüglich der Matrixelemente Wil(1) zu bestimmen. Mit einer Ähnlichen Rechnung, kann hier der Ausdruck

dR^dWil(1)=R^x(2)dx(2)dz(2)j=12dz(2)dxj(1)k=12dxj(1)dzk(1)dzk(1)dWil(1)=R^x(2)ϕ'2(z(2))j=12wj(2)(ϕ1,jzi(1))xl(0)

gefunden werden. Auch hier zeigt sich, bis auf die letzte Ableitung, ist der gesamte Term bekannt.

Mit diesen Erkenntnissen lässt sich ein ressourcenschonendes Verfahren zum Trainieren Neuronaler Netze motivieren:

  • In jedem Schritt, werden die aktuellen Gewichte und Daten verwendet und das Ergebnis des Neuronalen Netzes ausgewertet. Das bedeutet, die Daten werden nach vorne durch das Neuronale Netz gegeben, es wird dementsprechend von einem Forward pass gesprochen. Dabei müssen zwangsläufig für alle Schichten z(l) und x(l) bestimmt werden. Diese werden bereits gespeichert.
  • Danach wird das Neuronale Netz rückwärts durchlaufen und mit den gefundenen Werten für z(l) und x(l) ausgewertet. Die einzelnen Terme werden wieder gespeichert und können für Berechnungen weiterer Terme verwendet werden. Es wird hier von der Back Propagation gesprochen.
  • Sind alle Gradienten bestimmt, kann der Gradientenabstieg durchgeführt werden.