Četl jsem papír Google DeepMind Atari a snažím se porozumět konceptu „přehrávání zážitků“. Přehrávání zážitků se objevuje v mnoha dalších vzdělávacích dokumentech o posílení (zejména v příspěvku AlphaGo), takže chci pochopit, jak to funguje. Níže uvádíme několik výňatků.
Nejprve jsme použili biologicky inspirovaný mechanismus nazývaný přehrávání zážitků, který náhodně rozděluje data, čímž odstraňuje korelace v posloupnosti pozorování a vyhlazuje změny v distribuci dat.
Příspěvek se dále rozpracovává takto:
Zatímco existují další stabilní metody pro trénování neuronových sítí v nastavení posilovacího učení, jako je neurální Q-iterace, tyto metody zahrnují opakované trénování sítí de novo stovky iterací. V důsledku toho jsou tyto metody, na rozdíl od našeho algoritmu, příliš neefektivní na to, aby bylo možné jej úspěšně použít u velkých neuronových sítí. Parametrizujeme funkci přibližné hodnoty $ Q (s, a; \ theta_i) $ pomocí hluboké konvoluční neuronové sítě zobrazené na obr. 1, ve které $ \ theta_i $ jsou parametry (tj. váhy) sítě Q při iteraci $ i $ . Abychom mohli přehrát zážitek, ukládáme zkušenosti agenta $ e_t = (s_t, a_t, r_t, s_ {t + 1}) $ v každém časovém kroku $ t $ v datové sadě $ D_t = \ {e_1, \ dots, e_t \} $ . Během učení, aplikujeme aktualizace Q-learningu na ukázky (nebo mini dávky) zkušeností $ (s, a, r, s „) \ sim U (D) $ , náhodně vybráno rovnoměrně ze skupiny uložených vzorků. Aktualizace Q-learning při iteraci $ i $ používá následující ztrátu:
$$ L_i (\ theta_i) = \ mathbb {E} _ {(s, a, r, s „) \ sim U (D)} \ left [\ left (r + \ gamma \ max_ {a“} Q (s), a „; \ theta_i ^ -) – Q (s, a; \ theta_i) \ right) ^ 2 \ right] $$
Co je přehrávání zkušeností a jaké jsou jeho výhody, laicky řečeno?
Odpověď
Klíčová část citovaný text je:
Abychom mohli přehrát zážitek, uložíme zážitky agenta $ e_t = (s_t, a_t, r_t, s_ {t + 1} ) $
To znamená, že místo uložení Q-učení na páry stav / akce, jak k nim dochází během simulace nebo skutečného zážitku, systém uloží data objevená pro [stav, akce, odměna, next_state] – obvykle ve velké tabulce. Všimněte si, že se neukládají přidružené hodnoty – jedná se o nezpracovaná data, která se později použijí pro výpočty akční hodnoty.
Fáze učení je poté logicky oddělena od získávání zkušeností a je založena na odebrání náhodných vzorků z této tabulky. Stále chcete prokládat dva procesy – hraní a učení – protože zlepšení politiky povede k odlišnému chování, které by mělo zkoumat akce blížící se těm optimálním, a vy se z nich chcete poučit. Můžete si to však rozdělit, jak se vám líbí – např. udělejte jeden krok, učte se ze tří náhodných předchozích kroků atd. Cíle Q-Learning při používání přehrávání zkušeností používají stejné cíle jako online verze, takže na to neexistuje žádný nový vzorec. Uvedený vzorec ztráty je také ten, který byste použili pro DQN bez přehrávání zkušeností. Rozdíl je pouze který s, a, r, s „, a“ do něj vkládáte.
V DQN tým DeepMind také udržoval dvě sítě a přepínal, která byla učení a který z nich odhaduje aktuální akční hodnoty jako „bootstrapy“. To pomohlo se stabilitou algoritmu při použití nelineárního aproximátoru funkcí. To je to, co lišta znamená v $ {\ theta} ^ {\ overline {\ space}} _ i $ – označuje alternativní zmrazenou verzi závaží.
Výhody přehrávání zkušeností:
-
Efektivnější využití předchozích zkušeností tím, že se s nimi několikrát učíte. To je klíčové, když je získání zkušeností v reálném světě nákladné, můžete plně využívat it. Aktualizace Q-learningu jsou přírůstkové a nekonvergují rychle, takže vícenásobné průchody se stejnými daty jsou prospěšné, zvláště když je nízký rozptyl okamžitých výsledků (odměna, další stav) vzhledem ke stejnému stavu, akční dvojici.
-
Lepší chování konvergence při tréninku aproximátoru funkcí. Částečně je to proto, že data jsou spíše podobná iid údajům předpokládaným v důkazy o konvergenci učení s největším dohledem.
Nevýhoda přehrávání zkušeností:
- Je těžší použít algoritmy vícestupňového učení, jako je Q ($ \ lambda $) , které lze vyladit tak, aby poskytovaly lepší křivky učení vyvážením mezi zkreslením (kvůli bootstrappingu) a rozptylem (kvůli zpožděním a náhodnosti v dlouhodobých výsledcích). Vícestupňový DQN s replay zkušeností DQN je jedním z rozšíření prozkoumaných v článku Rainbow: Combining Improvements in Deep Reinforcement Learning .
Přístup použitý v DQN krátce nastínil David Silver v částech této video přednášky (kolem 01:17: 00, ale stojí za to vidět sekce před ním). Pokud máte čas, doporučuji sledovat celou sérii, což je absolventský kurz posilovacího učení.
Komentáře
- Nechte říkáme, že během školení jsme v jednom státě, podnikneme kroky podle zásady epsilon-chamtivý postup a skončíte v jiném státě. Takže získáte odměny a další stav. Odměnou zde může být skóre hry a stavy mohou být pixelové vzory na obrazovce. A pak vezmeme chybu mezi naším aproximátorem funkce a hodnotou, kterou jsme dostali z chamtivé politiky znovu pomocí již zmrazeného aproximátoru funkcí. Ale s přehráváním zkušeností při optimalizaci aproximátoru vezmeme nějakou datovou sadu akcí v náhodném stavu. Mám pravdu?
- @ShamaneSiriwardhana: Ano, myslím, že máte pravdu. Jedná se o přesně stejná data ze skutečné trajektorie, ale místo toho, abyste se učili pouze z posledního kroku, uložíte je do velké tabulky a vzorek z této tabulky (obvykle více vzorků, s možností výběru z 1000 předchozích kroků) ). Pokud potřebujete další vysvětlení, možná se na webu zeptáte.
- Ano, znovu jsem prošel novinami. Rovněž říká, že tato metoda může také zlepšit učení mimo politiku. Protože v Q učení se jedná podle zásady epsilon-chamtivý, ale aktualizace hodnot funguje podle chamtivé politiky. Takže kdykoli se naše parametry neurální sítě aktualizují pokaždé pomocí statistik mini dávek, což důležitěji nesouvisí s přesnými statistikami časových kroků, ale to, co se stalo před tím, také pomůže nekorelovat data.
- @Neil Slater, I ' Prošel jsem duhovým papírem a ' jsem neviděl žádné speciální komentáře k použití speciálního triku pro kombinování přehrávání zkušeností a multi- kroková metoda. Také jsem ' slyšel, že vícestupňovou metodu je původně nemožné kombinovat s přehráváním zkušeností, ale proč ne jen náhodně vybrat n-po sobě jdoucí zážitky místo 1 ze zážitku, ale z přehrání, že mezi jednotlivými n-zkušenostmi nebyly nalezeny žádné korelace? Není toto přehrávání ve více krocích opakováno '?
- @NeilSlater Proč je " těžší používat více algoritmy krokového učení "? Co jste tím myslel?
Odpověď
Algoritmus (nebo alespoň jeho verze implementovaná v projekt Coursera RL capstone ) je následující:
-
Vytvořte Replay „Buffer“, který uloží poslední
#buffer_size
SARS (Stát, Akce, Odměna, Nový stát). -
Spusťte svého agenta a nechte jej hromadit zážitky v přehrávací paměti, dokud nebude mít (yrovnávací paměť) alespoň
#batch_size
zkušenosti .- V $ můžete vybrat akce podle určitých zásad (např. soft-max pro diskrétní akční prostor, Gaussian pro kontinuální atd.) \ hat {Q} (s, a; \ theta) $ odhad funkce.
-
Jakmile dosáhne
#batch_size
nebo více:-
vytvořte kopii odhadu funkce ( $ \ hat {Q} (s, a; \ theta) $ ) v aktuálním čase, tj. kopie vah $ \ theta $ – které „zmrazíte“ a neaktualizujete, a použít k výpočtu „true“ stavů $ \ hat {Q} (s „, a“; \ theta) $ . Spustit pro
num_replay
aktualizace:-
ukázkové
#batch_size
zkušenosti z vyrovnávací paměti pro přehrávání. -
Použijte vzorkované zážitky k pr vytvořte dávkovou aktualizaci odhadu funkcí (např. v Q-Learning, kde $ \ hat {Q} (s, a) = $ Neuronová síť – aktualizujte váhy sítě). Zmrazené závaží použijte jako „skutečnou“ funkci akčních hodnot, ale nezměněnou funkci vylepšujte.
-
-
proveďte to, dokud dosáhnout terminálního stavu.
-
nezapomeňte neustále přidávat nové zážitky do vyrovnávací paměti Replay
-
-
Běh pro tolik epizod, kolik potřebujete.
Co mám na mysli pod „true“: každou zkušenost lze chápat jako „supervizovanou“ výukovou dvojici, kde máte funkci skutečné hodnoty $ Q (s, a) $ a odhad funkce $ \ hat {Q} (s, a) $ . Vaším cílem je snížit hodnotu-chybu, např. $ \ sum (Q (s, a) – \ hat {Q} (s, a)) ^ 2 $ . Jelikož pravděpodobně nemáte přístup k true akčním hodnotám, použijete místo toho vylepšenou verzi posledního odhadu , s přihlédnutím k nové zkušenosti a odměně. V Q-learningu je „skutečná“ hodnota akce $ Q (s, a) = R_ {t + 1} + \ gamma \ max_ {a „} \ hat {Q} (s“, a „; \ theta) $ , kde $ R $ je odměna a $ \ gamma $ je faktor slevy.
Zde je výňatek z kódu:
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