Q Learning: Lahat ng kailangan mong malaman tungkol sa Reinforcement Learning



Ang artikulong ito ay nagbibigay ng isang detalyado at komprehensibong kaalaman tungkol sa Q-Learning sa pamamagitan ng isang magandang pagkakatulad ng Reinforcement Learning sa pamamagitan ng Python code.

at ay ang ilang mga domain na kabilang sa mga nangungunang buzzword sa industriya at para sa isang magandang dahilan. Lilikha ang AI ng 2.3 milyong mga trabaho sa 2020 na isinasaalang-alang ang pangunahing layunin nito ay upang paganahin ang mga machine na gayahin ang pag-uugali ng tao. Kakaiba di ba? Kaya, ngayon tatalakayin natin ang Q Learning, ang block ng Reinforcement Learning sa sumusunod na pagkakasunud-sunod:

Ano ang Reinforcement Learning?

Tingnan natin ang ating pang-araw-araw na buhay. Gumagawa kami ng maraming mga gawain sa kapaligiran at ang ilan sa mga gawaing iyon ay nagdadala sa amin ng mga gantimpala habang ang ilan ay hindi. Patuloy kaming naghahanap ng iba't ibang mga landas at sinusubukan upang alamin kung aling landas ang hahantong sa mga gantimpala at batay sa aming pagkilos pinapabuti namin ang aming mga diskarte sa pagkamit ng mga layunin. Ito ang aking mga kaibigan ay isa sa pinakasimpleng pagkakatulad ng Reinforcement Learning.





Pangunahing mga lugar ng interes:

  • Kapaligiran
  • Kilos
  • Gantimpala
  • Estado

pag-aaral ng pampatibay - q pag-aaral



Ang Reinforcement Learning ay ang sangay ng pag-aaral ng makina na pinapayagan ang mga system na matuto mula sa mga kinalabasan ng kanilang sariling mga desisyon. Nalulutas nito ang isang partikular na uri ng problema kung saan sunud-sunod ang paggawa ng desisyon, at pangmatagalan ang layunin.

Q-Proseso ng Pag-aaral

Unawain natin kung ano ang natututunan ng Q sa aming pahayag sa problema dito. Tutulungan kami na tukuyin ang mga pangunahing bahagi ng isang pampalakas na solusyon sa pag-aaral na ibig sabihin mga ahente, kapaligiran, pagkilos, gantimpala, at estado.

Automobile Factory Analogy:



Nasa isang Automobile Factory kami na puno ng mga robot. Ang mga robot na ito ay tumutulong sa mga manggagawa sa Pabrika sa pamamagitan ng paghahatid ng mga kinakailangang bahagi na kinakailangan upang tipunin ang isang kotse. Ang iba't ibang mga bahagi ay matatagpuan sa iba't ibang mga lokasyon sa loob ng pabrika sa 9 na mga istasyon. Ang mga bahagi ay may kasamang Chassis, Wheels, Dashboard, Engine at iba pa. Binigyan ng priyoridad ng Factory Master ang lokasyon kung saan ang chassis ay na-install bilang pinakamataas na priyoridad. Tingnan natin ang pag-setup dito:

framework na hinihimok ng keyword sa siliniyum

Estado:

Ang Lokasyon kung saan ang isang robot ay naroroon sa isang partikular na halimbawa ay tinatawag na estado nito. Dahil madali itong mai-code ito sa halip na alalahanin ito sa pamamagitan ng mga pangalan. Ipa-map natin ang lokasyon sa mga numero.

Mga Pagkilos:

Ang mga pagkilos ay walang iba kundi ang mga paggalaw na ginawa ng mga robot sa anumang lokasyon. Isaalang-alang, ang isang robot ay nasa lokasyon ng L2 at ang mga direktang lokasyon kung saan ito maaaring ilipat ay L5, L1 at L3. Mas maintindihan natin ito kung mailarawan natin ito:

Gantimpala:

Isang Gantimpala ang ibibigay sa robot para sa direktang pagpunta mula sa isang estado patungo sa isa pa. Halimbawa, maaari mong maabot ang L5 nang direkta mula sa L2 at kabaliktaran. Kaya, isang gantimpala na 1 ay ibibigay sa alinmang kaso. Tingnan natin ang talahanayan ng gantimpala:

Alalahanin kung kailan Inuna ng Factory Master ang lokasyon ng chassis. Ito ay L7, kaya isasama namin ang katotohanang ito sa aming talahanayan ng mga gantimpala. Kaya, magtatalaga kami ng napakalaking numero (999 sa aming kaso) sa lokasyon ng (L7, L7).

