Q Learning: Všetko, čo potrebujete vedieť o Reinforcement Learning



Tento článok poskytuje podrobné a komplexné vedomosti o Q-Learningu prostredníctvom nádhernej analógie Reinforcement Learningu prostredníctvom kódu Pythonu.

a je niekoľko domén, ktoré patria medzi top módnych slov v priemysle, a to z dobrého dôvodu. AI do roku 2020 vytvorí 2,3 milióna pracovných miest, pretože jej hlavným cieľom je umožniť strojom napodobňovať ľudské správanie. Zvláštne, však? Takže dnes budeme diskutovať o Q Learning, stavebnom prvku Reinforcement Learning, v nasledujúcom poradí:

Čo je posilňovacie učenie?

Pozrime sa na náš každodenný život. Vykonávame množstvo úloh v prostredí a niektoré z nich nám prinášajú odmeny, zatiaľ čo iné nie. Neustále hľadáme rôzne cesty a snažíme sa zistiť, ktorá cesta povedie k odmenám, a na základe našich krokov vylepšujeme svoje stratégie pri dosahovaní cieľov. Toto sú moji priatelia jednou z najjednoduchších analógií Reinforcement Learning.





Kľúčové oblasti záujmu:

  • Životné prostredie
  • Akcia
  • Odmena
  • Štát

posilnenie učenia - q učenie



Reinforcement Learning je odvetvie strojového učenia, ktoré umožňuje systémom učiť sa z výsledkov svojich vlastných rozhodnutí. Rieši konkrétny druh problému, pri ktorom je rozhodovanie postupné a cieľ je dlhodobý.

Proces Q-učenia

Poďme pochopiť, čo je Q učenie, s naším vyhlásením o probléme tu. Pomôže nám to definovať hlavné súčasti posilňovacieho učebného riešenia, t. J. Agentov, prostredie, akcie, odmeny a stavy.

Analógia automobilky:



Sme v automobilke plnej robotov. Tieto roboty pomáhajú robotníkom pri preprave potrebných častí potrebných na zostavenie automobilu. Tieto rôzne diely sú umiestnené na rôznych miestach v továrni na 9 staniciach. Medzi tieto diely patrí podvozok, kolesá, palubná doska, motor atď. Factory Master určil ako najvyššiu prioritu miesto, kde sa inštaluje šasi. Pozrime sa na nastavenie tu:

Štáty:

analýza XML súboru v Jave

Miesto, kde je robot v konkrétnej inštancii, sa nazýva jeho stav. Pretože je ľahké ho kódovať, a nie pamätať si ho podľa mien. Mapujme miesto na čísla.

Akcie:

Akcie nie sú nič iné ako pohyby robotov na akékoľvek miesto. Zvážte, že robot je na mieste L2 a priame miesta, do ktorých sa môže pohybovať, sú L5, L1 a L3. Poďme to lepšie pochopiť, ak si to predstavíme:

Odmeny:

Robot dostane odmenu za to, že prešiel priamo z jedného štátu do druhého. Napríklad na L5 sa môžete dostať priamo z L2 a naopak. V obidvoch prípadoch bude poskytnutá odmena 1. Pozrime sa na tabuľku odmien:

Pamätajte si, keď Factory Master určil prioritu umiestnenia podvozku. Bola to L7, takže túto skutočnosť začleníme do našej tabuľky odmien. Takže priradíme veľmi veľké číslo (v našom prípade 999) na miesto (L7, L7).

Bellmanova rovnica

Teraz predpokladajme, že robot musí ísť z bodu A do B. Vyberie si cestu, ktorá prinesie pozitívnu odmenu. Z tohto dôvodu poskytujeme odmenu v podobe stopy, ktorú bude nasledovať.

Čo však v prípade, že robot začína od miesta, kde vidí dve alebo viac dráh. Robot tak nemôže prijať rozhodnutie a primárne sa to stane, pretože nemá Pamäť . Tu vstupuje do obrazu Bellmanova rovnica.

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

aký je najlepší java ide

Kde:

  • s = konkrétny stav
  • a = akcia
  • s '= stav, do ktorého robot prejde zo s
  • & # 120632 = faktor zľavy
  • R (s, a) = funkcia odmeny, ktorá prevezme stav (y) a akciu (a) a na výstup vydá hodnotu odmeny
  • V (s) = hodnota bytia v konkrétnom stave

Teraz bude blok pod cieľom mať odmenu 1, čo je najvyššia odmena. Čo však s ďalším blokom? Tu prichádza na rad faktor zľavy. Predpokladajme faktor zľavy 0,9 a postupne vyplňme všetky bloky.

Markovov rozhodovací proces

Predstavte si, že robot je na oranžovom bloku a musí sa dostať do cieľa. Ale aj keď dôjde k miernej dysfunkcii, robot bude skôr zmätený, akou cestou sa má vydať, ako ísť hore.

Musíme teda upraviť rozhodovací proces. Musí Čiastočne náhodné a Čiastočne pod kontrolou robota . Čiastočne náhodne, pretože nevieme, kedy bude robot nefunkčný, a čiastočne pod kontrolou, pretože je to stále rozhodnutie robota. A to tvorí základ pre Markovov rozhodovací proces.

