WEBVTT

00:00.420 --> 00:03.950
Hallo und nochmals herzlich willkommen in unserem Selbstfahrer-Auto Maggio.

00:03.960 --> 00:10.200
In nur einer Frage werde ich also die Umgebung erläutern, in der wir unsere künstliche Intelligenz implementieren werden und in der sich

00:10.410 --> 00:16.500
natürlich das Auto befinden wird, das trainiert, um sich selbst zu fahren und um Hindernisse zu vermeiden und für das einige

00:16.500 --> 00:20.950
Straßen und einige Blöcke für die Strecke entstehen unsere Autos um sie herum zu navigieren.

00:21.210 --> 00:28.170
Wir werden diese künstliche Intelligenz später bauen, um dieses Auto so zu trainieren, dass es auf der Straße fährt, die Sie

00:28.170 --> 00:33.830
kennen, ohne die Grenzen zu überschreiten und einige Hindernisse zu umgehen, die in die Straße hineinragen.

00:34.140 --> 00:35.870
Das ist also eine ziemlich aufregende Herausforderung.

00:35.910 --> 00:42.000
Und tatsächlich gibt es zwei separate Dateien, wie Sie sehen können, gibt es die Spitze und das Geflügel, die künstliche Intelligenz

00:42.000 --> 00:47.090
sind, die das gesamte Training zum Trainieren des Autos, wie man den Antrieb verkauft, tun wird.

00:47.280 --> 00:52.080
Und wir haben eine Karte gefunden, die den Code für diese Umgebung darstellt.

00:52.110 --> 00:57.090
Also hier ist der Code, der 200 Zeilen Code enthält, ein bisschen mehr.

00:57.090 --> 01:00.460
Daher bezieht sich dieser Code normalerweise nicht auf AI.

01:00.510 --> 01:03.380
Es ist nur ein Code, um die Umgebung zur Karte zu machen.

01:03.420 --> 01:08.430
Ich werde daher jeden Abschnitt einzeln durchgehen und erklären, aber wir werden diesen Code

01:08.430 --> 01:13.610
nicht Zeile für Zeile von Grund auf implementieren, da wir uns auf künstliche Intelligenz konzentrieren wollen.

01:13.740 --> 01:17.160
Aber gehen wir trotzdem die Abschnitte einzeln durch, um zu verstehen, was passiert.

01:17.370 --> 01:22.020
Zuerst importieren wir die zentralen Bibliotheken, die für jeden Code geeignet sind.

01:22.110 --> 01:28.770
Wir benötigen einige Bibliotheken, um Aufgaben effizienter auszuführen, als alle Cavy-Pakete importieren.

01:28.890 --> 01:35.140
Das ist nicht sehr wichtig, da dies alles spezifisch für Cavey ist. Wir verwenden Cavy, um die Karte zu erstellen.

01:35.190 --> 01:41.010
Deshalb importieren wir viele Klassen und Objekte, um diese Karte erstellen und einige Werkzeuge zur Karte

01:41.010 --> 01:42.210
hinzufügen zu können.

01:42.210 --> 01:44.420
In Ordnung, dann ist diese Linie wichtig.

01:44.430 --> 01:53.130
Diese Linie ist verwandt, weil im Grunde unser Gehirn das Gehirn des Autos importiert. Dies ist ein weiterer Jet, den Sie in

01:53.220 --> 01:57.760
der Klasse gemacht haben, und der Lehrer in der Klasse.

01:57.820 --> 02:00.570
Ist unsere künstliche Intelligenz selbst.

02:00.570 --> 02:04.680
Sie werden sehen, dass wir den Dequeue in der Klasse in den folgenden Tutorials implementieren werden.

02:04.680 --> 02:09.650
Und wie Sie vielleicht eine Dequeue-Instanz für tiefe Q-Netzwerke erraten haben.

02:09.650 --> 02:15.450
Wir werden also ein Dequeue-Lernnetzwerk implementieren und sobald es fertig ist, importieren wir

02:15.540 --> 02:21.910
es hier mit dieser Zeile von der KI und die Augen sind natürlich eine Python-Datei.

