Învățare de consolidare cu agenți Tensorflow [2022]
Publicat: 2021-01-01Învățarea prin întărire a câștigat o popularitate valoroasă odată cu succesul relativ recent al metodei AlphaGo de la DeepMind pentru a-l învinge pe jucătorul Go campion mondial. Metoda AlphaGo a fost educată parțial prin învățare prin consolidare pe rețele neuronale profunde.
Acest stil de învățare este o caracteristică distinctă a învățării automate față de paradigmele clasice supravegheate și nesupravegheate. În învățarea prin consolidare, rețeaua răspunde la datele de mediu (numite stare) folosind rețele neuronale profunde și influențează comportamentul unui agent pentru a încerca să optimizeze o recompensă.
Această tehnică ajută o rețea să învețe cum să joace sport, cum ar fi Atari sau alte jocuri video, sau o altă provocare care poate fi rescrisă ca formă de joc. În acest tutorial, un model comun de învățare prin întărire, voi introduce principiile largi ale învățării Q și voi demonstra cum să încorporez învățarea Q profundă în TensorFlow.
Cuprins
Introducere în învățarea prin întărire
După cum sa menționat mai sus, învățarea prin întărire constă din câteva entități sau principii de bază. Acestea sunt: un mediu care creează o condiție și o recompensă și o entitate care realizează acțiuni în mediul dat. În diagrama de mai jos, vedeți această interacțiune:
Sarcina agentului într-un astfel de cadru este să analizeze starea și informațiile de stimulare pe care le primește și să aleagă un comportament care maximizează inputul pe care îl primește din recompensă. Agentul învață prin contact repetitiv cu lumea sau, cu alte cuvinte, joc repetat.
Pentru a reuși, este necesar ca agentul să:

