WEBVTT

00:02.310 --> 00:04.620
Luka: Hallo und willkommen zurück.

00:04.620 --> 00:05.453
In diesem Video

00:05.453 --> 00:07.710
werden wir über ChatGPT sprechen und darüber,

00:07.710 --> 00:11.370
wie man damit denselben Algorithmus für Doom implementiert, den

00:11.370 --> 00:13.350
wir im Kurs verwenden werden, nämlich

00:13.350 --> 00:16.290
das convolutional deep Q-learning.

00:16.290 --> 00:17.790
In den nächsten paar Minuten

00:17.790 --> 00:22.440
werden wir also den Weg durchgehen, den ich ChatGPT gezeigt und gefragt

00:22.440 --> 00:26.190
habe, damit wir unser Modell bekommen.

00:26.190 --> 00:29.580
Ich möchte Ihnen also erklären, wie ich es gemacht habe und

00:29.580 --> 00:33.720
warum ich bestimmte Aufforderungen auf diese Weise umgesetzt habe.

00:33.720 --> 00:38.460
Die ursprüngliche Aufforderung war also von meiner Seite aus ziemlich gut formuliert.

00:38.460 --> 00:39.293
Ich sagte: "Sie sind

00:39.293 --> 00:41.527
ein leitender Experte für maschinelles Lernen "mit

00:41.527 --> 00:43.717
jahrelanger Erfahrung in der Arbeit an Projekten

00:43.717 --> 00:47.550
"zur Anwendung von maschinellem Lernen auf Simulationen und Robotik. Dies ist der erste Teil, der die Bühne bereitet und ihnen

00:47.550 --> 00:48.750
eine Rolle gibt.

00:48.750 --> 00:51.330
Im Grunde genommen wird der Vektorraum des gesamten

00:51.330 --> 00:55.410
ChatGPT also mehr auf Themen des maschinellen Lernens ausgerichtet sein.

00:55.410 --> 00:59.310
Jetzt möchte ich Doom in meinen Zusammenhang bringen.

00:59.310 --> 01:04.310
Und um diesen Punkt zu erreichen, sagte ich: "Okay, ich habe Sie beauftragt,

01:04.500 --> 01:06.600
mir bei der Implementierung eines

01:06.600 --> 01:08.887
Convolutional Deep Q-Learning-Algorithmus

01:08.887 --> 01:12.457
für die Doom-Umgebung zu helfen.

01:12.457 --> 01:14.407
"Das Ziel ist ein voll funktionsfähiger Algorithmus

01:14.407 --> 01:15.337
des verstärkten Lernens,

01:15.337 --> 01:18.457
der Doom, eine Spielumgebung, spielen kann".

01:18.457 --> 01:22.327
Ich habe Klassen "für experience_replay und Speicher- und Bildverarbeitung"

01:22.327 --> 01:24.187
implementiert.

01:24.187 --> 01:27.903
"Ich werde sie Ihnen zur Verfügung stellen, damit Sie sie in den endgültigen

01:28.777 --> 01:30.337
Code einbauen können.

01:30.337 --> 01:34.800
Das ist wirklich wichtig, was die meisten Leute übersehen.

01:34.800 --> 01:37.893
Sie müssen eine Möglichkeit haben, ihm oder ChatGPT

01:38.790 --> 01:42.120
mitzuteilen, dass Sie bereits etwas haben und diesen Code

01:42.120 --> 01:43.860
in der endgültigen Implementierung

01:43.860 --> 01:45.720
verwenden wollen.

01:45.720 --> 01:50.720
Wenn ich dies also nicht als Kontext zur Verfügung stelle, wird ein Code

01:50.910 --> 01:54.390
generiert, eine Implementierung von convolutional

01:54.390 --> 01:57.240
deep Q-learning, die die Verwendung von

01:57.240 --> 02:01.140
experience_replay und unserer Bildverarbeitungsfunktion

02:01.140 --> 02:04.080
nicht berücksichtigt, aber das wollen wir

02:04.080 --> 02:06.330
ja.

02:06.330 --> 02:07.323
Dann fahre ich fort

