WEBVTT

00:00.300 --> 00:02.000
Hallo und herzlich willkommen zu diesem Tutorial.

00:02.160 --> 00:05.090
Herzlichen Glückwunsch noch einmal, dass Sie damit fertig sind.

00:05.150 --> 00:08.200
Sehen Sie, wir haben es geschafft, wir haben die Gehirne gemacht und wir haben sie trainiert.

00:08.400 --> 00:15.600
Aber jetzt müssen wir noch einen Testagenten erstellen, der morgen überhaupt kein Datum ist, sondern nur

00:15.780 --> 00:19.430
das Aktienmodell verwendet, um eigene Erkundungen durchzuführen.

00:19.530 --> 00:26.080
Und natürlich werden wir in diesem Code einige Videos aufnehmen, und die Testagenten werden

00:26.090 --> 00:28.750
mit einer bestimmten Punktzahl ausbrechen.

00:28.810 --> 00:30.840
Lasst uns diesen Code durchgehen.

00:30.850 --> 00:35.860
Das wichtigste ist, wenn ich Ihnen sagte, wir werden es nicht Zeile für Zeile kodieren, aber ich denke, es

00:35.860 --> 00:38.580
ist wichtig, dass Sie verstehen, was hier vor sich geht.

00:38.800 --> 00:42.680
Also gehen wir mit diesem Code in den ersten Abschnitt, wie Sie bemerkt haben.

00:42.790 --> 00:49.480
Wir importieren die Bibliotheken und dann haben wir diese Testfunktion gefunden, die diesen Testagenten dazu veranlasst, seine eigenen

00:49.480 --> 00:52.390
Erkundungen durchzuführen und das Breakout-Spiel zu spielen.

00:52.600 --> 00:58.610
Wir bekommen also diese Testfunktion aus drei Argumenten. Das erste ist das Ranking, das der Testagent noch synchronisieren

00:58.850 --> 01:02.060
muss, wie wir es für die Trainingsagenten getan haben.

01:02.230 --> 01:05.380
Dann haben wir natürlich unsere Parameter, weil Sie welche brauchen.

01:05.380 --> 01:12.220
Und natürlich haben wir das gemeinsam genutzte Modell, da dieser Testagent ein gemeinsam genutztes Modell verwendet, um seine

01:12.220 --> 01:13.360
eigenen Erkundungen durchzuführen.

01:13.360 --> 01:18.790
In Ordnung, dann gehen wir in die Funktion und diese Codezeile synchronisieren wir mit dem Testagenten.

01:18.820 --> 01:23.120
Genau wie zuvor importieren wir die Umgebung.

01:23.170 --> 01:27.070
Ich erinnere daran, dass dies im Hauptcode enthalten ist, der im nächsten Tutorial enthalten sein wird.

01:27.250 --> 01:33.970
Nun, und der Name hier wird durch einen Bruch von Null ersetzt, so dass wir in die Break-Zero-Umgebung

01:34.060 --> 01:40.180
gehen und das Spiel und die Rotkreuz-Trumans spielen können, die die Videos unseres Abends ausbrechen lassen.

01:40.180 --> 01:46.680
Im Grunde bedeutet diese Codezeile insgesamt, dass wir eine Umgebung mit Video betreiben.

01:47.080 --> 01:54.520
In der nächsten Codezeile synchronisieren wir diese Umgebung also genau mit der Trend-Funktion.

01:54.700 --> 02:02.170
Dann erhalten wir unser Modell und erstellen dazu ein Objekt der Aktivitätsklasse und setzen die

02:02.170 --> 02:08.920
Eingabeform mit unserem Umgebungsbeobachtungsraum, und Formnullen sind genau wie die Zugfunktion und unsere

02:09.190 --> 02:13.690
Ausgaben, die die Aktionen mit einem Aktionsraum sind.

02:13.900 --> 02:19.770
Also genau wie vorher hier etwas Neues, da wir mit dem Training fertig sind.

02:19.870 --> 02:25.450
Wir möchten das Modell nicht in den Zugmodus versetzen, weil wir einfach nicht wollen, dass es trainiert, sondern

02:25.450 --> 02:26.880
in die Entwicklung geht.

02:27.160 --> 02:29.740
Und das machen wir hier mit einem Modell, das sich entwickelt hat.

02:29.890 --> 02:36.940
Das bedeutet im Grunde, den Testagenten in einen Modus zu versetzen, in dem er die getestete Leistung im

02:37.030 --> 02:38.350
Grunde getestet hat.

02:38.720 --> 02:45.680
Dann erhalten wir hier unsere Eingabestatus, dh die Eingabebilder aus dem Spiel, die an diesem Punkt ein ganzes

02:45.680 --> 02:46.790
Rennen sind.

02:46.840 --> 02:49.360
Dann verwandeln wir sie in Fackeltänzer.

02:49.480 --> 02:52.810
Hier initialisieren wir einige der Wörter hier.

