Q mācīšanās: viss, kas jums jāzina par mācīšanos pastiprināt



Šis raksts sniedz detalizētas un visaptverošas zināšanas par Q-Learning, izmantojot skaistu analoģiju par pastiprināšanas mācībām, izmantojot Python kodu.

un ir daži domēni, kas laba iemesla dēļ ir vieni no populārākajiem modes vārdiem. AI līdz 2020. gadam radīs 2,3 miljonus darbavietu, ņemot vērā, ka tās galvenais mērķis ir ļaut mašīnām atdarināt cilvēku uzvedību. Dīvaini, vai ne? Tātad, šodien mēs apspriedīsim Q Learning, pastiprināšanas mācīšanās pamatelementu šādā secībā:

Kas ir mācīšanās pastiprināšana?

Apskatīsim mūsu ikdienas dzīvi. Mēs veicam daudzus uzdevumus vidē, un daži no šiem uzdevumiem mums dod atlīdzību, bet daži to nedara. Mēs turpinām meklēt dažādus ceļus un cenšamies noskaidrot, kurš ceļš novedīs pie atlīdzības, un, pamatojoties uz mūsu rīcību, mēs uzlabojam stratēģijas mērķu sasniegšanai. Tas, mani draugi, ir viena no vienkāršākajām mācīšanās pastiprināšanas analoģijām.





Galvenās interešu jomas:

  • Vide
  • Darbība
  • Atlīdzība
  • Valsts

mācīšanās pastiprināšanai - q mācīšanās



Mācību pastiprināšana ir mašīnmācīšanās nozare, kas ļauj sistēmām mācīties no viņu pašu lēmumu rezultātiem. Tas atrisina konkrētu problēmu, kur lēmumu pieņemšana notiek secīgi, un mērķis ir ilgtermiņa.

vairākkārtēja mantošana java ar piemēru

Q-mācību process

Sapratīsim, kas ir Q mācīšanās, izmantojot mūsu problēmu izklāstu šeit. Tas mums palīdzēs noteikt mācīšanās pastiprināšanas risinājuma galvenās sastāvdaļas, ti, aģentus, vidi, darbības, atlīdzības un stāvokļus.

Automobiļu rūpnīcas analoģija:



Mēs atrodamies automobiļu rūpnīcā, kas piepildīta ar robotiem. Šie roboti palīdz rūpnīcas darbiniekiem, nogādājot automašīnas montāžai nepieciešamās detaļas. Šīs dažādās daļas atrodas dažādās rūpnīcas vietās 9 stacijās. Daļās ietilpst šasija, riteņi, vadības panelis, dzinējs un tā tālāk. Factory Master par augstāko prioritāti izvirzīja vietu, kur tiek uzstādīta šasija. Apskatīsim iestatīšanu šeit:

Valstis:

Vietu, kurā robots atrodas konkrētā instancē, sauc par tās stāvokli. Tā kā to ir viegli kodēt, nevis atcerēties pēc nosaukumiem. Kartēsim vietu pēc numuriem.

Darbības:

Darbības nav nekas cits kā robotu pārvietošanās uz jebkuru vietu. Apsveriet, robots atrodas L2 vietā, un tiešās vietas, uz kurām tas var pārvietoties, ir L5, L1 un L3. Sapratīsim to labāk, ja to vizualizēsim:

Apbalvojumi:

Robotam tiks piešķirta atlīdzība par došanos tieši no viena stāvokļa uz otru. Piemēram, jūs varat sasniegt L5 tieši no L2 un otrādi. Tātad abos gadījumos tiks piešķirta atlīdzība 1. Apskatīsim atlīdzības tabulu:

Atcerieties, kad rūpnīcas meistars piešķīra prioritāti šasijas atrašanās vietai. Tas bija L7, tāpēc mēs iekļausim šo faktu savā atalgojuma tabulā. Tātad (L7, L7) atrašanās vietā mēs piešķirsim ļoti lielu numuru (mūsu gadījumā 999).

Belmana vienādojums

Tagad pieņemsim, ka robotam jādodas no punkta A uz B. Tas izvēlēsies ceļu, kas dos pozitīvu atlīdzību. Par to pieņemsim, ka mēs nodrošinām atlīdzību par pēdu, lai tā sekotu.

