Q mokymasis: viskas, ką reikia žinoti apie mokymąsi sustiprinti



Šiame straipsnyje pateikiamos išsamios ir išsamios žinios apie Q-mokymąsi pagal gražią „Reinforcement Learning“ per „Python“ kodą analogiją.

ir yra keletas domenų, kurie yra tarp populiariausių šios srities žinomų žodžių ir dėl geros priežasties. Dirbtinis intelektas iki 2020 m. Ketina sukurti 2,3 mln. Darbo vietų, atsižvelgiant į jo pagrindinį tikslą - leisti mašinoms imituoti žmogaus elgesį. Keista, ar ne? Taigi, šiandien mes ketiname aptarti „Q Learning“, mokymosi sustiprinimo pagrindą, tokia tvarka:

Kas yra mokymasis sustiprinti?

Pažvelkime į savo kasdienį gyvenimą. Mes atliekame daugybę užduočių aplinkoje, o kai kurios iš jų atneša mums naudą, o kai kurios ne. Mes nuolat ieškome skirtingų kelių ir bandome išsiaiškinti, kuris kelias lems atlygį, ir, remdamiesi savo veiksmais, tobuliname strategijas tikslams pasiekti. Tai mano draugai yra viena paprasčiausių mokymosi sustiprinimo analogijų.





Pagrindinės interesų sritys:

„qlikview“ pamoka žingsnis po žingsnio
  • Aplinka
  • Veiksmas
  • Atlygis
  • Valstija

mokymasis sustiprinimas - q mokymasis



Sustiprinantis mokymasis yra mašininio mokymosi šaka, leidžianti sistemoms mokytis iš jų pačių sprendimų rezultatų. Tai išsprendžia tam tikrą problemą, kai sprendimai priimami nuosekliai, o tikslas yra ilgalaikis.

Q mokymosi procesas

Supraskime, kas yra Q mokymasis, pateikdami čia savo problemos teiginį. Tai padės mums apibrėžti pagrindinius mokymosi sustiprinimo sprendimo komponentus, ty agentus, aplinką, veiksmus, atlygius ir būsenas.

Automobilių gamyklos analogija:



Mes esame automobilių gamykloje, užpildytoje robotais. Šie robotai padeda fabriko darbuotojams perteikti reikalingas detales, reikalingas automobilio surinkimui. Šios skirtingos dalys yra skirtingose ​​gamyklos vietose 9 stotyse. Dalys yra važiuoklė, ratai, prietaisų skydelis, variklis ir pan. „Factory Master“ pirmenybę teikė vietai, kurioje montuojamos važiuoklės. Pažvelkime į sąranką čia:

Valstybės:

Vieta, kurioje robotas yra tam tikrame egzemplioriuje, vadinama jos būsena. Kadangi jį lengva koduoti, o ne prisiminti vardais. Žemėlapį suskirstykime pagal numerius.

Veiksmai:

Veiksmai yra ne kas kita, o robotų judėjimai į bet kurią vietą. Apsvarstykite, ar robotas yra L2 vietoje, o tiesioginės vietos, į kurias jis gali judėti, yra L5, L1 ir L3. Supraskime tai geriau, jei tai vizualizuosime:

Apdovanojimai:

Robotui bus suteikta premija, kad jis eis tiesiai iš vienos būsenos į kitą. Pavyzdžiui, L5 galite pasiekti tiesiai iš L2 ir atvirkščiai. Taigi, abiem atvejais bus suteiktas atlygis 1. Pažvelkime į atlygio lentelę:

Prisiminkite, kai gamyklos meistras pirmenybę suteikė važiuoklės vietai. Tai buvo L7, todėl šį faktą ketiname įtraukti į savo atlygio lentelę. Taigi (L7, L7) vietoje priskirsime labai didelį skaičių (mūsų atveju 999).

Bellmano lygtis