02:08.250 --> 02:10.537
und sage: "Ihr Ziel ist es, die vollständige

02:10.537 --> 02:14.107
Lösung mit Python zu implementieren, "Torch for model, "und den Code

02:14.107 --> 02:16.717
zu optimieren, damit er in Google Colab ausgeführt

02:16.717 --> 02:21.187
werden kann, "so dass Schüler, die den Code durchgehen, "ihn auch mit weniger starken

02:21.187 --> 02:23.167
Computern ausführen können. Damit teilen Sie

02:23.167 --> 02:28.167
ChatGPT das Format der endgültigen Lösung

02:28.260 --> 02:33.060
mit, die Sie haben möchten.

02:33.060 --> 02:35.190
Und schließlich wird "bei Bedarf klärende Fragen

02:35.190 --> 02:37.200
stellen" dem Ganzen mehr Kontext verleihen.

02:37.200 --> 02:40.050
Und: "Eh, wenn Sie es nicht wissen, "wenn Sie nicht genug

02:40.050 --> 02:42.060
Kontext haben, fragen Sie mich bitte. Und schließlich fragte er: "Haben Sie es? Ich wollte bestätigen, dass es geklappt hat.

02:42.060 --> 02:44.197
Dies ist eine clevere Methode, die es ihm erlaubt, darüber

02:44.197 --> 02:47.580
nachzudenken und nicht nur die nächsten Aufforderungen und Antworten zu generieren.

02:47.580 --> 02:49.737
Wenn du das nicht tust, wenn

02:50.640 --> 02:53.730
du nicht fragst: "Hast du's? " oder "Klar? oder "Verstehen Sie? " oder etwas Ähnliches,

02:53.730 --> 02:58.730
werden einige der Teile komplett ignoriert

03:00.210 --> 03:05.210
und die Generierung beginnt.

03:05.820 --> 03:07.230
Da die Anzahl der Token, die Sie in Ihren

03:07.230 --> 03:09.090
Fragen und Antworten haben,

03:09.090 --> 03:12.780
begrenzt ist, möchten Sie diese Grenze durchbrechen,

03:12.780 --> 03:16.020
um die Anzahl der Token, die Sie generieren können, zu erhöhen.

03:16.020 --> 03:18.240
Die erste Antwort lautet also:

03:18.240 --> 03:20.760
"Ich habe die Aufgabe verstanden.

03:20.760 --> 03:22.980
"Ich werde genau das tun, worum ich Sie bitten werde.

03:22.980 --> 03:26.310
"Doch bevor ich fortfahre, habe ich einige Fragen. Und das ist der Punkt, an dem dieses "Wenn Sie irgendwelche Fragen haben, fragen

03:26.310 --> 03:28.610
Sie mich", mir ziemlich gute Fragen gestellt hat.

03:29.820 --> 03:32.377
Zunächst einmal: Haben Sie eine benutzerdefinierte Umgebung, oder verwenden

03:32.377 --> 03:33.607
Sie etwas, das bereits vorhanden ist?

03:33.607 --> 03:36.697
Also OpenAI, VizDoom und solche Sachen.

03:36.697 --> 03:39.600
Dann kommen wir zu der Frage: Gibt

03:39.600 --> 03:43.980
es bestimmte Leistungskennzahlen, die ich beachten

03:43.980 --> 03:45.750
soll?

03:45.750 --> 03:49.200
Gibt es Anforderungen an das Modell selbst?

03:49.200 --> 03:51.240
Welche Versionen von Python und PyTorch?

03:51.240 --> 03:53.883
Und schließlich, gibt es irgendwelche besonderen

03:54.750 --> 03:56.850
Beschränkungen für die Frist?

03:56.850 --> 03:58.950
Dies stammt hauptsächlich aus den Geschäftsplänen,

03:58.950 --> 04:00.783
für die es geschult wurde, aber dafür

04:01.800 --> 04:05.850
ist es nicht wirklich relevant, also nicht relevant für es, aber okay.

04:05.850 --> 04:08.223
Ich bot an: "Ja, ich werde OpenAI Gym verwenden, und hier

04:09.180 --> 04:10.140
ist, wie man es lädt. Dies ist aus dem Kurs.

04:10.140 --> 04:12.990
Ich sagte: "Okay, befolgen Sie die durchschnittliche Belohnung,

04:12.990 --> 04:17.160
keine spezifischen Anforderungen, seien Sie kreativ, solange es funktioniert, verwenden

04:17.160 --> 04:19.803
Sie die neuesten Modelle oder Versionen der Bibliotheken,

04:20.970 --> 04:23.283
und was ist die Frist.

04:24.150 --> 04:25.177
Ich habe gerade "ASAP" geschrieben.

04:25.177 --> 04:30.177
Außerdem gibt es die von mir erwähnten Kurse.

04:30.480 --> 04:31.713
Ich habe einfach die Klassen eingefügt, die wir im Kurs haben.

04:33.000 --> 04:35.133
Also Erfahrungswiedergabe,

04:36.030 --> 04:40.953
alles, und schließlich Wiedergabespeicher, Bildverarbeitung,

04:42.120 --> 04:46.320
und das war's.

04:46.320 --> 04:48.090
Und damit habe ich den Kontext geschaffen,

04:48.090 --> 04:49.797
und jetzt begann es zu generieren.

04:51.150 --> 04:54.120
So wurde der Code generiert.

04:54.120 --> 04:57.000
Es begann mit der Vorverarbeitung des

04:57.000 --> 05:00.720
Bildes und erstellte dann das tiefe Q-Netz, das

05:00.720 --> 05:04.773
dem von uns verwendeten ziemlich ähnlich ist.

05:05.790 --> 05:06.623
Dann begann es mit

05:07.681 --> 05:10.230
der Initialisierung und dem Training des Codes.

05:10.230 --> 05:13.530
Bis jetzt hat alles funktioniert, und dann bricht es hier ab.

05:13.530 --> 05:15.753
Wenn Sie etwas länger generieren

05:16.590 --> 05:21.363
wollen, habe ich einfach "weiter" geschrieben.

05:22.560 --> 05:25.110
Und sie sagte: "Weiter? Ja, natürlich. Die Generierung wird fortgesetzt, und schwupps

05:25.110 --> 05:27.513
haben wir den vollständigen Code.

05:29.070 --> 05:31.983
Erstaunlich.

05:32.910 --> 05:34.863
Darin stand, wie man es benutzt,

05:36.000 --> 05:40.350
wie oft, was man ändern muss und so weiter.

05:40.350 --> 05:43.950
Das hat mir auch geholfen.

05:43.950 --> 05:46.110
Und nun möchte ich Sie zu meinem Google Colab bringen.

05:46.110 --> 05:49.530
Ich begann also mit dem Einfügen des Codes

05:49.530 --> 05:51.840
hier, fügte unsere Vorverarbeitungsfunktion ein.

05:51.840 --> 05:55.020
Ich werde gleich auf die Änderungen in dieser Vorverarbeitungsfunktion

05:55.020 --> 05:55.853
eingehen.

05:57.060 --> 06:00.750
Dann fügte ich diese Erfahrungswiederholung ein, einige der Installationen

06:00.750 --> 06:02.793
von meiner Seite aus.

06:03.720 --> 06:05.940
Wir werden dies in einer Sekunde erklären.

06:05.940 --> 06:09.630
Ich habe mit seinem tiefen Q-Netz und Trainingscode gespielt.

06:09.630 --> 06:13.053
Es gibt also durchaus Möglichkeiten, dies zu verbessern.

06:14.040 --> 06:16.290
Vor allem, wenn Sie eine lokale Umgebung haben, wird es funktionieren.

06:16.290 --> 06:18.720
Wenn Sie dies in Google Colab verwenden, kann es zu Problemen kommen.

06:18.720 --> 06:19.553
Darauf möchte ich Sie hinweisen.

06:20.970 --> 06:24.843
Ich habe es also getan und eine Fehlermeldung erhalten.

06:25.740 --> 06:29.163
Ich sagte: "Hey, mein ursprünglicher Code hat nicht funktioniert.

06:30.150 --> 06:31.833
Ich habe gerade den Code eingefügt,

06:32.790 --> 06:37.790
diese Fehlermeldung, und sagen, "Ich kann nicht die Größe eines Bildes. Und wenn Sie einen Blick auf unseren Code aus dem Kurs werfen, müssen

06:38.430 --> 06:41.640
Sie die Größe des Bildes damit ändern.

06:41.640 --> 06:45.810
Aber die neuere Version von SciPy entfernt dies.

06:45.810 --> 06:49.440
Also hieß es: "Oh, ja, es scheint, dass dies entfernt

06:49.440 --> 06:50.840
worden ist. "Hier ist die neue Version mit Pillow.

06:51.750 --> 06:54.240
Und eigentlich war das auch gar nicht nötig.

06:54.240 --> 06:58.110
Im Grunde wurde die gesamte Bildvorverarbeitungsklasse

06:58.110 --> 07:03.110
mit Pillow anstelle von SciPy neu geschrieben.

07:03.810 --> 07:06.600
Ich habe es also benutzt, und es funktioniert tatsächlich.

07:06.600 --> 07:10.440
Und dann sagte ich: "Okay, ich habe ein Problem damit, dass

07:10.440 --> 07:13.200
die Umwelt Google Colab verwendet.

07:13.200 --> 07:17.310
"Wie kann man das Problem lösen? Hier liegt der Fehler. Und sie sagte: "Oh, ja, entschuldigen Sie sich.

07:17.310 --> 07:18.663
"Es scheint, dass dieses spezielle Umfeld nicht funktioniert.

07:19.537 --> 07:21.637
"Sie tun Folgendes.

07:21.637 --> 07:25.200
"Im Grunde installieren Sie das und machen das. Ich habe einen Fehler, einen weiteren Fehler.

07:25.200 --> 07:27.360
Und dieser Fehler zeigte an, dass

07:27.360 --> 07:32.260
das Rendering in dieser speziellen Version nicht gefunden wird.

07:33.270 --> 07:36.723
Und es hieß: "Okay, installiere diese Version. Das habe ich. Ein weiterer Fehler.

07:37.620 --> 07:41.283
Und es hieß: "Oh, ja, ja, "Google Colab unterstützt keine Rendering-,

07:42.990 --> 07:44.227
OpenGL-Bibliotheken",

07:44.227 --> 07:47.257
was für uns bedeutet, dass wir anstelle von Google Colab etwas

07:47.257 --> 07:50.160
anderes für Visualisierungszwecke

07:50.160 --> 07:52.087
verwenden müssen.

07:52.087 --> 07:55.657
Und es gab mir im Grunde eine Schritt-für-Schritt-Anleitung,

07:55.657 --> 07:56.917
was zu tun ist, wie ich

07:56.917 --> 07:59.880
das ändern kann, und so weiter.

07:59.880 --> 08:02.580
Und wenn Sie dies vor Ort tun, werden Sie das Problem lösen.

08:02.580 --> 08:04.350
Aber dies ist im Grunde

08:04.350 --> 08:09.350
jetzt lehrt Sie, wie man richtig ChatGPT verwenden.

08:11.850 --> 08:14.280
Sie haben z. B. gesehen, dass ich einige Fehler hatte, ich habe diese

08:14.280 --> 08:17.040
Fehler gemeldet und so weiter.

08:17.040 --> 08:18.457
Und jetzt haben Sie,

08:18.457 --> 08:23.457
wenn Sie zurückblättern, einen voll funktionsfähigen Code mit

08:24.270 --> 08:27.870
einem tiefen Q-Netz, mit einem Trainingscode,

08:27.870 --> 08:31.350
und Sie können ihn auffordern, einen Testcode

08:31.350 --> 08:34.500
zu generieren, und er wird es tun.

08:34.500 --> 08:37.440
Erstaunlich, nicht wahr?

08:37.440 --> 08:38.820
Das war's also.

08:38.820 --> 08:42.450
So verwenden Sie ChatGPT, um das tiefe Q oder das tiefe

08:42.450 --> 08:45.120
Faltungsnetz für Doom zu lösen.

08:45.120 --> 08:47.200
Danke. Viel Spaß auf der Strecke!
