Olvastam a Google DeepMind Atari dolgozatát és megpróbáltam megérteni az “élményismétlés” fogalmát. A tapasztalatismétlés sok más megerősítő tanulási cikkben (különösen az AlphaGo cikkben) szerepel, ezért szeretném megérteni, hogyan működik. Az alábbiakban néhány kivonat található.

Először egy biológiailag ihletett mechanizmust használtunk, amelyet élményismétlésnek nevezünk, amely véletlenszerű módon randomizálja az adatokat, ezáltal eltávolítva a korrelációkat a megfigyelési sorrendben és simítva az adatok eloszlásának változását.

A cikk ezt követően a következőket dolgozza fel: a megerősítő tanulási környezetben, mint például a neurális illesztésű Q-iteráció, ezek a módszerek a hálózatok ismételt edzését jelentik de novo több száz iteráció. Következésképpen ezek a módszerek, az algoritmustól eltérően, túl hatástalan ahhoz, hogy nagy idegi hálózatokkal sikeresen lehessen használni. A (z) $ Q (s, a; \ theta_i) $ hozzávetőleges értékfüggvényt paraméterezzük az 1. ábrán látható mély konvolúciós ideghálózat használatával, amelyben $ \ theta_i $ a Q-hálózat paraméterei (vagyis súlyai) az iteráció $ i $ . Az élményismétlés elvégzéséhez tároljuk az ügynök tapasztalatait $ e_t = (s_t, a_t, r_t, s_ {t + 1}) $ minden egyes lépésnél $ t $ egy $ D_t = \ {e_1, \ dots, e_t \} $ adatkészletben. Q-learning frissítéseket alkalmazunk a tapasztalat mintáin (vagy mini-kötegén) $ (s, a, r, s “) \ sim U (D) $ , véletlenszerűen egységesen, a tárolt minták készletéből. A Q-learning frissítés a $ i $ iterációban a következő veszteségfüggvényt használja:

$$ L_i (\ theta_i) = \ mathbb {E} _ {(s, a, r, s “) \ sim U (D)} \ bal [\ bal (r + \ gamma \ max_ {a”} Q (s “, a “; \ theta_i ^ -) – Q (s, a; \ theta_i) \ right) ^ 2 \ right] $$

Mi az élményismétlés és milyen előnyei vannak laikusok szempontjából?

Válasz

A idézett szöveg:

Az élményismétlés elvégzéséhez tároljuk az ügynök tapasztalatait $ e_t = (s_t, a_t, r_t, s_ {t + 1} ) $

Ez azt jelenti, hogy ahelyett, hogy állapot- / cselekvési párokon futtatnák a Q-tanulást, ahogyan azok szimuláció vagy tényleges tapasztalat során történnek, a rendszer tárolja a [állapot, művelet, jutalom, következő állomás] – általában egy nagy táblázatban. Ne feledje, hogy ez nem tárolja a társított értékeket – ez az a nyers adat, amelyet később be kell vonni az akció-érték számításokba.

A tanulási szakasz ezután logikusan elkülönül a tapasztalatszerzéstől, és azon alapul, hogy véletlenszerű mintákat vesz ebből a táblázatból. Még mindig be akarja vonni a két folyamatot – a cselekvést és a tanulást -, mert a politika javítása eltérő magatartáshoz vezet, amelynek az optimálisabbhoz közelebb álló tevékenységeket kell feltárnia, és ezekből tanulni szeretne. Ezt azonban tetszés szerint feloszthatja – pl. tegyen egy lépést, tanuljon három véletlenszerű korábbi lépésből stb. A Q-Learning célok, amikor a tapasztalatok visszajátszását használják, ugyanazokat a célokat használják, mint az online verzió, ezért erre nincs új képlet. A megadott veszteség képlet az, amelyet tapasztalatismétlés nélkül használna a DQN számára. A különbség csak melyik s, a, r, s “, a” betáplált.

