[PYTHON] Report_Deep Learning (Teil 2)

Rückblick auf Deep Learning (Teil 1)

Problem beim Verschwinden des Gradienten ... Wenn Sie mit der Methode der Fehlerrückausbreitung zu den unteren Schichten wechseln, wird der Gradient sanfter. Der sanftere Gradient bedeutet, dass der Parameter bei der Gradientenabstiegsmethode aktualisiert wird Es wird fast das gleiche sein. Als Ergebnis die Trainingsdaten Es wird nicht möglich sein, auf die optimale Lösung zu konvergieren. (Da das Verschwinden des Gradienten durch Visualisierung bestätigt werden kann, ist es auch wichtig, dies durch Visualisierung zu bestätigen.)

Sigmaid-Funktion: Eine Funktion, die sich langsam von 0 auf 1 ändert und deren Schrittfunktion nur EIN / AUS war. Es kann EIN / AUS und die Stärke des Signals anzeigen. Nachteil: Selbst wenn der Wert groß ist, ist die Änderung klein, was zu einem Problem beim Verschwinden des Gradienten führen kann.

Bestätigungstest (2-2) Wenn die Sigmoidfunktion unterschieden wird, wird der Maximalwert genommen, wenn der Eingabewert 0 ist. Wählen Sie den richtigen Wert. Sigmaid-Funktion

{f(x) = \frac{1}{1+e^{-x}}}

Wenn differenziert,