Dabar tarkime, kad robotas turi pereiti iš taško A į B. Jis pasirinks kelią, kuris duos teigiamą atlygį. Tarkime, kad mes suteikiame atlygį už pėdsakus, kad jis galėtų sekti.

Bet ką daryti, jei robotas prasideda kažkur tarp jų, kur jis gali pamatyti du ar daugiau kelių. Taigi robotas negali priimti sprendimo ir tai pirmiausia atsitinka todėl, kad jis neturi a atmintis . Čia atsiranda Bellmano lygtis.

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

Kur:

  • s = tam tikra būsena
  • a = veiksmas
  • s '= būsena, į kurią robotas pereina iš s
  • & # 120632 = nuolaidos koeficientas
  • R (s, a) = atlygio funkcija, kuri ima būseną (-as) ir veiksmą (a) ir pateikia atlygio vertę
  • V (s) = buvimo tam tikroje būsenoje vertė

Dabar už paskirties vietos esančiame bloke bus 1 atlygis, kuris yra didžiausias atlygis. Bet kaip su kitu bloku? Na, čia atsiranda diskonto koeficientas. Tarkime, kad diskonto koeficientas yra 0,9 ir užpildykite visus blokus po vieną.

Markovo sprendimo procesas

Įsivaizduokite, kad robotas yra ant oranžinio bloko ir turi pasiekti tikslą. Bet net jei yra nedidelė disfunkcija, robotas bus supainiotas, kurį kelią pasirinkti, o ne eiti.

Taigi turime modifikuoti sprendimų priėmimo procesą. Turi Iš dalies atsitiktinis ir Iš dalies valdomas roboto . Iš dalies atsitiktinis, nes mes nežinome, kada robotas veiks netinkamai, ir iš dalies kontroliuojamas, nes tai vis dar roboto sprendimas. Ir tai sudaro Markovo sprendimo proceso pagrindą.

Markovo sprendimo procesas (MDP) yra diskretus laiko stochastinis kontrolės procesas. Tai suteikia matematinę sistemą sprendimų priėmimui modeliuoti situacijose, kai rezultatai yra iš dalies atsitiktiniai ir iš dalies kontroliuojami sprendimus priimančio asmens.

Taigi mes naudosime savo pradinę Bellman lygtį ir atliksime joje pakeitimus. Tai, ko mes nežinome, yra kita valstybė, t. s ’. Tai, ką mes žinome, yra visos posūkio galimybės ir pakeiskime lygtį.