1. Învață legătura dintre state, comportament și stimulentele rezultate
2. Stabiliți care este cea mai bună mișcare din care să alegeți (1)
Implementarea (1) necesită definirea unui anumit set de principii care pot fi utilizate pentru a notifica (2) și (2) este denumită strategie de funcționare. Una dintre cele mai comune metode de aplicare a (1) și (2) folosind deep Q este rețeaua Deep Q și politica epsilon-greedy.
Aflați: Cele mai populare 5 proiecte TensorFlow pentru începători
Q învățare
Învățarea Q este o modalitate bazată pe valoare de a furniza date pentru a spune ce acțiune poate întreprinde un agent. A crea un tabel care rezumă beneficiile acțiunii în mai multe jocuri într-o stare este un concept inițial intuitiv de generare a principiilor pe care să se bazeze acțiunile. Acest lucru va ține evidența care sunt mișcările cele mai benefice. Pentru început, să luăm în considerare un joc simplu în fiecare stare cu 3 stări și două acțiuni potențiale - o masă poate reprezenta recompensele pentru acest joc:
Acțiunea 1 | Acțiunea 2 | |
Starea 1 | 0 | 10 |
Starea 2 | 10 | 0 |
Starea 3 | 0 | 10 |
Puteți vedea în tabelul de mai sus că pentru acest joc simplu, atunci când agentul este Statul 1 și ia Acțiunea 2, dacă ia Acțiunea 1, va primi o recompensă de 10 dar recompensă zero. În starea 2, condiția este inversată, iar starea 3 seamănă în cele din urmă cu starea 1. Dacă un agent a explorat în mod arbitrar acest joc și a calculat comportamentul a obținut cea mai mare recompensă în oricare dintre cele trei stări (stochând aceste cunoștințe într-o matrice, de exemplu), astfel încât forma practică a tabelului de mai sus va fi cunoscută efectiv.
Cu alte cuvinte, dacă agentul a ales de fapt comportamentul pe care l-a învățat în trecut și care a oferit cea mai mare recompensă (învățând eficient o formă a tabelului de mai sus), ar fi învățat cum să joace jocul în mod eficient. Când este potrivit să construim pur și simplu tabele prin însumare, de ce avem nevoie de idei fanteziste precum învățarea Q și apoi de rețele neuronale?
Recompensă amânată
Ei bine, primul răspuns aparent este că jocul de mai sus este pur și simplu foarte simplu, cu doar 3 stări și 2 acte per stare. Jocurile adevărate sunt mult mai complexe. Principiul recompensei întârziate în cazul de mai sus este celălalt concept semnificativ care lipsește. Un agent trebuie să învețe să poată lua măsuri pentru a juca în mod corespunzător cele mai realiste jocuri, care nu pot duce neapărat la o recompensă, dar pot avea ca rezultat o recompensă semnificativă mai târziu.
Acțiunea 1 | Acțiunea 2 | |
Starea 1 | 0 | 5 |
Starea 2 | 0 | 5 |
Starea 3 | 0 | 5 |
starea 4 | 20 | 0 |
Dacă acțiunea 2 este întreprinsă în toate stările din jocul menționat mai sus, agentul se mută înapoi la starea 1, adică se întoarce la început. În statele 1 până la 3, primește chiar și un credit de 5 în timp ce face acest lucru. Prin urmare, dacă acțiunea 1 este luată în toate statele 1-3, agentul va călători în următorul stat, dar nu va primi o recompensă până când va intra în statul 4, moment în care va primi o recompensă de 20.
Cu alte cuvinte, un agent este mai bine dacă nu ia Acțiunea 2 pentru a obține o recompensă instantanee de 5, ci în schimb poate alege Acțiunea 1 pentru a trece continuu prin stări pentru a obține o recompensă de 20. Agentul dorește să poată pentru a alege acte care au ca rezultat o recompensă întârziată atunci când valoarea recompensei întârziate este prea mare.
Citiți și: Clasificarea imaginilor Tensorflow
Regula de învățare Q
Acest lucru ne încurajează să clarificăm regulile de învățare Q. În învățarea Q profundă, rețeaua neuronală trebuie să ia starea prezentă, s, ca vector și să returneze o valoare Q pentru fiecare comportament potențial, a, în acea stare, adică este necesar să returneze Q(s, a) pentru ambele s și a. Aceste întrebări, a trebuie revizuite în timpul instruirii prin următoarea regulă:
Q(s,a) = Q(s,a) + alp[r+γmax Q(s',a ') – Q(s,a)] + alp[r+ γmax Q(s',a')
Această lege are nevoie de puțină despachetare pentru upgrade. În al doilea rând, puteți vedea că noua valoare a lui Q(s, a) necesită modificarea valorii sale existente prin inserarea unor biți suplimentari în partea dreaptă a ecuației de mai sus. Comutați de la stânga la dreapta. Uită de alfa pentru un timp. În parantezele pătrate, vedem că primul cuvânt este r, care reprezintă premiul câștigat pentru acțiunea în state.

Aceasta este recompensa instantanee; încă nu este implicată o satisfacție amânată. Următorul cuvânt este estimarea stimulentelor amânate. În primul rând, avem valoarea γ care reduce efectul de recompensă întârziat, care este întotdeauna între 0 și 1. Mai multe despre asta într-o secundă. Următorul termen maxa'Q(s, 'a') este valoarea maximă Q disponibilă în următoarea condiție.
Să facem lucrurile puțin mai ușoare – agentul începe în stări, ia acțiunea a, termină în stări, iar apoi codul specifică valoarea maximă a lui Q în stări, adică max a „Q(s”, a”). Atunci de ce este luat în considerare Max un sens „Q(s”, a”)? Dacă intră în vigoare și în starea s, se știe că reprezintă întreaga recompensă posibilă care va ajunge la handler.
Cu toate acestea, γ reduce această valoare pentru a ține cont de faptul că așteptarea unui posibil stimulent pentru totdeauna nu este de dorit pentru agent - este mai bine ca agentul să vizeze cel mai mare premiu cu cel mai puțin timp. Observați că valoarea Q(s',a)' păstrează implicit și cel mai mare stimulent redus pentru economie după aceea, adică Q(s',a)' deoarece menține motivația actualizată pentru starea Q(s',a) ' și așa mai departe.
Acest lucru se datorează faptului că agentul va selecta acțiunea nu numai pe baza recompensei imediate r, ci și pe baza potențialelor stimulente viitoare reduse.
Învățare Q profundă
Învățarea Q profundă urmează legea actualizării învățării Q pe tot parcursul fazei de instruire. Cu alte cuvinte, este creată o rețea neuronală care ia starea s ca intrare, iar apoi rețeaua este antrenată să producă valorile Q(e, a) corespunzătoare pentru fiecare comportament din starea s. Acțiunea agentului va fi apoi selectată prin luarea acțiunii cu cea mai mare valoare Q(e, a) (prin luarea unui argmax de la ieșirea rețelei neuronale). Acest lucru poate fi văzut în primul pas al diagramei de mai jos:
Selectarea acțiunilor și pașii de antrenament – Învățare Q profund

Odată ce acest transfer a fost efectuat și a fost selectată o acțiune, agentul va efectua acțiunea. Agentul va primi apoi feedback cu privire la stimulentul acordat pentru a lua acțiunea din acel stat. În conformitate cu Ghidul Q Learning, următorul pas pe care vrem să-l facem acum este să antrenăm rețeaua. În a doua parte, acest lucru poate fi văzut în diagrama de mai sus.
Vectorul de stare s este tabloul de intrare x pentru antrenamentul în rețea, iar eșantionul de antrenament de ieșire y este vectorul Q(s, a) colectat în timpul procesului de selecție al acțiunii. Cu toate acestea, una dintre valorile Q(s,a), corespunzătoare acțiunii a, este setată să aibă un scop de r+γQ(s',a'), așa cum se poate vedea în figura de mai sus. Antrenând rețeaua în acest mod pentru a spune agentului ce comportament va fi cel mai bun de selectat pentru beneficiul său pe termen lung, vectorul de ieșire Q(s, a) din rețea va deveni mai puternic în timp.
Avantajele învățării prin întărire:
- Învățarea prin consolidare poate fi folosită pentru a rezolva provocări foarte provocatoare care nu pot fi depășite prin abordări convenționale.
- Această strategie este selectată pentru a produce rezultate pe termen lung, care sunt foarte greu de atins.
- Acest model de învățare este oarecum similar cu învățarea ființelor umane. Prin urmare, este aproape de a ajunge la perfecțiune.
- Modelul ar corecta greșelile care au apărut în timpul fazei de testare.
- Dacă o eroare este corectată de model, șansele ca aceeași greșeală să apară sunt puțin mai mici.
- Ar crea cea mai bună paradigmă pentru rezolvarea unei anumite probleme.
Contra învățării prin întărire
- Învățarea prin întărire ca schemă este incorectă în multe privințe diferite, dar tocmai această calitate o face utilă.
- Prea multă învățare prin întărire poate duce la depășirea stărilor, ceea ce poate reduce rezultatele.
- Învățarea prin întărire nu este de preferat să fie folosită pentru a rezolva probleme fundamentale.
- Învățarea prin întărire necesită multă inteligență și o cantitate mare de calcul. Este amândoi de date. De aceea se potrivește atât de bine în jocurile video, astfel încât să poți juca jocul din nou și din nou, și pare posibil să obții o mulțime de detalii.
- Învățarea prin întărire presupune că universul este Markovian, ceea ce nu este. Modelul Markovian descrie o succesiune de evenimente posibile în care probabilitatea fiecărei apariții depinde doar de condiția atinsă în evenimentul anterior.
Ce urmează?
Dacă vrei să stăpânești învățarea automată și să înveți cum să antrenezi un agent să joace tic tac toe, să antrenezi un chatbot etc., consultă cursul de diplomă PG de învățare automată și inteligență artificială de la upGrad.
Ce este TensorFlow?
Python, limbajul de programare folosit în mod popular în învățarea automată, vine cu o bibliotecă vastă de funcții. TensorFlow este o astfel de bibliotecă Python lansată de Google, care acceptă calcule numerice rapide și eficiente. Este o bibliotecă open-source creată și întreținută de Google, care este utilizată pe scară largă pentru a dezvolta modele de Deep Learning. TensorFlow este, de asemenea, utilizat împreună cu alte biblioteci wrapper pentru simplificarea procesului. Spre deosebire de alte biblioteci numerice care sunt folosite și în Deep Learning, TensorFlow a fost dezvoltat atât pentru cercetarea și dezvoltarea de aplicații, cât și pentru funcțiile mediului de producție. Se poate executa pe mașini cu un singur procesor, dispozitive mobile și sisteme computerizate distribuite.
Care sunt alte biblioteci precum TensorFlow în învățarea automată?
În zilele anterioare, inginerii de învățare automată obișnuiau să scrie manual tot codul pentru diferiți algoritmi de învățare automată. Acum, scrierea acelorași linii de cod de fiecare dată pentru algoritmi similari, modele statistice și matematice nu era doar consumatoare de timp, ci și ineficientă și plictisitoare. Ca o soluție, au fost introduse bibliotecile Python pentru a reutiliza funcțiile și a economisi timp. Colecția de biblioteci a lui Python este vastă și versatilă. Unele dintre bibliotecile cele mai frecvent utilizate de Python sunt Theano, Numpy, Scipy, Pandas, Matplotlib, PyTorch, Keras și Scikit-learn, în afară de TensorFlow. Bibliotecile Python sunt, de asemenea, ușor compatibile cu bibliotecile C/C++.
Care sunt avantajele utilizării TensorFlow?
Multe avantaje ale TensorFlow fac din aceasta o opțiune extrem de populară pentru a dezvolta modele de calcul în învățarea profundă și învățarea automată. În primul rând, este o platformă open-source care acceptă formate îmbunătățite de vizualizare a datelor cu prezentarea sa grafică. De asemenea, programatorii îl pot folosi cu ușurință pentru a depana nodurile, ceea ce economisește timp și elimină necesitatea de a examina întreaga lungime a codului rețelei neuronale. TensorFlow acceptă tot felul de operațiuni, iar dezvoltatorii pot construi orice tip de model sau sistem pe această platformă. Este ușor compatibil cu alte limbaje de programare precum Ruby, C++ și Swift.