Hallo und willkommen zu dem super aufregenden Teil unserer Kreation, dem Teil, in dem wir es schlau machen.
Genau das passiert beim Training der Luft.
Ich werde seine Intelligenz trainieren, um das Ziel zu erreichen, das wir erreichen wollten.
Und um dies zu tun, werden wir im Grunde das neuronale Netzwerk trainieren, um die richtigen Vorhersagen auszugeben.
Und dann ist schon alles fertig, denn diese Ausgangssignale des Gehirns haben bereits die richtige
Übertragung zum Körper, um die letzten Aktionen auszuführen.
Im Grunde genommen tun wir jetzt etwas, was wir bereits zuvor getan haben.
Wir werden nur einige zufällige Stapel aus dem Speicher entnehmen, unsere Eingaben aus diesen Stichproben abrufen,
die Ausgabe abrufen, das Ziel abrufen, die Vorhersagen abrufen, den letzten Fehler zwischen den Vorhersagen und
dem Ziel berechnen und dann die Rückwärtsausbreitung durchführen um den Gradientenabstieg zu veranlassen, die Gewichte entsprechend
dem Beitrag zu diesem letzten Fehler zu aktualisieren.
Also lass uns das alles machen.
Sie werden sehen, wie einfach es sein wird, denn wir haben bereits alle Tools, um dies zu
implementieren.
Wir haben nicht nur den Weg zu Tools wie dem Optimierer und den Verlustfunktionen, sondern auch alle Klassen, die
wir zuvor erstellt haben, wie natürlich unser Gehirn, die wir verwenden werden, um die Vorhersagen
zu erhalten.
Dann werden unsere Erfahrung, die Nachverfolgung der Implementierungsberechtigung und all diese Tools zusammen mit dem Piloten kombiniert. Diese
Tools machen das Training zu einer Superleistung und daher erhalten wir schließlich ein superstarkes
A. ICH. Lassen Sie uns dieses Training durchführen.
Machen wir unsere Augen schlau.
Und das erste, was wir jetzt tun werden, ist, die letzte Funktion zu erhalten, die wir während des Trainings
verwenden, um den Fehler zu berechnen und zu optimieren.
Das ist das erste, was wir tun werden.
Erstellen wir also eine Variable für die letzte Funktion.
Wir werden es Verlust nennen.
Und dies entspricht der MSE-Verlustfunktion des Endmoduls.
Und dann dieser Mercilus.
Dies ist die letzte Funktion, die wir verwenden werden, da unsere Vorhersagen im Grunde genommen Werte sind.
Sie wissen, wir prognostizieren die Grundwerte der verschiedenen Aktionen.
Und deshalb, da dies reelle Zahlen sind, machen wir eine Art neuronales Netzwerk für die Regression und
daher ist die Verlustfunktion das Mittel für Fehler.
Das ist die Verlustfunktion, die wir im Allgemeinen für die Regression verwenden.
Gut.
Nachdem wir nun unsere letzte Funktion haben, lassen Sie uns unseren Optimierer hier so optimieren.
Das ist die Variable, die wir für den Optimierer erstellen.
Und wir werden wie gewohnt nehmen.
Das selbstfahrende Auto, der Atomoptimierer, ist ein sehr leistungsfähiger Optimierer, der Wunder für das Training
bewirkt.
Also lasst uns dieses auf dieses Atom bringen.
Und denken Sie daran, genau das ist das selbstfahrende Auto, für das wir zwei wesentliche Argumente eingeben müssen.
Der erste ist derjenige, der die Verbindung zwischen dem Optimierer und den Parametern unseres neuronalen Netzwerks
herstellt, dh den Gewichten der Neuronen unseres Gehirns.
Und dazu nehmen wir unser Gehirn, das wir CNN nannten.
Das ist das Objekt, das wir für unser Gehirn geschaffen haben.
Und so CNN, die sich an Parameter erinnern, die wir gehen, und einige Klammern.
Das stellt also die Verbindung zwischen dem Optimierer und den Gewichten der Neuronen im
Gehirn unseres A her. ICH. Und dann ist das zweite Argument eine Lernrate, und das ist gegeben durch l. R.
Deshalb müssen wir hier eine geringere Lernrate wählen, weil wir nicht zu schnell konvergieren wollen und etwas erforschen wollen,
und daher ist eine gute Lernmethode, die wir hier sagen können, eine kleine, die vier Punkte
oder eine solche ist ist 0. 01 Prozent.
Ich denke, das ist das gleiche, was wir für das selbstfahrende Auto verwendet haben.
Also gut, jetzt haben wir einen Funktionsoptimierer für verlorene Funktionen, sodass wir fast bereit sind, die vollständige Schleife zu starten.
Nun, eigentlich werden wir jetzt die vollständige Schleife starten.
Aber kurz bevor wir es tun, werden wir die Größe der Anzahl der Epochen bestimmen, in die
wir uns verwandeln werden, und daher hier eine neue Variable erstellen, die auf diese Anzahl von Epochen reagiert.
Und lassen Sie es uns gleich hundert setzen.
Das wird gut genug sein, um die Luft zu trainieren, und ich wette sogar, dass die Luft es schaffen wird, den besten
Weg vor einhundert wie zwanzig oder dreißig zu erreichen.
Mal schauen.
Aber jetzt nehmen wir hundert.
Und wenn wir es brauchen, werden wir es erhöhen.
Aber ich denke nicht, dass das notwendig sein wird.
OK, jetzt, da wir unsere Anzahl an Flughäfen haben, können wir beginnen, die vollständige
Schleife des Trainings zu machen, wenn wir über die Flughäfen trainieren.
Dann wird also der gesamte Volleyball am Werk sein.
Dafür wählen wir wieder.
Jetzt werden wir natürlich die Bereichsfunktion verwenden, um zu sagen, dass wir von der ersten bis
zur Anzahl von ca.
Plus eins, denn denken Sie daran, dass die Obergrenze eines Bereichs nicht enthalten ist. Wenn Sie
also auf 100 steigen möchten, müssen wir angeben und ein Plus eins sein, um auf 100 zu kommen.
Gut.
Also, Colin.
Und jetzt kommen wir zur Schleife.
Gut.
Das erste, was wir tun werden, sind 200 Läufe mit zehn Schritten.
Jede Epoche besteht also aus 200 Läufen nacheinander in 10 Schritten.
Dazu haben wir diese Ein-Schritt-Funktion aus unserer Erfahrungsklasse und verwenden daher diese Funktion, die eigentlich
eine Methode ist, da wir sie aus unserem Speicherobjekt abrufen, das ein
Objekt aus der Ersatzklasse ist, um diese beiden Läufe zu generieren von zehn Schritten.
Nun, wir müssen unser Erinnerungsobjekt nehmen, an das ich Sie erinnere, dass wir es hier erstellt haben.
Speicher ist ein Ziel, um die Speicherklasse mit Insteps wiederzugeben.
Das sind 10 Schritte und eine Kapazität von zehntausend.
Wir haben dieses Objekt erstellt und von diesem Objekt nehmen wir gut, diese Rundstedt-Funktion führt Schritte aus und wir geben
zweihundert aufeinanderfolgende Runden von zehn Schritten an, so dass wir bei jedem im Grunde genommen 200 Schritte ausführen.
Und jetzt, da diese 200 Schritte bei jedem Apoc ausgeführt werden, ist es an der Zeit, einige Chargen aus diesen Läufen
zu testen und diese Chargen zu testen.
Wir haben eine andere Funktion aus unserem Speicher, nämlich den Beispielstapel, der genau einige Stapel
aus diesen 200 Läufen generiert.
Denken Sie jedoch daran, dass es sich bei diesen Stapeln diesmal um Stapel einer Reihe von Übergängen handelt, die eine Reihe von zehn Schritten umfassen, im Gegensatz
zu zuvor, bei denen es sich bei den Stapeln hier nur um einige Stapel einzelner Übergänge handelte.
Dieses Mal werden es Stapel von zehn Schritten, zehn Übergängen sein, und deshalb ist es jetzt an
der Zeit, diese zufälligen Stapel aus unserem Gedächtnis zu holen und sie zu erhalten.
Wir haben die einfache Chargenfunktion verwendet, auf die wir die Chargengröße anwenden müssen, und für die Chargengröße,
bei der wir zweiunddreißig oder sogar vierundsechzig oder sogar einhundertachtundzwanzig nehmen können.
Denken Sie daran, für diese Größe ist es üblich, zweiunddreißig zu verwenden.
Das sehen Sie im Allgemeinen in den Architekturen neuronaler Netze, wenn Sie Batch-Lernen durchführen.
Aber diesmal ist es ganz anders.
Wir probieren nur einige Chargen in 10 Schritten aus, daher ist es besser, Chargen mit größeren Größen zu nehmen.
Dort können wir also vierundsechzig, einhundertachtundzwanzig nehmen.
Also nehmen wir einhundertachtundzwanzig.
Und tatsächlich wird dies innerhalb der Schleife sein, weil wir mehrere Stapel aufnehmen möchten und sie in dem
aufnehmen, was von dieser einfachen Stapelfunktion zurückgegeben wird.
Diese vollständige Schleife für Batch in Memory-Beispiel-Batch, einhundertachtundzwanzig, bedeutet also, dass unser Speicher
alle einhundertachtundzwanzig Schritte einen Stapel mit einer Größe von einhundertachtundzwanzig ergibt, der
tatsächlich den letzten enthält Hundertundzwanzig Schritte, die wir gerade laufen.
Wir bekommen nur ein paar Chargen von sechs, einhundertachtundzwanzig und das Lernen wird auf diesen
Chargen stattfinden.
Außerdem werden in diesen Stapeln alle 10 Schritte Eignungsabläufe ausgeführt, um zu
lernen.
Gut.
Also jetzt in dieser Schleife, die immer noch in einer Epoche stattfindet, aber jetzt sind wir in einer bestimmten
Charge.
Und jetzt werden wir als erstes unsere Eingaben und unser Ziel getrennt erhalten.
Und das ist, wie ich Ihnen sagte, sehr einfach.
Wir können dies mit einem der von uns implementierten Tools tun, nämlich der Berechtigungsverfolgung.
Wie Sie hier sehen können, nimmt diese Berechtigungsverfolgungsfunktion die Eingaben als und jetzt haben wir den Stapel
und geben als Ausgabe die Eingaben und die Ziele zurück.
Im Moment können wir also einfach zwei neue Variablen erstellen, die die Eingaben und das Ziel
sein werden.
Und kommen diese Eingaben zu Zielen, die genau dem entsprechen, was diese Berechtigungsverfolgungsfunktion für einen Stapel zurückgibt?
Wir werden diese Funktion also auf den Stapel unserer Schleife anwenden.
Was wir also tun werden, ist nur die Berechtigung.
Trace bezog sich auf die Charge unserer Hoffnung.
Also gut, das bringt uns die Inputs und die Ziele, aber in engen Schichten gibt es immer etwas mehr
zu tun.
Und dies dient natürlich dazu, die Eingabe des neuronalen Netzwerks und auch das Ziel in einige tahj-Variablen
umzuwandeln.
Aber es gibt auch nichts Neues.
Wir wissen, wie es geht.
Wir können es so machen.
Wir nehmen unsere Eingaben, dann unsere Ziele und nun, sie werden gleich verbal sein.
Eingaben.
Das ist für die Eingabe und verbal.
Ziele, und das ist für die Ziele.
Also gut, die Eingaben des Gehirns werden in einige Tahj-Variablen umgewandelt, und die Ziele werden auch in
einige Tahj-Variablen umgewandelt.
Jetzt können wir die Eingaben in das neuronale Netzwerk erhalten.
Und warum müssen wir das so machen?
Da der nächste Schritt darin besteht, die Vorhersagen zu erhalten, haben wir die Eingaben, auf die wir abzielen müssen.
Jetzt brauchen wir natürlich unsere Vorhersagen, denn dann werden wir den Verlust zwischen den
Vorhersagen und den Zielen berechnen.
Lassen Sie uns diese Vorhersagen erhalten, um sie zu erhalten.
Nun, das ist wieder so einfach.
Jetzt müssen wir nur noch unser Gehirn, CNN, unser Faltungsnetzwerk, nehmen und auf
unsere Eingaben anwenden.
Na, bitte.
Die Eingaben gehen in das neuronale Netzwerk und das neuronale Netzwerk gibt die Vorhersagen aus.
Perfekt, jetzt haben wir die Vorhersagen, wir haben die Ziele, damit wir die Gesetze bekommen können, und das
ist der nächste Schritt, wir werden ein neues mehr einführen, weil wir jetzt den letzten Fehler bekommen, der anders
ist als die letzte Funktion, weil wir sie als Funktion verwenden, um den letzten Fehler zu erhalten.
So weniger Fehler hier und dass wir es mit der weniger Funktion bekommen, die auf unsere Vorhersagen und die Ziele angewendet wird, die wir
gehen, um zu sehen, wie alles jetzt glatt ist.
Alles ist logisch.
Wir erhalten zuerst die Eingabe, die Ziele, und dank der Eingabe erhalten wir die Vorhersagen.
Und dank der Vorhersagen und Ziele, die wir erhalten, desto weniger Fehler.
Also sehr logisch und reibungslos, und was ist nun der nächste Schritt?
Nun, der gleiche logische Pfad, jetzt wo wir den letzten haben, können wir diesen weniger Fehler zurück in das neue Netzwerk
übertragen, um die Gewichte zu aktualisieren.
Und das tun wir mit stochastischem Gradientenabstieg und um stochastischen Gradientenabstieg durchzuführen.
Wir brauchen unseren Optimierer, aber wir haben ihn bereits.
Hier sind Adam Optimizer.
Aber jetzt denken Sie daran, was wir tun müssen.
Wir müssen es initialisieren und initialisieren.
Denken Sie daran, wir nehmen unser Optimierungsobjekt und wenden dann die Methode des Gradienten Null an.
Los geht's, wir vergessen nicht die Klammern, die es initialisieren, und jetzt besteht der nächste Schritt darin,
den letzten Fehler zurück in das neue Netzwerk zu übertragen und dies zu tun, wo wir unseren letzten
Fehler nehmen und die Rückwärtsmethode darauf anwenden.
Das ist also genau das, um die Rückwärtsausbreitung anzuwenden.
Und schließlich, jetzt, da der letzte Fehler zurück ist, verbreiten Sie ihn in das neue Netzwerk.
Nun, wir können die Gewichte mit dem Cassi-Gradientenabstieg aktualisieren.
Denken Sie dazu daran, dass wir unseren Optimierer verwenden und dann die Schrittmethode anwenden.
Na, bitte.
Die Gewichte werden jetzt aktualisiert.
Wie ich Ihnen sagte, haben wir es nicht nur bereits getan, sondern es scheint jetzt so einfach und so natürlich zu sein.
Jetzt machen wir also etwas Spaß.
Wir werden die durchschnittliche Belohnung für jeden Apoc drucken.
Sie wissen also, wir können verfolgen, wie die A. ICH. geht, wie das Training läuft.
Wir möchten, dass die durchschnittliche Belohnung über die Stufen hinweg steigt.
Und zunächst gibt es natürlich diese Explorationsphase.
Die durchschnittliche Belohnung steigt also zu Beginn möglicherweise nicht an, aber sobald sie die Ausbeutungsphase erreicht
hat, steigt die durchschnittliche Belohnung definitiv an und steigt auf ein bestimmtes Niveau an, wenn sie den Westen
so schnell wie möglich erreicht möglich.
Beginnen wir also mit dem Druck.
Weißt du, wir machen das in einem, also müssen wir zum Loopier-Druck zurückkehren und
dann werden wir gut drucken, zuerst ungefähr eine Spalte, dann Prozent.
S, weil wir alles in eine bessere Zeichenfolge konvertieren und dann die
durchschnittliche Belohnung hinzufügen.
Und dann addieren wir auch Prozent, dann schließen wir das Angebot.
Und dann addieren wir ein Prozent und geben auf der anderen Seite die Variablen ein, die die erste Person
sein werden, da dies hier das Epos ist, und die zweite Variable, die der durchschnittlichen Belohnung entspricht, die
jetzt berechnet wird.
Die durchschnittliche Belohnungsvariable existiert also noch nicht.
Wir werden es jetzt schaffen.
Also werden wir ETR bei der Arbeit verwenden.
Selbst wenn Époque die Zahl ist, werden wir das in eine Zeichenfolge umwandeln.
Das ist besser und.
Wir werden hinzufügen, Estie, dass dies die durchschnittliche Belohnung sein wird, und deshalb werden wir
eine Variable erstellen, die wir eine große Belohnung nennen werden, und jetzt werden wir diese Variable erstellen und sie berechnen ?
OK, also lass uns das machen.
Das ist das einzige, was wir noch tun müssen.
Also Époque haben wir schon.
Jetzt berechnen wir die durchschnittliche Welt und wir müssen sie genau hier berechnen.
Immer noch in der Schleife, aber außerhalb der Schleife, denn jetzt haben wir unseren Batch abgetastet und unser Training findet im
Batch statt.
Aber jetzt erfolgt die Vorwärtsausbreitung plus die Rückwärtsausbreitung im Stapel.
Wir kehren also in die Schleife zurück und können nun die kumulativen Belohnungen berechnen, die wir mit unserem Rist-Objekt
erzielen können.
Da unser Insteps-Objekt diese Funktion enthält, würden wir Schritte ausführen, mit denen wir die kumulativen Belohnungen erhalten,
die in den Schritten während des Insteps-Laufs auftreten.
Wir werden es jetzt verwenden, um die neuen Belohnungen der Schritte zu aktualisieren.
Und dann werden wir das Objekt mit dem gleitenden Durchschnitt aktualisieren, indem wir die kumulativen Belohnungen zum Objekt mit dem sich bewegenden Alltag hinzufügen
und dann den Durchschnitt neu berechnen.
Und so bekommen wir die durchschnittliche Belohnung.
Also lass uns das machen.
Das erste, was wir brauchen, sind die Belohnungen der DARABA-Daten.
Nennen wir sie also Belohnungen.
Schritte und dann, wie gesagt, nehmen wir unser Endschritt-Objekt, das, wie ich mich erinnere, hier ein Objekt der Instant-Progress-Klasse aus unserer
Erfahrung erstellt hat, die wir mit einem so sensiblen Thema verschmutzen.
Dann fügen wir Belohnungen, Schritte und dann einige Klammern hinzu.
Gut.
Das bringt uns die neuen kumulativen Belohnungen der Schritte.
Gut.
Aber dann müssen wir diese neuen kumulativen Belohnungen zu unseren Objekten mit gleitendem Durchschnitt hinzufügen.
Und dazu haben wir diesmal eine Methode in der Klasse des gleitenden Durchschnitts. Diese Anzeigenmethode ist sehr
einfach.
Wir nehmen unser gleitendes Durchschnittsobjekt, das wir hier mit hundert Schritten erstellt haben.
Dann verwenden wir unsere ADD-Methode und geben dann in der Atmosphäre unsere Belohnungsschritte ein. Dadurch werden die
Belohnungen der Schritte zum gleitenden Durchschnitt addiert.
Gut.
Und schließlich können wir die durchschnittliche Belohnung berechnen, und das ist gut, wissen Sie, das ist hier dieselbe Variable.
Das ist es also, was der durchschnittlichen Belohnung entspricht.
Und um es zu bekommen, müssen wir diesmal nur die Durchschnittsmethode von unserem Objekt mit gleitendem Durchschnitt verwenden.
Und das ist, was wir tun und ein Punktdurchschnitt einfach so, weil unser gleitender Durchschnitt bereits mit den neuen Belohnungsschritten
aktualisiert wurde, die wir gerade der ADD-Methode hinzugefügt haben.
Toll.
Jetzt haben wir unsere durchschnittliche Auszeichnung, die hier sehr beliebt ist und die jedes Jahr gedruckt wird.
Also gut, wir sind fertig.
Ich bin so gespannt auf die Ergebnisse.
Und tatsächlich werde ich im nächsten Tutorial eine Überraschung für Sie haben, während ich mir die Ergebnisse ansehe.
Es wird also ziemlich aufregend.
Und jetzt ist es wohl Zeit, mit der Luft zu spielen und Spaß zu haben.
Gut.
Bereiten Sie sich also einen guten Kaffee oder einen guten Tee zu.
Jetzt ist es Zeit, bequem auf unserem Stuhl zu sitzen und einige sehr coole Videos unseres Flugzeugs anzusehen, um zu sehen, das
ist im nächsten Tutorial.
Und bis dahin viel Spaß.