WEBVTT

00:00.560 --> 00:02.560
Hallo und herzlich willkommen zu diesem Tutorial.

00:02.750 --> 00:04.610
Jetzt haben wir das Gehirn von morgen.

00:04.610 --> 00:06.350
Wir haben auch den Optimierer.

00:06.350 --> 00:09.980
Grundsätzlich sind wir also bereit, unsere verschiedenen Agenten zu schulen.

00:10.010 --> 00:11.620
Das sind unsere verschiedenen Gehirne.

00:11.720 --> 00:18.650
Das ist also ab jetzt die große Zugfunktion, die den gesamten A3-Algorithmus enthalten wird. Was

00:18.650 --> 00:24.920
wir also in diesem Zug implementieren werden, ist nur diese riesige Zugfunktion, die nur

00:25.230 --> 00:31.200
diese große Zugfunktion sein wird Klasse, aber wer wird diese Zugfunktion verwenden.

00:31.250 --> 00:33.880
Und der letzte Schritt dieses Moduls mit dem Hauptcode.

00:34.100 --> 00:35.010
Also los geht's.

00:35.060 --> 00:37.340
Aber bevor wir anfangen, können Sie das bemerken.

00:37.490 --> 00:42.020
Zunächst importieren wir einige Bibliotheken, so dass dies die klassischen Bibliotheken mit dem Brennermodul sind.

00:42.020 --> 00:49.040
Ich meine, Ihre Fackelbibliothek beendet dann die Bibliothek, um die Umgebung zu schaffen, die ausbrechen wird.

00:49.220 --> 00:54.470
Dann werden wir natürlich Klasse aus unserem Modell importieren.

00:54.620 --> 00:55.980
Diese hier ablegen.

00:56.420 --> 01:00.070
Und schließlich verwenden wir eine Variable von TORCIDA.

01:00.150 --> 01:04.000
Ich bedauere es, an der Steigung hochleistungsfähige Wettkämpfe durchzuführen.

01:04.100 --> 01:05.750
Dank der dynamischen Grafiken.

01:05.990 --> 01:11.960
Und dann haben wir diese Funktion, die die Funktion eines geteilten Absolventen sicherstellt, und ich wollte nicht zu viel Zeit

01:11.960 --> 01:16.930
dafür aufwenden, weil dies zunächst nur eine Funktion ist, die sicherstellt, dass alles richtig funktioniert.

01:17.030 --> 01:20.400
Wenn das vom Agenten verwendete Modell keinen Anteilsverlauf aufweist.

01:20.480 --> 01:25.640
Deshalb heißt es kurz geteilte Absolventen und der andere Grund ist, dass ich diese Funktion nicht für

01:25.640 --> 01:26.530
notwendig halte.

01:26.630 --> 01:32.700
Aber wir wissen nie und zumindest werden wir uns zu 100 Prozent sicher sein, dass der Code korrekt ausgeführt wird, aber

01:33.080 --> 01:34.790
das ist nicht wirklich wichtig.

01:34.880 --> 01:40.640
Worauf wir uns konzentrieren müssen, ist diese Trendfunktion, die wir alle gerade jetzt beginnen.

01:41.000 --> 01:41.600
Auf geht's.

01:41.610 --> 01:48.860
Def und Train werden bald zu einem Zug und diese Umwandlung wird mehrere Argumente erfordern.

01:49.010 --> 01:50.400
Der erste ist Rang.

01:50.420 --> 01:56.460
Ich werde erklären was es ist und der zweite ist Harams, so dass alle Parameter

01:56.460 --> 01:57.840
die Umgebung sind.

01:57.920 --> 02:02.860
Dann wird der dritte Parameter moralisch geteilt.

02:03.170 --> 02:09.260
Sie wissen also, dass der Agent das gemeinsam genutzte Modell für eine kleine Anzahl

02:09.260 --> 02:17.050
von Schritten verwenden wird, und schließlich wird das letzte Argument der Optimierer sein, den wir zuvor gemacht haben.

02:17.770 --> 02:20.040
So perfekt, dass es Argumente gibt.

02:20.090 --> 02:24.010
Nun können wir die gleiche Funktion implementieren.

02:24.170 --> 02:30.890
Das erste, was wir tun werden, ist, dass Sie sich daran erinnern, was A-380 für synchron

02:31.010 --> 02:32.480
aktive Crilley-Agenten bedeutet.

02:32.540 --> 02:34.980
Also in 8: 3 gibt es einen synchronen.

02:34.980 --> 02:40.940
Wenn Sie also verstanden haben, dass wir jeden Trainingsagenten entziehen müssen, müssen wir den

02:40.940 --> 02:49.010
Rang verwenden, um jede Seite mit diesem Rang zu verschieben. Dieser Rangparameter hier ist nur, den Startwert so zu

