Beginn des Studiums: Samstag, 7. Dezember
Unterrichtsmaterialien usw.: ・ Miyuki Oshige "Details! Python3 Introductory Note ”(Sotech, 2017): 12/7 (Sa) -12/19 (Do) gelesen ・ Progate Python-Kurs (insgesamt 5 Kurse): Ende 12/19 (Donnerstag) -12/21 (Samstag) ・ Andreas C. Müller, Sarah Guido "(japanischer Titel) Maschinelles Lernen ab Python" (O'Reilly Japan, 2017): 21.12. (Sa) - 23. Dezember (Sa) ・ Kaggle: Real or Not? NLP mit Katastrophen-Tweets: Veröffentlicht am Samstag, 28. Dezember, bis Freitag, 3. Januar Einstellung ・ Wes Mckinney "(japanischer Titel) Einführung in die Datenanalyse von Python" (O'Reilly Japan, 2018): 1/4 (Mittwoch) bis 1/13 (Montag) gelesen ・ ** Yasuki Saito "Tiefes Lernen von Null" (O'Reilly Japan, 2016): 1/15 (Mi) ~ **
S.239 Kapitel 7 Lesen bis zum Faltungsnetzwerk beendet.
-Optimierung: Finden der optimalen Parameter, die den Wert der Verlustfunktion so weit wie möglich reduzieren können. Der Parameterraum ist komplex und ein sehr schwieriges Problem. Es gibt mehrere Optimierer.
W ← W - η\frac{\partial L}{\partial W}
η ist die Lernrate. Aktualisieren Sie die linke Seite mit dem Wert auf der rechten Seite. Der Nachteil von SGD besteht darin, dass der Suchpfad dazu neigt, ineffizient zu sein, wenn die Funktion verlängert wird, dh wenn sie nicht isotrop ist.
v ← αv - η\frac{\partial L}{\partial L}
W ← W + v
h ← h + \frac{\partial L}{\partial W} ⊙ \frac{\partial L}{\partial W}
W ← W - η\frac{1}{\sqrt{h}}\frac{\partial L}{\partial W}
⊙ ist der Adamar-Operator. Dies bedeutet Multiplikation für jedes Element der Matrix. Je größer h (je besser die Bewegung), desto kleiner der Lernkoeffizient. Mit anderen Worten, die Lernskala wird angepasst, wenn die Parameter aktualisiert werden.
・ Wie oben erwähnt, gibt es verschiedene Methoden für den Optimierer, aber jede hat ihre eigenen Stärken und Schwächen, sodass nicht gesagt werden kann, welche überlegen ist. (Viele Studien sagen jedoch, dass SGD bevorzugt wird.)
・ ** Gewichtsabnahme **: Eine Methode zum Lernen, damit der Gewichtsparameter kleiner wird. Durch die Reduzierung des Gewichts ist es weniger wahrscheinlich, dass ein Überlernen auftritt, was der Verbesserung der Generalisierungsleistung nahe kommt. ("0" unterbricht jedoch die kontrastierende Struktur von Gewichten und alle haben ähnliche Werte.)
-Initialwert von ** He **: Verwenden Sie für n Knoten eine Gaußsche Verteilung mit einer Standardabweichung von (2 / √n) als Anfangswert. Geeignet für ReLU. Im Fall von ReLU wird der negative Bereich zu 0, so dass er als Multiplikation mit einem doppelten Koeffizienten interpretiert werden kann, um eine größere Streuung zu erzielen.
・ ** Chargennormalisierung **: Wird häufig in Methoden und Wettbewerben verwendet, die 2015 entwickelt wurden. Es gibt Vorteile wie einen schnellen Lernfortschritt, eine geringere Abhängigkeit von Anfangswerten und die Unterdrückung von Überlernen. Die Datenverteilung wird durch Einfügen einer sogenannten Batch-Norm-Ebene zwischen Affine und ReLU normalisiert. ** Normalisieren Sie für jeden Mini-Batch in Einheiten des Mini-Batches zum Lernen **.
** Dropout **: Ähnlich wie bei der Gewichtsabnahme wird es als Methode zur Unterdrückung des Überlernens verwendet. Während des Trainings werden Neuronen in der verborgenen Schicht zufällig ausgewählt und die ausgewählten Neuronen werden gelöscht. Alle Neuronensignale werden während des Tests übertragen, aber durch Multiplikation des während des Trainings gelöschten Verhältnisses ausgegeben. Es gibt etwas in der Nähe einer Art Ensemble-Methode, weil interpretiert werden kann, dass Neuronen jedes Mal während des Lernens zufällig gelöscht werden, dh jedes Mal wird ein anderes Modell trainiert.
** Hyperparameter **: Die Anzahl der Neuronen in jeder Schicht, die Chargengröße, die Lernrate und der Gewichtsabfall sind anwendbar. Das Anpassen von Hyperparametern mithilfe von Testdaten führt zu Überlernen. Daher werden spezielle Daten verwendet, die als Validierungsdaten bezeichnet werden. Ich mache das selbst. (Np shuffle, clearn train_data_split usw. Wird in Kaggle verwendet.)
・ Beobachten Sie zur Optimierung zunächst grob das Ergebnis der Erkennungsgenauigkeit und beschränken Sie sich allmählich auf den Bereich, in dem gute Werte vorliegen. ** Bei neuronalen Netzen wurde berichtet, dass zufällig ausgewählte Suchvorgänge bessere Ergebnisse liefern als reguläre Suchvorgänge wie Rastersuchen. ** ** ** Der Standard ist ungefähr eine Leistungsskala von 10, 10 ^ (-3) bis 10 ^ (3). Es ist effektiv, die Epoche des Lernens klein zu machen, weil es notwendig ist, Dinge aufzugeben, die in einem frühen Stadium schlecht zu sein scheinen. Eine Epoche ist eine Einheit, wenn alle Daten aufgebraucht sind. Wenn Sie 10000 Daten in 100 Mini-Batches trainieren möchten, 100-mal = 1 Epoche, Lerndatensatz 22
・ Die Bayes'sche Optimierung ist ebenfalls effektiv. Ich hatte viele Chancen, es auf Kaggle zu sehen.
・ ** Convoluntional Neural Network (CNN) ** Zusätzlich zum üblichen neuronalen Netzwerk wird das Konzept der ** "Convoluntion Layer" und "Pooling Layer" ** hinzugefügt. Zwei typische Beispiele sind ** LeNet ** und ** AlexNet **.
-Ersetzen Sie die Ebenenverbindung "Affine --ReLU (Sigmoid)" durch die Verbindung "Convoluntion --ReLU (Sigmoid) - (Pooling)". (Der Teil in der Nähe der Ausgabeschicht ist jedoch wie gewohnt.)
-Die affine Schicht verwendete eine vollständig verbundene Schicht, die alle Neuronen verbindet. Das Problem dabei ist, dass durch Behandeln aller Eingabedaten als äquivalente Neuronen (gleiche Dimension) Informationen über die Form nicht verwendet werden können. Andererseits gibt die Convoluntion-Schicht die Eingabedaten an die nächste Schicht in derselben Dimension aus, damit die Daten (möglicherweise) besser verstanden werden können.
-Faltvorgang: Wenden Sie das Filterfenster auf die Eingabedaten an, indem Sie es in regelmäßigen Abständen verschieben. Die Variable, die das Anwendungsintervall des Filters anpasst, wird als Schritt bezeichnet. (Sprechen Sie darüber, wie viel verschoben und angepasst werden muss)
-Padding: Füllt den Bereich um die Eingabedaten mit festen Daten (z. B. 0).
-Pooling: Eine Operation, die die vertikalen und horizontalen Räume reduziert. Sehen Sie sich die 4x4-Matrix für jeden 2x2-Bereich an und führen Sie beispielsweise beim Max-Pooling Vorgänge aus, z. B. das Extrahieren und Ausgeben des Maximalwerts für jeden Bereich.
-Es gibt eine Funktion namens ** im2col **, die diese Faltungsoperationen anwendet. im2col ist eine Funktion, die die Eingabedaten so erweitert, dass sie für den Filter geeignet sind, und den anwendbaren Bereich des Filters von Anfang an spaltenweise erweitert. Nach der Erweiterung ist es größer als die Anzahl der Elemente im ursprünglichen Block und verbraucht viel Speicher, aber ** Die Matrixberechnung selbst ist stark optimiert, sodass es sehr gut möglich ist, sie auf die Form dieser Matrix zu reduzieren. Es gibt viele Vorteile. ** ** **
Recommended Posts