kailan gagamitin ito sa java

Equation ng Bellman

Ngayon ipagpalagay na ang isang robot ay kailangang pumunta mula sa puntong A hanggang B. Pipiliin nito ang landas na magbubunga ng positibong gantimpala. Para sa palagay na nagbibigay kami ng isang gantimpala sa mga tuntunin ng bakas ng paa para sundin ito.

Ngunit paano kung ang robot ay nagsisimula mula sa kung saan sa pagitan ng kung saan ito makakakita ng dalawa o higit pang mga landas. Ang robot ay maaaring hindi kumuha ng desisyon at pangunahing nangyayari ito dahil wala itong a alaala . Dito makikita ang larawan sa Equation ng Bellman.

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

Kung saan:

  • s = isang partikular na estado
  • a = aksyon
  • s '= estado kung saan papunta ang robot mula sa s
  • & # 120632 = kadahilanan ng diskwento
  • R (s, a) = isang paggana ng gantimpala na tumatagal ng isang (mga) estado at aksyon (a) at naglalabas ng isang halaga ng gantimpala
  • V (s) = halaga ng pagiging nasa isang partikular na estado

Ngayon ang bloke sa ibaba ng patutunguhan ay magkakaroon ng gantimpala na 1, na kung saan ay ang pinakamataas na gantimpala, Ngunit paano ang iba pang bloke? Sa gayon, dito nagmumula ang kadahilanan ng diskwento. Ipagpalagay natin ang isang factor ng diskwento na 0.9 at punan ang isa-isa sa lahat ng mga bloke.

Markov Proseso ng Desisyon

Isipin ang isang robot ay nasa orange block at kailangang maabot ang patutunguhan. Ngunit kahit na mayroong isang bahagyang pagkadepektibo ang robot ay malilito tungkol sa aling landas ang dadalhin sa halip na umakyat.

Kaya kailangan nating baguhin ang proseso ng paggawa ng desisyon. Kailangang Bahagyang Random at Bahagyang nasa ilalim ng kontrol ng robot . Bahagyang Random sapagkat hindi namin alam kung kailan ang robot ay magdepekto at Bahagyang kontrolado dahil ito pa rin ang desisyon ng robot. At ito ang bumubuo ng batayan para sa Proseso ng Desisyon ng Markov.

Ang isang Markov na proseso ng pagpapasya (MDP) ay isang discrete time na proseso ng stochastic control. Nagbibigay ito ng isang balangkas ng matematika para sa pagmomodelo ng paggawa ng desisyon sa mga sitwasyon kung saan ang mga kinalabasan ay bahagyang sapalaran at bahagyang nasa ilalim ng kontrol ng isang gumagawa ng desisyon.

Gagamitin namin ang aming orihinal na equation ng Bellman at gagawa ng mga pagbabago dito. Ang hindi namin alam ay ang susunod na estado na ie. s ’. Ang alam natin ay ang lahat ng mga posibilidad ng isang pagliko at baguhin natin ang Equation.

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 ’): Ang posibilidad ng paglipat mula sa estado s sa s ’ may aksyon sa

& Sigmas ’P (s, a, s ’) V (s ’): Mga Inaasahan ng Randomness ng Robot

V (s) = max (R (s, a) + & # 120632 ((0.8V (silidpataas)) + (0.1V (silidpababa) +….))

Ngayon, Lumipat tayo sa Q Learning. Ang Q-Learning ay naglalagay ng isang ideya ng pagtatasa ng kalidad ng isang aksyon na isinagawa upang lumipat sa isang estado sa halip na matukoy ang posibleng halaga ng estado kung saan ito inililipat.

Ito ang makukuha natin kung isasama natin ang ideya ng pagtatasa ng kalidad ng mga aksyon para sa paglipat sa isang tiyak na estado. Mula sa na-update na Equation ng Bellman kung aalisin namin ang mga ito max bahagi, ipinapalagay namin ang isang bakas lamang ng paa para sa posibleng pagkilos na walang anuman kundi ang Kalidad ng aksyon.

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

Sa equation na ito na Quantify ang Marka ng pagkilos, maaari naming ipalagay na ang V (s) ay ang maximum ng lahat ng mga posibleng halaga ng Q (s, a). Kaya't palitan natin ang v (s ') ng isang pagpapaandar ng Q ().

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

