[PYTHON] [Deep Learning von Grund auf neu] Layer-Implementierung von der Softmax-Funktion zum Überkreuzen von Entropiefehlern

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.

Schichtimplementierung von der Ausgangsschicht zur Verlustfunktion

Ich möchte die Schichtimplementierung von der Ausgangsschicht bis zur Verlustfunktion durchführen, die das letzte Stück für die Implementierung des Rückausbreitungsprozesses im neuronalen Netzwerk ist.

Dieses Mal möchte ich Ebenen von der Softmax-Funktion, die für die Klassifizierung verwendet wird, bis zum Schnittpunkt-Entropiefehler implementieren, aber dieser Teil wird fast dieselbe Implementierung sein, selbst wenn die Summe der für die Regression verwendeten Quadrate fehlerhaft ist. Ich werde.

class SoftmaxWithLoss: #Softmax-Funktion + Kreuzentropiefehlerschicht
    def __init__(self):
        self.loss = None #Wert der Verlustfunktion
        self.y = None #Ergebnis der Softmax-Funktion
        self.t = None #Lehrerdaten
        
    def forward(self, x, t):
        if t.ndim == 1: #Richtige Antwortdaten sind eins-Wenn es nicht heiß ist, beheben Sie es
            new_t = []
            for i in t:
                oh = list(np.zeros(10)) #Anzahl der Klassifizierungsetiketten
                oh[i] = 1
                new_t.append(oh)
            t = np.array(new_t)
        self.t = t
        self.y = softmax_function(x)
        self.loss = cross_entropy_errors(self.t, self.y)
        
        return self.loss
    
    def backward(self, dout=1):
        batch_size = self.t.shape[0]
        dx = (self.y - self.t) / batch_size #Teilen Sie den Fehler durch die Anzahl der Daten, die dem Ausweis entsprechen
        
        return dx

Während des Vorwärtsausbreitungsprozesses kann die Softmax-Funktion nur die richtigen Antwortdaten der One-Hot-Methode verwenden. Wenn also die richtigen Antwortdaten nicht zuerst One-Hot sind, werden sie auf One-Hot korrigiert.

Rufen Sie anschließend die bisher erstellte Softmax-Funktion und Cross-Entropy-Error-Methode auf und verwenden Sie sie.

Der Backpropagation-Prozess ist einfach: Subtrahieren Sie die richtigen Antwortdaten von den vorhergesagten Daten, um den Fehler zu erhalten, fassen Sie ihn zusammen und ermitteln Sie dann den Durchschnitt. Um die Wahrheit zu sagen, wird der Grund, warum die Kombination von Softmax-Funktion / Kreuzentropiefehler und Gleichheitsfunktion / Summe der Quadrate Fehler so eingestellt wird, dass der Rückausbreitungsprozess durch die obige einfache Formel erhalten werden kann, so eingestellt, dass die beiden Funktionen kombiniert werden. Weil es gemacht wurde.

Daher sollte, wie eingangs erwähnt, der Rückausbreitungsprozess auch im Fall der konstanten Funktion und der Summe der Fehlerquadrate wie oben implementiert werden.

Recommended Posts

