WEBVTT

00:00.630 --> 00:03.170
Bună ziua și bun venit la acest tutorial Python.

00:03.170 --> 00:03.500
In regula.

00:03.510 --> 00:09.120
Acum, în următoarea funcție despre care ne referim la implementare Vom antrena rețeaua neuronală profundă care se

00:09.120 --> 00:11.470
află în interiorul inteligenței noastre artificiale.

00:11.490 --> 00:16.980
Deci, practic, vom face întregul proces de propagare și apoi de propagare înapoi.

00:16.980 --> 00:19.140
Așa că vom obține rezultatele noastre.

00:19.200 --> 00:20.850
Vom obtine tinta.

00:20.890 --> 00:26.020
Vom compara ieșirea țintă pentru a calcula ultima eroare, apoi vom răspunde la propagarea

00:26.130 --> 00:28.410
acestei ultime erori în noua rețea.

00:28.680 --> 00:33.960
Și folosind descendența de gradient sugerată, care va trebui să aștepte în funcție de cât de mult au contribuit la

00:33.960 --> 00:34.780
ultima eroare.

00:35.190 --> 00:39.030
Deci, să facem toate astea pentru cei dintre voi care veneau din Corpul Marin.

00:39.030 --> 00:43.850
Aceasta va fi o chestie bună, dar pentru ceilalți nu vă faceți griji că o voi extinde din nou.

00:44.160 --> 00:51.630
Așa că vom numi această nouă funcție de învățare și învățare va lua mai multe argumente.

00:51.630 --> 00:57.350
Primul eu, desigur, care se va referi la obiectul gradului în clasă.

00:57.510 --> 01:08.770
Apoi ne vom lua statul nostru batched pentru starea actuală, atunci statul nostru de șarjă următor, apoi

01:08.860 --> 01:15.570
răsplata noastră și în cele din urmă acțiunea lui Arbat.

01:15.590 --> 01:16.960
Deci, de ce luăm asta?

01:16.970 --> 01:19.770
Probabil ați recunoscut ce este această serie.

01:19.880 --> 01:26.350
Ei bine, aceasta este, bineînțeles, o tranziție o tranziție a procesului decizional de piață care se află la bază.

01:26.360 --> 01:27.440
Ai invatat.

01:27.500 --> 01:30.420
Și de ce îi luăm pe toți în niște loturi.

01:30.560 --> 01:36.200
Ei bine, asta pentru că știi că nu ne gândim la tranzițiile printr-o serie de top sau

01:36.200 --> 01:39.630
actuală stare de stat și de actualizare a acțiunii curente.

01:39.650 --> 01:44.050
Am creat câteva loturi simple datorită funcției simple.

01:44.210 --> 01:48.430
Și așa că acum tranzițiile noastre sunt sub forma primului lot pentru această stare.

01:48.500 --> 01:53.520
Un al doilea lot pentru următoarea dată este un lot pentru recompensă și un lot pentru acțiune.

01:53.510 --> 01:59.090
Asta este forma tranziției noastre acum și sunt bine aliniate în ceea ce privește timpul

01:59.090 --> 02:04.150
datorită acestei concatenări pe care am făcut-o aici cu privire la prima dimensiune.

02:04.160 --> 02:10.460
Deci, punctul este acum avem aceste tranziție de loturi un lot pentru fiecare stat de zilele următoare ne uităm

02:10.450 --> 02:15.400
la acțiune și facem toate acestea, deoarece vom folosi acest truc de replay experiență.

02:15.530 --> 02:18.580
Deci asta este rețeaua noastră neuronală profundă poate învăța ceva.

02:18.590 --> 02:24.190
Amintiți-vă dacă ați avut doar o tranziție de la sine ceea ce ar fi o învățare instantanee.

02:24.260 --> 02:28.930
Sau dacă vreți să învățați o memorie foarte scurtă și, prin urmare, mola nu ar învăța nimic.

02:29.180 --> 02:35.690
Deci, trebuie să luăm aceste loturi din memorie care devin tranzițiile noastre și apoi vom obține în cele din urmă diferitele

