Es ist keine leichte Aufgabe, tiefe neuronale Netze von Grund auf zu trainieren.
Es braucht viel Daten und Zeit, um zu lernen, aber einige Tricks können helfen, den Prozess zu beschleunigen, über den ich unter dem Schnitt sprechen werde.
Demonstration des Durchgangs eines einfachen Labyrinths mit Tricks. Dauer des Netzwerktrainings: 1 Stunde 06 Minuten. Aufnahme um das 8-fache beschleunigt.
Für jede Aufgabe müssen Sie Ihre eigenen Tricks entwickeln, um das Lernen im Netzwerk zu beschleunigen. Ich werde ein paar Tricks teilen, die mir geholfen haben, das Netzwerk viel schneller zu trainieren.
Aus theoretischen
Gründen empfehle ich, auf den Kanal
sim0nsays zu
wechseln .
Und ich werde über meine bescheidenen Erfolge beim Training neuronaler Netze berichten.
Erklärung des Problems
Annäherung der Konvergenzfunktion durch Minimierung der quadratischen Verlustfunktion durch Rückwärtsausbreitung von Fehlern durch tiefe neuronale Netze.Ich hatte die Wahl, wie ich ein neuronales Netzwerk trainieren sollte.
Ermutigen Sie zum erfolgreichen Abschluss der Aufgabe oder ermutigen Sie, wenn Sie sich dem Abschluss der Aufgabe nähern.
Ich habe die zweite Methode aus zwei Gründen gewählt:
- Die Wahrscheinlichkeit, dass das Netzwerk jemals alleine die Ziellinie erreicht, ist sehr gering, so dass es zum Scheitern verurteilt ist, viel negative Verstärkung zu erhalten. Dadurch werden die Gewichte aller Neuronen zurückgesetzt, und das Netzwerk kann nicht weiter trainiert werden.
- Tiefe neuronale Netze sind mächtig. Ich schließe nicht aus, dass die erste Methode erfolgreich gewesen wäre, wenn ich eine enorme Rechenleistung und viel Zeit für das Training gehabt hätte. Ich bin den Weg der geringsten Kosten gegangen, indem ich Tricks entwickelt habe.
Neuronale Netzwerkarchitektur
Architektur wird experimentell entwickelt, basierend auf der Erfahrung des Architekten und viel Glück.
Architektur zur Lösung des Problems:
- 3 Eingangsneuronen - die Koordinaten des Agenten und der Wert der übergebenen Zelle (wir normalisieren im Bereich von 0 bis 1).
- 2 versteckte Schichten von 256 und 128 Neuronen (wir reduzieren die Dimension der Schichten in Richtung der Netzwerkausgabe).
- 1 Schicht, die zufällige Neuronen für das Lernnetzwerk für Nachhaltigkeit fallen lässt.
- 4 Ausgangsneuronen - die Wahrscheinlichkeit, zu entscheiden, welche Seite für den nächsten Schritt ausgewählt werden soll.
- Neuronaktivierungsfunktion: Sigmoid. Optimierer: Adam.
Sigmoid gibt 4 Wahrscheinlichkeiten am Ausgang im Bereich von 0 bis 1 an, wobei die maximale ausgewählt wird. Wir erhalten die Seite für den nächsten Schritt: [jumpTop, jumpRight, jumpBottom, jumpLeft].
Architekturentwicklung
Eine Umschulung erfolgt bei Verwendung zu komplexer Modelle.
Zu diesem Zeitpunkt erinnerte sich das Netzwerk an die Trainingsdaten und für neue Daten, die das Netzwerk noch nicht gesehen hat, funktioniert es schlecht, da das Netzwerk nicht nach Verallgemeinerungen suchen musste, da es über genügend Speicher zum Speichern verfügte.
Mangel an Bildung - mit unzureichend komplexen Modellen. Zu diesem Zeitpunkt verfügte das Netzwerk nur über wenige Trainingsdaten, um Verallgemeinerungen zu finden.
Fazit: Je mehr Schichten und Neuronen sich in ihnen befinden, desto mehr Daten werden für das Training benötigt.
Spielfeld

