Bună ziua și bun venit la acest tutorial Python din Statoil vom face primul pas în
implementarea modelului teoriei profunde.
Deci, practic, suntem pe punctul de a implementa întregul proces al algoritmului de difuzie.
Și așa vom folosi ceea ce am creat înainte.
Aceasta este arhitectura rețelei neuronale pentru reluarea memoriei pentru a integra acest lucru în întregul
proces de învățare.
Și acest întreg algoritm de învățare se va potrivi într-o singură clasă.
Acesta este ultimul lucru pe care îl facem să punem în aplicare inteligența artificială.
Și această clasă va conține doar funcții diferite.
Așadar, vom avea funcțiile care vor crea și iniția toate variabilele atașate obiectelor
noastre viitoare de ocolire care vor reprezenta modelul însuși și vor avea și alte funcții.
Unul dintre ei va fi, desigur, acela de a selecta acțiunea potrivită în fiecare moment.
Vom avea, de asemenea, o funcție de bază a funcției de actualizare pentru a obține acest nucleu și a avea o idee despre modul în care procesul
de învățare se desfășoară dacă merge bine.
Dacă explorarea merge bine și dacă se poate trece la exploatare și atunci vom avea o funcție
sigură pentru a salva mâine, care înseamnă salvarea creierului mașinii și apoi încărcarea funcției.
Deci, avem câteva funcții de făcut.
Vom face o singură funcție pentru fiecare să lucreze.
Și astăzi vom începe cu funcția de sfârșit ca de obicei atunci când vom face o cursă.
Dar mai întâi să nu uităm să introducem clasa, așa că o vom numi D.
Și pentru rețeaua dvs., atunci vă invităm la o paranteză.
Și apoi mergem cu prima noastră funcție.
Deci haideți să facem acest def, apoi dublu subliniați apoi dublu subliniază din nou și paranteză.
Așa cum ați înțeles în această funcție, vom introduce variabilele atașate obiectului nostru.
Așadar, vom avea câteva linii care să pornească de la sine și vom crea
și vom inițializa toate variabilele necesare pentru implementarea rețelei D2.
De exemplu, vom crea un obiect sau o rețea deoarece, desigur, avem nevoie de rețeaua noastră neuronală profundă, atunci vom
avea nevoie de memoria noastră.
Vom crea o altă variabilă pentru memorie.
Așadar, vom avea o altă memorie variabilă, dar nu este tot ce va trebui să creăm și noi.
Unele variabile pentru ultima dată.
Ultima acțiune și ultimul cuvânt.
Desigur, știți variabilele pe care le vedeți în algoritmul de difuzie.
Și apoi ce altceva.
Ei bine, vom avea nevoie, de asemenea, de un optimizator pe care îl cunoașteți pentru a efectua o rețea stochastică în sensul
greutății datelor, în funcție de cât de mult va contribui la eroare.
Atunci când AI face o greșeală și apoi cred că așa că este în esență variabilele pe care trebuie acum să le
creăm și să le inițializăm.
Dar în această funcție init vom pune mai întâi câteva argumente ca sinele obișnuit, care este argumentele care se
referă la obiectul nostru.
Apoi, deoarece știți că vom crea un obiect al clasei de rețea.
Ei bine, deoarece clasa de rețea are ca argument în dimensiunea de intrare funcția init și acțiunea Ei bine, este același
lucru aici.
Atunci când creați un obiect al clasei de rețea, va trebui să alegeți un argument de dimensiune de intrare
și argumentul real.
Prin urmare, putem să le copiem
doar aici și aici mergem.
Deci, aceste argumente vor deveni acum.
De asemenea, unele argumente nu au rezistat.
Ori de câte ori creăm niște obiecte viitoare ale clasei diferite că unele modele de rol dical viitor, bine, va
trebui să specificăm dimensiunea de intrare pe care am amintit este numărul de dimensiuni în vectorii care
includ stările tale.
Situațiile dvs. de intrare și o serie de acțiuni care reprezintă numărul de posibile acțiuni pe care le poate face mașina.
Vă reamintesc.
Acestea sunt fie mergeți la stânga mergeți drept sau mergeți la dreapta.
Bine perfect.
Apoi știți că veți crea un obiect nou al clasei de memorie replay pentru a
crea obiectul de memorie pentru a ne memora tranzițiile și în informațiile pe care le avem argumentul capacității.
Dar din moment ce o vom folosi doar odată, atunci când vom crea memorie și nu orice după
aceea Ei bine, nu va trebui să specificăm argumentul capacității.
Am putea face acest lucru, dar vom introduce direct numărul de tranziții pe care vrea să le aibă memoria noastră.
Dar avem nevoie de un ultim argument, care este de a obține parametrul în modelul profesorului.
Amintiți-vă că acest parametru gamma este întârzierea.
Și acesta este un parametru al ecuației și, prin urmare, o vom pune aici pentru că o vom folosi ulterior
de mai multe ori.
Așa că haideți să o punem aici.
O vom numi Gamma.
Deci, pentru că este doar numele argumentului și apoi vom merge toate argumentele de care veți avea nevoie pentru acest
lucru în funcția sa.
Asta înseamnă că ori de câte ori creăm modelul nostru de dicționare, atunci când creăm un obiect al profesorului
în clasă.
Ei bine, va trebui să specificăm ca argumente dimensiunea intrării numărul de acțiune și parametru.
Și vom termina cu valorile reale pentru ei.
Acum să mergem în interiorul funcției.
O.K.
Deci acum, practic, acest lucru va fi ușor.
Suntem pe cale să creăm și să inițializăm toate variabilele de care avem nevoie.
Și să începem cu prima.
Să începem cu gamma.
De fapt, coeficientul de întârziere.
Deci, deoarece acesta este un voievod care vrea să fie atașat obiectului ei, începem cu sine.
Deci, gama va fi o variabilă a învățătorului și a modelului propriu, că gama este egală cu argumentele care vor fi introduse
când se creează un obiect al clasei de detune.
Deci, Janna și acolo mergem cu al doilea argument.
Al doilea argument va fi fereastra de recompensă.
Deci, ce este această fereastră.
Ei bine, asta va fi fereastra de alunecare din mijlocul ultimelor 100 de cuvinte pe care le
vei folosi doar pentru a evalua evoluția performanței pe care o știi că va avea sensul cuvântului în acest război
Windu care va aluneca în timp.
Și ceea ce dorim să observăm este semnificația ultimelor 100 de cuvinte care cresc în timp.
Deci, să o inițializăm cu sine care recompensează fereastra de subliniere.
Și din moment ce aceasta va fi o fereastră alunecoasă a mediei evolutive a ultimelor 100 de cuvinte.
Ei bine, o vom inițializa ca pe o listă goală și apoi ne vom extinde pentru a însemna că lucrăm suplimentar.
Bine, atunci mai interesant.
Să ne creăm rețeaua neurală.
Așa că o să-l numim "auto-învățat Mario", pentru că în esență asta este inima modelelor.
Îl numesc model și acest model nu va fi altceva decât un subiect din acea clasă și să creeze un
astfel de obiect.
Noi luăm rețeaua de clasă în paranteză și aici am pus doar argumentele clasei dar am pus aceste argumente în argumentele
funcției init și de aceea trebuie doar să le copiem aici și să
le lipim în clasa de rețea și apoi noi du-te cu această linie de cod.
Creăm o rețea neurală pentru a învăța modelul perfect, apoi să ne creăm o memorie.
Așa că din nou vom crea un nou Vargo pe care îl numim memorie auto-învățată.
Și din nou, acest lucru va fi un obiect al clasei de memorie reluată.
Deci, să luăm numele sau clasa să copiem și să ne confruntăm cu asta aici și în unele paranteze trebuie să
punem capacitatea deoarece capacitatea este un argument al funcției și acesta este singurul argument de care
avem nevoie aici.
Deci, ce capacitate vom alege să ne amintim că corespunde numărului de tranziții numărul
de evenimente ultima stare pe care le menționați ultima acțiune și ultimul cuvânt.
Și așa cum am menționat într-unul din trupele lui Priester, vom lua o sută de mii o sută de mii
de tranziții în memorie și apoi vom încerca din această memorie să obținem un număr mic de
tranziții aleatorii și pe care modelul va fi în regulă.
Deci acum avem memoria noastră perfectă.
Acum, să luăm optimizatorul nostru.
Așadar, din nou, vom crea o nouă variabilă pe care o numim optimizator, astfel încât optimizatorul este o altă variabilă a
viitorului nostru dequeue un sine obiect care optimizator.
Și acum, dacă ne întoarcem în sus, puteți vedea că am importat torturat Upton, care este o torță modulară, care conține toate instrumentele
necesare pentru a face grila în centru.
Așa că, desigur, acesta conține unii optimizatori și i-am dat scurtatura Upton și de aici aici ceea ce vom face
este să luăm modelul până la el, care este torța care până la el și din acest modul
vom lua unul dintre optimizatori.
Așa cum puteți vedea că sunt enumerate aici.
Multe dintre ele sunt excelente, de exemplu, armura lui Propp este un optimizator excelent.
Există, de exemplu, foarte recomandat pentru înregistrarea rețelelor neuronale sau învățarea adâncă nesupravegheată.
Dar celălalt care este excelent și că va alege este optimizatorul de atomi.
Asta o vei vedea că cu asta o să ai o mașină bună de auto-conducere.
Dar din nou sunteti bineveniti sa incercati si alti oameni pe care puteti incerca sa-i incercati, dar pentru metal vom
alege Adam.
Deci, apăs pe Enter.
Și, de fapt, veți observa că aici este capitolul.
Asta pentru că creăm un obiect al clasei Atom.
Aceasta este o clasă, dar obiectul va fi un optimizator atomic în sine.
Dar, deoarece aceasta este o clasă, trebuie să punem câteva argumente argumentele clasei Atom și
argumentele sunt toți parametrii care vă pot personaliza și optimizatorul.
De exemplu, aceasta este de obicei rata de învățare a degradării sau alți parametri.
Și, pe lângă luarea tuturor parametrilor Ormeau, vom specifica o rată de învățare.
Deci este începutul parametrilor modelului nostru.
Le putem obține cu un model de îndoială.
Deci acesta este modelul pe care l-am creat aici modelul de auto-învățat din clasa noastră.
Astfel, modelul auto-predat și apoi accesul la parametrii modelului adaugăm un alt punct și apoi parametrii cu
o anumită paranteză foarte simplu.
Deci, doar pentru a conecta optimizatorul de addon la rețeaua noastră neuronală, cea pe care am creat-o aici, atunci, după
cum am menționat deja, vom adăuga o rată de învățare, iar argumentul pentru aceasta este al nostru.
Și o vom stabili cu o valoare astfel încât învățarea să nu se întâmple prea repede dacă obținem o rată de învățare
prea mare, atunci când AI AI va învăța cum trebuie.
Vrem să oferim AI-ului nostru un timp pentru a explora învăța din greșelile sale.
Știți când o pedepsim atunci când face niște greșeli ca să mergem într-un sens sau să ne apropiem prea
mult de un zid.
Ei bine, vrem să dăm ceva timp pentru a învăța.
Vrem o cale spre rețeaua neuronală corectă.
Și astfel, o valoare bună pentru rata de învățare la care am ajuns după ce am încercat mai multe dintre ele este 0. 2 sau una.
În regulă și asta e tot ce trebuie pentru a crea un optimizator.
Deci, în principiu creați un obiect al clasei Atom.
Grozav.
Și apoi ultimele trei variabile de care avem nevoie sunt variabilele care compun evenimentele noastre de tranziție.
Deci este ultima dată ultima acțiune și ultimul cuvânt.
Și, în principiu, asta vom crea acum și va trebui să le inițializăm.
Deci, să începem cu ultima dată la ultima dată pe care o vom numi auto-predată.
Ultima stare de subliniere și apoi cum o să inițializați.
Amintiți-vă ultima dată este un vector de 5 dominări un vector care este codificat într-o stare a
mediului.
Și ca o reamintire, aceste cinci dimensiuni sunt cele trei semnale ale celor trei
senzori lăsați drept și drept și orientare orientată și minus.
Deci, acesta este un vector și un sens intuitiv.
Dar, datorită torței, trebuie să fie mai mult decât un vector.
De fapt, trebuie să fie un tensor al torței.
Dar nu numai că trebuie să fie un senzor de torță, dar trebuie să aibă încă o dimensiune pe care
îmi place să o numesc dimensiune falsă care corespunde lotului.
Și asta pentru că ultimele opt vor fi intrarea rețelei neuronale, dar atunci când lucrează cu mine când funcționează în
general dacă este cu un flux mai dens poartă o lanternă, în timp ce vectorii de intrare nu pot fi un
vector simplu de la sine.
Trebuie să fie într-un lot.
Rețeaua poate accepta doar loturi de observații de intrare și, prin urmare, nu numai că va crea un
tensor pentru vectorii de stare de intrare, ci și vom crea această dimensiune falsă corespunzătoare lotului.
Deci, haideți să facem acest lucru și să începem prin inițierea unui tensor de torță pentru a face acest lucru nu este nimic
mai simplu.
Noi luăm biblioteca torchelor apoi punct și apoi vom folosi clasa tensor deoarece, după cum probabil ați ghicit, acest lucru
va crea un obiect al clasei tensor care este un obiect tensor.
Și în acest tensor trebuie să punem un argument care să precizeze dimensiunea tensorului.
Poți să-ți imaginezi că te ia ca o matrice care are un singur tip.
Dar, în esență, ceea ce va reprezenta acum este, bineînțeles, această stare de intrare pe care o puteți vedea are un vector și astfel să
specificați numărul de elemente pe care trebuie să le aibă distanța.
Ei bine, trebuie să folosim, bineînțeles, dimensiunea intrărilor deoarece mărimea intrării este exact numărul de dimensiuni ale
vectorilor de stare de intrare.
Acum ar trebui să spun tensorii.
Și așa trebuie doar să introducem în clasa noastră tensor pentru a crea obiect tensor.
Ei bine, este imprecis.
Mai târziu, mărimea intrărilor va fi cuantificată.
Bine, asta e bine.
Acesta este primul lucru făcut.
Tocmai am inițializat așa cum ar trebui să fie.
Dar, atunci amintiți-vă că trebuie să facem un alt lucru necesar pentru a crea acea dimensiune falsă,
deoarece aceasta este ceea ce va aștepta rețeaua pentru intrările sale și pentru a crea aceasta pentru examinare care, apropo, trebuie să
fie motorul pentru prima dată când știți dauna pus în lot va fi prima dată când menționez acest
lucru să spunem foarte bine.
Ei bine, pentru a face acest lucru, pur și simplu trebuie să adăugăm asta și să strângem și apoi în unele paranteze.
Trebuie să punem indicele acestei mari dimensiuni.
Și cum tocmai am spus că această dimensiune falsă trebuie să fie prima animație a ultimei date și din moment
ce indici și octeți și a început zero trebuie să introduceți zero, astfel încât acest nou motor de paradigmă să devină primul
motor de linie.
Așadar, avem un motor pentru prima dată care corespunde lotului și apoi diamantul ar trebui să
răspundă acelui senzor care va conține cele cinci elemente ale stărilor dvs. de intrare, orientarea celor trei semnale și
orientarea minus.
Și apoi mergem am inițializat stările noastre de intrare în mod corespunzător.
Perfect.
Și apoi două variabile pentru a merge și thats va fi mult mai ușor, deoarece următoarea variabilă este ultima
acțiune.
Acesta este un nou Roybal pe care îl creăm pentru ultima acțiune Object.
Și amintiți-vă în primul tutorial al secțiunii v-am spus că acțiunile vor fi 0
1 sau 2 și apoi folosind vectorul de rotație a acțiunii vom transforma acești indici ai acestor acțiuni în
unghiurile rotației pe care le reamintesc 0 20 sau minus 20.
De fapt, ne putem reîmprospăta memoria cu asta.
Este exact aici.
Acțiune la rotație dacă acțiunea este zero.
Ei bine, acest lucru va corespunde primului indice de zero dacă acțiunea este 1.
Aceasta va corespunde indexului unuia dintre acești vectori de 20 de grade și dacă acțiunea este de până
la noi vom obține minus 20 grade care va fi unghiul de rotație al mașinii noastre atunci când vom juca acțiunea.
In regula.
Și, prin urmare, acțiunea va fi 0 1 sau 2 Ei bine acțiunea este acolo pentru un număr
simplu.
Și așa pur și simplu putem inițializa-o la zero.
Nu avem nevoie de a crea nici un zeci sau de a auzi altceva.
Trebuie doar să îl inițializăm cu zero.
Și, în sfârșit.
Ei bine, acesta este ultimul cuvânt.
Eul este ultimul cuvânt.
Vom merge acolo.
Și din nou cuvântul este un număr de float pe care-mi amintesc că este între minus 1 și plus 1.
Deci asta e numărul din nou.
Și în ceea ce privește acțiunea.
Vom iniția acest lucru la zero și apoi vom merge.
Felicitări sunt în ea funcția este gata.
Deci, acum suntem gata să trecem la lucrurile interesante.
Și, de fapt, cel mai important lucru pentru AI este acela de a decide care acțiune să joace
în fiecare moment și fiecare tanty Și exact asta vom face în următorul tutorial prin crearea metodei selective de acțiune.
Asa ca sa facem asta in urmatoarea perioada de munca si pana atunci.