02:21.990 --> 02:22.310
Gut.

02:22.320 --> 02:24.450
Ich kann es kaum erwarten, dies umzusetzen.

02:24.450 --> 02:29.520
Dies wird eine ziemliche Reise sein, aber Sie werden sehen, dass dies sehr aufregend sein

02:29.520 --> 02:33.200
wird, denn dank des I kann das Auto selbst fahren.

02:33.270 --> 02:33.880
Gut.

02:33.880 --> 02:39.060
Und jetzt, bevor ich mit den nächsten Abschnitten fortfahre, müssen wir erklären, wie wir dieses Auto trainieren werden.

02:39.060 --> 02:43.880
Ich werde das neuronale Netz jetzt nicht erklären, aber ich werde die Idee erklären, wie wir

02:43.920 --> 02:48.080
das Auto trainieren können, um selbst zu fahren und Hindernisse zu umgehen.

02:48.360 --> 02:54.130
Sie wissen also im wirklichen Leben, ob Sie ein echtes Auto trainieren möchten, um einige Wände oder Hindernisse zu umgehen.

02:54.390 --> 02:55.580
Was würdest du tun?

02:55.830 --> 03:01.130
Sie würden definitiv keine echten Mauern oder großen Hindernisse nehmen und Ihr Auto darauf einschlagen.

03:01.200 --> 03:02.710
Das würde dich viel Geld kosten.

03:02.850 --> 03:10.170
Eine intelligentere Idee wäre stattdessen, Ihr Auto nicht zu bestrafen, wenn es eine Mauer oder ein Hindernis zerschmettert, sondern

03:10.410 --> 03:12.690
wenn es auf Sand geht.

03:12.810 --> 03:14.220
Es ist also so, als hätten Sie ein Feld.

03:14.220 --> 03:19.680
Dieses Feld hat einige Straßen, auf denen das Auto bleiben muss, und die Straßen sind durch etwas Sand begrenzt.

03:19.860 --> 03:25.500
Jedes Mal, wenn das Auto in die Mitte fährt, ist es, als würde es zu einem Hindernis kommen, denn sobald

03:25.500 --> 03:31.050
das Auto in etwas Sand geraten ist, wird es langsamer und wir werden dafür sorgen, dass das Auto dafür bestraft

03:31.050 --> 03:31.630
wird.

03:31.860 --> 03:35.200
Und das ist ein wesentlicher Punkt der künstlichen Intelligenz.

03:35.220 --> 03:40.210
Das schlechte Wort kommt immer dann, wenn das Auto in einen gewissen Sinn gerät und langsamer wird.

03:40.230 --> 03:40.770
Gut.

03:40.770 --> 03:45.160
Und deshalb füge ich hier den letzten Text ein und deshalb.

03:45.300 --> 03:50.650
Welches sind die Koordinaten des letzten Punktes im Gedächtnis, wenn wir einen Duft auf die Karte zeichnen.

03:50.760 --> 03:51.110
Gut.

03:51.120 --> 03:57.720
Und dann bekommen wir unsere künstliche Intelligenz, die wir Gehirn nennen und die unser neuronales Netzwerk enthält, und wir

03:57.900 --> 04:03.020
werden sie Gehirn nennen, weil dies tatsächlich das Gehirn des Autos ist und unser

04:03.030 --> 04:03.920
Nudel-Netzwerk enthält.

04:04.350 --> 04:04.730
Gut.

04:04.770 --> 04:10.200
Also, in dieser Codezeile, wie Sie sehen können, erstelle ich beim Lehrer im Unterricht Objekte.

04:10.230 --> 04:17.000
Ich werde Sie daran erinnern, dass Klassen und Objekte sind, aber Brennas Objekt entmenschlicht die Klasse und 5:

04:17.010 --> 04:19.660
3 und 0. 9 sind die Eingänge der Klasse.

04:19.680 --> 04:26.880
Das ist also sehr einfach. Fünf entspricht den Zuständen, bei denen Vektoren mit fünf Dimensionen kodiert sind. Wir werden sehen,

