WEBVTT

00:00.300 --> 00:02.400
Hallo en welkom bij deze Python-tutorial.

00:02.670 --> 00:08.010
Oké, dus we hebben zojuist het geheugen bijgewerkt nadat we de nieuwe fase hadden bereikt en laten we nu zorgen

00:08.010 --> 00:09.770
voor de volgende update, volgens jou.

00:09.780 --> 00:12.060
Wat wordt de volgende tot nu toe?

00:12.690 --> 00:16.290
Nou, eigenlijk zijn we klaar met één overgang.

00:16.680 --> 00:20.710
We hebben het laatste element van de overgang gedateerd, namelijk de nieuwe staat.

00:21.030 --> 00:23.150
Dus nu is het alsof we helemaal opnieuw beginnen.

00:23.340 --> 00:27.390
En als we helemaal opnieuw beginnen, hoe het is, weet je, we zijn in deze nieuwe staat van

00:27.390 --> 00:27.990
de omgeving.

00:28.230 --> 00:30.990
En wat moeten we nu natuurlijk doen?

00:31.350 --> 00:36.890
Nou, natuurlijk, het is om een actie te spelen omdat we al de waarneming van de nieuwe staat hebben.

00:37.240 --> 00:40.170
Dus nu moeten we een actie spelen.

00:40.680 --> 00:46.490
En daarom moeten we nu natuurlijk de functie Actie selecteren gebruiken om de actie af te spelen.

00:46.860 --> 00:47.610
Dus laten we het doen.

00:47.610 --> 00:54.140
Laten we een nieuwe volleybalactie maken en de actie spelen met de functie Actie selecteren.

00:54.150 --> 01:02.070
Dus ik gebruik Welfarist Self om te specificeren dat de select action-functie een methode is van het

01:02.070 --> 01:08.450
object van de klasse die zo zelf wordt gecreëerd dat de geselecteerde actie.

01:08.490 --> 01:10.770
Hier gaan we, zelf dat actie selecteert.

01:11.100 --> 01:17.220
En dan natuurlijk, aangezien de functie Select Action de status als invoer neemt, omdat de

01:17.220 --> 01:24.060
functie Select Action natuurlijk de uitvoer van het neurale netwerk zal retourneren wanneer de huidige invoerstatussen het neurale

01:24.070 --> 01:24.900
netwerk binnenkomen.

01:25.360 --> 01:27.210
Dus we moeten hier de invoerstatus invoeren.

01:27.630 --> 01:33.330
En aangezien dat de staat is die we zojuist in het milieu hebben bereikt, nou, de invoerstatus is natuurlijk,

01:33.330 --> 01:39.030
jij zegt, omdat de staat die we net bereikten op het moment dat we ons nu bevonden, een nieuwe

01:39.090 --> 01:39.830
staat is.

01:40.140 --> 01:44.670
Dus in de select action-functie en in het zetten van nieuwe staat.

01:45.000 --> 01:45.420
Oke.

01:45.430 --> 01:51.240
Dus met deze regel code spelen we gewoon de nieuwe actie nadat we de nieuwe status hebben bereikt.

01:51.990 --> 01:57.990
OK, en nu we een actie hebben gespeeld, nou, we krijgen de beloning en daarom krijgen we feedback met de

01:57.990 --> 01:58.500
beloning.

01:58.800 --> 02:04.310
En daarom, als we meer dan 100 elementen in het geheugen hebben, is het tijd om te leren.

02:04.650 --> 02:10.530
En daarom moeten we nu doen wat logischerwijs komt na het selecteren van een actie, namelijk het

02:10.530 --> 02:15.380
leren van de A. L. moet leren of het de dingen op de juiste manier doet.

02:15.690 --> 02:22.140
En nu, aangezien het net de actie heeft gespeeld, laten we de AI leren van zijn acties in

02:22.140 --> 02:23.670
de laatste 100 evenementen.

02:24.030 --> 02:30.990
Maar voordat we deze aangeleerde functie toepassen, moeten we deze veilige toestand maken om er zeker van te zijn dat we al

02:30.990 --> 02:35.970
meer dan honderd gebeurtenissen hebben bereikt, want, weet je, we leren van de willekeurige symbolen

02:35.970 --> 02:37.010
van het geheugen.

02:37.380 --> 02:40.710
Weet je, we hebben een enorm geheugen van tienduizend elementen.

02:41.040 --> 02:44.940
We nemen willekeurige steekproeven van het geheugen van honderd elementen.

02:45.270 --> 02:52.400
En de A L. leert van de informatie in dit voorbeeld van honderd willekeurige overgangen.

02:52.740 --> 03:00.600
Dus laten we deze als voorwaarde stellen om er zeker van te zijn dat het aantal elementen van het geheugen dat geheugen

03:00.690 --> 03:04.550
dient en dan voorzichtig zijn met een wat lastiger zelf.

03:04.560 --> 03:07.020
Die herinnering is het object van uw antwoordgeheugenglas.

03:07.320 --> 03:12.120
Maar dan heeft de opnieuw afspelende geheugenklasse een attribuut dat geheugen is.

03:12.360 --> 03:21.700
Dus in feite moeten we de herinnering zelf nemen, die herinnering, de eerste herinnering is het object van de replay-geheugenklasse

03:21.720 --> 03:27.200
en de tweede herinnering is het attribuut hier zelf dat geheugen.

03:28.080 --> 03:36.270
Dus als het aantal elementen in het geheugen goed is, willen we dat het groter is dan honderd dan het huidige.

03:36.780 --> 03:38.490
En wat gebeurt er dan?

03:38.820 --> 03:45.270
Nou, we kunnen leren, maar voordat we leren, moeten we deze willekeurige steekproef van honderd overgangen krijgen en

03:45.540 --> 03:48.270
dit kunnen we krijgen met de voorbeeldfunctie.

03:48.660 --> 03:54.510
En aangezien de voorbeeldfunctie terugkeert, zijn de verschillende batches van de staten naar de staat Tennessee plus één, de

03:54.510 --> 03:57.570
acties, de tijd en de beloningen die een ..

03:58.050 --> 04:03.310
Welnu, wat we nu moeten doen, is een aantal nieuwe variabelen maken die de batch van de staten zullen zijn die de

04:03.310 --> 04:07.590
batch van de volgende staten leegmaken, de batch van de beloningen en de batch van de acties.

04:07.980 --> 04:15.780
En we kunnen gewoon dezelfde namen geven als we hebben gegeven voor de argumenten hier en hier gebaseerd.

04:15.990 --> 04:24.660
En deze variabelen zullen gelijk zijn aan wat de voorbeeldfunctie retourneert, omdat het precies deze batches van de volgende

04:24.660 --> 04:27.870
staatsbeloningen en acties van de staat retourneert.

04:28.200 --> 04:33.450
Dus wat we nu gewoon moeten doen, is eerst ons geheugenobject krijgen.

04:33.660 --> 04:40.100
En dan gaan we van dit geheugenobject de voorbeeldmethode gebruiken, die als invoer zal worden gebruikt.

04:40.350 --> 04:46.010
Welnu, het aantal overgangen dat we willen dat onze A. L. om daarvan te leren is honderd.

04:46.470 --> 04:50.050
Daarom hebben we ervoor gezorgd dat het geheugen meer dan 100 overgangen had.

04:50.460 --> 04:54.410
Dus het gaat leren van honderd overgangen van het geheugen.

04:54.690 --> 04:56.250
Dus het leren zal veel beter zijn.

04:56.430 --> 04:59.270
En laten we dit leren nu waarmaken.

04:59.550 --> 04:59.850
We zullen.

04:59.950 --> 05:06.820
En de leermethode is een methode van onze DeQuan-klas, nou, we moeten deze geleerde methode toepassen op de toekomstige

05:07.060 --> 05:11.500
objecten die in de klas door de leraar zullen worden gemaakt.

05:11.860 --> 05:14.020
En daarom moeten we onszelf nemen.

05:14.380 --> 05:21.490
Dus zelf verwijst naar dat doel, de leraar in de klas en dan leren als deze geleerde

05:21.490 --> 05:23.670
methode leermethode waarop we input.

05:23.680 --> 05:29.870
Natuurlijk, deze jongens hier, de slechte staat, de volgende staat, de beste beloning en de beste actie.

05:30.430 --> 05:38.680
Dit zijn dus onze batches die uit ons geheugen zijn samengesteld en we krijgen er 100 omdat we 100 overgangen hebben.

05:39.010 --> 05:44.560
En van deze honderd overgangen nemen we honderd toestanden, honderd volgende datums, honderd beloningen

05:44.560 --> 05:46.030
en honderd acties.

05:47.100 --> 05:49.600
Dus laten we spelen dat hier en daar gaan we.

05:49.620 --> 05:53.910
Nu zal het leren gebeuren, het zal gebeuren uit al deze willekeurige batches.

05:54.390 --> 05:55.040
Perfect.

05:55.740 --> 06:03.820
En wat we nu moeten doen, is de allerlaatste update nadat we een nieuwe fase hebben bereikt en in actie hebben gespeeld.

06:04.170 --> 06:10.800
Welnu, we hebben de actie om te spelen, maar we hadden nog steeds niet de actie die zelf de laatste actievariabele

06:10.800 --> 06:11.280
is.

06:11.610 --> 06:13.260
Laten we er dus voor zorgen dat we dit niet vergeten.

06:13.620 --> 06:14.640
Laten we het nu meteen doen.

06:15.030 --> 06:24.450
We zullen de laatste sectie zelf bijwerken die laatste actie gelijk is aan en natuurlijk, actie de actie die we hier gewoon blijven

06:24.450 --> 06:26.550
met de actie actie selecteren.

06:27.030 --> 06:27.500
Oke.

06:27.540 --> 06:29.130
Nu is de laatste actie bijgewerkt.

06:29.580 --> 06:37.350
Toen Sanford, de nieuwe staat, bereikten we de nieuwe staat, maar we hebben de laatste datum nog niet bijgewerkt, want natuurlijk was de

06:37.350 --> 06:40.320
laatste handeling vóór de staat om 20 uur.

06:40.590 --> 06:44.550
Maar sindsdien hebben we de nieuwe staat Estie plus een keer T plus een bereikt.

06:44.910 --> 06:47.670
Welnu, de laatste staat wordt hier deze nieuwe staat.

06:47.940 --> 06:49.710
En daarom moeten we het ook bijwerken.

06:50.160 --> 06:55.860
Zelf, die laatste staat is gelijk aan onze nieuwe staat.

06:57.150 --> 06:57.770
Daar gaan we.

06:57.990 --> 06:59.380
En nu moeten we updaten.

06:59.640 --> 07:01.320
Nou, er is nog maar één ding over.

07:01.530 --> 07:07.830
Dat is natuurlijk de beloning en de beloning is precies de beloning die we in werkelijkheid krijgen.

07:08.130 --> 07:14.340
Dus dat zal het argument zijn van deze update-functie, die als we de verbinding met onze kaart maken,

07:14.760 --> 07:16.710
de laatste beloning zal zijn.

07:17.040 --> 07:22.930
Dat is de beloning die we krijgen nadat we de actie in deze bereikte nieuwe staat hebben gespeeld.

07:23.310 --> 07:27.870
Dus als we wat gaan sturen, zal deze laatste beloning slecht zijn, min één.

07:28.200 --> 07:33.150
Komen we verder van het doel af, dan krijgen we een iets betere beloning, min of punt.

07:33.510 --> 07:38.340
Als we dichter bij het doel komen, krijgen we een enigszins goede beloning, een open.

07:38.670 --> 07:43.140
En als we te dicht bij een rand van de kaart komen, nou, dat zal een slechte straf zijn.

07:43.380 --> 07:44.810
We krijgen min één voor elk.

07:45.390 --> 07:46.980
Dus dat is de laatste beloning die we krijgen.

07:46.980 --> 07:50.430
In werkelijkheid is dat degene die echt op de kaart gebeurt.

07:50.640 --> 07:53.300
En dit zal het argument zijn van de update-functie.

07:53.430 --> 07:55.200
Dit laatste woord hier dat precies.

07:55.200 --> 07:55.640
Deze.

07:56.080 --> 08:01.710
En aangezien dit het argument is dat de update goed werkt, die overeenkomt met

08:01.980 --> 08:10.440
deze beloning hier en dus met onszelf, wordt die laatste beloningsvariabele die aan het begin in deze init-functie is geïnitialiseerd, de

08:10.890 --> 08:13.200
nieuwe beloning die we krijgen.

08:13.590 --> 08:19.080
In werkelijkheid is dat beloning of dat is dezelfde minder beloning.

08:20.560 --> 08:27.670
Oké, dus nu hebben we onze laatste beloning bijgewerkt, en nu we net onze laatste beloning hebben gekregen, kunnen we

08:27.670 --> 08:29.410
nu het beloningsvenster krijgen.

08:29.690 --> 08:36.720
Je herinnert je het beloningsvenster met hier geïnitialiseerd als een van de variabelen van het object van onze klasse.

08:37.060 --> 08:42.370
Dat is het venster dat bijhoudt hoe deze training verloopt door het gemiddelde van de laatste

08:42.370 --> 08:43.790
100 beloningen te nemen.

08:44.140 --> 08:49.620
Dus, weet je, het zal zijn als een schuifvenster dat ons laat zien hoe het gemiddelde van de beloning evolueert.

08:50.020 --> 08:54.980
En omdat we net onze laatste beloning hebben gekregen, kunnen we het beloningsvenster bijwerken.

08:55.360 --> 08:56.620
En hoe updaten we het dan?

08:56.920 --> 09:00.510
Nou, we moeten gewoon deze laatste beloning naar het raam brengen.

09:00.520 --> 09:07.510
En daarom, wat ik ga doen, is mijn beloningsvenster zelf dat beloningsvenster nemen.

09:07.510 --> 09:08.080
Hier is het.

09:08.380 --> 09:12.100
En dan ga ik de append-functie gebruiken.

09:12.310 --> 09:18.670
En binnen de open-functie moeten we het element invoeren dat we aan het beloningsvenster willen toevoegen.

09:18.680 --> 09:20.410
En dat is natuurlijk de beloning.

09:21.340 --> 09:22.240
Oké, perfect.

09:22.420 --> 09:28.810
En aangezien dit beloningsvenster een vaste grootte zal hebben, weet je, het zal geen groeiend venster zijn, het zal een venster

09:28.810 --> 09:34.330
zijn, een vaste grootte die met de tijd verschuift om ons de evolutie van de wereld te laten

09:34.330 --> 09:34.940
zien.

09:35.320 --> 09:38.370
En dus moeten we nu beslissen over de grootte van dit venster.

09:38.530 --> 09:43.170
En het is gewoon het aantal middelen van de beloningen die we in dit venster zullen hebben.

09:43.720 --> 09:49.100
En laten we bijvoorbeeld de laatste duizend middelen van de laatste honderd beloningen pakken.

09:49.120 --> 09:58.330
En om er zeker van te zijn, gaan we toevoegen als dan Lenn, dan nemen we ons beloningsvenster en we voegen

09:58.330 --> 10:05.550
het hier gewoon toe als het aantal elementen in het beloningsvenster groter is dan duizend.

10:05.830 --> 10:13.480
Welnu, wat we willen doen is het eerste element van dit ene venster verwijderen.

10:13.660 --> 10:18.070
En het eerste element van dit beloningsvenster heeft de index nul.

10:19.010 --> 10:24.160
Oké, en nu zorgen we ervoor dat dit beloningsvenster nooit meer dan duizend elementen zal krijgen,

10:24.470 --> 10:27.420
dat is duizend gemiddeld van de laatste honderd beloningen.

10:27.830 --> 10:28.570
Dat is perfect.

10:28.580 --> 10:34.520
Dit wordt een venster, een vaste grootte, zodat we kunnen zien of het gemiddelde van de beloning toeneemt en dus

10:34.520 --> 10:38.920
of de training goed gaat en dus of de rechtbank doet wat we willen.

10:39.650 --> 10:40.270
Perfect.

10:40.790 --> 10:44.630
En nu moet er volgens jou nog een klein dingetje over.

10:44.630 --> 10:45.680
Wat gaat het worden?

10:46.010 --> 10:51.980
Onthoud dat deze update-functie niet alleen de verschillende elementen van de overgang in het beloningsvenster bijwerkt,

10:51.990 --> 10:57.630
maar ook de actie retourneert die werd gespeeld bij het bereiken van deze nieuwe staat.

10:58.040 --> 11:05.450
Daarom hebben we in de kaart actie gelijk aan hersenen dat een laatste beloningssignaal geeft en daarom moet

11:05.450 --> 11:06.800
het iets teruggeven.

11:07.130 --> 11:10.110
En er is iets dat het moet teruggeven, natuurlijk, de actie.

11:10.700 --> 11:16.460
Dus het laatste wat we hier moeten doen, is gewoon actie retourneren.

11:17.030 --> 11:19.820
De actie die werd weergegeven bij het bereiken van de nieuwe status.

11:20.420 --> 11:23.390
En dat is onze update-functie is klaar.

11:23.660 --> 11:28.790
Het gaat alle vereiste updates doen en het zal de actie retourneren wanneer de nieuwe status wordt bereikt.

11:29.330 --> 11:30.230
Dat is perfect.

11:30.500 --> 11:34.760
Dat was de laatste moeilijke actie voor dit alles A. L. Verwerken.

11:35.120 --> 11:36.620
Nu is de rest kinderdingen.

11:37.040 --> 11:41.590
We zullen gewoon een kernfunctie maken om de middelen van de beloningen in het beloningsvenster terug te geven.

11:42.050 --> 11:47.420
Dan zullen we een opslagfunctie maken om het brein van de auto te redden wanneer je de applicatie wilt afsluiten en ernaar

11:47.420 --> 11:48.330
terug wilt gaan.

11:48.710 --> 11:52.940
En natuurlijk, aangezien je het brein van je auto wilt kunnen laden, ga je terug naar de

11:53.180 --> 11:54.480
applicatie als je erop terugkomt.

11:54.890 --> 12:01.160
Welnu, we zullen eindigen met het maken van een laadfunctie, die uw model laadt nadat u uw model met de

12:01.160 --> 12:02.130
opslagfunctie hebt opgeslagen.

12:02.690 --> 12:06.170
Dus nog drie functies te doen, maar het wordt eenvoudig.

12:06.320 --> 12:09.800
En dan hebben we het meest opwindende deel van deze eerste module.

12:10.070 --> 12:11.300
Dat is de demo.

12:11.540 --> 12:13.430
We zullen zien of de advertentie werkt.

12:13.710 --> 12:17.750
We zullen zien of de auto de doelen haalt en we zullen zien hoe we hem kunnen verbeteren.

12:18.050 --> 12:23.700
En dan heb je uiteindelijk je eerste A gebouwd. L. Dus ik kan niet wachten om met de demo te beginnen.

12:24.020 --> 12:25.820
Laten we eerst deze drie functies maken.

12:25.820 --> 12:27.530
En tot die tijd, geniet van I.