Markovov rozhodovací proces (MDP) je diskrétny časovo stochastický riadiaci proces. Poskytuje matematický rámec pre modelovanie rozhodovania v situáciách, keď sú výsledky čiastočne náhodné a čiastočne pod kontrolou subjektu s rozhodovacou právomocou.

Takže použijeme našu pôvodnú Bellmanovu rovnicu a urobíme v nej zmeny. Čo nevieme, je ďalší stav, tj. s ‘. Vieme, že sú všetky možnosti obratu a poďme zmeniť rovnicu.

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 ‘): Pravdepodobnosť presunu zo štátu s do s ‘ s činom do

& Sigmas ‘P (s, a, s ‘) V (s): Očakávania náhodnosti robota

V (s) = max (R (s, a) + & # 120632 ((0,8 V (miestnosťhore)) + (0,1 V (miestnosťdole) +….))

Teraz prejdime k Q Learning. Q-Learning predstavuje skôr myšlienku posúdenia kvality akcie, ktorá sa podnikne na prechod do stavu, ako stanovenia možnej hodnoty štátu, do ktorého sa premiestňuje.

To je to, čo dostaneme, ak začleníme myšlienku hodnotenia kvality akcií smerujúcich k prechodu do určitého štátu. Z aktualizovanej Bellmanovej rovnice, ak ich odstránime max komponent, predpokladáme iba jednu stopu pre možnú akciu, ktorá nie je ničím iným ako Kvalita žaloby.

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

V tejto rovnici, ktorá kvantifikuje kvalitu pôsobenia, môžeme predpokladať, že V (s) je maximum zo všetkých možných hodnôt Q (s, a). Poďme teda nahradiť v (s) funkciou Q ().

Q (s, a) = (R (s, a) + & # 120632 & Sigmas ‘P (s, a, s ‘) max. Q (s ‘, a‘))

Sme len krôčik k našej konečnej Rovnici Q učenia. Chystáme sa predstaviť Časový rozdiel vypočítať hodnoty Q s ohľadom na zmeny v prostredí v priebehu času. Ako však môžeme pozorovať zmenu Q?

c ++ ide triediť

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

Prepočítame nové Q (s, a) s rovnakým vzorcom a od neho odčítame predtým známe Q (s, a). Vyššie uvedená rovnica teda bude:

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

Qt(s, a) = Aktuálna hodnota Q.

Qt-1(s, a) = Predchádzajúca hodnota Q

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

Demo Q Learning: NumPy

Idem použiť NumPy na demonštráciu toho, ako Q Learning funguje.

Krok 1: Importy, parametre, stavy, akcie a odmeny

import numpy ako np gamma = 0,75 # faktor zľavy alfa = 0,9 # miera učenia location_to_state = {'L1': 0, 'L2': 1, 'L3': 2, 'L4': 3, 'L5': 4, ' L6 ': 5,' L7 ': 6,' L8 ': 7,' L9 ': 8} akcie = [0,1,2,3,4,5,6,7,8] odmeny = 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]])

Krok 2: Mapovanie indexov na miesta

state_to_location = dict ((state, location) pre umiestnenie, state in location_to_state.items ())

Krok 3: Získajte optimálnu trasu pomocou Q Learning Process

def get_optimal_route (start_location, end_location): rewards_new = np.copy (rewards) ends_state = location_to_state [end_location] rewards_new [ends_state, ends_state] = 999 Q = np.array (np.zeros ([9,9])) # Q- Proces učenia pre i v rozsahu (1000): # Vyzdvihnutie náhodného stavu current_state = np.random.randint (0,9) # Python vylučuje hornú hranicu playable_actions = [] # Iterácia novou maticou odmien pre j v rozsahu ( 9): if rewards_new [current_state, j]> 0: playable_actions.append (j) # Vyberte náhodnú akciu, ktorá nás dovedie do ďalšieho stavu 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] # Aktualizácia Q-hodnoty pomocou Bellmanovej rovnice Q [current_state, next_state] + = alpha * TD # Inicializujte optimálnu trasu s východiskovým miestom route = [start_location] #Initialize next_location s východiskovým miestom next_location = hviezda t_location # Nevieme o presnom počte iterácií potrebných na dosiahnutie konečného umiestnenia, a preto bude slučka while dobrou voľbou pre iteráciu while (next_location! = end_location): # Načítajte počiatočný stav starting_state = location_to_state [start_location] # Načítajte najvyššiu hodnotu Q vzťahujúcu sa na počiatočný stav next_state = np.argmax (Q [starting_state,]) # Získali sme index nasledujúceho stavu. Potrebujeme však zodpovedajúce písmeno. next_location = state_to_location [next_state] route.append (next_location) # Aktualizácia východiskového miesta pre ďalšiu iteráciu start_location = next_location návratová trasa

Krok 4: Vytlačte trasu

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

Výkon:

Týmto prichádzame k ukončeniu Q-učenia. Dúfam, že ste spoznali fungovanie Q Learning spolu s rôznymi závislosťami, ako sú temporálny rozdiel, Bellmanova rovnica a ďalšie.

Edureka’s vám umožní ovládať techniky, ako je supervidované učenie, nekontrolované učenie a spracovanie prirodzeného jazyka. Zahŕňa školenie o najnovších pokrokoch a technických prístupoch v oblasti umelej inteligencie a strojového učenia, ako sú napríklad Deep Learning, Graphical Models a Reinforcement Learning.