[PYTHON] Ein Memorandum zum Studieren und Implementieren von Deep Learning

Zielperson

Menschen, die maschinelles Lernen und tiefes Lernen studiert haben, aber nicht wissen, wie sie bei der Implementierung zusammenhängen. Jemand, der seine Gedanken organisieren will. Ich werde keine detaillierte mathematische Erklärung geben. Eine mathematische Erklärung finden Sie im Chainer-Tutorial.

Was wurde ein Modell des tiefen Lernens

Deep Learning wurde durch Nachahmung des Mechanismus der Informationsübertragung in menschlichen Nervenzellen geschaffen. Dies hat die Genauigkeit dramatisch verbessert.

Wie das neuronale Netzwerk funktioniert

Modellierung von Neuronen

Im neuronalen Netzwerk wird ein mathematisches Modell erstellt, das die Bewegung menschlicher Nervenzellen auf einem Computer reproduziert. Obwohl einzelne Nervenzellen nur über eine einfache Rechenleistung verfügen, können sie durch Verbinden und Ineinandergreifen eine erweiterte Erkennung und Beurteilung vornehmen. Der Mechanismus der Informationsübertragung wird durch mathematische Formeln bei der Berechnung von Matrizen und Sonderfunktionen reproduziert.

Neuronenmodell

image.png

image.png

Das Neuron hat mehrere Eingänge und einen Ausgang. Eine Schicht des neuronalen Netzwerks besteht aus mehreren Neuronen. ** Gewicht **: Koeffizient zum Multiplizieren jeder Eingabe. Sie entspricht der Übertragungseffizienz an der Synapse. Je größer der Wert, desto mehr Informationen werden übertragen. Da es beim Lernen automatisch aktualisiert wird, ist nur der Anfangswert erforderlich. ** Bias **: Eine Konstante, die zur Summe der Eingabe multipliziert mit dem Gewicht addiert wird. Es dient zur Anpassung der Erregung von Neuronen. Da es beim Lernen automatisch aktualisiert wird, ist nur der Anfangswert erforderlich. ** Aktivierungsfunktion **: Eine Funktion, die den angeregten Zustand von Neuronen darstellt. Ohne die Aktivierungsfunktion wäre der Betrieb des Neurons nur die Summe der Produkte, und die Fähigkeit, komplizierte Ausdrücke auszudrücken, würde aus dem neuronalen Netzwerk verloren gehen. Es gibt verschiedene Funktionen wie Sigmoidfunktion und ReLU, und die optimale Funktion wird in gewissem Maße abhängig von dem zu behandelnden Problem bestimmt. Sie müssen für jede Ebene auswählen. Eine Beschreibung der Funktionen finden Sie unter Aktivierungsfunktionstypen. Übrigens wird ** w ** als Gewicht und ** b ** als Bias dargestellt.

(Jabashi) yolo, eine Bilderkennungsbibliothek, kann unmittelbar nach dem Importieren einer trainierten Gewichtsdatei (automatisch angepasstes Gewicht, Abweichung, Anzahl der Schichten usw.) erkannt werden. Wenn die gelernte Umgebung jedoch nicht berücksichtigt wird, kann sie missverstanden werden, oder selbst wenn zusätzliches Lernen durchgeführt wird, kann sie möglicherweise nicht gut konvergieren. Wie in diesem Artikel gezeigt, wird "Sushi" in dem in den USA erlernten Lernmodell als "Hot Dog" erkannt. Mit anderen Worten kann gesagt werden, dass sich die Persönlichkeit (Berechnungsergebnis) in Abhängigkeit von der Umgebung (Datensatz) ändert, in der sie aufgewachsen ist.

Vernetzung von Neuronen (neuronales Netz)

Ein neuronales Netzwerk wird aufgebaut, indem mehrere Neuronen zu einem Netzwerk verbunden werden. (x, v, y sind Neuronen) Ordnen Sie sie wie in der Abbildung gezeigt in Schichten an. news012_network1.jpg Abbildung Neuronales Netzwerkmodell (zitiert aus maschinellem Lernen beginnend mit Python)

