Î Învățare: Tot ce trebuie să știți despre învățarea prin întărire



Acest articol oferă o cunoaștere detaliată și cuprinzătoare a Q-Learning printr-o frumoasă analogie a Reinforcement Learning prin codul Python.

și sunt câteva domenii care se numără printre cele mai bune cuvinte cheie din industrie și dintr-un motiv bun. AI va crea 2,3 milioane de locuri de muncă până în 2020, având în vedere că obiectivul său principal este de a permite mașinilor să imite comportamentul uman. Ciudat, nu-i așa? Deci, astăzi vom discuta despre Q Learning, elementul de bază al Învățării prin întărire în următoarea ordine:

Ce este învățarea prin întărire?

Să aruncăm o privire asupra vieții noastre de zi cu zi. Efectuăm numeroase sarcini în mediu și unele dintre aceste sarcini ne aduc recompense, în timp ce altele nu. Continuăm să căutăm căi diferite și încercăm să aflăm ce cale va duce la recompense și, pe baza acțiunii noastre, ne îmbunătățim strategiile de atingere a obiectivelor. Prietenii mei sunt una dintre cele mai simple analogii cu învățarea prin întărire.





Domenii cheie de interes:

  • Mediu inconjurator
  • Acțiune
  • Răsplată
  • Stat

învățare prin întărire - învățare q



Învățarea prin întărire este ramura învățării automate care permite sistemelor să învețe din rezultatele propriilor decizii. Rezolvă un anumit tip de problemă în care luarea deciziilor este secvențială, iar obiectivul este pe termen lung.

Procesul Q-Learning

Să înțelegem ce învață Q cu enunțul nostru de problemă aici. Ne va ajuta să definim principalele componente ale unei soluții de învățare de consolidare, adică agenți, mediu, acțiuni, recompense și stări.

Analogia fabricii de automobile:



Suntem la o fabrică de automobile plină de roboți. Acești roboți îi ajută pe muncitorii din fabrică transportând piesele necesare pentru asamblarea unei mașini. Aceste părți diferite sunt situate în locații diferite din fabrică în 9 stații. Piesele includ șasiu, roți, tablou de bord, motor și așa mai departe. Factory Master a acordat prioritate locației în care se instalează șasiul ca fiind cea mai mare prioritate. Să aruncăm o privire la configurare aici:

Statele:

Locația în care un robot este prezent la o anumită instanță se numește starea sa. Deoarece este ușor să îl codificați mai degrabă decât să îl amintiți după nume. Să mapăm locația la numere.

Acțiuni:

Acțiunile nu sunt altceva decât mișcările făcute de roboți în orice locație. Luați în considerare, un robot se află în locația L2, iar locațiile directe în care se poate deplasa sunt L5, L1 și L3. Să înțelegem mai bine acest lucru dacă vizualizăm acest lucru:

care este diferența dintre xml și html

Recompense:

O recompensă va fi acordată robotului pentru a merge direct dintr-o stare în alta. De exemplu, puteți ajunge la L5 direct din L2 și invers. Deci, o recompensă de 1 va fi furnizată în ambele cazuri. Să aruncăm o privire la tabelul de recompense:

Amintiți-vă când Factory Master a acordat prioritate locației șasiului. Era L7, așa că vom încorpora acest fapt în tabelul nostru de recompense. Deci, vom atribui un număr foarte mare (999 în cazul nostru) în locația (L7, L7).

Ecuația Bellman

Acum, să presupunem că un robot trebuie să meargă de la punctul A la B. Acesta va alege calea care va da o recompensă pozitivă. Să presupunem că oferim o recompensă în ceea ce privește amprenta pentru ca aceasta să fie urmată.

ce este hibernat în java

Dar dacă robotul pornește de undeva între unde poate vedea două sau mai multe căi. Astfel, robotul nu poate lua o decizie și acest lucru se întâmplă în primul rând pentru că nu are un memorie . Aici intervine imaginea ecuației Bellman.

