Megerősítéses Tanulás – OpenAi Gym

Megerősítéses Tanulás – OpenAi Gym

A megerősítéses tanulás egyike napjaink potenciális kutatási területeinek, általa elképzelhető és megvalósítható az általános mesterséges intelligencia (artificial general intelligence, AGI). Az előző bejegyzésünkben ismertettük a megerősítéses tanulás elvét, folyamatát és alapjait. A következő bejegyzésünk ezek ismeretét igényli, és a megerősítéses tanulás alapjait, folyamatát ismerteti egy egyszerű gyakorlati példán.

Mielőtt belevágnánk a gyakorlatba és annak magyarázatába, említést kell tennünk az OpenAi vállalatról,, mely az általános mesterséges intelligenciát kutatja. Kutatásaik során egy ingyenesen elérhető  és használható eszköztárat fejlesztettek ki a mesterséges intelligenciával foglalkozó közösség számára. Nevezetesen a Gym-et. A Gym egy olyan eszköztár, mely segítségével kényelmesebben fejleszthetünk és hasonlíthatunk össze megerősítéses tanulási algoritmusokat. Játékbéli ágenseket programozhatunk: a járástól egészen a Flipperig.

env = gym.make(‘CartPole-v0’)

A fenti kód a CartPole környezet definiálását jelenti. A környezetet egy egyensúlyozási játék ihlette. A cél egy instabil póznának az egyensúlyi, álló helyzetben tartása, lehetőleg önállóan, az ágensünk által.A póznánk egy súrlódásmentes kocsin, 1 dimenzió mentén mozog. Ágensünk +1-es jutalmat ér el minden idő egység alatt, amennyiben a póznát még egyensúlyozva tartja. Egy játszma akkor fejeződik be, amikor a pózna több, mint 15 fokos szöget zár már be függőleges helyzetéhez képest, vagy a kocsi több mint 2,4 egységet mozog el a középponttól.

Azt, hogy egy adott állapotban milyen cselekvést válasszunk, többféleképpen határozhatjuk meg, különböző policy-k segítségével. Egyik lehetséges módja, hogy minden állapot/cselekvés párhoz definiálunk egy jósági mennyiséget (Q), amely az adott állapotból az adott cselekvéssel elérhető maximális jutalom. A Q learning esetén ezeket az értékeket egy táblázatba foglaljuk, majd a tanítás végeztével az adott állapotban azt a cselekvést választjuk, amely a maximális jövőbeli jutalmat eredményezi.

Érték alapú megerősítéses tanulás – Q-Learning

Inicializáljuk a Q táblában található Q értékeket: Egy olyan Q-táblát építünk, amelyben a lehetséges cselekvések számával megegyező számú oszlop és az állapotok számával megegyező számú sor van. Minden Q értéket (várható legnagyobb jutalom az adott állapot/cselekvés párra) kezdetben nullának definiálunk.

    # Quality init

    Qualities = {}

    all_states = []

    for i in range(MAXSTATES):

              all_states.append(str(i).zfill(3)) # Define all the possible states of the game

    for state in all_states:

            Qualities[state] = {}

           for action in range(env.action_space.n):

                Qualities[state][action] = 0

    # end

EGY TANÍTÁSI CIKLUS

Választunk egy cselekvést a mostani állapotból a Q táblánk alapján. Amennyiben egy irányba történik a környezet felfedezése, úgy könnyedén előfordulhat az, hogy egy lokálisan optimális policyra lelünk. Ennek a kiküszöbölésére a döntési stratégiát bővítjük egy felfedezési mechanizmussal, amely esetén az ágensünk nem a már előzőleg tapasztaltak szerint dönt (Q tábla adott sorának maximuma), hanem teljesen véletlenszerűen választ egy cselekvést. Erre a kiválasztási mechanizmusra egy paraméter definiálunk: Epszilont, amely azt adja meg, hogy milyen arányban felfedez, vagy hagyatkozik a megtanult táblára az ágens. Ezt az arányt a tanulás közben módosítjuk.

eps = 1.0 / np.sqrt(game_idx + 1)

A Q táblánk a tanulás elején nem megbízható, ekkor még nem tudunk semmit a környezetünkről amiben vagyunk (a csupa 0 kezdeti értékválasztás ezt szemlélteti). Így a cselekvések kiválasztása során a környezet felfedezési stratégiát alkalmazzuk.  Ez esetben az epszolin közel van 1-hez. A tanulás vége felé közeledve már nem alkalmazzuk a felfedezéses stratégiát, melyet az epszilon csökkentésével fejezünk ki, hanem a már megbízható Q táblánkat használjuk, a maximum keresésével.

        if np.random.uniform() < eps:

            act = env.action_space.sample()  # epsilon greedy

        else:

            act = max_dict(Qualities[state])[0]

 

VISSZAJELZÉS ÉS FELÜLÍRÁS

A cselekvés megtétele után egy új állapotba kerülünk, valamint a környezet ad egy visszajelzést mely egyaránt lehet pozitív vagy negatív cselekvésünktől függően. A tett cselekvés és a cselekvés által elért új állapot  valamint jutalom ismeretében a Bellman egyenlet felhasználásával frissítjük, felülírjuk a Q táblánkat.

Ahol,

  • ÚjQ(á,cs): új Q értéke az állapotból tett cselekvésre.
  • Q(á,cs): Jelenlegi Q érték az állapotban tett cselekvésnek.
  • J(á,cs): Ezen állapotból tett cselekvésre kapott jutalom értéke.
  • maxQ’(á’,cs’): A lehető legnagyobb jövőbéli jutalom az új állapotot, és a benne található összes cselekvési lehetőséget tekintve.
  • α: tanulás mértéke
  • γ: jövőbeli jutalmak súlyozása

a1, max_q_s1a1 = max_dict(Qualities[state_new])

Qualities[state][act] += ALPHA * (reward + GAMMA * max_q_s1a1 – Qualities[state][act])

state, act = state_new, a1

A fentebb leírt folyamat egy tanítási ciklusban tapasztalt eredményeket használ. Ahhoz, hogy az ágens képes legyen a teljes környeztet feltérképezni, ahhoz több menetet kell lefolytatnunk. Ezt a mennyiséget meghatározhatjuk egy paraméter segítségével.

for game_idx in range(howmanyGames):

 

EREDMÉNY

Játék indexe Epszilon Jutalom
0                 1.0000    14.0
10000           0.0100    200.0
20000           0.0071    200.0
30000           0.0058    200.0
40000           0.0050    200.0
50000           0.0045    200.0

Belátható, ezen megerősítéses tanulási algoritmus teljesen környezet független, nincs specializálódva a körülötte lévő rendszerre. A következő bejegyzésünkben bemutatjuk a DeepQ learning-et, amely esetén nem egy diszkrét értékekből álló Q tábla jelképezi az optimális cselekvéseket, hanem egy neurális háló, ezáltal más, folytonos állapotterű környezetekben is hatékonyan tud teljesíteni.

Biztosak vagyunk abban, hogy az Ön vállalkozásában is vannak mesterséges intelligenciával automatizálható munkafolyamatok: amennyiben szeretné élvezni a mesterséges intelligencia használatával járó előnyöket, úgy jelentkezzen ingyenes, személyes konzultációnkra elérhetőségeink valamelyikén.

Close Menu