Bet ko tad, ja robots sākas no kaut kur pa vidu, kur tas var redzēt divus vai vairākus ceļus. Tādējādi robots nevar pieņemt lēmumu, un tas galvenokārt notiek tāpēc, ka tam nav atmiņa . Šeit attēlā parādās Belmana vienādojums.

android studijas apmācība iesācējiem

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

Kur:

  • s = konkrēts stāvoklis
  • a = darbība
  • s '= stāvoklis, uz kuru robots pāriet no s
  • & # 120632 = atlaides koeficients
  • R (s, a) = atlīdzības funkcija, kas veic stāvokli (-us) un darbību (a) un dod atlīdzības vērtību
  • V (s) = atrašanās konkrētā stāvoklī vērtība

Tagad blokam zem galamērķa būs atlīdzība 1, kas ir visaugstākā atlīdzība. Bet kā ar otru bloku? Nu, šeit rodas diskonta koeficients. Pieņemsim, ka diskonta koeficients ir 0,9 un aizpildīsim visus blokus pa vienam.

Markova lēmumu pieņemšanas process

Iedomājieties, ka robots atrodas uz oranžā bloka un tam jāsasniedz galamērķis. Bet pat tad, ja ir neliela disfunkcija, robots būs neizpratnē par to, kuru ceļu izvēlēties, nevis iet uz augšu.

Tāpēc mums ir jāmaina lēmumu pieņemšanas process. Tā tam ir jābūt Daļēji nejaušs un Daļēji robota kontrolē . Daļēji nejaušs, jo mēs nezinām, kad robots nedarbosies, un daļēji kontrolēts, jo tas joprojām ir robota lēmums. Un tas veido pamatu Markova lēmumu pieņemšanas procesam.

Markova lēmumu process (MDP) ir diskrēts laika stohastisks kontroles process. Tas nodrošina matemātisku ietvaru lēmumu pieņemšanas modelēšanai situācijās, kad rezultāti ir daļēji nejauši un daļēji lēmumu pieņēmēja kontrolē.

Tāpēc mēs izmantosim savu sākotnējo Bellman vienādojumu un veiksim tajā izmaiņas. Tas, ko mēs nezinām, ir nākamā valsts, ti. s ’. Tas, ko mēs zinām, ir visas pagrieziena iespējas, un mainīsim vienādojumu.

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 ’): Pārcelšanās no valsts varbūtība s uz s ’ ar rīcību uz

& Sigmas ’P (s, a, s ’) V (s ’): Robota nejaušības gaidas

V (s) = max (R (s, a) + & # 120632 ((0,8 V (istaba)uz augšu)) + (0,1 V (telpauz leju) +….))

Tagad pārejam uz Q mācīšanos. Q-Learning piedāvā ideju novērtēt darbības kvalitāti, kas tiek veikta, lai pārietu uz stāvokli, nevis noteikt iespējamo tās stāvokļa vērtību, uz kuru tā tiek pārvietota.

Tas ir tas, ko mēs iegūstam, ja mēs iekļaujam ideju novērtēt darbību kvalitāti, lai pārietu uz noteiktu valsti. No atjauninātā Bellmana vienādojuma, ja mēs tos noņemam maks komponents, mēs pieņemam tikai vienu nospiedumu iespējamai darbībai, kas ir nekas cits kā Kvalitāte darbības.

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

Šajā vienādojumā, kas kvantificē darbības kvalitāti, mēs varam pieņemt, ka V (s) ir visu iespējamo Q (s, a) vērtību maksimums. Tātad aizstāsim v (s ’) ar Q () funkciju.

kāda ir galvenā kļūda

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

Mēs esam tikai viens solis tuvu mūsu galīgajam Q Learning vienādojumam. Mēs gatavojamies ieviest a Laika atšķirība lai aprēķinātu Q vērtības attiecībā uz vides izmaiņām laika gaitā. Bet kā mēs novērojam Q izmaiņas?

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

Mēs pārrēķinām jauno Q (s, a) ar to pašu formulu un no tā atņemam iepriekš zināmo Q (s, a). Tātad iepriekšējais vienādojums kļūst par:

Jt(s, a) = Qt-1(s, a) + α TDts, a)