V (s) = max (R (s, a) + & # 120632V (s ’))

Unde:

  • s = o stare anume
  • a = action
  • s '= starea în care robotul trece de la s
  • & # 120632 = factor de reducere
  • R (s, a) = o funcție de recompensă care ia o stare (e) și o acțiune (a) și produce o valoare de recompensă
  • V (s) = valoarea de a fi într-o anumită stare

Acum, blocul de sub destinație va avea o recompensă de 1, care este cea mai mare recompensă, dar ce rămâne cu celălalt bloc? Ei bine, aici intervine factorul de reducere. Să presupunem un factor de reducere de 0,9 și să completăm toate blocurile unul câte unul.

Procesul decizional Markov

Imaginați-vă că un robot se află pe blocul portocaliu și trebuie să ajungă la destinație. Dar chiar dacă există o ușoară disfuncție, robotul va fi confuz cu privire la ce cale să urmeze, mai degrabă decât să urce.

Deci, trebuie să modificăm procesul decizional. Trebuie sa Parțial aleatoriu și Parțial sub controlul robotului . Parțial aleatoriu, deoarece nu știm când robotul va funcționa și parțial sub control, deoarece este încă decizia robotului. Și aceasta reprezintă baza procesului decizional Markov.

Un proces decizional Markov (MDP) este un proces discret de control stocastic în timp. Acesta oferă un cadru matematic pentru modelarea luării deciziilor în situații în care rezultatele sunt parțial aleatorii și parțial sub controlul unui factor de decizie.

Deci, vom folosi ecuația noastră originală Bellman și vom face modificări în ea. Ceea ce nu știm este următoarea stare, adică. s ’. Ceea ce știm sunt toate posibilitățile unui viraj și să schimbăm ecuația.

V (s) = max (R (s, a) + & # 120632 V (s ’))

V (s) = max (R (s, a) + & # 120632 & Sigmas ’P (s, a, s ’) V (s)))

P (s, a, s ’): Probabilitatea de a trece de la stat s la s ’ cu acțiune la

& Sigmas ’P (s, a, s ’) V (s): Așteptări aleatorii ale robotului

V (s) = max (R (s, a) + & # 120632 ((0,8V (cameră.)sus)) + (0,1V (camerăjos) + ....))

Acum, să trecem la Q Learning. Q-Learning își propune să evalueze calitatea unei acțiuni care este întreprinsă pentru a trece la o stare, mai degrabă decât a determina valoarea posibilă a stării în care este mutată.

Aceasta este ceea ce obținem dacă încorporăm ideea evaluării calității acțiunilor pentru trecerea la o anumită stare. Din ecuația Bellman actualizată dacă le eliminăm max componentă, presupunem o singură amprentă pentru o posibilă acțiune care nu este altceva decât Calitate a acțiunii.

Q (s, a) = (R (s, a) + & # 120632 & Sigmas ’P (s, a, s ’) V (s)))

În această ecuație care cuantifică calitatea acțiunii, putem presupune că V (s) este maximul tuturor valorilor posibile ale lui Q (s, a). Deci, să înlocuim v (s) cu o funcție de Q ().

Q (s, a) = (R (s, a) + & # 120632 & Sigmas ’P (s, a, s ’) Q maxim (s ’, a’))

Suntem la doar un pas aproape de ecuația noastră finală de învățare Q. Vom introduce un Diferența temporală pentru a calcula valorile Q în raport cu schimbările din mediu în timp. Dar cum observăm schimbarea în Q?

TD (s, a) = (R (s, a) + & # 120632 & Sigmas ’P (s, a, s ’) max Q (s ’, a’)) - Q (s, a)

Recalculăm noul Q (s, a) cu aceeași formulă și scădem din acesta Q (s, a) cunoscut anterior. Deci, ecuația de mai sus devine:

Ît(s, a) = Qt-1(s, a) + α TDt(s, a)

Ît(s, a) = Valoarea Q curentă

Ît-1(s, a) = Valoarea Q anterioară

Ît(s, a) = Qt-1(s, a) + α (R (s, a) + & # 120632 Q max (s ’, a’)-Ît-1(s, a))

Q Demo de învățare: NumPy

Voi folosi NumPy pentru a demonstra cum funcționează Q Learning.

cadru hibrid în seleniu webdriver

Pasul 1: Importuri, parametri, state, acțiuni și recompense

import numpy ca np gamma = 0,75 # Factor de reducere alfa = 0,9 # Rată de învățare location_to_state = {'L1': 0, 'L2': 1, 'L3': 2, 'L4': 3, 'L5': 4, ' L6 ': 5,' L7 ': 6,' L8 ': 7,' L9 ': 8} acțiuni = [0,1,2,3,4,5,6,7,8] recompense = np.array ( [[0,1,0,0,0,0,0,0,0,0], [1,0,1,0,0,0,0,0,0,0], [0,1,0,0, 0,1,0,0,0], [0,0,0,0,0,0,1,0,0], [0,1,0,0,0,0,0,1,0] , [0,0,1,0,0,0,0,0,0], [0,0,0,1,0,0,0,1,0], [0,0,0,0, 1,0,1,0,1], [0,0,0,0,0,0,0,1,0]])

Pasul 2: Hartați indicii către locații

state_to_location = dict ((state, location) pentru locație, state în location_to_state.items ())

Pasul 3: Obțineți o rută optimă utilizând procesul de învățare Q

def get_optimal_route (start_location, end_location): recompense_new = np.copy (recompense) ending_state = location_to_state [end_location] recompense_new [end_state, end_state] = 999 Q = np.array (np.zeros ([9,9])) # Q- Proces de învățare pentru i în intervalul (1000): # Ridicarea unei stări aleatorii current_state = np.random.randint (0,9) # Python exclude limita superioară playable_actions = [] # Iterarea prin noua matrice de recompense pentru j în interval ( 9): if rewards_new [current_state, j]> 0: playable_actions.append (j) # Alegeți o acțiune aleatorie care ne va duce la starea următoare next_state = np.random.choice (playable_actions) # Computing Temporal Difference TD = rewards_new [current_state , next_state] + gamma * Q [next_state, np.argmax (Q [next_state,])] - Q [current_state, next_state] # Actualizarea valorii Q utilizând ecuația Bellman Q [current_state, next_state] + = alpha * TD # Inițializați ruta optimă cu ruta de locație de pornire = [start_location] #Initialize next_location cu locația de start next_location = stea t_location # Nu știm despre numărul exact de iterații necesare pentru a ajunge la locația finală, prin urmare, în timp ce bucla va fi o alegere bună pentru iterație în timp ce (next_location! = end_location): # Preluarea stării de pornire stat_stare = locație_to_stat [start_locare] # Obțineți cea mai mare valoare Q referitoare la starea de pornire next_state = np.argmax (Q [start_state,]) # Am obținut indexul stării următoare. Dar avem nevoie de litera corespunzătoare. next_location = state_to_location [next_state] route.append (next_location) # Actualizați locația de pornire pentru următoarea iterație start_location = next_location ruta de returnare

Pasul 4: Imprimați ruta

print (get_optimal_route ('L1', 'L9'))

Ieșire:

Cu aceasta, ajungem la sfârșitul Q-Learning. Sper că ați cunoscut funcționarea Q Learning împreună cu diferitele dependențe care există, cum ar fi diferența temporală, ecuația Bellman și multe altele.

Edureka’s vă face să cunoașteți tehnici precum învățarea supravegheată, învățarea nesupravegheată și procesarea limbajului natural. Acesta include instruire cu privire la cele mai recente progrese și abordări tehnice în inteligența artificială și învățarea automată, cum ar fi învățarea profundă, modelele grafice și învățarea prin întărire.