02:35.690 --> 02:40.940
rezultate pentru fiecare dintre statele statelor de intrare și vom face acest lucru pentru statele și

02:41.160 --> 02:45.620
pentru următoarele state, deoarece vom avea nevoie de ambele pentru a calcula pierderea.

02:45.680 --> 02:51.860
În curând voi aminti ecuația de echilibru care se află în centrul algoritmului de învățare.

02:51.860 --> 02:57.120
Acum, hai să intrăm în funcție și să lăsăm mai întâi ieșirile de la starea casetei.

02:57.170 --> 03:04.740
Așa că voi numi primele rezultate viabile și apoi vom spune, bineînțeles, că ne-am vorbit despre auto-vorbire și

03:04.740 --> 03:07.670
nu despre tot ce am pornit.

03:07.740 --> 03:14.160
Nu, pentru că vrem să obținem ieșirile noastre de model ale stărilor de intrare ale statului.

03:14.510 --> 03:19.110
Și deoarece modelul nostru așteaptă de fapt un lot de stări de intrare.

03:19.310 --> 03:25.330
Ei bine, putem să introducem în totalitate acea stare chiar acum pentru a le introduce pe toți.

03:25.340 --> 03:31.550
Exact așa am inițializat statele care intră în rețea cu răspunsul torturii cu această

03:31.550 --> 03:35.080
dimensiune vagă pentru lotul care este perfect.

03:35.180 --> 03:37.720
Acum obținem rezultatele tuturor.

03:37.880 --> 03:45.680
Dar atunci există un alt truc tehnic dacă nu vindem doar acel model de stat și vom obține rezultate ale tuturor acțiunilor posibile pe

03:45.860 --> 03:50.980
care le știi 0 1 și 2, dar asta nu este ceea ce ne dorim.

03:50.990 --> 03:54.580
Suntem interesați doar de acțiunile care au fost alese.

03:54.740 --> 04:01.190
Acțiunile pe care rețeaua le-a decis să joace în fiecare moment și astfel pentru

04:01.190 --> 04:09.320
a le face pe aceștia interesați de acțiunile jucate, trebuie să folosim această funcție de adunare în care introducem

04:09.320 --> 04:16.840
una pentru că dorim doar acțiunea care a fost aleasă și apoi adăugăm acea acțiune cu aceasta.

04:16.880 --> 04:23.600
Și în acea secțiune vom aduna de fiecare dată cea mai bună acțiune pentru a juca pentru fiecare dintre stările de

04:23.600 --> 04:24.560
intrare ale statului.

04:24.830 --> 04:30.690
Nu vrem ca acțiunea care este jucată să fie aleasă să fie aleasă și să primim acest lucru cu această

04:30.840 --> 04:31.770
acțiune de adunare.

04:32.130 --> 04:33.390
Dar fii atent.

04:33.450 --> 04:40.190
Statul are aici aceste diamante fals și unsoare în lot și această secțiune nu-l are.

04:40.190 --> 04:46.190
Înapoi are pentru că am folosit-o pe Unsworth aici, dar nu am folosit nici un strop de

04:46.430 --> 04:52.880
brațe pentru acțiuni, așa că trebuie să-l adăugăm aici pentru ca acțiunea Bache să aibă exact aceeași dimensiune ca statul.

04:53.150 --> 05:02.710
Așa că vom adăuga un punct și vom stoarce aici chiar aici și de fapt nu este zero, ci unul pentru că

05:03.200 --> 05:09.120
răspunsul zero la Faith nu este statul și unul va corespunde examinării acțiunilor.

05:09.370 --> 05:16.540
Și în sfârșit, ultimul lucru pe care trebuie să-l facem aici este că trebuie să ucidem acest lot fals cu o strângere.

05:16.600 --> 05:18.010
De ce trebuie să facem asta?

05:18.130 --> 05:20.130
Pentru că acum suntem în afara rețelei neuronale.