Die Schichten im neuronalen Netzwerk werden in eine Eingangsschicht, eine Zwischenschicht und eine Ausgangsschicht klassifiziert. Es gibt nur eine Eingangsschicht und eine Ausgangsschicht, aber die mittlere Schicht kann vergrößert werden. Eine Anpassung ist erforderlich, da sich das Berechnungsverhalten durch Erhöhen der Anzahl der Zwischenschichten ändert. In einem normalen neuronalen Netzwerk ist die Ausgabe eines Neurons mit der Eingabe aller Neuronen in der nächsten Schicht verbunden. ** Weiterleitung ** Diese Informationen werden von Eingabe zu Ausgabe übertragen. Die Tatsache, dass Informationen von der Ausgabe zur Eingabe zurückgehen, wird als ** Backpropagation ** bezeichnet. Die Rückausbreitung wird durchgeführt, wenn das Gewicht und die Vorspannung aktualisiert werden, indem zum Ausgabeergebnis zurückgekehrt wird. Normalerweise erfolgt dies automatisch. Wenn Sie also die Einstellparameter und den Mechanismus kennen, können Sie sie verwenden. Der Ausgabewert wird mit der korrekten Bezeichnung des Datensatzes verglichen, der Fehler wird berechnet und das Gewicht und die Vorspannung werden automatisch so angepasst, dass sie sich der richtigen Bezeichnung nähern.

Zwei Probleme in einem neuronalen Netzwerk

Die vom neuronalen Netzwerk behandelten Probleme sind in Klassifizierungsprobleme und Regressionsprobleme unterteilt.

Arten von neuronalen Netzen

** Vollständig verbunden **: Ein Modell, bei dem alle Neuronen zwischen den Schichten wie im "Figure Neural Network Model" verbunden sind. ** Faltbar **: Wird häufig im Bereich der Bildverarbeitung verwendet. Durch Falten des Bildes ist es möglich, die Merkmale im Bild zu verstärken oder zu schwächen. ** Rekursiv **: Eine Art neuronales Netzwerk, das den Kontext verarbeiten kann. Wird häufig für die Verarbeitung natürlicher Sprache und für Seriendaten verwendet.

Rückkehr

Das Regressionsproblem besteht darin, kontinuierliche numerische Werte aus der Tendenz von Daten vorherzusagen. Die grundlegende Verwendung besteht darin, diskrete Daten zu sammeln, aus diesen Daten eine Näherungsfunktion zu erstellen und den vorhergesagten Wert unbekannter Daten zu berechnen. Als Hauptbeispiel ・ Gewicht aus Höhe vorhersagen ・ Sagen Sie anhand der Einkaufstendenz des Benutzers voraus, was als Nächstes zu kaufen ist ・ Prognostizieren Sie den Aktienkurs von morgen anhand vergangener Aktienkurstrends ・ Vorhersage der Miete anhand der Immobilieninformationen

Einfache Regression

Vorhersage eines Ergebnisses aus einer Eingabe. Es wird verwendet, um zwei Beziehungen wie Größe zu Gewicht auszudrücken.

Multiple Regression

Eine, die ein Ergebnis aus mehreren Eingaben vorhersagt, z. B. die Vorhersage der Miete anhand verschiedener Informationen der Immobilie. Dies wird häufiger verwendet.

Einstufung

Ein Klassifizierungsproblem ist ein Problem der Klassifizierung von Daten in mehrere feste Rahmen. Im Gegensatz zum Regressionsproblem gibt es mehrere Ausgaben. Die Ausgabe zeigt die Wahrscheinlichkeit, so wie sie ist klassifiziert zu werden. Als Hauptbeispiel ・ Klassifizieren Sie Pflanzen anhand von Blattbildern ・ Klassifizieren Sie handschriftliche Zeichen ・ Bestimmen Sie, welches Fahrzeug auf dem Bild angezeigt wird

Flow beim eigentlichen Lernen

1 Datensatzvorbereitung

Was ist ein Datensatz?

Dies ist eine Datengruppe, in der die Trainingsdaten x und das richtige Antwortetikett y ein Satz sind. Der Datensatz ist weiter unterteilt in ** Trainingsdaten ** und ** Testdaten **. Trainingsdaten werden für das Netzwerktraining verwendet, während Testdaten verwendet werden, um die Leistung von Modellen zu bewerten, die aus Trainingsdaten erstellt wurden. Trainingsdaten sind normalerweise größer als Testdaten. Wenn das aus den Trainingsdaten gelernte Netzwerk auch mit Testdaten gute Ergebnisse liefert, bedeutet dies, dass das Netzwerk unbekannte Daten verarbeiten kann. Wenn die Testdaten keine guten Ergebnisse liefern, stimmt etwas mit dem Netzwerk selbst oder der Lernmethode nicht. Die Fähigkeit des Netzwerks, unbekannte Daten zu verarbeiten, wird als ** Generalisierungsleistung ** bezeichnet.

1.1 Daten abrufen

Trainingsdaten werden manuell oder automatisch durch Scraping erfasst. Es kann automatisch erfasst werden, ist jedoch die schwierigste Aufgabe, da manuell ermittelt wird, ob die Daten geeignet sind. Informationen zum Sammeln von Daten finden Sie in diesem Artikel.

1.2 Erstellen eines Datensatzes

Datensätze werden manuell erstellt oder verwenden Bibliotheken. Sie finden es, indem Sie nach "Erstellen eines Datensatzes" suchen. Erstellen Sie ein Bild mit dem Anmerkungswerkzeug **. Ein Großteil der Zeit des Benutzers wird für die Erstellung dieses Datensatzes aufgewendet. Bilder erfordern normalerweise Tausende von Blättern, um die richtigen Ergebnisse zu erzielen, aber sie sind schwer zu sammeln und normalerweise gepolstert.

Datensatzstruktur

Die Trainingsdaten und das richtige Antwortetikett des Datensatzes sind jeweils ein Vektor. Beispielsweise wird das richtige Antwortetikett für die Höhe durch einen Vektor dargestellt, in dem die folgenden numerischen Werte angeordnet sind. [146.2 170.4 169.3 154.5 179.2]  In diesem Fall befinden sich 5 Neuronen in der Ausgabeschicht, und die Vorspannungs- und Gewichtsgradienten werden so eingestellt, dass sich jeder Ausgabewert dem korrekten Wert nähert. Im Fall eines Klassifizierungsproblems ist das richtige Antwortetikett ein Vektor, in dem die richtige Antwort 1 ist und alle außer der richtigen Antwort 0 sind, wie unten gezeigt. [0 0 1 0 0] Eine Folge von Zahlen mit einer verbleibenden 1 und 0 wird als ** One-Hot-Ausdruck ** bezeichnet.

1.3 Datenvorverarbeitung

Formatieren Sie Daten in ein benutzerfreundliches Format wie Normalisierung und Standardisierung. Standardisierung hat beispielsweise den Effekt, das Lernen zu stabilisieren und zu beschleunigen.

1.4 (Umstellung auf One-Hot-Darstellung)

Im Falle eines Klassifizierungsproblems wird der richtige Antwortwert in einem onoe-hot-Ausdruck ausgedrückt. Fügen Sie daher bei der Implementierung ein Konvertierungsprogramm in einen One-Hot-Ausdruck ein. Wenn die Anzahl der Neuronen in der Ausgabeschicht 3 beträgt, wird dies wie folgt. [1 0 0] [0 1 0] [0 0 1]

1.5 Trennung von Trainingsdaten und Testdaten

Schließlich wird es in Trainingsdaten und Testdaten unterteilt. Die Trainingsdaten werden für das Training verwendet, während die Testdaten verwendet werden, um die Generalisierungsleistung der aus den Trainingsdaten erhaltenen Trainingsergebnisse zu bewerten. Es gibt keinen Unterschied beim Training beider, aber die Ergebnisse nach dem Lernen werden grafisch verglichen. Es scheint, dass 20% bis 30% der Trainingsdaten für die Testdaten gut sind.

2 Implementierung jeder Schicht

Arbeiten Sie daran, Formen für die Zwischenschicht und die Ausgabeschicht herzustellen, die zum Lernen verwendet werden. Stellen Sie die ** Aktivierungsfunktion ** und ** Verlustfunktion ** der Zwischenschicht bzw. der Ausgangsschicht ein. Es ist eine gute Idee, es mit class zu schreiben, damit Sie es wiederverwenden können. Parameter sollten als Variablen deklariert werden, damit sie von außen geändert werden können. Wenn Sie nicht verstehen, sondern nur schnell lernen möchten, reicht es aus, andere Personen zu kopieren und einzufügen.

3 Einstellen des Anfangswertes des Parameters

** Stellen Sie das Anfangsgewicht und die Vorspannung ein **. In Bezug auf die Art der Aktivierungsfunktion [Was ist die Aktivierungsfunktion, die ich nicht gut verstehe](https://newtechnologylifestyle.net/%E3%82%84%E3%81%A3%E3%81%B1%E3%82%8A % E3% 82% 88% E3% 81% 8F% E5% 88% 86% E3% 81% 8B% E3% 82% 89% E3% 81% AA% E3% 81% 84% E6% B4% BB% E6 % 80% A7% E5% 8C% 96% E9% 96% A2% E6% 95% B0% E3% 81% A8% E3% 81% AF /) ist hilfreich.

4 Hyperparametereinstellung

Stellen Sie es zum ersten Mal mit einer Dose ein und ändern Sie die folgenden vier Werte entsprechend dem Lernergebnis. Diese werden vom Benutzer entsprechend der von den Testdaten ausgewerteten Ausgabe mehrfach angepasst. Jede Erklärung ist [hier](# hyper parameter) ·Epoche ・ Chargengröße ・ Lernkoeffizient ・ Optimierungsalgorithmus

5 lernen

Lernen ist der Prozess der Anpassung der Verbindungen zwischen Neuronen. Das Lernen durchläuft die folgenden drei Prozesse.

5.1 Ableitung des Fehlers aus der richtigen Antwort

Verwenden Sie die ** Verlustfunktion **, um den Fehler abzuleiten.

5.2 Ableitung des Gradienten

Die ** Gradientenabstiegsmethode ** wird verwendet, um den Gradienten zu bestimmen. Die resultierende Verlustfunktion $ L $ wird teilweise durch $ w $ differenziert, um den Gradienten $ \ frac {∂L} {∂w} $ zu erhalten. image.png (Zitat: Chaier Tutorial)

5.3 Rückausbreitung (Backpropagation-Methode)

Der Fehler zwischen der durch Vorwärtsausbreitung erhaltenen Ausgabe und der im Voraus vorbereiteten richtigen Antwort wird Schicht für Schicht in die entgegengesetzte Richtung weitergegeben. Basierend auf dem propagierten Fehler wird der Betrag der Gewichts- und Vorspannungsaktualisierung für jede Schicht berechnet. Das Gewicht nach dem Update wird wie folgt berechnet.


w←w−η\frac{∂L}{∂w}

6 Bewertung der richtigen Antwortrate

Überprüfen Sie als Ergebnis des Lernens, wie viel Prozent der Trainingsdaten richtig beurteilt werden können. Wie viel Prozent der Testdaten richtig beurteilt werden können, ist ein wichtiger Index für die Beurteilung des Erfolgs oder Misserfolgs des Lernens. Geben Sie Diagramme von Epochen (Anzahl der Lernvorgänge) und Verlust (Anzahl der falschen Antworten) aus, und der Benutzer kann sie visuell überprüfen. Schätzen Sie, was durch die Bewegung des Diagramms schief geht, passen Sie die Hyperparameter an und lernen Sie erneut.

Probleme durch vielschichtiges Deep Learning

Falle zur lokal optimalen Lösung

Ein Problem, bei dem die optimale Lösung nicht als Ganzes erreicht werden kann, weil die lokale optimale Lösung beim Auffinden des Gradienten eingefangen wird. In einigen Fällen wird der Gradient extrem reduziert, und es besteht das Problem, dass das Lernen nicht fortgesetzt wird. Um die optimale Lösung als Ganzes zu finden, ist es notwendig, den besten Zustand einmal vor Ort zu belassen. image.png (Zitat: Chainer Tutorial)

Überlernen

Es gibt ein neuronales Netzwerk ** Es wird nur für einen bestimmten Datenbereich optimiert und gelernt, und es wird unmöglich, mit unbekannten Daten umzugehen. ** Beim maschinellen Lernen ist es auch unmöglich, Eingabedaten zu schätzen, die zu unbekannt sind, um zu den Trainingsdaten zu passen. Man kann sagen, dass nur ein bestimmtes Muster in eine optimierte lokale optimale Lösung gefallen ist. Das generierte Netzwerk sollte etwas schlampig sein, damit es eine Vielzahl von Daten verarbeiten kann. Um dieses Überlernen zu unterdrücken, passt der Benutzer verschiedene später beschriebene Parameter an. ** Wenn zu viele mittlere Schichten oder Neuronen vorhanden sind, tritt aufgrund übermäßiger Ausdruckskraft ein Überlernen auf. ** Es kann auch aufgrund ** unzureichender Stichprobengröße der Trainingsdaten ** auftreten.

Verschwinden des Gefälles

Probleme, die hauptsächlich durch die Verwendung der Sigmoid-Funktion als Aktivierungsfunktion verursacht werden. Der Gradient der Sigmoidfunktion hat einen Maximalwert von 0,25 und nähert sich 0, wenn der Abstand von 0 zunimmt. Beim Zurückpropagieren wird die Differenzierung der Aktivierungsfunktion jedes Mal auf jeden Gradienten angewendet, wenn die Schicht zurückverfolgt wird. Im Fall der Sigmoidfunktion wird jeder Gradient jedes Mal kleiner, wenn die Schicht verfolgt wird, und der Gradient verschwindet. Daher wird beim Deep Learning häufig ReLU als Aktivierungsfunktion verwendet.

Es braucht Zeit, um zu lernen

Beim mehrschichtigen Deep Learning ist die Anzahl der Gewichte und Vorurteile enorm. Daher kann das Lernen Tage oder Wochen dauern. Um dieses Problem zu beheben, verwenden Sie eine GPU, verwenden Sie einen Computer mit hohen Spezifikationen, komplizieren Sie das Netzwerk nicht mehr als nötig und passen Sie die Parameter an.

Benutzerdefinierte Parameter

Das Problem mit der Mehrschichtigkeit kann von der Maschine nicht automatisch angepasst werden, daher muss der Benutzer es entsprechend dem Ergebnis anpassen. Daher müssen Anpassungen und Lernen viele Male wiederholt werden, um bessere Ergebnisse zu erzielen. Die folgenden sieben Elemente müssen angepasst werden. Es bedarf einiger Erfahrung, um zu entscheiden, welche angepasst werden soll. Häufige Anpassungen sind Hyperparameter, Datenerweiterung und Datenvorverarbeitung.

1 Hyperparameter

Epoche

Das einmalige Lernen aller Trainingsdaten wird als eine Epoche gezählt. Selbst wenn die Anzahl der Epochen zu groß ist, kommt es zu einer Überanpassung an die Trainingsdaten. Halten Sie daher bei einer angemessenen Anzahl von Malen an.

Chargengröße

Es bezieht sich auf die Anzahl der Daten, die in jeder von mehreren Teilmengen des Datensatzes enthalten sind. Parameter, die sich auf Lernzeit und Leistung auswirken. Weitere Informationen finden Sie unter hier.

Lernkoeffizient

Der Koeffizient, der auf den Gradienten der Gradientenabstiegsmethode angewendet werden soll. Auf diese Weise können Sie den Gradienten einstellen. Wenn der Lernkoeffizient zu groß ist, schwankt oder divergiert der Wert der Verlustfunktion, wenn die Parameter wiederholt aktualisiert werden. Wenn es dagegen zu klein ist, dauert es einige Zeit, bis es konvergiert. Da der optimale Wert für diesen Wert nicht ermittelt wurde, muss empirisch gesucht werden.

Optimierungsalgorithmus

Bei der Gradientenabstiegsmethode werden das Gewicht und die Vorspannung nach und nach basierend auf dem Gradienten angepasst, und das Netzwerk wird optimiert, um den Fehler zu minimieren. Für diese Optimierung gibt es verschiedene Algorithmen. [Klicken Sie hier] für eine Beschreibung der einzelnen Algorithmen (#Liste der Optimierungsalgorithmen)

2 Anfangswerte für Gewicht und Vorspannung

Ein wichtiger Hyperparameter in Bezug auf den Erfolg oder Misserfolg des Lernens. Es ist wünschenswert, eine zufällige Variation mit einem kleinen Wert zu haben.

3 Vorzeitige Beendigung

Eine Methode, um das Lernen in der Mitte zu beenden. Mit fortschreitendem Lernen nimmt der Fehler der Testdaten von der Mitte aus zu, und es kann zu einem Überlernen kommen. Daher wird das Lernen vorher beendet. Selbst wenn der Fehler stagniert und das Lernen nicht fortgesetzt wird, wird er beendet, um Zeit zu sparen.

4 Datenerweiterung

Wenn die Anzahl der Trainingsdatenproben gering ist, tritt wahrscheinlich ein Übertraining auf. In diesem Fall ist es üblich, die Probe aufzublasen, um damit umzugehen. Durch das Training verschiedener Arten von Beispielen wird die Leistung der Netzwerkverallgemeinerung verbessert. In diesem Artikel wird geschrieben, dass Sie beim tatsächlichen Trainieren des Bildes aufgrund fehlender Beispiele überlernt werden.

5 Datenvorverarbeitung

Verarbeiten Sie die Eingabedaten im Voraus, um die Handhabung zu vereinfachen. Es ist zu erwarten, dass die Vorverarbeitung die Netzwerkleistung verbessert und das Lernen beschleunigt. Ein Großteil der Zeit des maschinellen Lernens wird dafür aufgewendet. Wenn Sie Python verwenden, können Sie diese mithilfe einer Bibliothek namens "pandas" problemlos vorverarbeiten. Es gibt verschiedene Arten der Vorverarbeitung, wie z. B. Normalisierung und Standardisierung. Informationen zur Methode finden Sie in diesem Artikel.

6 Aussetzer

Unterdrückungstechnik überlernen. Eine Technik, die andere Neuronen als die Ausgabeschicht mit einer bestimmten Wahrscheinlichkeit zufällig löscht. Größere Netzwerke sind anfälliger für Überlernen, sodass Aussetzer verwendet werden können, um die Größe des Netzwerks zu verringern.

7 Regularisierung

Begrenzen Sie das Gewicht. Durch die Begrenzung der Gewichte nehmen die Gewichte Extremwerte an und ** verhindern, dass sie in der lokal optimalen Lösung eingeschlossen werden. ** ** **

Arten von Aktivierungsfunktionen

ReLU Der Ausgang ist 0 für Eingänge unter 0. Eine Funktion, die den gleichen Ausgang wie der Eingang für Eingänge über 0 erzeugt. ** Wird häufig bei Klassifizierungsproblemen verwendet **. Da die Eingabe von 0 oder weniger im Klassifizierungsproblem nicht berücksichtigt werden kann, wird sie häufig zur Rauschentfernung verwendet. Bei der programmgesteuerten Implementierung kann die Implementierung durch Abschneiden von 0 oder weniger in der if-Anweisung erfolgen. image.png

Sigmaid-Funktion

Wenn der Eingabewert groß wird, konvergiert er gegen einen konstanten Wert, sodass er nicht für große Eingabewerte verwendet wird. image.png (wikipedia)

Softmax-Funktion

** Eine Funktion, die zur Behandlung von Klassifizierungsproblemen geeignet ist. ** Wird häufig für die Ausgabeschicht von Klassifizierungsproblemen verwendet. Die Summe aller Ausgänge dieser Funktion von K = 1 bis n ergibt 1. Daher hat die Softmax-Funktion die Eigenschaft, zu normalisieren, so dass die Summe aller Ausgaben ** ist, unabhängig davon, welchen Wert der aus mehreren Eingabewerten bestehende Vektor X annimmt. ** Daher ist es mit dem Klassifizierungsproblem kompatibel, bei dem der Gesamtausgabewert der Neuronen in der Ausgabeschicht als 1 behandelt wird.

y=\frac{e^{x}}{\sum_{k=1}^{N}e^{x_k}}

Gleiche Funktion

Eine Funktion, die die Eingabe so zurückgibt, wie sie ist. ** Wird häufig als Aktivierungsfunktion für die Ausgabeebene von Regressionsproblemen verwendet. ** ** **

Liste der Verlustfunktionen

Durchschnittlicher quadratischer Fehler

Verlustfunktion, die häufig verwendet wird, wenn Sie das ** Regressionsproblem ** lösen möchten.

L= \frac{1}{N}\sum_{n=1}^{N}(t_n-y_n)^2

Kreuzentropiefehler

Verlustfunktion, die häufig bei der Lösung von ** Klassifizierungsproblemen ** verwendet wird. Der Vorteil ist, dass die Lerngeschwindigkeit schnell ist, wenn der Abstand zwischen der Ausgabe und dem richtigen Antwortwert groß ist.

L=\sum_{k=1}^{K}t_k(-\log(y_k))

Liste der Optimierungsalgorithmen

Das Folgende ist eine Anmerkung von typischen. Weitere Optimierungsalgorithmen finden Sie hier [https://qiita.com/ZoneTsuyoshi/items/8ef6fa1e154d176e25b8#%E7%A2%BA%E7%8E%87%E7%9A%84%E5%8B%BE% E9% 85% 8D% E9% 99% 8D% E4% B8% 8B% E6% B3% 95sgd-stochastischer Gradientenabstieg).

SGD (Probabilistic Gradient Descent Method)

Ein Algorithmus, der für jedes Update zufällig ein Beispiel aufruft. Es hat die Eigenschaft, dass es schwierig ist, sich in der lokalen optimalen Lösung zu verfangen. Obwohl es mit einfachem Code implementiert werden kann, dauert das Lernen oft einige Zeit, da die Anzahl der Aktualisierungen nicht an den Lernfortschritt angepasst werden kann. AdaGard Der Aktualisierungsbetrag wird automatisch angepasst. Mit fortschreitendem Lernen nimmt die Lernrate allmählich ab. Da die einzige Konstante, die eingestellt werden muss, der Lernkoeffizient ist, dauert die Anpassung nicht lange. RMSProp AdaGrad überwindet die Schwäche der Lernstagnation aufgrund einer geringeren Anzahl von Updates. Adam Eine verbesserte Version von RMSprop. Es scheint das am häufigsten verwendete zu sein.

Referenz

Chainer Tutorial Einführung in maschinelles Lernen ab Python Erstes tiefes Lernen: Mit Python erlerntes neuronales Netzwerk und Rückausbreitung Grundlagen des Kikagaku Deep Learning https://www.sbbit.jp/article/cont1/33345 https://qiita.com/nishiy-k/items/1e795f92a99422d4ba7b https://qiita.com/Lickey/items/b97c3450d7def207bfbf

Recommended Posts

Ein Memorandum zum Studieren und Implementieren von Deep Learning
Deep Learning Memorandum
Bedeutung von Deep-Learning-Modellen und -Parametern
Deep Learning 1 Übung des Deep Learning
Paralleles Lernen von Deep Learning durch Keras und Kubernetes
Erstellen Sie eine Python-Umgebung, um die Theorie und Implementierung von Deep Learning zu erlernen
DNN (Deep Learning) Library: Vergleich von Chainer und TensorFlow (1)
Sammlung und Automatisierung erotischer Bilder durch Deep Learning
Deep Running 2 Tuning von Deep Learning
Ein kleines Memorandum von openpyxl
Tiefes Lernen der Verstärkung 2 Implementierung des Lernens der Verstärkung
Ein Memorandum zur Verwendung von eigen3
[Deep Learning von Grund auf neu] Implementierung der Momentum-Methode und der AdaGrad-Methode
Untersuchung der Austauschprognosemethode mit Deep Learning und Wavelet-Konvertierung - Teil 2-
Memorandum zum Speichern und Laden des Modells
[Python] Ein Memorandum der schönen Suppe4
Memorandum of files unter conf.d.
Organisation von Plattformen für maschinelles Lernen und tiefes Lernen
Ein Memorandum über den Inhalt der Abschlussumfrage
Ich suchte mit Deep Learning nach einer ähnlichen Karte von Hearthstone
Memorandum of Scraping & Machine Learning [Entwicklungstechnik] von Python (Kapitel 4)
Memorandum of Scraping & Machine Learning [Entwicklungstechnik] von Python (Kapitel 5)
Zusammenfassung der Seiten, die zum Studium des Deep Learning Framework Chainer nützlich sind
Diagramm der Geschichte der Anzahl der Ebenen des tiefen Lernens und der Änderung der Genauigkeit
Ein grobes Verständnis von Python-Feuer und ein Memo
Hinweis zur Verwendung der Python-Eingabefunktion
Einführung in Deep Learning ~ Falten und Pooling ~
Ein Memorandum über die Geschwindigkeit der Diagonalisierung beliebigen Grades
Eine kleine Überprüfung von Pandas 1.0 und Dask
Eine Sammlung von Tipps zur Beschleunigung des Lernens und Denkens mit PyTorch
Verbinde viel Python oder und und
Memorandum zu Djangos QueryDict
Versuchen Sie mit Kipoi tiefes Erlernen der Genomik
Visualisieren Sie die Auswirkungen von Deep Learning / Regularisierung
Eine Geschichte über einen Anfänger im Deep Learning, der versucht, Gitarren mit CNN zu klassifizieren
Emotionale Analyse von Tweets mit Deep Learning
Erstellen Sie schnell eine Python-Umgebung für Deep Learning / Data Science (Windows)
Tiefes Lernen
Lernbericht über das Lesen von "Deep Learning von Grund auf neu"
Untersuchung der Austauschprognosemethode mittels Deep Learning und Wavelet-Konvertierung
Othello-Aus der dritten Zeile von "Implementation Deep Learning" (2)
Memorandum zum Löschen von Python-Strings
Ein Memorandum über Probleme beim Formatieren von Daten
[Für Anfänger künstlicher Intelligenz] Maschinelles Lernen / Deep Learning Programming Lernpfad und Nachschlagewerke
Deep Learning von Grund auf neu Die Theorie und Implementierung des mit Python erlernten Deep Learning Kapitel 3
Ein Memorandum über Methoden, die häufig beim maschinellen Lernen mit Scikit-Learn (für Anfänger) verwendet werden.
Maschinelles Lernen eines jungen Ingenieurs Teil 1
Die Geschichte des tiefen Lernens mit TPU
Chainer und Deep Learning durch Funktionsnäherung gelernt
Deep Learning / Fehler-Backpropagation der Sigmoid-Funktion
Numerai Turnier-Fusion von traditionellen Quants und maschinellem Lernen-
Ein Memorandum zum Aufrufen von Python aus Common Lisp
[Lernnotiz] Deep Learning von Grund auf ~ Implementierung von Dropout ~
Memorandum der Extraktion durch Python BS4-Anfrage
Grundlegendes Verständnis der Stereo-Tiefenschätzung (Deep Learning)
Erweitern und erweitern Sie Ihren eigenen Deep Learning-Datensatz
Einführung in Deep Learning ~ Lokalisierungs- und Verlustfunktion ~
Maschinelles Lernen eines jungen Ingenieurs Teil 2
Lassen Sie uns einen Teil des maschinellen Lernens mit Python berühren
Implementierung eines Deep Learning-Modells zur Bilderkennung