WEBVTT

00:00.390 --> 00:02.710
Bună ziua și bine ați venit la condimentele Intertoto.

00:03.000 --> 00:07.800
În regulă, în această nouă secțiune de cod vom implementa experiența cu jocul.

00:07.920 --> 00:13.850
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

00:13.850 --> 00:16.700
juca exact așa cum ați văzut în lecturile de intuiție.

00:16.890 --> 00:21.540
Dar, mai întâi, să ne amintim rapid ce este reluarea experienței.

00:21.540 --> 00:27.750
Deci știi că toate aceste informații inteligente se bazează pe procesele decizionale Markov, iar procesele

00:27.750 --> 00:31.840
decizionale Markov constau în căutarea unei serii de evenimente.

00:32.010 --> 00:38.770
Deci, evenimentele știți, de exemplu, mergând de la un stat la celălalt stat și unul tip.

00:39.060 --> 00:44.410
Dar dacă evenimentele au fost așa de bine de a doua zi, este foarte corelată cu starea actuală.

00:44.550 --> 00:46.820
Ei bine, rețeaua nu se va descurca foarte bine.

00:46.980 --> 00:52.710
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

00:52.710 --> 00:54.860
seria noastră de timp cu un singur timestep.

00:55.020 --> 01:00.300
Nu a învățat nimic, pentru că un moment nu era suficient pentru ca un model să

01:00.300 --> 01:03.070
învețe să înțeleagă corelațiile pe termen lung.

01:03.090 --> 01:07.060
Deci, este același lucru și de aceea trebuie să implementăm reluarea experienței.

01:07.230 --> 01:08.230
Deci, cum funcționează.

01:08.340 --> 01:13.960
Ei bine, este foarte simplu în loc să luăm în considerare doar starea actuală care este doar o stare la

01:13.960 --> 01:14.640
momentul t.

01:14.680 --> 01:16.830
Vom analiza mai mult în trecut.

01:16.830 --> 01:22.560
Deci, exact ca pentru litiu și, prin urmare, seria noastră de evenimente nu va fi la fel de.

01:22.560 --> 01:27.450
Și presupun că una va fi, de exemplu, cele o sută de state din trecut.

01:27.450 --> 01:33.770
Deci T-minus o sută optzeci minus 99 până la minus 1 și apoi S-T.

01:34.020 --> 01:40.830
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

01:40.830 --> 01:47.040
lung, spre deosebire de o memorie pe termen scurt sau chiar ar trebui să spun o memorie instantanee și acest lucru

01:47.040 --> 01:49.950
face ca întregul proces să funcționeze mult mai bine.

01:50.310 --> 01:57.690
Și apoi, odată ce vom crea această amintire a ultimelor 100 de evenimente, vom simți că vor fi necesare câteva

01:57.690 --> 02:02.300
loturi aleatoare ale acestor tranziții pentru a face următoarea noastră actualizare.

02:02.310 --> 02:09.270
Aceasta este următoarea mișcare prin selectarea secțiunii următoare și, prin urmare, în această clasă de memorie reluată pe care

02:09.270 --> 02:13.450
o implementăm pentru a relua experiența, vom face trei funcții.

02:13.530 --> 02:17.490
În primul rând, funcția ca de obicei este cazul pentru orice clasă.

02:17.520 --> 02:23.400
Și astfel în această funcție vom defini variabilele care vor fi atașate la instanțele viitoare ale clasei

02:23.400 --> 02:27.210
care reprezintă obiectele viitoare care vor fi create din această clasă.

02:27.540 --> 02:32.790
Și așa foarte simplu aceste variabile vor fi memoria celor 100 de tranziții la 100 de evenimente.

02:32.970 --> 02:38.790
Și capacitatea care este numărul 100 veți fi binevenită pentru a încerca o memorie mai lungă prin

02:38.790 --> 02:39.550
creșterea capacității.

02:39.780 --> 02:46.170
Deci, aceasta este prima funcție în care funcționează și apoi vom face două alte funcții o funcție de împingere pentru

02:46.500 --> 02:51.050
a vă asigura că memoria nu conține niciodată mai mult de 100 de tranziții.

02:51.180 --> 02:57.150
Și pentru aceasta vom folosi capacitatea doar făcând o singură condiție simplă și apoi vom face în