05:20.200 --> 05:22.820
Avem rezultate, dar nu le dăm înapoi.

05:22.900 --> 05:24.080
Le vrem.

05:24.190 --> 05:26.260
Iar răspunsul simplu este un vector simplu.

05:26.260 --> 05:31.540
Un vector de ieșire a loturilor doar atunci când lucrăm în rețeaua neurală,

05:31.540 --> 05:34.880
deoarece rețeaua neuronală așteaptă formatul senzorilor într-un lot.

05:34.990 --> 05:40.510
Dar acum avem rezultatele noastre și în următoarea ecuație baluns de învățare profundă nu vom avea nevoie de

05:40.510 --> 05:41.530
ei într-un lot.

05:41.530 --> 05:48.130
Deci o ucid pe aici și ucigând dimensiunea credinței pentru a reveni la forma simplă a rezultatelor noastre.

05:48.160 --> 05:54.530
Deci, eu doar adaug aici Dot și apoi stoarce și apoi, deoarece vreau să omoare laminarea falsă care corespunde partea

05:54.540 --> 05:56.120
din spate a acțiunii.

05:56.250 --> 06:01.430
Ei bine, din moment ce motorul cu spațiu temporal are indexul 1, adaug unul aici.

06:01.560 --> 06:02.050
In regula.

06:02.100 --> 06:05.480
Și acum ne ducem la ieșire.

06:05.490 --> 06:05.910
O.K.

06:06.000 --> 06:11.100
Avem un mic avertisment despre ce este atribuită această ieșire variabilă locală, dar niciodată folosită.

06:11.190 --> 06:11.860
Asta e ok.

06:11.880 --> 06:13.510
O vom folosi foarte repede.

06:13.920 --> 06:15.540
Așa sunt rezultatele noastre.

06:15.600 --> 06:23.660
Și acum vrem să obținem următorii noștri Așa că acum s-ar putea să vă gândiți de ce avem nevoie de următoarele rezultate.

06:23.840 --> 06:29.160
Pentru a înțelege acest lucru trebuie să ne întoarcem la algoritmul de învățare profundă, care este chiar aici,

06:29.180 --> 06:31.670
care face parte din manualul de lectură.

06:31.850 --> 06:33.820
Deci, acesta este întregul proces de difuzie.

06:33.860 --> 06:39.180
La început inițializam toate valorile cheie și apoi la fiecare moment t.

06:39.440 --> 06:44.770
Ei bine, acolo vom merge selectam actiunea cu Max, asta a fost ceea ce am facut cu functia selectare de actiune.

06:44.870 --> 06:51.050
Apoi am deschis tranziția și apoi, după cum puteți vedea, obținem predicția că obținem ținta și putem

06:51.050 --> 06:52.120
fi ultima.

06:52.190 --> 06:54.330
Deci, de ce avem nevoie de următoarea ieșire, de asemenea.

06:54.350 --> 07:01.640
Asta pentru că din țintă țintă este egală cu Ghana ori de ieșire următoare, plus dorim și vom calcula obiective

07:01.640 --> 07:06.060
imediat după care, deoarece avem nevoie de următoarea ieșire a țintă.

07:06.200 --> 07:07.790
Să calculam mai întâi asta.

07:07.820 --> 07:14.060
Deci, din nou, pentru a obține următoarea actualizare foarte simplă, următoarea ieșire va fi rezultatul

07:14.060 --> 07:19.180
rețelei noastre neuronale, atunci când starea următoare va fi introdusă ca intrare.

07:19.190 --> 07:27.110
Deci, pur și simplu, luăm modelul nostru, care este rețeaua noastră neuronală și de data aceasta, intrarea rețelei

07:27.110 --> 07:33.020
neuronale va fi următoarea stare în varianta care a dat următoarea dată.

07:33.200 --> 07:41.290
Dar acum amintiți-vă dacă ne întoarcem la algoritmul timpuriu. Ei bine, puteți vedea că rezultatul următor este maximul valorilor

07:41.290 --> 07:45.530
q pentru următoarea stare în raport cu toate acțiunile.