Spielregel
0 - Beim Betreten dieser Zelle wird der Agent zerstört.
1..44 - Zellen, deren Werte mit jedem Schritt zunehmen.
Je weiter der Agent geht, desto mehr Belohnung erhält er.
45 - Fertig stellen. Gleichzeitig findet kein Training statt, sondern nur, wenn alle Agenten zerstört sind, und das Ziel ist eine Ausnahme, bei der das bereits trainierte Netzwerk einfach für die nächste Vorhersage vom Beginn des Labyrinths an verwendet wird.
Beschreibung der Parameter
Der Agent hat eine "Antenne" in vier Richtungen - sie spielen die Rolle der Umweltintelligenz und beschreiben die Koordinaten des Agenten und den Wert der Zelle, auf der er steht.
Die Beschreibung spielt die Rolle der Vorhersage der nächsten Richtung für die Bewegung des Agenten. Das heißt, der Agent scannt voraus, was als nächstes kommt, und dementsprechend lernt das Netzwerk im Laufe der Zeit, sich in Richtung einer Erhöhung des Zellenwerts zu bewegen und die Grenzen der zulässigen Bewegung nicht zu überschreiten.
Der Zweck des neuronalen Netzwerks: mehr Belohnungen zu erhalten.
Lernzweck: Um korrekte Aktionen
zu fördern, ist die Belohnung für das neuronale Netzwerk umso höher, je näher der Agent an der Lösung der Aufgabe ist.
Tricks
Die ersten Versuche, ohne Tricks zu lernen, dauerten mehrere Stunden Training und das Ergebnis war bei weitem nicht vollständig. Mit bestimmten Techniken wurde das Ergebnis in nur einer Stunde und sechs Minuten erzielt!
Agentenschleife
Während des Trainings begann das Netzwerk, Entscheidungen zu treffen, sich hin und her zu bewegen - das Problem der „Nutzung“. Beide Schritte geben dem Netzwerk eine positive Belohnung, die den Prozess der Erkundung des Labyrinths stoppte und es nicht erlaubte, das lokale Minimum zu verlassen.
Der erste Lösungsversuch bestand darin, die Anzahl der Bewegungen des Agenten zu begrenzen. Dies war jedoch nicht optimal, da der Agent vor der Selbstzerstörung viel Zeit in einer Schleife verbrachte. Die beste Lösung bestand darin, den Agenten zu zerstören, wenn er mit einem niedrigeren Wert als dem, auf dem er stand, in die Zelle ging - das Verbot, in die entgegengesetzte Richtung zu gehen.
Forschung oder Verwendung
Ein einfacher Trick wurde verwendet, um die Pfade um die aktuelle Position des Agenten zu erkunden: Bei jedem Schritt werden 5 Agenten „freiwillige“ Forscher sein. Der Verlauf dieser Agenten wird zufällig ausgewählt und nicht die Vorhersage des neuronalen Netzwerks.
Wir haben daher eine erhöhte Wahrscheinlichkeit, dass einer der fünf Agenten weiter voranschreitet als die anderen und dabei hilft, das Netzwerk mit besseren Ergebnissen zu trainieren.
Genetischer Algorithmus
In jeder Ära nehmen 500 Agenten am Spielfeld teil. Vorhersagen für alle Agenten werden im asynchronen Modus für alle Agenten gleichzeitig durchgeführt. Außerdem werden die Berechnungen an gpu delegiert. Auf diese Weise können wir die Rechenleistung des Computers effizienter nutzen, was zu einer Verkürzung der Zeit führt, um ein neuronales Netzwerk für 500 Agenten gleichzeitig vorherzusagen.
Die Vorhersage funktioniert schneller als das Training, sodass das Netzwerk mehr Chancen hat, sich mit der geringsten Zeit und dem besten Ergebnis weiter durch das Labyrinth zu bewegen.
Das Beste in der Generation lernen
Während der gesamten Ära bleiben für 500 Agenten die Ergebnisse ihres Fortschritts durch das Labyrinth erhalten. Wenn der letzte Agent zerstört ist, werden die 5 besten Agenten aus 500 ausgewählt - die das Labyrinth am weitesten erreicht haben.
Basierend auf den besten Ergebnissen der Ära wird ein neuronales Netzwerk trainiert.
Auf diese Weise reduzieren wir den Speicherbedarf, indem wir das Netzwerk nicht auf Agenten speichern und nicht trainieren, die das Netzwerk nicht weiterentwickeln.
Fertigstellung
Da ich kein Spezialist auf diesem Gebiet bin, habe ich es geschafft, einige Erfolge beim Training des neuronalen Netzwerks zu erzielen, und Sie werden Erfolg haben - machen Sie es!
Bemühen Sie sich, schneller als Computer zu lernen, während wir es besser machen.
Material
Repository mit CodeStarten Sie das BrowsertrainingIn der Dokumentation zu tensorflow.js finden Sie auch zusätzliche Ressourcen zum Lernen.
Bücher
- Tiefes Lernen. Eintauchen in die Welt der neuronalen Netze
S. Nikolenko, A. Kadurin, E. Arkhangelskaya
- Maschinelles Lernen und TensorFlow
N. Shakla
- Selbstlernende Systeme
S. I. Nikolenko, A. L. Tulupyev
- Verstärkungstraining
R. S. Sutton, E. G. Barto
- Selbstorganisierende Karten
T. Kohonen
Vielen Dank für Ihre Aufmerksamkeit!