[PYTHON] [Deep Learning von Grund auf neu] Ich habe versucht, die Gradientenbestätigung auf leicht verständliche Weise zu erklären.

Einführung

Dieser Artikel ist eine leicht verständliche Ausgabe von ** Deep Learning von Grund auf neu. Kapitel 6 Fehler-Backpropagation-Methode **. Ich konnte es selbst verstehen, also hoffe ich, dass Sie es bequem lesen können. Ich würde mich auch sehr freuen, wenn Sie sich beim Studium dieses Buches darauf beziehen könnten.

Was ist eine Gradientenbestätigung?

Die Gradientenformel nach der im vorherigen Artikel implementierten Methode zur Fehlerrückübertragung ist sehr kompliziert, sodass die Wahrscheinlichkeit groß ist, dass Fehler auftreten. Die Verarbeitungsgeschwindigkeit ist jedoch extrem hoch, daher muss ich sie verwenden. Daher ist es wichtig zu überprüfen, ob ein Fehler in der Gradientengleichung vorliegt, indem das Fehlerrückausbreitungsverfahren angewendet wird. Dies wird als Gradientenbestätigung bezeichnet, und eine numerische Differentialgradientenformel, die einfach zu erstellen ist und nur wenige Fehler aufweist, wird verwendet, um den Gradienten zu bestätigen.

Obwohl die Verarbeitungsgeschwindigkeit der numerischen Differentialgradientenformel langsam ist, gibt es aufgrund ihrer einfachen Konstruktion nur wenige Fehler. Daher wird durch Gradientenbestätigung der Gradient bestätigt, der aus der Gradientengleichung der numerischen Differenzierung und dem Gradientenfehler erhalten wird, der durch die Gradientengleichung durch das Fehlerrückausbreitungsverfahren erhalten wird.

Jetzt möchte ich es implementieren.

#Fügen Sie der Klassenmethode für neuronale Netze die folgende numerische Differentialgradientengleichung hinzu
def slopeing_grad_net(self,x,t):#Numerische Differentialgradientenformel, um zu bestätigen, ob die Fehlerrückausbreitungsmethode korrekt ist
    loss_c = lambda W: self.loss(x, t) 
        
    grads_t = {}
    grads_t['W1'] = slopeing_grad(loss_c,self.params['W1'])
    grads_t['b1'] = slopeing_grad(loss_c,self.params['b1'])
    grads_t['W2'] = slopeing_grad(loss_c,self.params['W2'])
    grads_t['b2'] = slopeing_grad(loss_c,self.params['b2'])
        
    return grads_t

#Gradientenprüfung
#Stellen Sie eine Mini-Charge aus
x_train, x_test, t_train, t_test = dataset['train_img'], dataset['test_img'], \
                                            dataset['train_label'], dataset['test_label']

x_batch = x_train[:3]
t_batch = t_train[:3]

netwark = LayerNet(input_size = 784, hiden_size = 50, output_size = 10)
#Lösche jeden Farbverlauf
grad_slope = netwark.slopeing_grad_net(x_batch, t_batch)
grad_new = netwark.gradient(x_batch, t_batch)

for key in grad_slope.keys(): #Vergleichen Sie diese Unterschiede
    diff = np.average(np.abs(grad_new[key] - grad_slope[key]))
    print(key + ':' + str(diff))


W1:0.03976913034251971
b1:0.0008997051177847986
W2:0.3926011094391389
b2:0.04117287920452093

Überprüfen Sie den Durchschnitt der Gradientenfehler mit einem Code wie dem obigen, um festzustellen, ob die Fehler innerhalb des Bereichs liegen.

Recommended Posts

[Deep Learning von Grund auf neu] Ich habe versucht, die Gradientenbestätigung auf leicht verständliche Weise zu erklären.
Ich habe versucht, Dropout zu erklären
[Für Anfänger] Ich möchte die Anzahl der Lernerfahrungen leicht verständlich erklären.
[Python] Ich habe versucht, den kollektiven Typ (Satz) auf leicht verständliche Weise zusammenzufassen.
Ich habe versucht, Perceptron Teil 1 [Deep Learning von Grund auf neu] zu implementieren.
Ich habe versucht zu erklären, wie der Artikelinhalt mit der MediaWiki-API auf leicht verständliche Weise anhand von Beispielen abgerufen werden kann (Python 3).
Ich werde erklären, wie man Pandas auf leicht verständliche Weise benutzt.
[Deep Learning von Grund auf neu] Ich habe versucht, Sigmoid Layer und Relu Layer zu implementieren
Ich habe versucht, Cpaw Level1 & Level2 Write Up auf leicht verständliche Weise zusammenzufassen
Ich habe versucht, das überwachte Lernen des maschinellen Lernens auch für Serveringenieure auf leicht verständliche Weise zu verstehen 1
[Python] Ich habe versucht, Wörter, die für Anfänger schwer zu verstehen sind, auf leicht verständliche Weise zu erklären.
Ich habe versucht, das überwachte Lernen des maschinellen Lernens auch für Serveringenieure auf leicht verständliche Weise zu verstehen 2
Einführung in Deep Learning (1) --Chainer wird Anfängern leicht verständlich erklärt.
[Deep Learning von Grund auf neu] Ich habe die Affine-Ebene implementiert
[Python] [Verarbeitung natürlicher Sprache] Ich habe Deep Learning ausprobiert (auf Japanisch von Grund auf neu erstellt)
Ich habe versucht, die Strichzeichnung mit Deep Learning aus dem Bild zu extrahieren
"Deep Learning from Grund" Memo zum Selbststudium (Nr. 16) Ich habe versucht, SimpleConvNet mit Keras zu erstellen
"Deep Learning from Grund" Memo zum Selbststudium (Nr. 17) Ich habe versucht, DeepConvNet mit Keras zu erstellen
Ein Amateur stolperte in Deep Learning von Grund auf neu Hinweis: Kapitel 1
Ein Amateur stolperte in Deep Learning von Grund auf neu Hinweis: Kapitel 3
Ein Amateur stolperte in Deep Learning von Grund auf neu. Hinweis: Kapitel 7
Ein Amateur stolperte in Deep Learning von Grund auf neu Hinweis: Kapitel 5
Ein Amateur stolperte in Deep Learning von Grund auf neu Hinweis: Kapitel 4
Ein Amateur stolperte in Deep Learning von Grund auf neu Hinweis: Kapitel 2
"Deep Learning from Grund" Memo zum Selbststudium (Teil 8) Ich habe die Grafik in Kapitel 6 mit matplotlib gezeichnet
"Deep Learning von Grund auf neu" mit Haskell (unvollendet)
[Deep Learning von Grund auf neu] Informationen zu den Ebenen, die für die Implementierung der Backpropagation-Verarbeitung in einem neuronalen Netzwerk erforderlich sind
Ich habe die übliche Geschichte ausprobiert, Deep Learning zu verwenden, um den Nikkei-Durchschnitt vorherzusagen
Deep Learning von Grund auf neu ① Kapitel 6 "Lerntechniken"
Ich habe versucht, die beim maschinellen Lernen verwendeten Bewertungsindizes zu organisieren (Regressionsmodell).
Ich habe versucht, das Objekterkennungs-Tutorial mit dem neuesten Deep-Learning-Algorithmus auszuführen
Ich habe versucht, die Veränderung der Schneemenge für 2 Jahre durch maschinelles Lernen vorherzusagen
Deep Learning von Grund auf neu
Ich habe versucht, tief zu lernen
Ich habe versucht, die in Python installierten Pakete grafisch darzustellen
Ich habe versucht, Iris aus dem Kamerabild zu erkennen
Ich habe versucht, das Bild mithilfe von maschinellem Lernen zu komprimieren
Ich habe versucht, Pferderennen vorherzusagen, indem ich alles von der Datenerfassung bis zum tiefen Lernen getan habe
[Teil 4] Verwenden Sie Deep Learning, um das Wetter anhand von Wetterbildern vorherzusagen
[Maschinelles Lernen] Fassen wir die zufällige Gesamtstruktur auf leicht verständliche Weise zusammen
Deep Learning von Grund auf 1-3 Kapitel
[Teil 1] Verwenden Sie Deep Learning, um das Wetter anhand von Wetterbildern vorherzusagen
[Teil 3] Verwenden Sie Deep Learning, um das Wetter anhand von Wetterbildern vorherzusagen
Ich habe versucht, API list.csv mit Python aus swagger.yaml zu erstellen
[Pokemon-Schwertschild] Ich habe versucht, die Urteilsgrundlage des tiefen Lernens anhand der Drei-Familien-Klassifikation als Beispiel zu visualisieren
Ein Amateur stolperte über Deep Learning ❷ von Grund auf neu Hinweis: Kapitel 5
Ein Amateur stolperte über Deep Learning ❷ von Grund auf neu Hinweis: Kapitel 2
Erstellen Sie mit Docker eine Umgebung für "Deep Learning von Grund auf neu"
Ich habe versucht, den in Pandas häufig verwendeten Code zusammenzufassen
Ich habe versucht, die Zeit und die Zeit der C-Sprache zu veranschaulichen
Ein Amateur stolperte über Deep Learning ❷ von Grund auf neu Hinweis: Kapitel 1
[Teil 2] Verwenden Sie Deep Learning, um das Wetter anhand von Wetterbildern vorherzusagen
Ein Amateur stolperte über Deep Learning ❷ von Grund auf neu Hinweis: Kapitel 4
Ich habe versucht, die im Geschäftsleben häufig verwendeten Befehle zusammenzufassen
Ich habe versucht, die Mail-Sendefunktion in Python zu implementieren
[TF] Ich habe versucht, das Lernergebnis mit Tensorboard zu visualisieren
[Maschinelles Lernen] Ich habe versucht, die Theorie von Adaboost zusammenzufassen