Hallo en welkom bij deze Python-tutorial.
Oké, dus we hebben zojuist het geheugen bijgewerkt nadat we de nieuwe fase hadden bereikt en laten we nu zorgen
voor de volgende update, volgens jou.
Wat wordt de volgende tot nu toe?
Nou, eigenlijk zijn we klaar met één overgang.
We hebben het laatste element van de overgang gedateerd, namelijk de nieuwe staat.
Dus nu is het alsof we helemaal opnieuw beginnen.
En als we helemaal opnieuw beginnen, hoe het is, weet je, we zijn in deze nieuwe staat van
de omgeving.
En wat moeten we nu natuurlijk doen?
Nou, natuurlijk, het is om een actie te spelen omdat we al de waarneming van de nieuwe staat hebben.
Dus nu moeten we een actie spelen.
En daarom moeten we nu natuurlijk de functie Actie selecteren gebruiken om de actie af te spelen.
Dus laten we het doen.
Laten we een nieuwe volleybalactie maken en de actie spelen met de functie Actie selecteren.
Dus ik gebruik Welfarist Self om te specificeren dat de select action-functie een methode is van het
object van de klasse die zo zelf wordt gecreëerd dat de geselecteerde actie.
Hier gaan we, zelf dat actie selecteert.
En dan natuurlijk, aangezien de functie Select Action de status als invoer neemt, omdat de
functie Select Action natuurlijk de uitvoer van het neurale netwerk zal retourneren wanneer de huidige invoerstatussen het neurale
netwerk binnenkomen.
Dus we moeten hier de invoerstatus invoeren.
En aangezien dat de staat is die we zojuist in het milieu hebben bereikt, nou, de invoerstatus is natuurlijk,
jij zegt, omdat de staat die we net bereikten op het moment dat we ons nu bevonden, een nieuwe
staat is.
Dus in de select action-functie en in het zetten van nieuwe staat.
Oke.
Dus met deze regel code spelen we gewoon de nieuwe actie nadat we de nieuwe status hebben bereikt.
OK, en nu we een actie hebben gespeeld, nou, we krijgen de beloning en daarom krijgen we feedback met de
beloning.
En daarom, als we meer dan 100 elementen in het geheugen hebben, is het tijd om te leren.
En daarom moeten we nu doen wat logischerwijs komt na het selecteren van een actie, namelijk het
leren van de A. L. moet leren of het de dingen op de juiste manier doet.
En nu, aangezien het net de actie heeft gespeeld, laten we de AI leren van zijn acties in
de laatste 100 evenementen.
Maar voordat we deze aangeleerde functie toepassen, moeten we deze veilige toestand maken om er zeker van te zijn dat we al
meer dan honderd gebeurtenissen hebben bereikt, want, weet je, we leren van de willekeurige symbolen
van het geheugen.
Weet je, we hebben een enorm geheugen van tienduizend elementen.
We nemen willekeurige steekproeven van het geheugen van honderd elementen.
En de A L. leert van de informatie in dit voorbeeld van honderd willekeurige overgangen.
Dus laten we deze als voorwaarde stellen om er zeker van te zijn dat het aantal elementen van het geheugen dat geheugen
dient en dan voorzichtig zijn met een wat lastiger zelf.
Die herinnering is het object van uw antwoordgeheugenglas.
Maar dan heeft de opnieuw afspelende geheugenklasse een attribuut dat geheugen is.
Dus in feite moeten we de herinnering zelf nemen, die herinnering, de eerste herinnering is het object van de replay-geheugenklasse
en de tweede herinnering is het attribuut hier zelf dat geheugen.
Dus als het aantal elementen in het geheugen goed is, willen we dat het groter is dan honderd dan het huidige.
En wat gebeurt er dan?
Nou, we kunnen leren, maar voordat we leren, moeten we deze willekeurige steekproef van honderd overgangen krijgen en
dit kunnen we krijgen met de voorbeeldfunctie.
En aangezien de voorbeeldfunctie terugkeert, zijn de verschillende batches van de staten naar de staat Tennessee plus één, de
acties, de tijd en de beloningen die een ..
Welnu, wat we nu moeten doen, is een aantal nieuwe variabelen maken die de batch van de staten zullen zijn die de
batch van de volgende staten leegmaken, de batch van de beloningen en de batch van de acties.
En we kunnen gewoon dezelfde namen geven als we hebben gegeven voor de argumenten hier en hier gebaseerd.
En deze variabelen zullen gelijk zijn aan wat de voorbeeldfunctie retourneert, omdat het precies deze batches van de volgende
staatsbeloningen en acties van de staat retourneert.
Dus wat we nu gewoon moeten doen, is eerst ons geheugenobject krijgen.
En dan gaan we van dit geheugenobject de voorbeeldmethode gebruiken, die als invoer zal worden gebruikt.
Welnu, het aantal overgangen dat we willen dat onze A. L. om daarvan te leren is honderd.
Daarom hebben we ervoor gezorgd dat het geheugen meer dan 100 overgangen had.
Dus het gaat leren van honderd overgangen van het geheugen.
Dus het leren zal veel beter zijn.
En laten we dit leren nu waarmaken.
We zullen.
En de leermethode is een methode van onze DeQuan-klas, nou, we moeten deze geleerde methode toepassen op de toekomstige
objecten die in de klas door de leraar zullen worden gemaakt.
En daarom moeten we onszelf nemen.
Dus zelf verwijst naar dat doel, de leraar in de klas en dan leren als deze geleerde
methode leermethode waarop we input.
Natuurlijk, deze jongens hier, de slechte staat, de volgende staat, de beste beloning en de beste actie.
Dit zijn dus onze batches die uit ons geheugen zijn samengesteld en we krijgen er 100 omdat we 100 overgangen hebben.
En van deze honderd overgangen nemen we honderd toestanden, honderd volgende datums, honderd beloningen
en honderd acties.
Dus laten we spelen dat hier en daar gaan we.
Nu zal het leren gebeuren, het zal gebeuren uit al deze willekeurige batches.
Perfect.
En wat we nu moeten doen, is de allerlaatste update nadat we een nieuwe fase hebben bereikt en in actie hebben gespeeld.
Welnu, we hebben de actie om te spelen, maar we hadden nog steeds niet de actie die zelf de laatste actievariabele
is.
Laten we er dus voor zorgen dat we dit niet vergeten.
Laten we het nu meteen doen.
We zullen de laatste sectie zelf bijwerken die laatste actie gelijk is aan en natuurlijk, actie de actie die we hier gewoon blijven
met de actie actie selecteren.
Oke.
Nu is de laatste actie bijgewerkt.
Toen Sanford, de nieuwe staat, bereikten we de nieuwe staat, maar we hebben de laatste datum nog niet bijgewerkt, want natuurlijk was de
laatste handeling vóór de staat om 20 uur.
Maar sindsdien hebben we de nieuwe staat Estie plus een keer T plus een bereikt.
Welnu, de laatste staat wordt hier deze nieuwe staat.
En daarom moeten we het ook bijwerken.
Zelf, die laatste staat is gelijk aan onze nieuwe staat.
Daar gaan we.
En nu moeten we updaten.
Nou, er is nog maar één ding over.
Dat is natuurlijk de beloning en de beloning is precies de beloning die we in werkelijkheid krijgen.
Dus dat zal het argument zijn van deze update-functie, die als we de verbinding met onze kaart maken,
de laatste beloning zal zijn.
Dat is de beloning die we krijgen nadat we de actie in deze bereikte nieuwe staat hebben gespeeld.
Dus als we wat gaan sturen, zal deze laatste beloning slecht zijn, min één.
Komen we verder van het doel af, dan krijgen we een iets betere beloning, min of punt.
Als we dichter bij het doel komen, krijgen we een enigszins goede beloning, een open.
En als we te dicht bij een rand van de kaart komen, nou, dat zal een slechte straf zijn.
We krijgen min één voor elk.
Dus dat is de laatste beloning die we krijgen.
In werkelijkheid is dat degene die echt op de kaart gebeurt.
En dit zal het argument zijn van de update-functie.
Dit laatste woord hier dat precies.
Deze.
En aangezien dit het argument is dat de update goed werkt, die overeenkomt met
deze beloning hier en dus met onszelf, wordt die laatste beloningsvariabele die aan het begin in deze init-functie is geïnitialiseerd, de
nieuwe beloning die we krijgen.
In werkelijkheid is dat beloning of dat is dezelfde minder beloning.
Oké, dus nu hebben we onze laatste beloning bijgewerkt, en nu we net onze laatste beloning hebben gekregen, kunnen we
nu het beloningsvenster krijgen.
Je herinnert je het beloningsvenster met hier geïnitialiseerd als een van de variabelen van het object van onze klasse.
Dat is het venster dat bijhoudt hoe deze training verloopt door het gemiddelde van de laatste
100 beloningen te nemen.
Dus, weet je, het zal zijn als een schuifvenster dat ons laat zien hoe het gemiddelde van de beloning evolueert.
En omdat we net onze laatste beloning hebben gekregen, kunnen we het beloningsvenster bijwerken.
En hoe updaten we het dan?
Nou, we moeten gewoon deze laatste beloning naar het raam brengen.
En daarom, wat ik ga doen, is mijn beloningsvenster zelf dat beloningsvenster nemen.
Hier is het.
En dan ga ik de append-functie gebruiken.
En binnen de open-functie moeten we het element invoeren dat we aan het beloningsvenster willen toevoegen.
En dat is natuurlijk de beloning.
Oké, perfect.
En aangezien dit beloningsvenster een vaste grootte zal hebben, weet je, het zal geen groeiend venster zijn, het zal een venster
zijn, een vaste grootte die met de tijd verschuift om ons de evolutie van de wereld te laten
zien.
En dus moeten we nu beslissen over de grootte van dit venster.
En het is gewoon het aantal middelen van de beloningen die we in dit venster zullen hebben.
En laten we bijvoorbeeld de laatste duizend middelen van de laatste honderd beloningen pakken.
En om er zeker van te zijn, gaan we toevoegen als dan Lenn, dan nemen we ons beloningsvenster en we voegen
het hier gewoon toe als het aantal elementen in het beloningsvenster groter is dan duizend.
Welnu, wat we willen doen is het eerste element van dit ene venster verwijderen.
En het eerste element van dit beloningsvenster heeft de index nul.
Oké, en nu zorgen we ervoor dat dit beloningsvenster nooit meer dan duizend elementen zal krijgen,
dat is duizend gemiddeld van de laatste honderd beloningen.
Dat is perfect.
Dit wordt een venster, een vaste grootte, zodat we kunnen zien of het gemiddelde van de beloning toeneemt en dus
of de training goed gaat en dus of de rechtbank doet wat we willen.
Perfect.
En nu moet er volgens jou nog een klein dingetje over.
Wat gaat het worden?
Onthoud dat deze update-functie niet alleen de verschillende elementen van de overgang in het beloningsvenster bijwerkt,
maar ook de actie retourneert die werd gespeeld bij het bereiken van deze nieuwe staat.
Daarom hebben we in de kaart actie gelijk aan hersenen dat een laatste beloningssignaal geeft en daarom moet
het iets teruggeven.
En er is iets dat het moet teruggeven, natuurlijk, de actie.
Dus het laatste wat we hier moeten doen, is gewoon actie retourneren.
De actie die werd weergegeven bij het bereiken van de nieuwe status.
En dat is onze update-functie is klaar.
Het gaat alle vereiste updates doen en het zal de actie retourneren wanneer de nieuwe status wordt bereikt.
Dat is perfect.
Dat was de laatste moeilijke actie voor dit alles A. L. Verwerken.
Nu is de rest kinderdingen.
We zullen gewoon een kernfunctie maken om de middelen van de beloningen in het beloningsvenster terug te geven.
Dan zullen we een opslagfunctie maken om het brein van de auto te redden wanneer je de applicatie wilt afsluiten en ernaar
terug wilt gaan.
En natuurlijk, aangezien je het brein van je auto wilt kunnen laden, ga je terug naar de
applicatie als je erop terugkomt.
Welnu, we zullen eindigen met het maken van een laadfunctie, die uw model laadt nadat u uw model met de
opslagfunctie hebt opgeslagen.
Dus nog drie functies te doen, maar het wordt eenvoudig.
En dan hebben we het meest opwindende deel van deze eerste module.
Dat is de demo.
We zullen zien of de advertentie werkt.
We zullen zien of de auto de doelen haalt en we zullen zien hoe we hem kunnen verbeteren.
En dan heb je uiteindelijk je eerste A gebouwd. L. Dus ik kan niet wachten om met de demo te beginnen.
Laten we eerst deze drie functies maken.
En tot die tijd, geniet van I.