02:52.840 --> 02:54.980
Wir initialisieren bis auf wahr.

02:55.200 --> 03:03.430
Also noch genau wie beim letzten Mal dann etwas Neues, führen wir dieses dritte mit einer Zeitfunktion ein, um

03:03.850 --> 03:05.990
die Berechnungszeit zu messen.

03:06.190 --> 03:08.680
Und das ist, weil Sie den Ausgangspunkt erhalten möchten.

03:08.890 --> 03:15.160
Dann verwenden wir für die Aktionen eine sehr praktische Art von Cue, die es erlaubt, ein Element von rechts oder von

03:15.160 --> 03:16.550
links zum Cue hinzuzufügen.

03:16.600 --> 03:21.960
Das ist sehr praktisch und ich gebe Ihnen die Referenz, die ich denke, in einer dekrementierten Version des Codes.

03:22.180 --> 03:27.320
Sie werden also sehen, was dieser Dequeue ist und was das erlaubt.

03:27.490 --> 03:33.370
Dann initialisieren wir die Länge einer Episode natürlich mit Null und erhöhen dann die Größe

03:33.400 --> 03:34.690
in dieser Well-Schleife.

03:34.870 --> 03:36.480
Also benutzen wir hier den gleichen Trick.

03:36.680 --> 03:42.290
Wenn dies wahr ist und sich in der Schleife befindet, wird die Länge der Episode um eins erhöht.

03:42.490 --> 03:49.700
Wenn das Spiel beendet ist, wenn das Spiel beendet ist, laden wir den letzten Satz des gemeinsam genutzten Modells mit dem von

03:49.730 --> 03:51.460
den anderen Modellen datierten Aktienmodell.

03:51.460 --> 03:55.610
Denken Sie daran, dass das freigegebene Modell hier nicht mehr datiert ist.

03:55.660 --> 04:04.030
Wenn das Spiel beendet ist, wenn das Spiel beendet ist, initialisieren wir die Zellzustände neu. Siehe X und

04:04.190 --> 04:13.840
dann die Zustände H x. Andernfalls behalten wir die gleichen Zustände und Zustände bei, wenn das Spiel nicht zu Ende ist.

04:13.840 --> 04:18.030
Um jedoch sicherzustellen, dass sie variabel gelernt werden, können sie an einen Farbverlauf angehängt werden.

04:18.170 --> 04:25.240
OK, das ist etwas, was wir bereits in der Trendfunktion tot waren und dann noch in der while-Schleife und nachdem wir Daten

04:25.240 --> 04:30.870
hatten, die in den verborgenen Zuständen den richtigen Weg angeben, abhängig von den beiden Fällen hier.

04:31.060 --> 04:34.360
Nun, was wir tun, bekommen wir die Vorhersagen von morgen.

04:34.450 --> 04:37.380
Genau das machen wir hier mit dieser Codezeile.

04:37.750 --> 04:43.360
Wir erhalten also den Wert, der die Ausgabe des Kritikers ist, der tatsächliche Wert, der die Ausgabe des Schauspielers ist.

04:43.600 --> 04:49.750
Und dann sind alle verborgenen Zustände H x und die Zellzustände der X, dann erzeugen wir eine

04:49.750 --> 04:54.130
Verteilung der Wahrscheinlichkeiten der Aktionen, die hier den Aktionswert Q-Werte haben.

04:54.270 --> 04:56.380
Und das machen wir mit der nächsten Funktion.

04:56.470 --> 05:01.230
Und natürlich brauchen wir hier nicht die Glückswahrscheinlichkeiten, da dies nur für das Training

05:01.480 --> 05:02.650
des Testagenten gilt.

05:02.650 --> 05:09.130
Es werden nur die Aktionen gespielt, die wir verwenden werden, die Sie verwenden, wie Sie eine bestimmte Aktivität zum Scheitern verurteilen,

05:09.190 --> 05:10.920
aber wir trainieren hier nicht.

05:10.960 --> 05:19.040
Wir haben also nur eine Requisite und aus diesem Grund spielen wir die Aktion, indem wir diese Wahrscheinlichkeiten direkt an RMX

05:19.040 --> 05:22.720
übertragen, dh die Aktion, die die höchste Wahrscheinlichkeit hat.

05:22.810 --> 05:26.860
Und der Grund ist, dass der Testagent keine Untersuchung durchführt.

05:26.860 --> 05:32.830
Denken Sie daran, dass wir die Möglichkeit haben möchten, einige Aktionen mit geringen Wahrscheinlichkeiten in Anspruch

05:32.830 --> 05:38.170
zu nehmen, wenn Sie diese anderen Aktionen genauer untersuchen möchten, und Sie wissen, dass Sie

05:38.170 --> 05:44.260
nicht jedes Mal die Aktion ausführen, die die höchste Wahrscheinlichkeit hat Aus diesem Grund nehmen wir die