A DQN-ben a DeepMind csapata két hálózatot is fenntartott, és váltotta, melyik volt tanulás, és melyik táplálék a jelenlegi cselekvési értékben becsüli meg a “bootstrapokat”. Ez segített az algoritmus stabilitásában, amikor nemlineáris függvény-közelítőt használtunk. Ezt jelenti a sáv a $ {\ theta} ^ {\ overline {\ space}} _ i $ értékben – ez a súlyok alternatív fagyasztott változatát jelöli.

A tapasztalatok visszajátszásának előnyei:

  • A korábbi tapasztalatok hatékonyabb felhasználása, többszöri tanulással. Ez kulcsfontosságú, ha a valós tapasztalatok megszerzése költséges, teljes mértékben kihasználhatja A Q-learning frissítések inkrementálisak és nem konvergálnak gyorsan, ezért több, ugyanazokkal az adatokkal végzett passzok előnyösek, különösen akkor, ha azonnali kimenetelekben (jutalom, következő állapot) alacsony a szórás ugyanazon állapot, cselekvési pár esetén.

  • Jobb konvergencia-viselkedés a függvény-közelítő képzésénél. Részben azért, mert az adatok inkább hasonlítanak a iid adatokra, a legtöbb felügyelt tanulási konvergencia bizonyíték.

A tapasztalatok visszajátszásának hátrányai:

  • Nehezebb használni a többlépcsős tanulási algoritmusokat, például a Q ($ \ lambda $) , melyeket úgy lehet beállítani, hogy jobb tanulási görbéket adjanak azáltal, hogy egyensúlyban vannak az elfogultság (a rendszerindítás miatt) és a variancia (a késedelmek és a hosszú távú eredmények véletlenszerűsége miatt) között. Többlépcsős DQN élmény-visszajátszással A DQN az egyik kiterjesztés, amelyet a Rainbow: Javítások kombinálása a mély megerősítésű tanulásban című cikkben tárunk fel.

A DQN-ben alkalmazott megközelítést röviden vázolja David Silver a videóelőadás részeiben (01:17 körül: 00, de érdemes előtte szakaszokat látni). Javaslom az egész sorozat megnézését, amely egy fokozatos tanfolyam a megerősítő tanulásról, ha van időd.

Megjegyzések

  • Legyen ‘ s azt mondják, hogy a képzés során egy állapotban vagyunk, és az epsilon-kapzsi politika szerint cselekszünk, te pedig egy másik államba kerülsz. Tehát jutalmakat kap, és a következő állapotot. Itt a jutalom lehet a játék pontszáma, az állapotok pedig a képernyőn megjelenő pixelminták. Ezután ismét felvesszük a hibát a függvény-aproximátorunk és a kapzsi házirend által kapott érték között, a már lefagyott függvény-közelítő használatával. De a tapasztalatok visszajátszásával a közelítő optimalizálásakor véletlenszerű állapotú cselekvési adatsort veszünk. Igazam van?
  • @ShamaneSiriwardhana: Igen, szerintem igazad van. Pontosan ugyanazok az adatok a valós pályáról, de ahelyett, hogy csak a legutóbbi lépésből tanulna, elmenti őket egy nagy táblába, és mintát készít az adott táblából (általában több minta, az előző lépések 1000-es tárolásával) ). Ha további pontosításra van szüksége, akkor tegyen fel egy kérdést a webhelyen.
  • Igen, újra végignéztem az újságot. Azt is mondja, hogy ez a módszer javíthatja az off-policy tanulást is. Mivel a Q-ban való tanulás az epsilon-kapzsi irányelvek szerint jár el, de az értékek frissítése a kapzsi irányelvek szerint működik. Tehát amikor minden egyes lépésben idegi netes paramétereink frissülnek a mini kötegelt statisztikákkal, ami még fontosabb, hogy nem kapcsolódik a pontos időlépés-statisztikákhoz, de azelőtt történtek is segítenek korrelálni az adatokat.
  • @Neil Slater, I ‘ átnéztem a szivárványos papírt, és nem láttam ‘ különösebb megjegyzéseket egy speciális trükk használatáról az élményismétlés és a multi- lépés módszer. Azt is ‘ hallottam, hogy a többlépcsős módszert eredetileg lehetetlen kombinálni az élményismétléssel, de miért ne véletlenszerűen válogatnánk n-egymás után következő élményt 1 helyett tapasztalatismétlésből, hanem az ismétlésből hogy az egyes n-tapasztalatok között nincs összefüggés? Nem ‘ t ez a többlépcsős élményismétlés?
  • @NeilSlater Miért ” nehezebb használni a több lépéses tanulási algoritmusok “? Mire gondolt?