02:49.220 --> 02:52.230
verschieben, dass jeder Trainingsagent synchronisiert wird.

02:52.580 --> 02:59.390
Wenn es beispielsweise Trainingsagenten gibt, werden die Ränge von 1 bis 10 gehen und es gibt eine

02:59.390 --> 03:02.600
ganze Zahl pro Agent von 1 bis 10.

03:02.630 --> 03:08.840
Wenn wir also den Samen um einen Thread verschieben, sind alle von diesem Thread erzeugten Pseudo-Zufallszahlen

03:08.840 --> 03:11.340
völlig unabhängig von den anderen Threads.

03:11.480 --> 03:14.250
Jedoch der Samen oder feste Zahlen.

03:14.510 --> 03:19.640
Wenn wir also die Erfahrung reproduzieren, werden wir genau dieselben Ereignisse finden.

03:19.880 --> 03:23.450
Und das ist so, weil es in Bezug auf den Sitz deterministisch ist.

03:23.690 --> 03:30.470
Daher ist es wichtig zu verstehen, dass es wichtig ist, die Trainee-Agenten zu synchronisieren, indem man

03:30.800 --> 03:34.260
hier rechts den Samen mit dem Rang verschiebt.

03:34.350 --> 03:36.110
Also lass uns das tun, um das zu tun.

03:36.140 --> 03:39.170
Wir werden unsere Fackelbibliothek nehmen.

03:39.170 --> 03:45.350
Dann erhalten wir das Saatgut mit manueller Unterstreichung der Saatgutklammer.

03:45.350 --> 03:51.040
Dies ist eine Funktion, und jetzt nehmen wir den Samen aller Agenten, mit denen wir auf diesen

03:51.220 --> 03:55.620
Samen zugreifen können, und verschieben sie um den Rang, um sie zu synchronisieren.

03:55.660 --> 04:05.420
Jeder dieser Agenten wird hier nur plus rec hinzufügen, und das wird den Samen mit dem Rang verschieben, um jeden Auszubildenden zu

04:05.510 --> 04:09.970
entziehen, da es für jede Trainingsagentur einen Samen gibt.

04:09.980 --> 04:15.390
Alles klar, als Erstes getan, und als nächsten Schritt müssen Sie die Umgebung erhalten.

04:15.530 --> 04:21.470
Wir werden also eine neue Variable erstellen, die wir aufrufen werden und nun Atari und Funktion

04:21.590 --> 04:26.120
aus dem Endmodul erstellen, um die Umgebung für den Breakout zu erstellen.

04:26.150 --> 04:28.130
Das soll die Umgebung des Ausbruchs bringen.

04:28.250 --> 04:38.070
Also nehmen wir diese Funktion zum Erstellen von Terry und müssen nun nur noch ein Argument eingeben, das die Parameter der

04:38.070 --> 04:39.060
Umgebung sind.

04:39.270 --> 04:42.730
Und wir haben sie, weil dies einer der Eingänge der Gehirnfunktion ist.

04:42.750 --> 04:48.270
Dies ist dieser Parameter hier, der die Parameter der Breakout-Umgebung sein

04:48.330 --> 04:58.320
wird. Um die Breakout-Umgebungen zu erhalten, argumentieren diese Programme dann, und dann erhalten wir einen Namen, der in der Zukunft im

04:58.320 --> 05:03.240
nächsten Code mit der Hauptfunktion steht ausgeführt wird der gesamte

05:03.240 --> 05:06.010
Code wird brachial Vizier ausbrechen.

05:06.010 --> 05:09.450
Also gut, damit uns die Umgebung perfekt wird.

05:09.610 --> 05:16.080
Der nächste Schritt besteht darin, den Sitz der Umgebung an dem der Agenten auszurichten.

05:16.180 --> 05:17.650
Und warum machen wir das?

05:17.650 --> 05:24.220
Jeder Agent des A-3 Silmaril hat seine eigene Vision von der Umgebung wie eine eigene

05:24.220 --> 05:31.000
Kopie der Umgebung. Deshalb müssen wir jeden Agenten auf eine bestimmte Version der Umgebung ausrichten und

05:31.000 --> 05:36.520
dies tun den Sitz zu verwenden, da jeder Sitz eine bestimmte Umgebung

05:36.520 --> 05:37.320
bestimmt.

05:37.450 --> 05:43.390
Indem wir jedem Agenten einen anderen Grund zuordnen, erhalten wir genau das, was wir wollen, nämlich,

05:43.390 --> 05:46.340
dass jeder Agent seine eigene Umgebung hat.

05:46.500 --> 05:54.730
Und wie können wir also tun, dass wir unsere Umgebung nehmen können und dann die Seed-Funktion verwenden, damit Sie wissen,

05:54.770 --> 05:57.340
welche er für die Umgebung erhält.

05:57.520 --> 06:01.370
Und so, jetzt den Sitz der Umgebung auf den Samen des Agenten auszurichten.

06:01.600 --> 06:08.460
Nun, wir müssen das einfach bekommen, weil dies dem Sitz des Agenten entspricht, der die Dinge verschoben hat,

06:08.530 --> 06:14.170
um anständige organisierte Trainingsagenten zu bekommen, weil sie alle in einem anderen Set sind.

06:14.200 --> 06:20.020
Wir müssen das also nur hier bezahlen, und dies wird den Sitz der Umgebung an den

06:21.210 --> 06:24.660
des Agenten anpassen. Okay, jetzt bekommen wir unser Modell.

06:24.670 --> 06:27.060
Das ist unser A-3-Verstand.

06:27.180 --> 06:32.320
Deshalb verwenden wir jetzt die aktive Klasse aus unserer Modelldatei.

06:32.350 --> 06:38.500
Wir werden also im Grunde ein neues Objekt dieser Aktivitätsklasse erstellen und dieses Objektmodell oder

06:38.500 --> 06:40.960
Gehirn nennen, wenn Sie möchten.

06:41.200 --> 06:47.650
Grundsätzlich enthält dieses Objekt jedoch alle Windungen, die der CM-Kanal aufweist. Die lineare Verbindung und die

06:47.650 --> 06:49.500
Ford-Funktion dienen zur Signalübertragung.

06:49.600 --> 06:55.630
Es wird also im Grunde die Gehirne des Schauspielers in der Kritik enthalten, mit der Fähigkeit, das Signal im

06:55.630 --> 06:59.120
ganzen Gehirn zu verbreiten, um die endgültige Ausgabe zu erhalten.

06:59.170 --> 07:06.850
Also machen wir das. Erstellen wir unser Modell, damit wir dieses Objektmodell nennen möchten.

07:07.150 --> 07:15.040
Und so erstellen wir ein Objekt der Act-Klasse, und deshalb nehmen wir einen Kritiker der Klassenakteure und erinnern uns jetzt, welche Argumente

07:15.040 --> 07:17.250
bei den beiden Eingaben vorkommen.

07:17.350 --> 07:20.420
Das sind eigentlich die Argumente der Funktion.

07:20.640 --> 07:26.230
Wir müssen also selbst eingeben, dass Sie wissen, dass wir das Objekt in der Methode verwenden müssen.

07:26.530 --> 07:33.010
Aber die Argumente, die wir stellen müssen, sind Nomine-Puts, die in schlechtem Zustand sind, was in Kunstketten in

07:33.010 --> 07:38.680
Druckbildern geschieht, und der tatsächliche Raum, in dem Sie die Menge der Aktionen kennen.

07:38.680 --> 07:42.550
Lassen Sie uns diese Argumente in die Zugfunktion einfügen.

07:42.760 --> 07:51.580
Das erste, was wir mit unserer Umgebung bekommen können und das, und dann benutzen wir Beobachtungsraum, der Beobachtungsraum ist,

07:51.580 --> 07:59.020
und dann erhalten Sie die Anzahl der Eingaben, die wir als Nullpunkt der Schattenklammer erhalten.

07:59.190 --> 07:59.550
Gut.

07:59.550 --> 08:01.120
Das ist für Eingaben.

08:01.290 --> 08:04.690
Und jetzt zum Aktionsraum.

08:04.860 --> 08:10.480
Nun, das ist fast so, wie wir es brauchen, um es aus unserer Umgebung zu holen.

08:10.500 --> 08:12.920
Und dann Aktionsraum.

08:12.920 --> 08:13.260
Gut.

08:13.260 --> 08:17.860
Und das gibt uns die Argumente, die wir beim Erstellen eines Objekts eingeben müssen.

08:17.860 --> 08:20.130
Das Modell der Execrate-Klasse.

08:20.400 --> 08:25.150
OK, jetzt haben wir unser Modell und jetzt ist der nächste Schritt die Vorbereitung unserer Eingabezustände.

08:25.170 --> 08:31.230
Denken Sie also daran, dass wir immer noch ein tieferes informelles Lernen absolvieren, so dass die Eingabe unsere

08:31.560 --> 08:37.080
Eingabebilder angibt. Daher wird dies ursprünglich von Ray ausgeführt, der einen Kanal enthält, da wir mit

08:37.080 --> 08:40.670
Schwarzweißbildern arbeiten und Zeit in 42-er Ozeanen haben wird 42.

08:40.980 --> 08:46.680
Es ist jedoch wichtig zu verstehen, dass die Eingabezustände Eingabebilder sind.