04:26.880 --> 04:31.710
was sie perfekt beschreiben, was in der Umgebung auf der Karte passiert.

04:31.830 --> 04:38.820
Dann ist drei die Anzahl der Aktionen. Es gibt drei mögliche Aktionen. Gehen Sie nach links

04:39.330 --> 04:44.190
oder nach rechts und 0. 9 ist wieder ein Parameter im Dequeue-Lernalgorithmus.

04:44.220 --> 04:46.900
Alles klar und dann haben wir die Aktion durch Rotation.

04:46.980 --> 04:50.910
Die Aktion zur Rotation ist also ein Vektor aus drei Elementen.

04:50.910 --> 04:53.290
020 und minus 20.

04:53.300 --> 05:01.820
Und deshalb müssen wir dies tun, weil die Aktionen mit drei Zahlen 0 1 und 2 codiert sind und

05:01.820 --> 05:04.700
dies den Indizes dieses Aktions-Rotationsvektors entspricht.

05:04.710 --> 05:11.160
Wenn zum Beispiel die zum Zeitpunkt t ausgewählte Aktion gleich Null ist.

05:11.270 --> 05:18.990
Well Null entspricht dem Index dieser Aktion, zwei Rotationsvektoren und der Wert von Index 0 ist Null.

05:19.150 --> 05:24.490
Deshalb gehen wir sofort weiter, wenn die gewählte Aktion 1 ist.

05:24.770 --> 05:30.380
Nun, eins entspricht dem Index dieser Aktion zwei zusätzlichen Vektoren und der Wert dieses Vektors,

05:30.380 --> 05:32.810
der einen nächsten hat, ist 20.

05:32.810 --> 05:38.580
20 entspricht also einer Drehung um 20 Grad und das bedeutet, dass der Code um

05:39.260 --> 05:46.500
20 Grad nach rechts geht und dann, wenn die gewählte Aktion gut zu dem Index dieser Aktion zu Rotationsvektor passen soll.

05:46.700 --> 05:52.570
Daher führt der Code eine Drehung von minus 20 Grad aus und geht daher nach links.

05:52.580 --> 06:00.200
In Ordnung, dann führen wir den linken Belohnungs-Voivode ein, da in jeder Phase das letzte Wort erhalten wird.

06:00.200 --> 06:04.970
Denken Sie also daran, dass die Belohnung positiv ist, wenn die Karte keinen Sinn ergibt.

06:05.180 --> 06:11.780
Und wenn der Code einigermaßen sinnvoll ist, erhält er die schlechte Belohnung und jedes Mal, wenn

06:11.780 --> 06:15.270
diese Variable diese Belohnung enthält, erhält sie H20.

06:15.500 --> 06:20.760
Und dann initialisieren wir die Scores, die einen Vektor enthalten, der die Belohnung enthält.

06:20.780 --> 06:22.780
Nicht alle, aber die Belohnung.

06:22.800 --> 06:28.340
Auf ein Schiebefenster, damit Sie wissen, dass wir eine Kurve des Mittelwerts machen können, und die Belohnung in Bezug auf

06:28.340 --> 06:29.440
die Zeit berechnen.

06:29.450 --> 06:34.520
Okay, dann initialisieren wir in diesem Codeabschnitt die Karte, um sie zu initialisieren.

06:34.520 --> 06:36.170
Zum Beispiel die besagte Variable.

06:36.170 --> 06:37.220
Das ist also wichtig.

06:37.220 --> 06:42.710
Die zweite Variable wird tatsächlich ein Array sein, in dem die Zellen die Pixel der Karte sind

06:43.250 --> 06:45.880
und in jeder Zelle eine 1 haben wird.

06:45.980 --> 06:52.120
Wenn eine Null einen Sinn hat, wenn es am Anfang kein Zentrum gibt, werden wir nichts zeichnen.

06:52.160 --> 06:57.840
Es gibt also überhaupt keinen Sinn und daher haben alle Zellen des Center-Arrays eine Null.

06:57.860 --> 07:02.990
Es wird überall Nullen geben, und sobald wir einen Sinn zeichnen, werden die Zellen, auf