Válasz

Az algoritmus (vagy legalább annak egy változata, a Coursera RL capstone projekt ) a következő:

  1. Hozzon létre egy visszajátszási “puffert”, amely az utolsó #buffer_size SARS (Állam, cselekvés, jutalom, új állam) tapasztalatok.

  2. Futtassa az ügynököt, és hagyja, hogy felhalmozza az élményeket a visszajátszási pufferben, amíg (a puffer) legalább #batch_size tapasztalattal rendelkezik .

    • Kiválaszthat műveleteket egy bizonyos házirend szerint (pl. soft-max a diszkrét cselekvési területhez, Gaussian a folytonoshoz stb.) a $ felett. \ hat {Q} (s, a; \ theta) $ függvénybecslő.
  3. Amint eléri a #batch_size vagy több:

    • készítsen másolatot a függvénybecslőből ( $ \ hat {Q} (s, a; \ theta) $ ) az aktuális időpontban, vagyis a $ \ theta $ súlyok másolata – amelyet “lefagyaszt” és nem frissít, és használja az “igaz” állapotok kiszámításához $ \ hat {Q} (s “, a”; \ theta) $ . Futtassa a következőt: num_replay frissítések:

      1. minta #batch_size tapasztalatok a visszajátszási pufferből.

      2. Használja a mintavételezett tapasztalatokat a pr formázzon kötegelt frissítést a funkcióbecslőjéhez (pl. a Q-Learningben, ahol $ \ hat {Q} (s, a) = $ Ideghálózat – frissítse a hálózat súlyát). Használja a fagyasztott súlyokat “igazi” műveletérték-függvényként, de folytassa a nem fagyasztott függvény javítását.

    • ezt addig végezze, amíg meg nem elér egy terminális állapotot.

    • ne felejtse el folyamatosan hozzáfűzni az új élményeket a Replay Buffer

  4. Fuss annyi epizódig, amennyire szüksége van.

Mit értek az „igaz” kifejezés alatt: minden tapasztalat „felügyelt” tanulási duónak tekinthető, ahol valódi értékfüggvénye van $ Q (s, a) $ és egy funkcióbecslő $ \ hat {Q} (s, a) $ . Célod az Érték-Hiba csökkentése, pl. $ \ sum (Q (s, a) – \ hat {Q} (s, a)) ^ 2 $ . Mivel valószínűleg nem fér hozzá a true műveletértékekhez, ehelyett az utolsó becslő indított javított verzióját használja , figyelembe véve az új tapasztalatokat és a kapott jutalmat. A Q-learningben az “igazi” művelet értéke $ Q (s, a) = R_ {t + 1} + \ gamma \ max_ {a “} \ hat {Q} (s”, a “; \ theta) $ ahol $ R $ a jutalom és $ \ gamma $ a kedvezménytényező.

Itt van egy kivonat a kódból:

def agent_step(self, reward, state): action = self.policy(state) terminal = 0 self.replay_buffer.append(self.last_state, self.last_action, reward, terminal, state) if self.replay_buffer.size() > self.replay_buffer.minibatch_size: current_q = deepcopy(self.network) for _ in range(self.num_replay): experiences = self.replay_buffer.sample() optimize_network(experiences, self.discount, self.optimizer, self.network, current_q, self.tau) self.last_state = state self.last_action = action return action 

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük