WEBVTT

00:02.520 --> 00:04.620
Instructeur: Hallo iedereen en welkom terug.

00:04.620 --> 00:07.920
In deze video bespreken we

00:07.920 --> 00:11.640
hoe we ChatGPT kunnen gebruiken

00:11.640 --> 00:15.540
om "Breakout" op te lossen.

00:15.540 --> 00:19.470
Dus ik heb het al gevraagd met een heleboel gekke prompts, we

00:19.470 --> 00:23.010
kregen geweldige resultaten, we zullen ze zo zien.

00:23.010 --> 00:25.170
Dus in deze video loop ik eigenlijk

00:25.170 --> 00:26.640
door mijn denkproces

00:26.640 --> 00:28.740
over hoe ik de resultaten heb gekregen,

00:28.740 --> 00:31.470
en hoe je ChatGPT kunt gebruiken om ook

00:31.470 --> 00:34.890
een A3C-algoritme te maken.

00:34.890 --> 00:39.360
Oké, dus ik begon op dezelfde manier als bij "DOOM," ik zei, oké,

00:39.360 --> 00:41.340
je bent eigenlijk een machine

00:41.340 --> 00:42.930
learning expert met jarenlange

00:42.930 --> 00:46.110
ervaring in robotica.

00:46.110 --> 00:50.490
Ik huur je in om A3C algoritme te doen voor "Breakout. Het doel is een volledig functioneel SOTA,

00:50.490 --> 00:52.110
A3C algoritme dat

00:52.110 --> 00:56.100
het "Breakout" spel kan spelen.

00:56.100 --> 00:58.401
Ik heb klassen, de test code omgeving,

00:58.401 --> 01:00.150
en aangepaste versies van Adam

01:00.150 --> 01:02.520
optimizer geïmplementeerd die gebruikt

01:02.520 --> 01:05.040
wordt voor als een gedeelde-gewichten optimizer

01:05.040 --> 01:07.590
voor het A3C model.

01:07.590 --> 01:09.361
Dus dit is het geven van meer

01:09.361 --> 01:13.076
context, wat ik deed, ik geef je deze drie dingen.

01:13.076 --> 01:18.000
Dus zoals ik al zei voor het genereren van de rest van de code, is het

01:18.000 --> 01:20.160
uw doel om de volledige oplossing

01:20.160 --> 01:21.900
te implementeren met Python,

01:21.900 --> 01:23.250
Torch, zoals we hadden,

01:23.250 --> 01:25.650
en de code te optimaliseren voor

01:25.650 --> 01:27.690
uitvoering in Google Colab,

01:27.690 --> 01:31.680
zoals we eerder hadden.

01:31.680 --> 01:33.540
Geef bovendien commentaar op elke

01:33.540 --> 01:35.850
regel van de code, zodat de leerlingen kunnen

01:35.850 --> 01:38.590
begrijpen wat je in de code hebt gedaan.

01:40.710 --> 01:42.990
Stel zo nodig verduidelijkende vragen, begrepen.

01:42.990 --> 01:46.500
Dus we hebben wat overlapping met wat we deden voor

01:46.500 --> 01:48.360
conversational Deep Q voor

01:48.360 --> 01:54.600
"DOOM," maar ik heb veel context toegevoegd dat ik al dingen geïmplementeerd heb, en

01:54.600 --> 01:57.390
ik wil dat ze gebruikt worden.

01:57.390 --> 02:00.210
Dus daar begin ik aan en het is bevestigd.

02:00.210 --> 02:03.030
Ja, ik begrijp het en ik zal vragen

02:03.030 --> 02:06.840
stellen. Geef de rest van de code.

02:06.840 --> 02:09.510
Toen zei ik, dit is Adam optimizer, ik plakte

02:09.510 --> 02:11.753
de code voor Adam optimizer, voor

02:11.753 --> 02:15.180
de middelen die we hebben, en ik gaf deze instructie,

02:15.180 --> 02:16.920
ik zei, wacht op de rest van

02:16.920 --> 02:18.870
de code voor ik implementeer,

02:18.870 --> 02:21.963
ik plakte gewoon, voor ik goede resultaten kreeg,

02:23.130 --> 02:27.210
en het sprong onmiddellijk naar de implementatie van A3C, zonder

02:27.210 --> 02:30.510
te wachten op de rest.

02:30.510 --> 02:32.310
Dus ik voegde dit toe

02:32.310 --> 02:33.750
als een soort systemische

02:33.750 --> 02:38.750
code, systemische prompt, en het zei, oké, geef de omgeving

02:39.060 --> 02:41.820
en test de code.

02:41.820 --> 02:42.653
Dus het verwijst eigenlijk naar

02:42.653 --> 02:43.650
wat we in de eerste prompt gaven.

02:43.650 --> 02:46.323
Ik zei, cool, hier is de implementatie

02:47.160 --> 02:51.030
van Gym environment.

02:51.030 --> 02:52.173
Ik heb die hoofdcode geplakt,

02:53.760 --> 02:56.010
ik heb hier context toegevoegd, als je kijkt,

02:56.010 --> 02:57.128
en dit is het hoofdbestand

02:57.128 --> 02:59.040
waarin alles draait.

02:59.040 --> 03:01.383
En toen zei ik, oké, cool, wacht

03:03.690 --> 03:05.267
op de testcode.

03:05.267 --> 03:06.813
En hij zei, ja, ik, echter,

03:07.830 --> 03:08.766
ik moet de testcode

03:08.766 --> 03:11.880
nog zien voordat ik A3C implementeer, ik zei, cool, hier

03:11.880 --> 03:13.410
is een testcode.

03:13.410 --> 03:15.813
En je ziet dat als je een groter,

03:16.920 --> 03:19.170
groter project hebt, je dat

03:19.170 --> 03:21.480
kunt gebruiken om dat stukje

03:21.480 --> 03:23.230
code te gebruiken of

03:24.330 --> 03:27.810
als referentie, in de stijl zodat je daadwerkelijk

03:27.810 --> 03:30.870
iets kunt genereren in jouw stijl van

03:30.870 --> 03:33.630
code.

03:33.630 --> 03:34.983
Cool, en toen ik dat deed,

03:36.360 --> 03:38.370
zei het, geweldig, ga ervoor.

03:38.370 --> 03:41.190
En het zei eigenlijk dat ik deze hoofdcode

03:41.190 --> 03:45.840
ga gebruiken, en testen, en dit implementeren.

03:45.840 --> 03:49.200
En toen stond er, gecreëerd model. py, wat we eigenlijk ook in de cursus

03:49.200 --> 03:52.800
hebben gedaan.

03:52.800 --> 03:55.830
En hij zei, hier is het ActorCritic model,

03:55.830 --> 03:58.620
en ik vergelijk met het onze.

03:58.620 --> 04:00.630
Dit is de nieuwere versie van python, dus veel

04:00.630 --> 04:02.310
van de initialisatie van gewichten

04:02.310 --> 04:05.640
en dat soort dingen kunnen op een elegantere manier worden gedaan.

04:05.640 --> 04:09.060
Dus het deed het en het gebruikt eigenlijk

04:09.060 --> 04:13.680
vrij goed, dan gegenereerd trein code, en in principe

04:13.680 --> 04:15.663
ActorCritic.

04:16.500 --> 04:19.860
En als je kijkt, is het nogal simplistisch,

04:19.860 --> 04:22.020
dus het moet zeker verbeterd

04:22.020 --> 04:23.039
worden.

04:23.039 --> 04:25.980
Dus wat je kunt doen, je kunt zeggen,

04:25.980 --> 04:27.423
oké, ik zei ga door,

04:28.500 --> 04:31.560
en het gaat door met opschrijven.

04:31.560 --> 04:35.373
Het creëerde dit als een soort verlies,

04:37.920 --> 04:41.040
maar er is, ja, eigenlijk alles

04:41.040 --> 04:47.910
wat we nodig hadden, het optimaliseerde alles, en je kunt die

04:47.910 --> 04:51.333
optimizer zien. stop aan het einde.

04:53.160 --> 04:56.550
Dus het gebruikte eigenlijk

04:56.550 --> 04:58.080
alles wat we tot nu toe gedefinieerd

04:58.080 --> 04:59.220
hebben, evenals het

04:59.220 --> 05:02.490
juiste verlies, en ja, optimizer, alles.

05:02.490 --> 05:05.730
Dus dat is het.

05:05.730 --> 05:07.591
In een paar eenvoudige stappen

05:07.591 --> 05:10.530
zijn we erin geslaagd om de hele code te implementeren

05:10.530 --> 05:13.170
voor een van de state-of-the-art modellen

05:13.170 --> 05:15.270
die toevallig als een van de beste

05:15.270 --> 05:18.450
in 2017, 2018.

05:18.450 --> 05:21.060
Tot op de dag van vandaag heeft

05:21.060 --> 05:24.900
het veel capaciteit om complexe omgevingen

05:24.900 --> 05:27.240
zoals "Breakout. Dus je zag, nu we bijvoorbeeld ChatGPT hebben,

05:27.240 --> 05:28.710
dat je het kunt leiden om bepaalde

05:28.710 --> 05:32.490
bepaalde delen van de code te implementeren.

05:32.490 --> 05:35.250
En als je niet weet wat bepaalde

05:35.250 --> 05:36.990
delen van de code eigenlijk

05:36.990 --> 05:39.450
doen, kun je het gaan vragen,

05:39.450 --> 05:44.853
bijvoorbeeld, cool, kun je het trainingsgedeelte uitleggen

05:47.310 --> 05:51.840
en waar is de gewoonte van Adam?

05:51.840 --> 05:56.200
Dus ik spoor het aan om zichzelf te verklaren, dus dat is een

05:58.320 --> 05:59.223
andere manier

06:04.740 --> 06:08.430
om het aan te sporen om je meer redenen te geven achter

06:08.430 --> 06:10.290
zijn opwekking.

06:10.290 --> 06:12.570
En je kunt zien dat het

06:12.570 --> 06:16.803
stap voor stap wordt uitgelegd.

06:17.730 --> 06:18.563
Dus ja, we kunnen

06:18.563 --> 06:21.213
hier op wachten, je kunt dezelfde aanwijzingen

06:22.920 --> 06:25.890
doen en je krijgt echt soortgelijke resultaten

06:25.890 --> 06:27.510
als ik, maar wat het nu in het

06:27.510 --> 06:30.030
algemeen gaat doen is de treinfunctie nemen

06:30.030 --> 06:31.950
die het hier bovenaan gedefinieerd

06:31.950 --> 06:34.050
heeft, en het zal in principe elke

06:34.050 --> 06:38.010
stap doorlopen en het implementeren.

06:38.010 --> 06:40.890
Dus ja, dat zou het zijn.

06:40.890 --> 06:43.803
Ik moedig u zeker aan om deze code uit te proberen

06:44.700 --> 06:46.053
in Google Colab, Het

06:47.580 --> 06:48.600
kan, het zal een

06:48.600 --> 06:54.780
beetje lastig zijn om het te laten werken, vanwege de visualisatie en de beperkingen

06:54.780 --> 06:58.380
van de Goggle Colab omgeving.

06:58.380 --> 06:59.760
Maar je kunt zeker de fouten

06:59.760 --> 07:02.430
hier gaan plakken, en je kunt, je kunt daar

07:02.430 --> 07:03.840
behoorlijk wat resultaten

07:03.840 --> 07:07.083
voor krijgen om het proces te debuggen.

07:08.580 --> 07:11.310
En ja, daarmee laat ik je zijn, en nu

07:11.310 --> 07:13.890
heb je de manier om ChatGPT te gebruiken

07:13.890 --> 07:16.860
om waarde te krijgen voor A3C.

07:16.860 --> 07:20.400
En ja, ik hoop dat je de cursus

07:20.400 --> 07:24.960
tot nu toe leuk vond, doei.