07:02.990 --> 07:10.290
die wir den Sinn zeichnen, Eins erhalten, und wir initialisieren das Rennen mit allen Nullen, die hier gleich und Null gesendet werden.

07:10.370 --> 07:13.510
Dann haben wir diese wichtige Sache, die das Ziel ist.

07:13.520 --> 07:17.630
Das Ziel ist also ein Punkt auf der Karte, an dem das Auto trainiert wird.

07:17.630 --> 07:19.850
Es ist also wie ein Ziel.

07:19.850 --> 07:21.460
Also, was soll dieses Ziel sein?

07:21.560 --> 07:27.380
Nun, dies wird die obere linke Ecke der Karte sein, damit alle das Auto trainieren, um zur oberen linken Ecke der

07:27.380 --> 07:28.480
Karte zu gelangen.

07:28.550 --> 07:33.290
Sobald die obere linke Ecke der Karte erreicht ist, tendieren wir zur unteren rechten Ecke

07:33.290 --> 07:36.590
der Karte, sodass wir uns das folgende Szenario vorstellen können.

07:36.590 --> 07:42.620
Die obere linke Ecke der Karte ist der Flughafen einer Stadt und die rechte untere Ecke der Karte

07:42.620 --> 07:44.320
ist die Innenstadt der Stadt.

07:44.570 --> 07:50.180
Und wir werden ein Taxi oder Uber trainieren, um einige Rundfahrten zwischen dem Flughafen und der Innenstadt zu unternehmen.

07:50.210 --> 07:55.610
Natürlich machen wir diesem Taxi die Aufgabe schwer, indem wir immer schwierigere Straßen ziehen und mehr

07:55.700 --> 08:01.190
und mehr Hindernisse auf der Straße hinzufügen, um zu sehen, ob das Taxi noch vom Flughafen in

08:01.190 --> 08:02.760
die Innenstadt fahren kann.

08:02.990 --> 08:04.170
Das wird also Spaß machen.

08:04.190 --> 08:11.030
Deshalb setze ich hier die Koordinaten des ersten Ziels, des Flughafens, der sich oben links auf

08:11.030 --> 08:12.640
dem Bildschirm befindet.

08:12.830 --> 08:20.000
Die Karte wird also wie ein Quadrat aussehen und die Koordinaten des Ursprungs, der die Koordinaten 00

08:20.090 --> 08:22.090
ist, sind hier richtig.

08:22.340 --> 08:25.250
Und dann ist diese Entfernung hier größer.

08:25.310 --> 08:32.640
Die Koordinaten 20 und Najah minus 20 sind also hier in der oberen linken Ecke der Karte.

08:32.790 --> 08:35.650
Und warum habe ich 20 und nicht Null gewählt.

08:35.850 --> 08:40.300
Das ist so, weil wir das Auto trainieren wollen, um nicht in die Wände zu stürzen.

08:40.320 --> 08:45.450
Sie wissen, wir wollen auch in die Wände hinein trainieren, und deshalb ist es nicht gleich Null, weil wir nicht wollen, dass

08:45.450 --> 08:48.120
das Auto die Stelle berührt, an der wir anfahren möchten.

08:48.180 --> 08:53.910
Wir müssen es also hier richtig stellen und dann führe ich nur die letzte Entfernungsvariable ein, die nur die

08:53.910 --> 08:58.200
aktuelle Entfernung vom Auto zur Straße angibt und die ich auf Null initialisiere.

08:59.020 --> 08:59.470
Gut.

08:59.480 --> 09:02.220
Und jetzt Zeit, das Auto und das Spiel zu machen.

09:02.370 --> 09:06.650
Also machen wir zwei Klassen, eine Klasse für das Auto und eine Klasse für das Spiel.

09:06.850 --> 09:10.850
Und innerhalb dieser Klassen werden bereits einige Verbindungen zu unserer KI hergestellt.

09:11.170 --> 09:13.170
Also machen wir das im nächsten Statoil.

09:13.180 --> 09:15.000
Und bis dahin genieße ich