[Deep Learning von Grund auf neu] Layer-Implementierung von der Softmax-Funktion zum Überkreuzen von Entropiefehlern
Deep Learning von Grund auf neu ① Kapitel 6 "Lerntechniken"
Deep Learning von Grund auf neu
[Lernnotiz] Deep Learning von Grund auf ~ Implementierung von Dropout ~
[Deep Learning von Grund auf neu] Ich habe versucht, Sigmoid Layer und Relu Layer zu implementieren
Deep Learning / Cross Entropy
Python vs Ruby "Deep Learning von Grund auf neu" Kapitel 4 Implementierung der Verlustfunktion
Deep Learning / Softmax-Funktion
[Deep Learning von Grund auf neu] Ich habe die Affine-Ebene implementiert
Ich habe versucht, Dropout zu erklären
Deep Learning von Grund auf 1-3 Kapitel
[Deep Learning von Grund auf neu] Implementierung der Momentum-Methode und der AdaGrad-Methode
Ich habe versucht, Perceptron Teil 1 [Deep Learning von Grund auf neu] zu implementieren.
Tiefes Lernen von Grund auf neu (Kostenberechnung)
Deep Learning Memo von Grund auf neu gemacht
Verbessertes Lernen, um von null bis tief zu lernen
[Lernnotiz] Deep Learning von Grund auf neu gemacht [Kapitel 7]
Tiefes Lernen von Grund auf neu (Vorwärtsausbreitung)
Tiefes Lernen / Tiefes Lernen von Grund auf 2-Versuchen Sie, GRU zu bewegen
Deep Learning / Deep Learning von Grund auf neu Kapitel 6 Memo
[Lernnotiz] Deep Learning von Grund auf neu gemacht [Kapitel 5]
[Lernnotiz] Deep Learning von Grund auf neu gemacht [Kapitel 6]
Bildausrichtung: von SIFT bis Deep Learning
"Deep Learning von Grund auf neu" mit Haskell (unvollendet)
Deep Learning / Deep Learning von Grund auf neu Kapitel 7 Memo
[Windows 10] Aufbau einer "Deep Learning from Scratch" -Umgebung
[Deep Learning von Grund auf neu] Über die Optimierung von Hyperparametern
"Deep Learning from Grund" Memo zum Selbststudium (Teil 12) Deep Learning
[Lernnotiz] Deep Learning von Grund auf neu gemacht [~ Kapitel 4]
Selbststudien-Memo "Deep Learning from Grund" (unlesbares Glossar)
"Deep Learning from Grund" Memo zum Selbststudium (Nr. 9) MultiLayerNet-Klasse
GitHub des guten Buches "Deep Learning von Grund auf neu"
Deep Learning / Fehler-Backpropagation der Sigmoid-Funktion
Deep Learning von Grund auf neu Kapitel 2 Perceptron (Memo lesen)
Deep Learning von Grund auf neu Die Theorie und Implementierung des mit Python erlernten Deep Learning Kapitel 3
Einführung in Deep Learning ~ Lokalisierungs- und Verlustfunktion ~
Python vs Ruby "Deep Learning von Grund auf neu" Zusammenfassung
[Deep Learning von Grund auf neu] Anfangswert des Gewichts des neuronalen Netzwerks unter Verwendung der Sigmoid-Funktion
"Deep Learning from Grund" Memo zum Selbststudium (10) MultiLayerNet-Klasse
"Deep Learning from Grund" Memo zum Selbststudium (Nr. 11) CNN
Gegenmaßnahmen für den Fehler "Oberes Verzeichnis kann nicht abgerufen werden" bei Verwendung von Deep Learning ②, das mit dem Spyder von ANACONDA von Grund auf neu erstellt wurde
"Deep Learning from Grund" Memo zum Selbststudium (Nr. 16) Ich habe versucht, SimpleConvNet mit Keras zu erstellen
Python vs Ruby "Deep Learning von Grund auf neu" Kapitel 3 Diagramm der Schrittfunktion, Sigmoidfunktion, ReLU-Funktion
"Deep Learning from Grund" Memo zum Selbststudium (Nr. 17) Ich habe versucht, DeepConvNet mit Keras zu erstellen
Wagen Sie es, mit Ruby zu lernen "Deep Learning from Grund von Grund auf neu" Importieren von Pickle-Dateien aus verbotenem PyCall
[Deep Learning von Grund auf neu] Anfangsgewicht des neuronalen Netzwerks bei Verwendung der Relu-Funktion
"Deep Learning from Grund" Memo zum Selbststudium (Nr. 19) Datenerweiterung
Anwendung von Deep Learning 2 von Grund auf neu Spam-Filter
Othello ~ Aus der dritten Zeile von "Implementation Deep Learning" (4) [Ende]
DataNitro, Implementierung einer Funktion zum Lesen von Daten aus dem Blatt
[Deep Learning von Grund auf neu] Ich habe versucht, die Gradientenbestätigung auf leicht verständliche Weise zu erklären.
[Deep Learning von Grund auf neu] Implementieren Sie die Backpropagation-Verarbeitung in einem neuronalen Netzwerk mithilfe der Fehler-Back-Propagation-Methode
Kapitel 2 Implementierung von Perceptron Schneiden Sie nur die guten Punkte des Deeplearning aus, die von Grund auf neu erstellt wurden
[Teil 4] Verwenden Sie Deep Learning, um das Wetter anhand von Wetterbildern vorherzusagen
Versuchen Sie, ein Deep Learning / Neuronales Netzwerk mit Scratch aufzubauen
Ein Amateur stolperte in Deep Learning von Grund auf neu Hinweis: Kapitel 1
[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
Ein Amateur stolperte über Deep Learning ❷ von Grund auf neu Hinweis: Kapitel 5
Erstellen Sie mit Docker eine Umgebung für "Deep Learning von Grund auf neu"