Bună ziua și bine ați venit la condimentele Intertoto.
În regulă, în această nouă secțiune de cod vom implementa experiența cu jocul.
Așa că vom face o nouă clasă pe care o vom numi memorie replay și care va pune în aplicare experiența de a
juca exact așa cum ați văzut în lecturile de intuiție.
Dar, mai întâi, să ne amintim rapid ce este reluarea experienței.
Deci știi că toate aceste informații inteligente se bazează pe procesele decizionale Markov, iar procesele
decizionale Markov constau în căutarea unei serii de evenimente.
Deci, evenimentele știți, de exemplu, mergând de la un stat la celălalt stat și unul tip.
Dar dacă evenimentele au fost așa de bine de a doua zi, este foarte corelată cu starea actuală.
Ei bine, rețeaua nu se va descurca foarte bine.
Deci, pentru cei care vin de la cursul profund de învățare exact același lucru ca și în cazul în care am învățat
seria noastră de timp cu un singur timestep.
Nu a învățat nimic, pentru că un moment nu era suficient pentru ca un model să
învețe să înțeleagă corelațiile pe termen lung.
Deci, este același lucru și de aceea trebuie să implementăm reluarea experienței.
Deci, cum funcționează.
Ei bine, este foarte simplu în loc să luăm în considerare doar starea actuală care este doar o stare la
momentul t.
Vom analiza mai mult în trecut.
Deci, exact ca pentru litiu și, prin urmare, seria noastră de evenimente nu va fi la fel de.
Și presupun că una va fi, de exemplu, cele o sută de state din trecut.
Deci T-minus o sută optzeci minus 99 până la minus 1 și apoi S-T.
Deci, cu alte cuvinte, am plasat 100 de tranziții mai puțin în ceea ce numim memoria și de aceea avem o memorie pe termen
lung, spre deosebire de o memorie pe termen scurt sau chiar ar trebui să spun o memorie instantanee și acest lucru
face ca întregul proces să funcționeze mult mai bine.
Și apoi, odată ce vom crea această amintire a ultimelor 100 de evenimente, vom simți că vor fi necesare câteva
loturi aleatoare ale acestor tranziții pentru a face următoarea noastră actualizare.
Aceasta este următoarea mișcare prin selectarea secțiunii următoare și, prin urmare, în această clasă de memorie reluată pe care
o implementăm pentru a relua experiența, vom face trei funcții.
În primul rând, funcția ca de obicei este cazul pentru orice clasă.
Și astfel în această funcție vom defini variabilele care vor fi atașate la instanțele viitoare ale clasei
care reprezintă obiectele viitoare care vor fi create din această clasă.
Și așa foarte simplu aceste variabile vor fi memoria celor 100 de tranziții la 100 de evenimente.
Și capacitatea care este numărul 100 veți fi binevenită pentru a încerca o memorie mai lungă prin
creșterea capacității.
Deci, aceasta este prima funcție în care funcționează și apoi vom face două alte funcții o funcție de împingere pentru
a vă asigura că memoria nu conține niciodată mai mult de 100 de tranziții.
Și pentru aceasta vom folosi capacitatea doar făcând o singură condiție simplă și apoi vom face în
cele din urmă funcția simplă și care va fi, desigur, să eșantionăm câteva tranziții în această amintire
a ultimelor 100 tranziții.
Deci, haideți să începem prin introducerea clasei.
Deci, după cum știți, începem cu clasa și apoi le dăm clasei pe care o numim reluarea memoriei și
apoi în paranteză vom introduce obiect apoi Cullin și apoi vom merge începem cu prima funcție.
Sfârșitul este funcția.
Deci este exact același lucru ca înainte de a începe cu moartea.
Apoi două subliniază în ea două subliniază din nou și apoi variabilele.
Așadar, este evident că eu, care este variabila atașată la viitoarele instanțe ale clasei obiectelor
viitoare, atunci vom avea o altă variabilă pentru ca tu să poți încerca o altă experiență
cu unele amintiri și asta se va întâmpla fie capacitatea.
Deci, această capacitate va fi pur și simplu numărul o sută pentru că vom face experiență să
ne jucăm cu cele o sută mai puține tranziții.
Bine și apoi Collon Și aici mergem.
Să mergem în interiorul funcției și să definim variabilele obiectului de memorie replay.
Deci, primul va fi capacitatea de auto-predare și, după cum probabil ați înțeles, aceasta va fi capacitatea care este numărul maxim
de tranziții pe care dorim să le avem în memoria evenimentelor.
Și aceasta va fi egală cu argumentele care vor fi introduse când se creează un obiect al clasei
de memorie replay și, prin urmare, aceasta este capacitatea.
Acesta este argumentul funcției init.
Deci capacitatea.
Deci, din nou să nu fi confundat de sine că capacitatea este numele variabilei care este atașată la
obiect și capacitate aici este argumentul care va intra atunci când se creează un obiect al clasei de memorie replay.
In regula.
Și apoi avem un al doilea voievod.
Aceasta este, desigur, amintirea.
Deci, auto-învățat Nemec.
In regula.
Și ce va fi acest voievod de memorie.
Ei bine, această memorie ar trebui să conțină ultimele 100 de evenimente și, prin urmare, acest lucru ar trebui să fie un simplu test.
Știți o listă care va conține ultimele 100 de evenimente din ultimele 100 de tranziții și va inițializa
lista.
Nu este nimic mai simplu decât să adăugăm niște paranteze de genul ăsta.
Și aici mergem.
Memoria noastră este inițializată astfel încât, desigur, la începutul experimentului sau, mai exact, la începutul
explorării, memoria va fi o listă goală și apoi vom pune tranzițiile.
De fiecare dată când ajungem la o stare viitoare.
Și vorbind despre asta este exact ceea ce vom face cu următoarea funcție pe care o vom
numi funcția de împingere.
Vom face această funcție push pentru a planifica evenimentele din această listă de memorie și apoi vom folosi capacitatea de a
vă asigura că această listă de memorie conține întotdeauna 100 de evenimente și niciodată mai mult.
Bine, deci să facem asta și în următorul.
Și până atunci.