Kami ay isang hakbang lamang malapit sa aming huling Equation ng Q Learning. Ipapakilala na namin ang a Pagkakaiba sa Pansamantala upang makalkula ang mga Q-halaga na may paggalang sa mga pagbabago sa kapaligiran sa paglipas ng panahon. Ngunit paano natin inoobserbahan ang pagbabago sa Q?

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

Kinakalkula ulit namin ang bagong Q (s, a) na may parehong formula at binabawas ang dating kilalang Q (s, a) mula rito. Kaya, ang equation sa itaas ay nagiging:

maaari mong gamitin ang klase ng printwriter upang buksan ang isang file para sa pagsulat at pagsulat dito ng data.

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

Qt(s, a) = Kasalukuyang Q-halaga

Qt-1(s, a) = Nakaraang halaga ng Q

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

Q Demo ng Pag-aaral: NumPy

Gagamitin ko NumPy upang ipakita kung paano gumagana ang Q Learning.

Hakbang 1: Mga Pag-import, Parameter, Estado, Pagkilos, at Mga Gantimpala

import numpy as np gamma = 0.75 # Discount factor alpha = 0.9 # Learning rate location_to_state = {'L1': 0, 'L2': 1, 'L3': 2, 'L4': 3, 'L5': 4, ' L6 ': 5,' L7 ': 6,' L8 ': 7,' L9 ': 8} mga aksyon = [0,1,2,3,4,5,6,7,8] mga gantimpala = np.array ( [[0,1,0,0,0,0,0,0,0], [1,0,1,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]])

Hakbang 2: Mga indeks ng Mapa sa mga lokasyon

state_to_location = dict ((state, location) para sa lokasyon, estado sa location_to_state.items ())

Hakbang 3: Kumuha ng Optimal Route gamit ang Q Learning Process

def get_optimal_route (start_location, end_location): rewards_new = np.copy (rewards) ending_state = location_to_state [end_location] rewards_new [ending_state, ending_state] = 999 Q = np.array (np.zeros ([9,9])) # Q- Proseso ng pag-aaral para sa ako sa saklaw (1000): # Pagkuha ng isang random na kasalukuyang estado_state = np.random.randint (0,9) # Hindi isinasama ng # Python ang itaas na nakagagamot na maaaring i-play = =] # Iterating sa pamamagitan ng bagong matrix ng gantimpala para sa j sa saklaw ( 9): kung rewards_new [current_state, j]> 0: playable_actions.append (j) # Pumili ng isang random na aksyon na hahantong sa amin sa susunod na estado na 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] # Ina-update ang Q-Value gamit ang Bellman equation Q [current_state, next_state] + = alpha * TD # Simulan ang pinakamainam na ruta sa pagsisimula ng ruta ng lokasyon = [start_location] #Ipasimula ang susunod na paglalagay sa pagsisimula ng lokasyon na next_location = star t_location # Hindi namin alam ang tungkol sa eksaktong bilang ng mga pag-ulit na kinakailangan upang maabot ang pangwakas na lokasyon samakatuwid habang ang loop ay magiging isang mahusay na pagpipilian para sa pag-ulit habang (next_location! = end_location): # Kunin ang panimulang estado na nagsisimula_state = lokasyon_to_state [start_location] # Kunin ang pinakamataas na Q-halaga na nauukol sa pagsisimula ng estado na next_state = np.argmax (Q [simula_state,]) # Nakuha namin ang index ng susunod na estado. Ngunit kailangan namin ang kaukulang sulat. next_location = state_to_location [next_state] ruta.append (next_location) # I-update ang panimulang lokasyon para sa susunod na pag-ulit ng start_location = susunod_location return ruta

Hakbang 4: I-print ang Ruta

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

Output:

Sa pamamagitan nito, natapos namin ang Q-Learning. Inaasahan kong malaman mo ang pagtatrabaho ng Q Learning kasama ang iba't ibang mga dependency doon tulad ng temporal na Pagkakaiba, Bellman Equation at marami pa.

Edureka’s Ginagawa kang sanay sa mga diskarteng tulad ng Pinamamahalaang Pag-aaral, Hindi Pinapamahalaang Pag-aaral, at Pagproseso ng Likas na Wika. Kasama rito ang pagsasanay sa pinakabagong mga pagsulong at panteknikal na diskarte sa Artipisyal na Pag-intelektuwal at Pag-aaral ng Makina tulad ng Deep Learning, Mga Modelong Grapiko at Pag-aaral ng Patatag.