V (s) = maks. (R (s, a) + ir # 120632 V (s))

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

P (s, a, s ’): Tikimybė pereiti iš valstybės s į s ’ su veiksmu į

& Sigmas ’P (s, a, s ’) V (s): Roboto atsitiktinumo lūkesčiai

galų gale užbaigti java

V (s) = max (R (s, a) + & # 120632 ((0,8 V (kambarysaukštyn)) + (0,1 V (kambarysžemyn) +….))

Dabar pereikime prie Q mokymosi. „Q-Learning“ kelia idėją įvertinti veiksmo, kurio imamasi siekiant pereiti į būseną, kokybę, o ne nustatyti galimą būsenos, į kurią perkeliama, vertę.

Tai mes gauname, jei įtraukiame idėją įvertinti perėjimo į tam tikrą valstybę veiksmų kokybę. Iš atnaujintos Bellmano lygties, jei jas pašalinsime maks komponentas, mes prisiimame tik vieną galimo veiksmo pėdsaką, kuris yra ne kas kita Kokybė veiksmo.

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

Šioje veiksmo kokybę kiekybiškai apibūdinančioje lygtyje galime daryti prielaidą, kad V (s) yra didžiausia visų galimų Q (s, a) reikšmių vertė. Taigi pakeiskime v (s ’) Q () funkcija.

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

Mes esame tik vienas žingsnis arti savo galutinės Q mokymosi lygties. Mes ketiname pristatyti a Laikinasis skirtumas apskaičiuoti Q reikšmes atsižvelgiant į aplinkos pokyčius bėgant laikui. Bet kaip mes stebime Q pokytį?

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

Perskaičiuojame naująjį Q (s, a) ta pačia formule ir atimame iš jo anksčiau žinomus Q (s, a). Taigi, aukščiau pateikta lygtis tampa:

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

Klausimast(s, a) = Dabartinė Q vertė

Klausimast-1(s, a) = Ankstesnė Q vertė

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

Q mokymosi demonstracija: NumPy

Aš ketinu naudoti „NumPy“ parodyti, kaip veikia „Q Learning“.

1 veiksmas: importas, parametrai, būsenos, veiksmai ir atlygiai

importuoti numerį kaip np gamma = 0,75 # Nuolaidos koeficientas alfa = 0,9 # Mokymosi greičio vieta_įskaita = {'L1': 0, 'L2': 1, 'L3': 2, 'L4': 3, 'L5': 4, ' L6 ': 5,' L7 ': 6,' L8 ': 7,' L9 ': 8} veiksmai = [0,1,2,3,4,5,6,7,8] atlygiai = np.array ( [[0,1,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]])

2 žingsnis: Susiekite vietų indeksus

state_to_location = dict ((valstija, vieta) vietai, būsena location_to_state.items ())

3 žingsnis: Gaukite optimalų maršrutą naudodami „Q“ mokymosi procesą

def get_optimal_route (start_location, end_location): naudos_new = np.copy (atlygiai) end_state = location_to_state [end_location] atlygio_new [end_state, end_state] = 999 Q = np.array (np.zeros ([9,9])) # Q- Mokymosi procesas i diapazone (1000): # Atsitiktinės būsenos pasiėmimas current_state = np.random.randint (0,9) # Python neįtraukia viršutinės ribos playable_actions = [] # Kartojamas per naują atlygio matricą j diapazone ( 9): if rewards_new [current_state, j]> 0: playable_actions.append (j) # Pasirinkite atsitiktinį veiksmą, kuris nukreips mus į kitą būseną next_state = np.random.choice (playable_actions) # Laikino skirtumo skaičiavimas TD = atlygis_new [current_state , next_state] + gama * Q [next_state, np.argmax (Q [next_state,])] - Q [current_state, next_state] # Q reikšmės atnaujinimas naudojant Bellmano lygtį Q [current_state, next_state] + = alfa * TD # Inicializuokite optimalų maršrutą naudodami pradinės vietos maršrutą = [start_location] # Inicializuokite next_location su pradine vieta next_location = žvaigždutė t_location # Mes nežinome tikslaus pasikartojimų, reikalingų norint pasiekti galutinę vietą, skaičiaus, taigi ciklas bus geras pasirinkimas kartojant, kol (next_location! = end_location): # Gaukite pradinę būseną start_state = location_to_state [start_location] # Gaukite didžiausią Q reikšmę, susijusią su pradine būsena next_state = np.argmax (Q [start_state,]) # Gavome kitos būsenos indeksą. Bet mums reikia atitinkamos raidės. next_location = state_to_location [next_state] route.append (next_location) # Atnaujinkite kitos iteracijos pradžios vietą start_location = next_location grįžimo maršrutas

4 žingsnis: išspausdinkite maršrutą

spausdinti (get_optimal_route ('L1', 'L9'))

Išvestis:

Tuo mes baigiame Q-mokymąsi. Tikiuosi, kad jūs sužinojote „Q Learning“ darbą kartu su įvairiomis priklausomybėmis, tokiomis kaip laikinis skirtumas, „Bellman“ lygtis ir dar daugiau.

java komanda baigti programą

„Edureka“ leidžia jums išmanyti tokias technikas kaip prižiūrimas mokymasis, neprižiūrimas mokymasis ir natūralios kalbos apdorojimas. Tai apima mokymus apie naujausius dirbtinio intelekto ir mašininio mokymosi pasiekimus ir techninius metodus, tokius kaip gilus mokymasis, grafiniai modeliai ir mokymasis sustiprinti.