02:57.360 --> 03:03.300
cele din urmă funcția simplă și care va fi, desigur, să eșantionăm câteva tranziții în această amintire

03:03.390 --> 03:05.060
a ultimelor 100 tranziții.

03:05.520 --> 03:08.440
Deci, haideți să începem prin introducerea clasei.

03:08.520 --> 03:17.460
Deci, după cum știți, începem cu clasa și apoi le dăm clasei pe care o numim reluarea memoriei și

03:17.460 --> 03:25.500
apoi în paranteză vom introduce obiect apoi Cullin și apoi vom merge începem cu prima funcție.

03:25.560 --> 03:26.860
Sfârșitul este funcția.

03:27.150 --> 03:30.730
Deci este exact același lucru ca înainte de a începe cu moartea.

03:30.870 --> 03:36.750
Apoi două subliniază în ea două subliniază din nou și apoi variabilele.

03:36.750 --> 03:42.750
Așadar, este evident că eu, care este variabila atașată la viitoarele instanțe ale clasei obiectelor

03:42.750 --> 03:48.810
viitoare, atunci vom avea o altă variabilă pentru ca tu să poți încerca o altă experiență

03:48.810 --> 03:52.950
cu unele amintiri și asta se va întâmpla fie capacitatea.

03:52.950 --> 03:58.020
Deci, această capacitate va fi pur și simplu numărul o sută pentru că vom face experiență să

03:58.020 --> 04:00.960
ne jucăm cu cele o sută mai puține tranziții.

04:00.960 --> 04:03.910
Bine și apoi Collon Și aici mergem.

04:03.930 --> 04:10.430
Să mergem în interiorul funcției și să definim variabilele obiectului de memorie replay.

04:10.440 --> 04:19.400
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

04:19.670 --> 04:24.690
de tranziții pe care dorim să le avem în memoria evenimentelor.

04:24.830 --> 04:30.980
Și aceasta va fi egală cu argumentele care vor fi introduse când se creează un obiect al clasei

04:31.000 --> 04:34.530
de memorie replay și, prin urmare, aceasta este capacitatea.

04:34.550 --> 04:36.480
Acesta este argumentul funcției init.

04:36.660 --> 04:38.180
Deci capacitatea.

04:38.180 --> 04:44.960
Deci, din nou să nu fi confundat de sine că capacitatea este numele variabilei care este atașată la

04:45.470 --> 04:52.670
obiect și capacitate aici este argumentul care va intra atunci când se creează un obiect al clasei de memorie replay.

04:52.810 --> 04:53.620
In regula.

04:53.830 --> 04:55.880
Și apoi avem un al doilea voievod.

04:56.170 --> 04:57.890
Aceasta este, desigur, amintirea.

04:58.000 --> 05:01.620
Deci, auto-învățat Nemec.

05:01.760 --> 05:02.650
In regula.

05:02.800 --> 05:05.730
Și ce va fi acest voievod de memorie.

05:05.990 --> 05:13.950
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.

05:14.100 --> 05:20.300
Știți o listă care va conține ultimele 100 de evenimente din ultimele 100 de tranziții și va inițializa

05:20.300 --> 05:20.850
lista.

05:20.870 --> 05:24.620
Nu este nimic mai simplu decât să adăugăm niște paranteze de genul ăsta.

05:24.740 --> 05:26.040
Și aici mergem.

05:26.060 --> 05:31.490
Memoria noastră este inițializată astfel încât, desigur, la începutul experimentului sau, mai exact, la începutul

05:31.490 --> 05:36.430
explorării, memoria va fi o listă goală și apoi vom pune tranzițiile.

05:36.500 --> 05:38.350
De fiecare dată când ajungem la o stare viitoare.

05:38.600 --> 05:43.370
Și vorbind despre asta este exact ceea ce vom face cu următoarea funcție pe care o vom

05:43.520 --> 05:44.720
numi funcția de împingere.

05:44.790 --> 05:51.380
Vom face această funcție push pentru a planifica evenimentele din această listă de memorie și apoi vom folosi capacitatea de a

05:51.620 --> 05:57.170
vă asigura că această listă de memorie conține întotdeauna 100 de evenimente și niciodată mai mult.

05:57.500 --> 05:59.660
Bine, deci să facem asta și în următorul.

05:59.690 --> 06:01.250
Și până atunci.