07:45.730 --> 07:51.790
Deci, acum, pentru a obține următoarea ieșire, trebuie să obținem maximum de aceste valori q și, prin urmare, o să

07:51.790 --> 07:52.720
fac aici.

07:52.840 --> 08:00.550
Detașați că știți să desprindeți toate ieșirile modelului deoarece avem mai multe stări în acest lot de state următor,

08:00.550 --> 08:06.730
care este lotul tuturor stărilor următoare în toate tranzițiile luate din eșantionul aleator al

08:06.730 --> 08:07.620
memoriei noastre.

08:07.840 --> 08:14.530
Deci le desprind pe toate folosind funcția detach și apoi iau maximum de toate aceste două

08:14.530 --> 08:15.250
valori.

08:15.340 --> 08:20.920
Și din moment ce luăm cât mai mult aceste două valori în ceea ce privește acțiunea Ei bine trebuie să

08:20.920 --> 08:23.080
precizăm că este în legătură cu acțiunea.

08:23.080 --> 08:26.310
Și deoarece acțiunea este reprezentată de indexul unu.

08:26.530 --> 08:32.770
Din nou, trebuie să punem următoarea și apoi trebuie să precizăm că luăm valorile cue

08:33.290 --> 08:41.140
ca T plus 1 care este următoarea etapă și următoarea stare este reprezentată de 0 deoarece indicele zero

08:41.380 --> 08:47.370
corespunde stărilor și prin urmare, aici trebuie să adăugăm paranteze cu indexul 0.

08:47.770 --> 08:54.400
În acest fel, vom obține valorile cheie ale următoarelor stări reprezentate de următorul zero

08:54.400 --> 09:01.490
în funcție de toate acțiunile care sunt reprezentate de indexul unu și acum perfecte obținem următoarele rezultate.

09:01.570 --> 09:02.860
Acestea sunt un set nou.

09:02.870 --> 09:04.320
Atunci am avut avertismentul.

09:04.320 --> 09:05.050
Dar este bine.

09:05.080 --> 09:07.950
Vom folosi acum pentru a calcula ținta.

09:08.470 --> 09:12.510
Și vorbind despre ținta care este următorul pas al acestei funcții cunoscute.

09:12.520 --> 09:13.210
Așa că mergem.

09:13.220 --> 09:15.460
Ținta este egală.

09:15.670 --> 09:18.220
Acum, să ne întoarcem la manualul AI AI.

09:18.400 --> 09:24.800
Obiectivul este egal cu cuvântul plus gama ori, urmatoarea iesire este maximul valorilor cubului de a

09:24.800 --> 09:25.710
doua zi.

09:25.930 --> 09:29.290
Conform acțiunilor pe care le putem calcula.

09:29.340 --> 09:35.590
Deci este egal cu gama și cu sinele pe care Gamma a inițializat-o.

09:35.590 --> 09:45.100
Aici este o introducere o variabilă a obiectului Virgin Q Un obiect obișnuit a ajunge la Times următoarele ieșiri așa cum tocmai

09:45.100 --> 09:49.910
am spus plus Vrem că este cea mai bună dorință.

09:49.940 --> 09:57.400
Lucrăm cu loturi aici, așa că și lotul pe care îl dorim și asta e țintă.

09:57.520 --> 10:03.820
Într-o probă a memoriei gamma înmulțită cu următoarele ieșiri plus recompensa.

10:03.900 --> 10:04.480
In regula.

10:04.480 --> 10:05.080
Perfect.

10:05.110 --> 10:07.100
Deci acum avem rezultatele noastre.

10:07.180 --> 10:13.270
De asemenea, avem țintele noastre și, prin urmare, putem calcula pierderea pierderii care reprezintă

10:13.270 --> 10:14.260
eroarea predicției.

10:14.500 --> 10:21.000
Deci, să zicem ultima, ultimele două sunt bineînțeles pentru diferența temporală.

10:21.040 --> 10:28.720
Asta este din nou în centrul învățării Q și acest lucru va fi în mod egal cu eliberarea care