08:46.680 --> 08:51.940
Was wir also tun müssen, ist die Nichtmacht, die wir dann in eine Folterantwort umwandeln.

08:52.050 --> 08:57.770
Aber der erste Schritt als das, was wir zuvor gemacht haben, ist, einen Schiedsrichter zu bekommen und ihn zu bekommen.

08:57.840 --> 08:58.970
Es ist eigentlich ganz einfach.

08:58.980 --> 09:06.080
Nun, zuerst müssen wir eine Variable für den Eingabezustand erstellen, die den Status überschreitet, und dies, um ein Umpire-Array

09:06.080 --> 09:07.130
zu erhalten.

09:07.230 --> 09:13.000
Wir müssen nur unsere Umgebung nehmen und dann die Reset-Funktion anpassen und dann verwenden.

09:13.200 --> 09:19.940
Und dies wird Staaten als eine Reihe von Dimensionen nach Reich für Reichweiten von 42 zu 42 initialisieren.

09:20.190 --> 09:27.170
Ein Kanal bedeutet also ein Schwarz-Weiß-Bild und 42 nach 42 ist natürlich die Dominanz des Bildes.

09:27.210 --> 09:30.860
Die Anzahl der Pixel und die Breite und die Anzahl der Pixel und die Höhe.

09:30.870 --> 09:32.630
Das ist im Grunde nur die Zeitinstanz.

09:32.670 --> 09:34.660
Und damit arbeiten wir zusammen.

09:34.820 --> 09:40.830
Und jetzt, wo wir dies tatsächlich in Umpiring haben, weil uns diese Bilder einer solchen Zeitversicherung

09:40.830 --> 09:42.670
in Empire gebracht werden.

09:42.870 --> 09:48.510
Jetzt können wir sie in Fackeltänzer umwandeln, und um dies gut zu machen, werden wir wieder in einen Datenzustand

09:48.510 --> 09:50.890
versetzt, da wir die Zahlenfelder nicht behalten müssen.

09:51.180 --> 09:55.030
Und hier verwenden wir das Brennermodul.

09:55.260 --> 10:02.790
Und denken Sie daran, dass wir dies bereits mit der Funktion aus nicht-thailändischen Klammern getan haben.

10:02.880 --> 10:08.350
Innerhalb dieser Funktion müssen wir die Zahlenrate eingeben, die in einen Brennersensor umgewandelt werden soll.

10:08.610 --> 10:14.880
Und das ist der Zustand, in dem die vorherige Version des Zustands-Nichtbezahlungs-Arrays von der Pipe-Funktion

10:14.880 --> 10:20.510
einen Brennersensor geleitet wird, so dass sich gerade aus dem Zustand Intensivierung ergibt.

10:20.550 --> 10:24.870
Und jetzt müssen wir nur das Machbare initialisieren.

10:24.870 --> 10:30.650
Denken Sie daran, dass die Variable im Allgemeinen die Variable ist, die besagt, ob eine Episode vorbei ist oder ob das Spiel beendet ist.

10:30.870 --> 10:37.110
Nun, wir möchten dies nur sehr gut einführen und den Initialisierer auf true setzen, um anzugeben, dass

10:37.160 --> 10:41.230
dieser Don't Voivode gleich true ist, wenn das Spiel fertig ist.

10:41.260 --> 10:46.790
Das wird für später nützlich sein, damit die KI nicht unbegrenzt zum Ausbruch spielt.

10:46.820 --> 10:47.350
Gut.

10:47.390 --> 10:54.320
Das war also im Grunde der Anfang dieser Trendfunktion mit einigen Initialisierungen und einigen Dingen, die wir

10:54.320 --> 10:55.370
tun müssen.

10:55.370 --> 11:00.560
Der wichtigste Teil hier war, dass wir jeden Auszubildenden entmachten müssen.

11:00.560 --> 11:04.890
Das ist ein erster Grundsatz des A3, den wir anwenden müssen.

11:05.160 --> 11:09.780
Im nächsten Tutorial werden wir nun mit dem gemeinsamen Modell synchronisieren.

11:09.830 --> 11:14.810
Vergessen Sie nicht, dass es ein anderes Modell gibt, aber auch das Aktienmodell, das alle

11:14.810 --> 11:16.180
Agenten gemeinsam nutzen.

11:16.190 --> 11:22.430
Deshalb müssen wir uns mit dem Show-Modell synchronisieren, damit jeder Agent dieses gemeinsam genutzte Modell dazu bringen kann,

11:22.520 --> 11:25.990
eine kleine Erkundung einer bestimmten Anzahl von Schritten durchzuführen.

11:26.000 --> 11:28.080
So machen wir das nächste Statoil.

11:28.130 --> 11:29.710
Und bis dahin genießen Sie AI.