Jt(s, a) = Pašreizējā Q vērtība

Jt-1(s, a) = Iepriekšējā Q vērtība

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

Q mācīšanās demonstrācija: NumPy

Es gatavojos izmantot NumPy, lai parādītu, kā darbojas Q Learning.

1. darbība: imports, parametri, valstis, darbības un atlīdzības

importēt skaitli kā np gamma = 0,75 # Atlaides koeficients alfa = 0,9 # Mācīšanās ātruma location_to_state = {'L1': 0, 'L2': 1, 'L3': 2, 'L4': 3, 'L5': 4, ' L6 ': 5,' L7 ': 6,' L8 ': 7,' L9 ': 8} darbības = [0,1,2,3,4,5,6,7,8] atlīdzības = 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]])

2. solis: Kartējiet indeksi uz vietām

state_to_location = dict ((štats, atrašanās vieta) atrašanās vietai, štats mapē location_to_state.items ())

3. solis: iegūstiet optimālu maršrutu, izmantojot Q mācību procesu

def get_optimal_route (start_location, end_location): atlīdzības_jaunums = np.kopija (atlīdzības) beigu_reģistrācija = atrašanās vietas_nodaļa [beigu_vieta] atlīdzības_jaunums [beigu_nodaļa, beigu_nodaļa] = 999 Q = np.array (np.zeros ([9,9])) # Q- Mācīšanās process diapazonā (1000) i: # izlases stāvokļa uzņemšana current_state = np.random.randint (0,9) # Python izslēdz augšējo robežu playable_actions = [] # atkārtojot caur jauno atalgojuma matricu j diapazonā ( 9): if rewards_new [current_state, j]> 0: playable_actions.append (j) # Izvēlieties nejaušu darbību, kas mūs novedīs pie nākamā stāvokļa next_state = np.random.choice (playable_actions) # Laika starpības aprēķināšana TD = atlīdzības_jaunums [current_state , nākamā stacija] + gamma * Q [nākamā stacija, np.argmax (Q [nākamā stacija,])] - Q [pašreizējā stacija, nākamā stacija] # Q vērtības atjaunināšana, izmantojot Bellmana vienādojumu Q [pašreizējā stacija, nākamā stacija] + = alfa * TD # Inicializējiet optimālo maršrutu ar sākuma vietas maršrutu = [start_location] #Inicializējiet next_location ar sākuma vietu next_location = zvaigzne t_location # Mēs nezinām par precīzu atkārtojumu skaitu, kas nepieciešami, lai sasniegtu galīgo atrašanās vietu, tāpēc cilpa būs laba izvēle iterācijai, kamēr (next_location! = end_location): # Iegūstiet sākuma stāvokli start_state = location_to_state [start_location] # Iegūstiet augstāko Q vērtību, kas attiecas uz sākuma stāvokli next_state = np.argmax (Q [sākuma stacija,]) # Mēs saņēmām nākamā stāvokļa indeksu. Bet mums ir vajadzīga atbilstošā vēstule. next_location = state_to_location [next_state] route.append (next_location) # Atjauniniet nākamā atkārtojuma sākuma vietu start_location = next_location atgriešanās maršruts

4. solis: izdrukājiet maršrutu

drukāt (get_optimal_route ('L1', 'L9'))

Izeja:

Ar to mēs esam nonākuši līdz Q-Learning beigām. Es ceru, ka jūs uzzinājāt Q Learning darbību kopā ar dažādām pastāvošajām atkarībām, piemēram, laicīgo atšķirību, Belmana vienādojumu un citām.

Edureka liek jums pārzināt tādas metodes kā uzraudzīta mācīšanās, bez uzraudzības un dabiskās valodas apstrāde. Tas ietver apmācību par jaunākajiem sasniegumiem un tehniskajām pieejām mākslīgā intelekta un mašīnmācīšanās jomā, piemēram, padziļināta mācīšanās, grafiskie modeļi un mācīšanās pastiprināšana.