{f'(x) = (1 - f(x))f(x)}Wird sein.

Lösung zum Verschwinden des Gradienten Es gibt Auswahl der Aktivierungsfunktion, Einstellung des Gewichtsanfangswerts, Chargennormalisierung usw.

・ Auswahl der Aktivierungsfunktion ReLU-Funktion: Trägt dazu bei, das Problem des Verschwindens von Gradienten zu vermeiden und es spärlich zu machen.

・ Anfangswert des Gewichts Methode mit Xavier. Die Aktivierungsfunktion beim Einstellen des Anfangswertes von Xavier ist ・ ReLU-Funktion ・ Sigmaid-Funktion ・ Bicurve-Tangentenfunktion

Der Anfangswert wird festgelegt, indem das Gewichtungselement durch die Quadratwurzel der Anzahl der Knoten in der vorherigen Ebene geteilt wird.   Methode mit He. Die Aktivierungsfunktion beim Einstellen des Anfangswertes von He ist ・ ReLU-Funktion

Der Anfangswert wird durch Multiplizieren des Gewichtungselements geteilt durch die Quadratwurzel der Anzahl der Knoten in der vorherigen Ebene mit √2 festgelegt.

Bestätigungstest (2-3) Was für ein Problem tritt auf, wenn der Anfangswert des Gewichts auf 0 gesetzt ist? Geben Sie kurz an.

Wenn das Gewicht auf 0 gesetzt ist, ist das Produkt aller Eingabewerte und Gewichte 0, sodass nur der Vorspannungswert an die Ausgabeschicht ausgegeben wird. Getan werden. Daher können die Trainingsdaten nicht aktualisiert werden.

Chargennormalisierung Ein Verfahren zum Unterdrücken von Verzerrungen in Eingabewertdaten auf Minibatch-Basis.

Verwendung: Fügen Sie vor und nach der Übergabe eines Werts an die Aktivierungsfunktion eine Ebene mit Batch-Normalisierung hinzu.

Bestätigungstest (2-4) Nennen Sie zwei häufig berücksichtigte Auswirkungen der Chargennormalisierung. ・ Punkte, die kaum vom Anfangswert abhängen ・ Überlernen unterdrücken ・ Hochgeschwindigkeitsberechnung (da der Rechenaufwand durch Unterdrückung der Datenverzerrung reduziert werden kann)

Jupiter-Übung (2-5) Sigmaid-Schätzung image.png image.png image.png image.png image.png

Bei der Schätzung unter Verwendung der obigen Sigmoidfunktion verschwindet der Gradient, wie aus dem Diagramm ersichtlich ist, wenn das Fehlerrückausbreitungsverfahren durchgeführt wird. Es wurde gefunden, dass die Genauigkeit nur etwa 0,1 betrug.

Als nächstes wird die Schätzung unter Verwendung der ReLU-Funktion durchgeführt. image.png image.png image.png image.png image.png Unterschiede zu Schätzungen unter Verwendung der Sigmoid-Funktion sind in Kommentaren enthalten. Es macht die Aktivierungsfunktion nur zu einer ReLU-Funktion. Als Ergebnis wurde festgestellt, dass das Verschwinden des Gradienten nicht auftrat und die Fehlerrückausbreitung möglich war.

Überprüfen Sie anschließend den Anfangswert des Gewichts. Schätzen Sie, indem Sie mit Xavier den Anfangswert des Gewichts in der Sigmoid-Funktion einstellen.

image.png image.png image.png image.png

Wie Sie in der Grafik sehen können, verwenden Sie Xavier unter Verwendung der Gaußschen Verteilung als Anfangseinstellung des Gewichts für die Schätzung mit der ersten Sigmoidfunktion. Es wurde festgestellt, dass das Verschwinden des Gradienten nicht auftrat.

Als nächstes wird die Schätzung unter Verwendung von He durchgeführt, was eine weitere Anfangswerteinstellung des Gewichts ist. image.png  image.png image.png image.png

Es wurde auch festgestellt, dass das Verschwinden des Gradienten selbst bei der Schätzung unter Verwendung der ReLU-Funktion und der anfänglichen Einstellung He des Gewichts nicht auftrat.

Mit der Kombination der ReLU-Funktion und He konnte nicht festgestellt werden, ob bei der anfänglichen Einstellung des Gewichts von He ein Verschwinden des Gradienten auftreten würde. Schätzungen unter Verwendung der Sigmoidfunktion und von He wurden unten durchgeführt, um zu bestätigen, ob der Gradient verschwunden ist.

image.png image.png image.png image.png

Aus dem Diagramm des obigen Ergebnisses wurde bestätigt, dass das Verschwinden des Gradienten nicht auftrat und der Gradient bei der anfänglichen Einstellung He des Gewichts nicht verschwand.

Methode zur Optimierung der Lernrate

Richtlinien zum Festlegen der anfänglichen Lernrate Stellen Sie zunächst eine große Lernrate ein und senken Sie sie schrittweise ab. → Verwenden Sie die Methode zur Optimierung der Lernrate. · Schwung Nach Subtraktion des Fehlers durch das Produkt aus Parameterdifferenzierung und Lernrate wird das aktuelle Gewicht mit dem vorherigen Gewicht multipliziert. Unterscheiden Sie das Produkt aus dem subtrahierten Wert und der Trägheit. ・ AbaGrad ・ RMS Prop · Adam

Überlernen

Überlernen: Die Lerngerade weicht aufgrund von Testfehlern und Trainingsfehlern ab.

Unterdrücken Sie das Überlernen durch Regularisierung (Einschränkung des Freiheitsgrades des Netzwerks). Netzwerkfreiheit: Anzahl der Schichten, Anzahl der Knoten, Parameterwerte usw.

Arten der Regularisierung ・ L1-Regularisierung ・ L2-Regularisierung ·Aussteigen

Bestätigungstest (2-10) Die Regularisierung von linearen Modellen, die beim maschinellen Lernen verwendet werden, ist möglich, indem die Gewichte der Modelle begrenzt werden. In der Regularisierungsmethode gibt es eine Methode namens Ridge-Regression, bei der die richtige als Merkmal ausgewählt wird.

Antwort (a) Wenn der Hyperparameter auf einen großen Wert eingestellt ist, nähern sich alle Gewichte unendlich 0 an. Die Ridge-Regression ist eine der regulierten linearen Regressionen, dh die lineare Regression plus das Quadrat des gelernten Gewichts.

Gewichtsverlust Die Ursache für Überlernen tritt auf, wenn ein Wert mit einem großen Gewicht genommen wird. Als Lösung für das Überlernen wird der Gewichtswert durch Hinzufügen eines Regularisierungsterms unterdrückt. Je größer jedoch der Gewichtswert ist, desto wichtiger ist der Parameter beim Lernen. Es ist wichtig, den Gewichtswert zu kontrollieren und die Größe des Gewichts innerhalb des Wertebereichs zu variieren, in dem kein Überlernen auftritt.

L1, L2 Regularisierung Fügen Sie der Fehlerfunktion die p-Norm hinzu. Wenn P = 1 ist, heißt es L1-Regularisierung, und wenn P = 2, heißt es L2-Regularisierung.

Bestätigungstest (2-11) Beantworten Sie eines der Diagramme mit der L1-Regularisierung. Grafik rechts Die L1-Regularisierung kann aufgrund ihrer Eigenschaften 0 annehmen. Daher entspricht es einer spärlichen Schätzung.

Aussteigen Die hauptsächlich in der Regularisierungsmethode verwendete Methode Die Methode zum zufälligen Löschen und Lernen von Knoten wird als Dropout bezeichnet. Lernen Sie verschiedene Modelle, ohne die Datenmenge zu ändern

Faltungs-Neuronales Netz (CNN)

Eine Methode, die häufig hauptsächlich bei der Bildklassifizierung verwendet wird. Es kann nicht nur für Bilder, sondern auch für Audiodaten verwendet werden.

CNN-Fluss (Beispiel) Eingabeebene → Faltschicht → Faltschicht → Poolschicht → Faltschicht → Faltschicht → Poolschicht → Vollständig verbundene Schicht → Ausgangsschicht

Faltschicht Der Ausgabewert, der durch Multiplizieren des Eingabewerts mit dem Filter und der Vorspannung erhalten wird, wird addiert, und der Wert wird durch die Aktivierungsfunktion in den Ausgabewert umgewandelt. Unter Verwendung der Faltungsschicht können 3D-Bilddaten (Kanal: Daten, die den Raum steuern) von vertikal, horizontal und Kanal erhalten werden. Sie können lernen, wie es ist, und dann können Sie es sagen.

·vorspannen Fügen Sie dem Wert, der durch Multiplizieren der Eingangsschicht und des Filters erhalten wird, eine Vorspannung hinzu. ・ Polsterung Das Ergebnis der Multiplikation der Eingabeebene und des Filters ist kleiner als die Größe der Eingabeebene. Daher durch Erhöhen der festen Daten Der Ausgabewert kann dieselbe Größe wie die Eingabeebene haben. Verwenden Sie hauptsächlich 0-Auffüllungen, die 0 hinzufügen. ·schreiten Ändern Sie den Berechnungsort der Eingabeebene und des Filters. ·Kanal Die Anzahl der Kanäle ist die Anzahl der Kanäle, die in vertikal, horizontal und tief zerlegt werden, um den Raum zu lernen.

Wenn es sich um eine vollständig verbundene Ebene handelt, werden die 3D-Daten der Bilddaten auch als 1D-Daten verarbeitet. Eine Faltungsschicht wurde entwickelt, um 3D-Daten zu lernen.

Jupiter-Übung (2-17) image.png image.png

Abkürzung für Bild zu Spalte für im2col. Eine Methode, die mehrdimensionale Daten in ein zweidimensionales Array konvertiert. Erstellen Sie für die obigen Eingabedaten ein mehrdimensionales Array (4x4-Matrix mit 2 Kanälen) mit random.rand (). Führen Sie im2col mit Schritt 1 und 0 mit vertikaler und horizontaler Filtergröße 3 aus. Die Funktion im2col konvertiert ein mehrdimensionales Array in ein zweidimensionales Array. Als nächstes wird die im2col-Funktion unten beschrieben. image.png

Die Funktion im2col verwendet den Eingabewert, die vertikalen und horizontalen Abmessungen des Filters, die Anzahl der Schritte (= 1) und die Anzahl der Auffüllungen (= 0) als Argumente. Speichern Sie jede Größe des Arrays mit input_data.shape. out_h und out_w sind die vertikalen und horizontalen Abmessungen der Ausgabe

Verwenden Sie als Nächstes col2im, um ein zweidimensionales Array in ein mehrdimensionales Array zu konvertieren. image.png

Beachten Sie, dass ein von im2col in ein zweidimensionales Array konvertiertes Array von col2im nicht in ein mehrdimensionales Array konvertiert wird. Eine Wiederherstellung ist nicht möglich, da die Methoden im2col und col2im unterschiedlich sind.

Pooling-Schicht Es gibt zwei Haupttypen (maximales Pooling und durchschnittliches Pooling). Gibt den Maximalwert des Zielbereichs der eingegebenen Bilddaten aus (maximales Pooling). Geben Sie den Durchschnittswert des Zielbereichs aus (durchschnittliches Pooling).

Bestätigungstest (2-18) Beantworten Sie die Größe des Ausgabebilds, wenn das Eingabebild der Größe 6x6 mit dem Filter der Größe 2x2 gefaltet wird. Der Schritt und die Polsterung werden auf 1 gesetzt. Antwort: 7x7 Bildgröße

Jupiter-Übung (2-19) image.png Max Pooling Funktionsprogramm

Neueste CNN AlexNet: Besteht aus drei vollständig verbundenen Schichten, einschließlich einer fünfschichtigen Faltschicht und einer Poolschicht.

i.png

Recommended Posts

Report_Deep Learning (Teil 2)
Report_Deep Learning (Teil 1)
Report_Deep Learning (Teil 1)
Report_Deep Learning (Teil 2)
Python: Überwachtes Lernen: Hyperparameter Teil 1
Python: Überwachtes Lernen: Hyperparameter Teil 2
[PyTorch Tutorial ⑤] PyTorch anhand von Beispielen lernen (Teil 2)
Versuchen Sie es mit TensorFlow Part 2
[PyTorch Tutorial ⑤] PyTorch anhand von Beispielen lernen (Teil 1)
Echtzeit-Persönliche Schätzung (Lernen)
Vorhersage des Strombedarfs durch maschinelles Lernen Teil 2
numpy Teil 1
Argparse Teil 1
Lernaufzeichnung
Lernrekord Nr. 3
Lernrekord Nr. 1
Maschinelles Lernen
Python lernen
Python: Geschlechtsidentifikation (Entwicklung von Deep Learning) Teil 1
Python: Geschlechtsidentifikation (Entwicklung von Deep Learning) Teil 2
Lernrekord Nr. 2
numpy Teil 2
6/10 Lerninhalte
Tiefes Lernen
Numpy-Sigmoid-Lernen
"Deep Learning from Grund" Memo zum Selbststudium (Teil 12) Deep Learning
EV3 x Pyrhon Maschinelles Lernen Teil 3 Klassifizierung
Klassifizierung von Gitarrenbildern durch maschinelles Lernen Teil 1
Maschinelles Lernen beginnend mit Python Personal Memorandum Part2
Grundlagen des Lernens mit einem Lehrer Teil 1 - Einfache Regression - (Hinweis)
Maschinelles Lernen beginnend mit Python Personal Memorandum Part1
Lernen der Mustererkennung im Video Teil 1 Bereich der Mustererkennung
[Maschinelles Lernen] Überwachtes Lernen mithilfe der Kernel-Dichteschätzung Teil 2
EV3 x Pyrhon Maschinelles Lernen Teil 1 Umgebungskonstruktion
EV3 x Python Maschinelles Lernen Teil 2 Lineare Regression
[Maschinelles Lernen] Überwachtes Lernen mithilfe der Kernel-Dichteschätzung Teil 3
Videorahmeninterpolation durch tiefes Lernen Teil 1 [Python]
Aktienkursprognose mit Deep Learning (TensorFlow) -Teil 2-
Maschinelles Lernen eines jungen Ingenieurs Teil 2
Klassifizierung von Gitarrenbildern durch maschinelles Lernen Teil 2
Versuchen Sie Katsuhiro Morishita / Aso_Sea_Clouds_Pridiction Memo-Excluding the learning part-
Grundlagen des Lernens mit einem Lehrer Teil 3 - Multiple Regression (Implementierung) - (Anmerkungen) -