10:28.720 --> 10:30.330
îmbunătățește mult Cunananul.

10:30.520 --> 10:34.730
Aceasta este ultima funcție pe care o vom alege pentru inteligența artificială.

10:34.800 --> 10:38.640
Pentru cei care veniți din cursul verde adânc, este într-adevăr ultima recomandare.

10:38.680 --> 10:43.280
Dacă doriți să puneți în aplicare Coonerty și așa cum vom obține acest lucru.

10:43.510 --> 10:50.380
Ei bine, din nou, vom lua o funcție din modulul funcțional reprezentat de

10:50.380 --> 10:57.970
F și, prin urmare, aici voi folosi modulele noastre funcționale, iar Hubble-ul nostru poate fi

10:57.970 --> 11:02.420
obținut datorită funcției Smoots L-1 care o iubește.

11:02.420 --> 11:03.850
Deci, apăsați tasta Enter.

11:03.850 --> 11:07.910
Și aceasta este cu adevărat cea mai bună funcție pierdută pe care o recomand pentru învățare profundă.

11:07.930 --> 11:09.680
Îmbunătățește într-adevăr Culinul.

11:09.820 --> 11:12.670
Dar aceasta este o funcție, așa că adaug câteva paranteze.

11:12.850 --> 11:14.740
Și acum nu este nimic mai simplu.

11:14.830 --> 11:19.340
Argumentele pe care trebuie să le furnizăm sunt predicțiile și țintele.

11:19.420 --> 11:24.010
Deci, predicțiile, desigur, sunt ieșiri deoarece aceasta este ieșirea rețelei neuronale.

11:24.190 --> 11:27.600
Nu rezultatul rețelei neuronale este ceea ce prezice rețeaua neurală.

11:27.730 --> 11:29.030
Deci asta este predicția.

11:29.260 --> 11:35.900
Deci, primul argument aici este ieșirile și apoi al doilea argument este, desigur, țintă.

11:36.100 --> 11:40.110
Lucrul pe care încercăm să-l obținem și este deja calculat perfect.

11:40.150 --> 11:43.150
Putem intra direct în țintă.

11:43.150 --> 11:43.630
Perfect.

11:43.650 --> 11:48.200
Acum ne-am spus că avem puțin ceai aici.

11:48.220 --> 11:48.760
Vom merge acolo.

11:48.760 --> 11:50.470
Acum avertizarea ar trebui să dispară.

11:50.890 --> 11:51.420
Da.

11:51.430 --> 11:52.110
Perfect.

11:52.180 --> 11:58.090
Și acum, că avem ultima eroare, putem înapoia erorile de propagatori înapoi în rețea pentru a actualiza greutățile

11:58.090 --> 12:03.230
cu coborâre stochastică și asta este exact ceea ce vom face în pasul următor.

12:03.490 --> 12:12.040
Deci, bineînțeles, acum ce trebuie să facem după cum ați putea presupune este să ne optimizăm optimizatorul, care din nou

12:12.190 --> 12:14.850
vă prezentăm că ați inițializat-o.

12:15.030 --> 12:21.430
Și acesta este un optimizator de atomi care este de fapt un obiect al clasei Atom și este

12:21.580 --> 12:23.720
deja echipat cu parametrii modelului nostru.

12:23.810 --> 12:31.480
Și am ales deja o rată de învățare de 0. 1 la sută pentru a perfecționa optimizatorul nostru este gata, dar acum

12:31.480 --> 12:37.150
trebuie să ne jucăm la ultima eroare pentru a efectua grilă stochastică în sens și greutăți de date.

12:37.180 --> 12:43.540
Deci, atunci când lucrăm cu luptători, primul lucru pe care trebuie să-l facem este să-l inițializăm la fiecare iterație a

12:43.540 --> 12:44.150
buclei.

12:44.200 --> 12:50.620
Trebuie să reinițializăm optimizatorul de la o interacțiune la alta în bucla de acest fel pentru a obține

