Die Verwendung von Derivaten in neuronalen Netzen wird für den Trainingsprozess als Backpropagation bezeichnet . Diese Technik verwendet Gradientenabstieg , um einen optimalen Satz von Modellparametern zu finden, um eine Verlustfunktion zu minimieren. In Ihrem Beispiel müssen Sie die Ableitung eines Sigmoid verwenden, da dies die Aktivierung ist, die Ihre einzelnen Neuronen verwenden.
Die Verlustfunktion
Die Essenz des maschinellen Lernens besteht darin, eine Kostenfunktion so zu optimieren, dass wir eine Zielfunktion entweder minimieren oder maximieren können. Dies wird typischerweise als Verlust- oder Kostenfunktion bezeichnet. Normalerweise möchten wir diese Funktion minimieren. Die Kostenfunktion ordnet einen gewissen Abzug zu, der auf den resultierenden Fehlern beim Durchleiten von Daten durch Ihr Modell in Abhängigkeit von den Modellparametern basiert.C
Schauen wir uns das Beispiel an, in dem wir versuchen zu kennzeichnen, ob ein Bild eine Katze oder einen Hund enthält. Wenn wir ein perfektes Modell haben, können wir dem Modell ein Bild geben und es wird uns sagen, ob es eine Katze oder ein Hund ist. Kein Modell ist jedoch perfekt und es wird Fehler machen.
Wenn wir unser Modell so trainieren, dass es auf die Bedeutung von Eingabedaten schließen kann, möchten wir die Menge der Fehler, die es macht, minimieren. Also verwenden wir ein Trainingsset, diese Daten enthalten viele Bilder von Hunden und Katzen und wir haben das Grundwahrheitslabel, das mit diesem Bild verbunden ist. Jedes Mal, wenn wir eine Trainingsiteration des Modells ausführen, berechnen wir die Kosten (die Menge der Fehler) des Modells. Wir werden diese Kosten minimieren wollen.
Es gibt viele Kostenfunktionen, von denen jede ihrem eigenen Zweck dient. Eine häufig verwendete Kostenfunktion sind die quadratischen Kosten, die als definiert sind
.C=1N∑Ni=0(y^−y)2
Dies ist das Quadrat der Differenz zwischen dem vorhergesagten Label und dem Ground-Truth-Label für die Bilder, über die wir trainiert haben. Wir werden dies auf irgendeine Weise minimieren wollen.N
Minimierung einer Verlustfunktion
Tatsächlich ist der Großteil des maschinellen Lernens einfach eine Familie von Frameworks, die in der Lage sind, eine Verteilung durch Minimierung einiger Kostenfunktionen zu bestimmen. Die Frage, die wir stellen können, lautet: "Wie können wir eine Funktion minimieren?"
Lassen Sie uns die folgende Funktion minimieren
.y=x2−4x+6
Wenn wir dies zeichnen, können wir sehen, dass es bei ein Minimum gibt . Um dies analytisch zu tun, können wir die Ableitung dieser Funktion als nehmenx=2
dydx=2x−4=0
.x=2
Oft ist es jedoch nicht möglich, ein globales Minimum analytisch zu finden. Daher verwenden wir stattdessen einige Optimierungstechniken. Auch hier gibt es viele verschiedene Möglichkeiten, wie zum Beispiel: Newton-Raphson, Rastersuche usw. Dazu gehört auch die Gradientenabnahme . Dies ist die Technik, die von neuronalen Netzen verwendet wird.
Gradientenabstieg
Verwenden wir eine berühmte Analogie, um dies zu verstehen. Stellen Sie sich ein 2D-Minimierungsproblem vor. Dies entspricht einer Bergwanderung in der Wildnis. Sie wollen zurück in das Dorf, von dem Sie wissen, dass es sich am tiefsten Punkt befindet. Auch wenn Sie die Himmelsrichtungen des Dorfes nicht kennen. Alles, was Sie tun müssen, ist ständig den steilsten Weg hinunter zu fahren, und Sie gelangen schließlich in das Dorf. Wir steigen also auf der Grundlage der Steilheit des Abhangs die Oberfläche hinunter.
Nehmen wir unsere Funktion
y=x2−4x+6
wir werden das bestimmen, für das y minimiert ist. Der Algorithmus für den Gradientenabstieg sagt zuerst, dass wir einen zufälligen Wert für x auswählen werden . Lassen Sie uns bei x = 8 initialisieren . Dann wird der Algorithmus das Folgende iterativ ausführen, bis wir Konvergenz erreichen.xyxx=8
xnew=xold−νdydx
wo die Lernrate ist, können wir dies auf einen beliebigen Wert einstellen, den wir möchten. Es gibt jedoch eine clevere Möglichkeit, dies zu wählen. Zu groß und wir werden niemals unseren Mindestwert erreichen, und zu groß werden wir so viel Zeit verschwenden, bevor wir dort ankommen. Dies entspricht der Größe der Stufen, die Sie den steilen Hang hinuntergehen möchten. Kleine Schritte und du wirst auf dem Berg sterben, du wirst nie runter kommen. Bei einem zu großen Schritt riskieren Sie, das Dorf zu erschießen und auf die andere Seite des Berges zu gelangen. Die Ableitung ist das Mittel, mit dem wir diesen Hang hinunter in Richtung unseres Minimums fahren.ν
dydx=2x−4
ν=0.1
Iteration 1:
xnew=8−0.1(2∗8−4)=6.8
xnew=6.8−0.1(2∗6.8−4)=5.84
xnew=5.84−0.1(2∗5.84−4)=5.07
xnew=5.07−0.1(2∗5.07−4)=4.45
xnew=4.45−0.1(2∗4.45−4)=3.96
xnew= 3.96 - 0,1 ( 2 * 3.96 - 4)=3.57
xn e w= 3.57 - 0,1 ( 2 * 3.57 - 4 ) = 3,25
xn e w= 3,25 - 0,1 ( 2 * 3,25 - 4 ) = 3,00
xn e w= 3.00 - 0,1 ( 2 * 3.00 - 4 ) = 2,80
xn e w= 2.80 - 0,1 ( 2 * 2.80 - 4 ) = 2,64
xn e w= 2,64 - 0,1 ( 2 * 2,64 - 4 ) = 2,51
xn e w= 2.51 - 0,1 ( 2 * 2.51 - 4 ) = 2,41
xn e w= 2.41 - 0,1 ( 2 * 2.41 - 4 ) = 2,32
xn e w= 2.32 - 0,1 ( 2 * 2.32 - 4 ) = 2,26
xn e w= 2.26 - 0,1 ( 2 * 2.26 - 4 ) = 2,21
xn e w= 2.21 - 0,1 ( 2 * 2.21 - 4 ) = 2,16
xn e w= 2,16 - 0,1 ( 2 * 2,16 - 4 ) = 2,13
xn e w= 2.13 - 0,1 ( 2 * 2.13 - 4 ) = 2,10
xn e w= 2.10 - 0,1 ( 2 * 2.10 - 4 ) = 2,08
xn e w= 2.08 - 0,1 ( 2 * 2.08 - 4 ) = 2,06
xn e w= 2.06 - 0,1 ( 2 * 2.06 - 4 ) = 2,05
xn e w= 2.05 - 0,1 ( 2 * 2.05 - 4 ) = 2,04
xn e w= 2.04 - 0,1 ( 2 * 2.04 - 4 ) = 2,03
xn e w= 2.03 - 0,1 ( 2 * 2.03 - 4 ) = 2,02
xn e w= 2,02 - 0,1 ( 2 * 2,02 - 4 ) = 2,02
xn e w= 2.02 - 0,1 ( 2 * 2.02 - 4 ) = 2,01
xn e w= 2,01 - 0,1 ( 2 * 2,01 - 4 ) = 2,01
xn e w= 2,01 - 0,1 ( 2 * 2,01 - 4 ) = 2,01
xn e w= 2.01 - 0,1 ( 2 * 2.01 - 4 ) = 2,00
xn e w= 2,00 - 0,1 ( 2 * 2,00 - 4 ) = 2,00
xn e w= 2,00 - 0,1 ( 2 * 2,00 - 4 ) = 2,00
xn e w= 2,00 - 0,1 ( 2 * 2,00 - 4 ) = 2,00
xn e w= 2,00 - 0,1 ( 2 * 2,00 - 4 ) = 2,00
x = 2
Angewandt auf neuronale Netze
xy^
σ( z) = 11 + e x p ( z)
y^( wTx ) = 11 + e x p ( wTx + b )
wxb
C=12N∑Ni=0(y^−y)2
Wie trainiere ich das neuronale Netz?
CN
C= 12 N∑Nich( y^- y)2
y^yw
∂C∂w= ∂C∂y^∂y^∂w
∂C∂y^= y^- y
y^= σ( wTx )∂σ( z)∂z= σ( z) ( 1 - σ( z) )
∂y^∂w= 11 + e x p ( wTx + b )( 1 - 11 + e x p ( wTx + b ))
So können wir dann die Gewichte durch Gefälle als aktualisieren
wn e w= wo l d- η∂C∂w
η