05:44.260 --> 05:50.800
Aktion mit der höchsten Wahrscheinlichkeit direkt wieder auf. Sobald wir die Aktion gespielt haben, erreichen wir den nächsten

05:50.800 --> 05:53.340
Zustand und erhalten das nächste Wort.

05:53.470 --> 05:56.920
Und das ist ein Tag, ob das Spiel vorbei ist oder nicht.

05:57.160 --> 06:03.700
Das alles bekommen wir mit dieser Codezeile, indem wir die Aktion spielen, nachdem wir sie hier mit unserem Max

06:03.790 --> 06:04.630
ausgewählt haben.

06:04.840 --> 06:13.000
Also spielen wir die Action hier und wir bekommen den Status, wir bekommen die Belohnung und das nochmal, und da wir gerade eine neue

06:13.090 --> 06:18.950
Belohnung bekommen haben, aktualisieren wir etwas von der Belohnung, indem wir einfach dieses neue Wort hinzufügen.

06:19.180 --> 06:21.480
Und zum Schluss, wann immer das Spiel fertig ist.

06:21.490 --> 06:28.510
Wenn das heißt, wenn das Spiel fertig ist, wenn ich das Spiel gut beendet habe, werden wir die

06:28.510 --> 06:31.210
Ergebnisse mit der gegenteiligen Zeit ausdrucken.

06:31.230 --> 06:36.100
Wir wollten die Länge der Episode, also wie lange es gedauert hat.

06:36.100 --> 06:42.890
Sehr gut spielen und so drucken wir alle diese Variablen mit diesen winzigen Tricks.

06:42.910 --> 06:46.280
Das ist für die Zeit dann wollen wir etwas, es ist nur eine Variable.

06:46.340 --> 06:51.960
Einige der Wörter und Ideen sind ausführlich die Länge des gegenwärtigen OK.

06:52.160 --> 06:57.860
Und wenn wir alle Ergebnisse gut ausgedruckt haben, seit das Spiel zu Ende ist und wir ein neues Spiel starten

06:58.220 --> 06:59.930
möchten, werden wir alles neu initialisieren.

06:59.930 --> 07:04.170
Das ist die Summe von zwei Wörtern, die die Länge einer Episode auf Null setzen.

07:04.230 --> 07:10.100
Wir werden alle Aktionen erneut ausführen, indem Sie mit dieser Taste die von Ihnen bekannten

07:10.100 --> 07:13.360
Eingabebilder zurücksetzen, indem Sie alle Pausen insgesamt wiederholen.

07:13.610 --> 07:21.980
Und schließlich nutzen wir diese Zeit, die 60 Sekunden dauert, um eine Minute Pause einzulegen, damit die anderen Agenten üben

07:21.980 --> 07:22.840
können.

07:22.850 --> 07:24.810
Und wenn das Spiel vorbei ist.

07:25.210 --> 07:25.840
OK.

07:25.940 --> 07:32.210
Und schließlich haben wir diese letzte Codezeile, die uns den neuen Zustand bringen wird, und dann können wir weitergehen.

07:32.240 --> 07:34.550
Wir können in diesem neuen Spiel weitermachen.

07:34.550 --> 07:35.840
Also los geht's.

07:35.870 --> 07:37.430
Das ist die Testfunktion.

07:37.430 --> 07:40.550
Dinge, zu denen Sie die Videos in einem oder zwei Tutorials sehen werden.

07:40.550 --> 07:45.310
Ich hoffe, Sie werden insgesamt wie beim letzten Mal sein, um die Ergebnisse zu sehen, die mit Ihnen erzielt werden.

07:45.350 --> 07:47.360
Curial und mir wird das Spaß machen.

07:47.480 --> 07:48.400
Und ich sage es dir.

07:48.440 --> 07:50.330
Erwarten Sie gute Ergebnisse.

07:50.360 --> 07:55.130
Denken Sie jedoch daran, dass dieses Breakout-Spiel eine große Herausforderung war.

07:55.130 --> 07:58.430
Wir dachten, es sei ein einfaches Spiel, das wir zuerst spielen sollten, aber überhaupt nicht.

07:58.430 --> 08:01.480
Es stellte sich heraus, dass es viel schwieriger war als das Verhängnis.

08:01.670 --> 08:03.890
Deshalb haben wir es in das letzte Modul gesteckt.

08:04.190 --> 08:09.510
Aber machen wir diese Hauptfunktion im nächsten Tutorial.

08:09.590 --> 08:11.770
Gleich Dies ist hier nicht das Wichtigste.

08:11.780 --> 08:18.860
Jetzt, da der A-380 dement ist, werden wir ihn nicht zeilenweise codieren, er wird den Code erweitern und sehr schnell werden

08:18.980 --> 08:20.570
wir die Ergebnisse erhalten.

08:20.570 --> 08:22.130
Bis dahin genießen Sie die KI.