12:50.660 --> 12:53.310
grila în set și pentru a-l reinicializa.

12:53.350 --> 12:54.820
Și fiecare iterație a bucla.

12:55.200 --> 12:59.410
Ei bine, vom folosi următoarea metodă care este zero.

12:59.940 --> 13:00.400
Începem.

13:00.410 --> 13:05.180
Zero grad va reinițializa optimizatorul la fiecare repetare a buclă.

13:05.230 --> 13:07.300
Apoi, să nu uităm paranteza.

13:07.390 --> 13:08.180
Perfect.

13:08.200 --> 13:14.850
Și acum că este re-inițializat Ei bine, putem efectua propagarea înapoi cu optimizatorul nostru.

13:15.190 --> 13:16.380
Și cum facem asta?

13:16.540 --> 13:22.660
Ei bine, luăm legile noastre și o vom înapoi propaga înapoi în rețea și înapoi

13:22.660 --> 13:24.330
propagat în rețea.

13:24.460 --> 13:33.190
Trebuie să folosim funcția înapoi și în interiorul acestei funcții înapoi recomand să introduceți variabilele de subliniere și

13:33.220 --> 13:37.180
să le setați egală cu valoarea adevărată.

13:37.240 --> 13:40.990
Vă recomand să faceți acest lucru deoarece acest lucru va îmbunătăți propagarea înapoi.

13:41.200 --> 13:46.420
Folosirea variabilelor scrise este egală cu eliberarea unei memorii și trebuie să eliberăm memoria, pentru

13:46.420 --> 13:52.730
că vom merge de mai multe ori în ultimul rând, ceea ce va îmbunătăți cu siguranță performanța de antrenament.

13:52.900 --> 13:58.980
Și, în final, ultimul pas al acestei funcții învățate este de a avea greutăți de date în funcție de propagarea spatelui.

13:58.980 --> 14:02.570
Aceasta este în funcție de cât de mult au contribuit greutățile la eroare.

14:02.800 --> 14:11.680
Și pentru a face acest lucru vom lua optimizatorul nostru din nou, care a fost inițializată în re-initialize și vom folosi funcția pas

14:12.250 --> 14:17.560
și pur și simplu cu această linie de cod prin utilizarea funcției pas.

14:17.560 --> 14:19.450
Aceasta va actualiza greutățile.

14:19.480 --> 14:21.860
Aceasta este linia de cod care actualizează greutățile.

14:21.910 --> 14:28.750
Această linie de cod care propagă eroarea în rețeaua neuronală și această linie de cod utilizează instrumentul de optimizare

14:28.930 --> 14:31.510
pentru a actualiza greutățile și acolo mergem.

14:31.510 --> 14:36.800
Avem o rețea de învățare neuronală bine, așa fel de felicitări.

14:36.840 --> 14:42.320
Aceasta a fost probabil cea mai tehnică și cea mai dificilă parte a întregii dispute sau a zilei de mâine.

14:42.450 --> 14:47.880
Știu că torța mea poate fi dificilă uneori cu ușurință și stoarcere și stoarcere, dar în

14:47.880 --> 14:54.900
cele din urmă vă promit că veți obține o rețea neuronală foarte funcțională și, prin urmare, un model deosebit și, eventual,

14:54.960 --> 14:56.580
o mare inteligență artificială.

14:56.580 --> 15:03.150
Deci, acum să trecem la următorul pas sau profesor și model, care va fi funcția de actualizare care va

15:03.210 --> 15:07.170
fi evident actualizată atunci când AI va descoperi noua stare.

15:07.170 --> 15:11.420
Deci știi că va descoperi noul stat și apoi va primi recompensa.

15:11.520 --> 15:16.860
În funcție de acțiunea afișată și această nouă stare va avea grijă de aceasta cu ajutorul funcției de actualizare

15:16.860 --> 15:19.510
și va face acest lucru în tutorialul următor.

15:19.710 --> 15:21.000
Până atunci, bucurați-vă.

15:21.020 --> 15:21.300
I.
