Hallo en welkom bij deze python bij Turrill, dus laten we dit doen, laten we deze for-lus maken, beginnend van rechts
en naar links gaand.
En om dit te doen, gaan we er vier toevoegen.
Dus deze keer wordt de iteratorvariabele onze stap omdat we van de laatste stap naar
de eerste stap van de reeks overgangen gaan, enzovoort.
En dan is de truc om van rechts naar links te gaan, vier stappen achteruit te gebruiken.
Omgekeerd en nu hoeven we alleen maar een reeks in deze reeks te plaatsen, dit wordt natuurlijk onze reeks, dus
voer onze reeks in.
Maar zoals je in de krant kunt zien, gaan we van T min één naar T start, dus we gaan niet vanaf de laatste stap.
Dat is de eindtoestand.
Maar de toestand daarvoor, dat is T min één, maar twee T begint.
Dat is de eerste stap.
En dus hier om te gaan van niet de laatste staat, maar de staat ervoor moeten we tussen haakjes toevoegen, kolom
min één.
Ik weet zeker dat voor degenen onder jullie die de cursus machine learning en deep
learning hebben gevolgd, weet je, deze trick-kolom minus één betekent dat je naar het element gaat vóór het laatste element, maar niet naar
het laatste element.
En daarom krijgen we de volgorde die we willen.
Dat wil zeggen dat we van het element voor het laatste element naar het eerste element gaan, en dat we dingen doen om het
om te keren, om van rechts naar links te gaan.
Oke.
Dus we zijn klaar om de volledige lus in te gaan.
En dus binnen is voor lus.
Waar gaan we doen?
Nou, we gaan precies doen zoals in de krant.
We gaan de cumulatieve beloning bijwerken door deze te vermenigvuldigen met Jenna en toe te voegen, willen we een verandering in de huidige
stap die in de stap van de for-lus zit?
Oke.
Dus laten we dit doen, teruggaand naar Python.
En dus willen we onze cumulatieve beloning eerst op de volgende manier bijwerken.
Het vermenigvuldigen.
Door GEMAP, daar gaan we, we vermenigvuldigden samen, en dan willen we de beloning van toevoegen.
De stap die we op deze manier kunnen openen met de speciale structuur, onthoud, die beloning is een attribuut van
het stapobject.
En dus voegen we hier natuurlijk een pluspunt toe.
Oke.
Dus cumulatieve beloning is gelijk aan werken we deze stap waarin we ons nu bevinden, de lus plus soms de vorige cumulatieve
beloning voordat het een is.
Perfect.
Dus nu denk ik dat we goed zitten.
We volgen het algoritme grondig.
En nu tijd voor de volgende stappen.
Nou, nu wordt het vrij eenvoudig.
We gaan terug naar de eerste volledige lus omdat deze volledige lus alleen bedoeld is om de cumulatieve beloningen te berekenen, je
weet wel, van rechts naar links gaand door op deze manier bij te werken, volgens het algoritme.
En nu, zoals je je herinnert, is het doel van dit alles om onze input en onze doelen klaar te krijgen, zodat
we het kwadratische verschil tussen de twee voor de training kunnen minimaliseren.
En dus is het enige dat we nu nog moeten doen, deze inputs en doelen gereed te maken.
Laten we dit dus eerst doen.
Wat we moeten doen, is de eerste datum van de serie toevoegen aan onze invoerlijst.
Tot nu toe bevindt deze invoerstatus zich in deze invoervariabele, maar dat was alleen om de uitvoer te berekenen.
Dus we gaan deze invoerstatus van de eerste stap afzonderlijk ophalen, want dat is precies wat we
in onze invoerlijst moeten uitgeven.
Dus laten we dit apart nemen.
Daarom gaan we het staat noemen.
En dus precies hetzelfde als hier.
We kunnen het op deze manier krijgen door de eerste index van de reeks te nemen, die de eerste overgang bevat, en dan die staat
toe te voegen om de staat van deze eerste overgang te krijgen.
Dus dat is de status die we nodig hebben en dan zeggen we dat we bij de eerste overgang afzonderlijk het doel gaan krijgen
dat aan deze invoerstatus is gekoppeld.
En dus introduceer ik hier een nieuw vernietigbaar doel, dat gelijk zal zijn aan de Q-waarde van de eerste stap.
En aangezien de Q-waarde wordt geretourneerd door het neurale netwerk en zijn inhoud en uitvoer, en aangezien uitvoer de
uitvoer is die is gekoppeld aan deze invoer, die het eerste element van de overgang bevat, kunnen
we deze waarde van de eerste toestand krijgen door gewoon hier de output nemen en de index nul nemen.
En dan voegen we DOT-gegevens toe die ons eenvoudig de waarde van de invoerstatus van de eerste overgang geven, en dat
is precies de doelwaarde.
Dus daarom nemen we het.
Vervolgens gaan we deze doelvariabele bijwerken, maar alleen voor de actie die is geselecteerd in de eerste stap van de
reeks en om toegang te krijgen tot deze eerste stap van de reeks.
Welnu, we moeten de eerste reeks nul nemen, want dit is precies de eerste stap in de reeks drie nul
en om de actie te beoordelen die overeenkomt met deze eerste stap van de reeks.
Nou, we moeten hier toevoegen.
Die actie, nogmaals, dat is deze attribuutstructuur die we gebruiken, weet je, actie is een attribuut van de
eerste stap van de reeks.
Dat is de eerste overgang van de reeks, omdat elke overgang van de reeks
de volgende structuur heeft, staat actie beloning en actie hier gedaan.
Deze attribuutactie hier betekent dat we gewoon de actie van deze eerste date krijgen.
En dus is het doel voor die specifieke actie van de eerste stap precies wat moet worden bijgewerkt door het
cumulatieve woord.
Dus eigenlijk gaan we hier gewoon naar rechts dat het doelwit dat is gekoppeld aan de actie die werd
gespeeld in de eerste stap van de serie deze cumulatieve beloning is die we zojuist hebben berekend.
Oke.
En nu zijn we eindelijk klaar om onze invoer bij te werken door deze eerste invoer toe te voegen.
Blijf hier.
En dit eerste doelwit hier voor de eerste stap.
We hoeven alleen de eerste stap van de serie bij te werken, want, weet je, we trainen het oog op 10 stappen en
daarom is de invoer de eerste stap van de 10 stappen.
En ook krijgen we het doel in deze eerste stap.
Maar dan hoeven we geen input of doelen te krijgen in de volgende stappen van de 10 stappen, omdat
het leren in principe 10 stappen daarna plaatsvindt.
Dus daarom krijgen we op dit moment alleen de staat en het doelwit van de eerste stap van de serie.
Het is dus belangrijk om dat te begrijpen.
En daarom, als we dat begrijpen, begrijpen we nu dat we ze moeten invoeren in onze lijst met inputs
en onze lijst met doelen.
Laten we dit dus eerst doen.
Laten we de staten aan onze invoer toevoegen.
Dus we nemen onze invoerlijst en we gebruiken de append-functie om de status toe te voegen, wat onthouden is de invoerstatus van de
eerste stap van de reeks.
En dan zullen we je vertellen dat de eerste stap naar onze lijst met doelen en om dit te doen, we
onze lijst met doelen nemen en zeggen dat we de app-functie gebruiken om dit eerste doel toe te voegen.
We gaan bijna klaar.
En nu moeten we de laatste dingen teruggeven, wat natuurlijk is wat we nodig hebben.
Dat is wat we aan het begin van de tutorial zeiden, de invoer en de doelen die nu zijn bijgewerkt.
Dus we gaan hier return toevoegen en we gaan eerst onze input krijgen.
Maar daar gaat het dan om.
We moeten ze eerst converteren naar een getallenreeks en vervolgens een typeconversie uitvoeren om er zeker
van te zijn dat we een enkel type hebben met deze typegelijken en dat 30 naar hetzelfde drijft.
En die zetten we dan om in een fakkeltensor want we werken natuurlijk met toorts.
Dat is helemaal verplicht.
En dus gebruik ik de zaklamp zonder functie weer.
En dat geeft ons onze input nu perfect voor hetzelfde voor het doel.
Nu gaan we deze truc gebruiken, die sneller is.
We gaan samen de doelen aanvallen.
En om dit te doen, moeten we eerst onze fakkelbibliotheek nemen, omdat we de stapelfunctie per zaklamp gaan
gebruiken om de doelen te stapelen.
Oke.
En dus retourneert deze regel code in feite de invoer en de doelen die zojuist zijn opgeblazen door
deze geschiktheids-traceerbron, het algoritme, of we kunnen het noemen en stapsgewijs leren.
En dus gefeliciteerd, we zijn klaar om de laatste training te doen omdat de training in feite bestaat
uit het minimaliseren van de kwadratische verschillen tussen de voorspellingen van onze inputs en de doelen.
Dus laten we slim zijn.
Het zal slim worden in de volgende zwoegen.
En dus tot die tijd, geniet van I.