Bună ziua și bun venit la acest tutorial Python.
In regula.
Acum, în următoarea funcție despre care ne referim la implementare Vom antrena rețeaua neuronală profundă care se
află în interiorul inteligenței noastre artificiale.
Deci, practic, vom face întregul proces de propagare și apoi de propagare înapoi.
Așa că vom obține rezultatele noastre.
Vom obtine tinta.
Vom compara ieșirea țintă pentru a calcula ultima eroare, apoi vom răspunde la propagarea
acestei ultime erori în noua rețea.
Și folosind descendența de gradient sugerată, care va trebui să aștepte în funcție de cât de mult au contribuit la
ultima eroare.
Deci, să facem toate astea pentru cei dintre voi care veneau din Corpul Marin.
Aceasta va fi o chestie bună, dar pentru ceilalți nu vă faceți griji că o voi extinde din nou.
Așa că vom numi această nouă funcție de învățare și învățare va lua mai multe argumente.
Primul eu, desigur, care se va referi la obiectul gradului în clasă.
Apoi ne vom lua statul nostru batched pentru starea actuală, atunci statul nostru de șarjă următor, apoi
răsplata noastră și în cele din urmă acțiunea lui Arbat.
Deci, de ce luăm asta?
Probabil ați recunoscut ce este această serie.
Ei bine, aceasta este, bineînțeles, o tranziție o tranziție a procesului decizional de piață care se află la bază.
Ai invatat.
Și de ce îi luăm pe toți în niște loturi.
Ei bine, asta pentru că știi că nu ne gândim la tranzițiile printr-o serie de top sau
actuală stare de stat și de actualizare a acțiunii curente.
Am creat câteva loturi simple datorită funcției simple.
Și așa că acum tranzițiile noastre sunt sub forma primului lot pentru această stare.
Un al doilea lot pentru următoarea dată este un lot pentru recompensă și un lot pentru acțiune.
Asta este forma tranziției noastre acum și sunt bine aliniate în ceea ce privește timpul
datorită acestei concatenări pe care am făcut-o aici cu privire la prima dimensiune.
Deci, punctul este acum avem aceste tranziție de loturi un lot pentru fiecare stat de zilele următoare ne uităm
la acțiune și facem toate acestea, deoarece vom folosi acest truc de replay experiență.
Deci asta este rețeaua noastră neuronală profundă poate învăța ceva.
Amintiți-vă dacă ați avut doar o tranziție de la sine ceea ce ar fi o învățare instantanee.
Sau dacă vreți să învățați o memorie foarte scurtă și, prin urmare, mola nu ar învăța nimic.
Deci, trebuie să luăm aceste loturi din memorie care devin tranzițiile noastre și apoi vom obține în cele din urmă diferitele
rezultate pentru fiecare dintre statele statelor de intrare și vom face acest lucru pentru statele și
pentru următoarele state, deoarece vom avea nevoie de ambele pentru a calcula pierderea.
În curând voi aminti ecuația de echilibru care se află în centrul algoritmului de învățare.
Acum, hai să intrăm în funcție și să lăsăm mai întâi ieșirile de la starea casetei.
Așa că voi numi primele rezultate viabile și apoi vom spune, bineînțeles, că ne-am vorbit despre auto-vorbire și
nu despre tot ce am pornit.
Nu, pentru că vrem să obținem ieșirile noastre de model ale stărilor de intrare ale statului.
Și deoarece modelul nostru așteaptă de fapt un lot de stări de intrare.
Ei bine, putem să introducem în totalitate acea stare chiar acum pentru a le introduce pe toți.
Exact așa am inițializat statele care intră în rețea cu răspunsul torturii cu această
dimensiune vagă pentru lotul care este perfect.
Acum obținem rezultatele tuturor.
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
care le știi 0 1 și 2, dar asta nu este ceea ce ne dorim.
Suntem interesați doar de acțiunile care au fost alese.
Acțiunile pe care rețeaua le-a decis să joace în fiecare moment și astfel pentru
a le face pe aceștia interesați de acțiunile jucate, trebuie să folosim această funcție de adunare în care introducem
una pentru că dorim doar acțiunea care a fost aleasă și apoi adăugăm acea acțiune cu aceasta.
Și în acea secțiune vom aduna de fiecare dată cea mai bună acțiune pentru a juca pentru fiecare dintre stările de
intrare ale statului.
Nu vrem ca acțiunea care este jucată să fie aleasă să fie aleasă și să primim acest lucru cu această
acțiune de adunare.
Dar fii atent.
Statul are aici aceste diamante fals și unsoare în lot și această secțiune nu-l are.
Înapoi are pentru că am folosit-o pe Unsworth aici, dar nu am folosit nici un strop de
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.
Așa că vom adăuga un punct și vom stoarce aici chiar aici și de fapt nu este zero, ci unul pentru că
răspunsul zero la Faith nu este statul și unul va corespunde examinării acțiunilor.
Ș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.
De ce trebuie să facem asta?
Pentru că acum suntem în afara rețelei neuronale.
Avem rezultate, dar nu le dăm înapoi.
Le vrem.
Iar răspunsul simplu este un vector simplu.
Un vector de ieșire a loturilor doar atunci când lucrăm în rețeaua neurală,
deoarece rețeaua neuronală așteaptă formatul senzorilor într-un lot.
Dar acum avem rezultatele noastre și în următoarea ecuație baluns de învățare profundă nu vom avea nevoie de
ei într-un lot.
Deci o ucid pe aici și ucigând dimensiunea credinței pentru a reveni la forma simplă a rezultatelor noastre.
Deci, eu doar adaug aici Dot și apoi stoarce și apoi, deoarece vreau să omoare laminarea falsă care corespunde partea
din spate a acțiunii.
Ei bine, din moment ce motorul cu spațiu temporal are indexul 1, adaug unul aici.
In regula.
Și acum ne ducem la ieșire.
O.K.
Avem un mic avertisment despre ce este atribuită această ieșire variabilă locală, dar niciodată folosită.
Asta e ok.
O vom folosi foarte repede.
Așa sunt rezultatele noastre.
Ș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.
Pentru a înțelege acest lucru trebuie să ne întoarcem la algoritmul de învățare profundă, care este chiar aici,
care face parte din manualul de lectură.
Deci, acesta este întregul proces de difuzie.
La început inițializam toate valorile cheie și apoi la fiecare moment t.
Ei bine, acolo vom merge selectam actiunea cu Max, asta a fost ceea ce am facut cu functia selectare de actiune.
Apoi am deschis tranziția și apoi, după cum puteți vedea, obținem predicția că obținem ținta și putem
fi ultima.
Deci, de ce avem nevoie de următoarea ieșire, de asemenea.
Asta pentru că din țintă țintă este egală cu Ghana ori de ieșire următoare, plus dorim și vom calcula obiective
imediat după care, deoarece avem nevoie de următoarea ieșire a țintă.
Să calculam mai întâi asta.
Deci, din nou, pentru a obține următoarea actualizare foarte simplă, următoarea ieșire va fi rezultatul
rețelei noastre neuronale, atunci când starea următoare va fi introdusă ca intrare.
Deci, pur și simplu, luăm modelul nostru, care este rețeaua noastră neuronală și de data aceasta, intrarea rețelei
neuronale va fi următoarea stare în varianta care a dat următoarea dată.
Dar acum amintiți-vă dacă ne întoarcem la algoritmul timpuriu. Ei bine, puteți vedea că rezultatul următor este maximul valorilor
q pentru următoarea stare în raport cu toate acțiunile.
Deci, acum, pentru a obține următoarea ieșire, trebuie să obținem maximum de aceste valori q și, prin urmare, o să
fac aici.
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,
care este lotul tuturor stărilor următoare în toate tranzițiile luate din eșantionul aleator al
memoriei noastre.
Deci le desprind pe toate folosind funcția detach și apoi iau maximum de toate aceste două
valori.
Și din moment ce luăm cât mai mult aceste două valori în ceea ce privește acțiunea Ei bine trebuie să
precizăm că este în legătură cu acțiunea.
Și deoarece acțiunea este reprezentată de indexul unu.
Din nou, trebuie să punem următoarea și apoi trebuie să precizăm că luăm valorile cue
ca T plus 1 care este următoarea etapă și următoarea stare este reprezentată de 0 deoarece indicele zero
corespunde stărilor și prin urmare, aici trebuie să adăugăm paranteze cu indexul 0.
În acest fel, vom obține valorile cheie ale următoarelor stări reprezentate de următorul zero
în funcție de toate acțiunile care sunt reprezentate de indexul unu și acum perfecte obținem următoarele rezultate.
Acestea sunt un set nou.
Atunci am avut avertismentul.
Dar este bine.
Vom folosi acum pentru a calcula ținta.
Și vorbind despre ținta care este următorul pas al acestei funcții cunoscute.
Așa că mergem.
Ținta este egală.
Acum, să ne întoarcem la manualul AI AI.
Obiectivul este egal cu cuvântul plus gama ori, urmatoarea iesire este maximul valorilor cubului de a
doua zi.
Conform acțiunilor pe care le putem calcula.
Deci este egal cu gama și cu sinele pe care Gamma a inițializat-o.
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
am spus plus Vrem că este cea mai bună dorință.
Lucrăm cu loturi aici, așa că și lotul pe care îl dorim și asta e țintă.
Într-o probă a memoriei gamma înmulțită cu următoarele ieșiri plus recompensa.
In regula.
Perfect.
Deci acum avem rezultatele noastre.
De asemenea, avem țintele noastre și, prin urmare, putem calcula pierderea pierderii care reprezintă
eroarea predicției.
Deci, să zicem ultima, ultimele două sunt bineînțeles pentru diferența temporală.
Asta este din nou în centrul învățării Q și acest lucru va fi în mod egal cu eliberarea care
îmbunătățește mult Cunananul.
Aceasta este ultima funcție pe care o vom alege pentru inteligența artificială.
Pentru cei care veniți din cursul verde adânc, este într-adevăr ultima recomandare.
Dacă doriți să puneți în aplicare Coonerty și așa cum vom obține acest lucru.
Ei bine, din nou, vom lua o funcție din modulul funcțional reprezentat de
F și, prin urmare, aici voi folosi modulele noastre funcționale, iar Hubble-ul nostru poate fi
obținut datorită funcției Smoots L-1 care o iubește.
Deci, apăsați tasta Enter.
Și aceasta este cu adevărat cea mai bună funcție pierdută pe care o recomand pentru învățare profundă.
Îmbunătățește într-adevăr Culinul.
Dar aceasta este o funcție, așa că adaug câteva paranteze.
Și acum nu este nimic mai simplu.
Argumentele pe care trebuie să le furnizăm sunt predicțiile și țintele.
Deci, predicțiile, desigur, sunt ieșiri deoarece aceasta este ieșirea rețelei neuronale.
Nu rezultatul rețelei neuronale este ceea ce prezice rețeaua neurală.
Deci asta este predicția.
Deci, primul argument aici este ieșirile și apoi al doilea argument este, desigur, țintă.
Lucrul pe care încercăm să-l obținem și este deja calculat perfect.
Putem intra direct în țintă.
Perfect.
Acum ne-am spus că avem puțin ceai aici.
Vom merge acolo.
Acum avertizarea ar trebui să dispară.
Da.
Perfect.
Și acum, că avem ultima eroare, putem înapoia erorile de propagatori înapoi în rețea pentru a actualiza greutățile
cu coborâre stochastică și asta este exact ceea ce vom face în pasul următor.
Deci, bineînțeles, acum ce trebuie să facem după cum ați putea presupune este să ne optimizăm optimizatorul, care din nou
vă prezentăm că ați inițializat-o.
Și acesta este un optimizator de atomi care este de fapt un obiect al clasei Atom și este
deja echipat cu parametrii modelului nostru.
Și am ales deja o rată de învățare de 0. 1 la sută pentru a perfecționa optimizatorul nostru este gata, dar acum
trebuie să ne jucăm la ultima eroare pentru a efectua grilă stochastică în sens și greutăți de date.
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
buclei.
Trebuie să reinițializăm optimizatorul de la o interacțiune la alta în bucla de acest fel pentru a obține
grila în set și pentru a-l reinicializa.
Și fiecare iterație a bucla.
Ei bine, vom folosi următoarea metodă care este zero.
Începem.
Zero grad va reinițializa optimizatorul la fiecare repetare a buclă.
Apoi, să nu uităm paranteza.
Perfect.
Și acum că este re-inițializat Ei bine, putem efectua propagarea înapoi cu optimizatorul nostru.
Și cum facem asta?
Ei bine, luăm legile noastre și o vom înapoi propaga înapoi în rețea și înapoi
propagat în rețea.
Trebuie să folosim funcția înapoi și în interiorul acestei funcții înapoi recomand să introduceți variabilele de subliniere și
să le setați egală cu valoarea adevărată.
Vă recomand să faceți acest lucru deoarece acest lucru va îmbunătăți propagarea înapoi.
Folosirea variabilelor scrise este egală cu eliberarea unei memorii și trebuie să eliberăm memoria, pentru
că vom merge de mai multe ori în ultimul rând, ceea ce va îmbunătăți cu siguranță performanța de antrenament.
Ș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.
Aceasta este în funcție de cât de mult au contribuit greutățile la eroare.
Ș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
și pur și simplu cu această linie de cod prin utilizarea funcției pas.
Aceasta va actualiza greutățile.
Aceasta este linia de cod care actualizează greutățile.
Această linie de cod care propagă eroarea în rețeaua neuronală și această linie de cod utilizează instrumentul de optimizare
pentru a actualiza greutățile și acolo mergem.
Avem o rețea de învățare neuronală bine, așa fel de felicitări.
Aceasta a fost probabil cea mai tehnică și cea mai dificilă parte a întregii dispute sau a zilei de mâine.
Știu că torța mea poate fi dificilă uneori cu ușurință și stoarcere și stoarcere, dar în
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,
o mare inteligență artificială.
Deci, acum să trecem la următorul pas sau profesor și model, care va fi funcția de actualizare care va
fi evident actualizată atunci când AI va descoperi noua stare.
Deci știi că va descoperi noul stat și apoi va primi recompensa.
În funcție de acțiunea afișată și această nouă stare va avea grijă de aceasta cu ajutorul funcției de actualizare
și va face acest lucru în tutorialul următor.
Până atunci, bucurați-vă.
I.