Olen lukenut Google DeepMind Atarin paperia ja yritin ymmärtää ”kokemusten toistamisen” käsite. Kokemusten uusinta tulee esiin monissa muissa vahvistuksen oppimislehdissä (erityisesti AlphaGo-paperissa), joten haluan ymmärtää, miten se toimii. Alla on joitain otteita.
Ensinnäkin käytimme biologisesti innoitettua mekanismia, jota kutsutaan kokemusten toistoksi, joka satunnaistaa datan, mikä poistaa korrelaatiot havainnointijärjestyksessä ja tasoittaa muutokset datan jakaumassa.
Tämän jälkeen artikkelissa käsitellään seuraavaa:
Vaikka hermoverkkojen kouluttamiseen on olemassa muita vakaita menetelmiä vahvistamisoppimisympäristössä, kuten hermosovitettu Q-iterointi, nämä menetelmät edellyttävät verkkojen de novo toistuvaa kouluttamista satoja iteraatioita, joten nämä menetelmät, toisin kuin algoritmimme, ovat liian tehoton käytettäväksi onnistuneesti suurten hermoverkkojen kanssa. Parametroimme likiarvofunktion $ Q (s, a; \ theta_i) $ käyttämällä kuvassa 1 esitettyä syvällistä konvoluutiohermoverkkoa, jossa $ \ theta_i $ ovat Q-verkon parametrit (eli painot) iteraatiossa $ i $ . Kokemusten uusinnan suorittamiseksi tallennamme agentin kokemukset $ e_t = (s_t, a_t, r_t, s_ {t + 1}) $ kullekin aikavaiheelle $ t $ tietojoukossa $ D_t = \ {e_1, \ dots, e_t \} $ . Aikana Oppimisen yhteydessä käytämme Q-oppimisen päivityksiä kokemusnäytteisiin (tai minieriin) $ (s, a, r, s ”) \ sim U (D) $ , vedetty tasaisesti satunnaisesti tallennettujen näytteiden joukosta. Q-oppimispäivitys iteraatiossa $ i $ käyttää seuraavaa menetystoimintoa:
$$ L_i (\ theta_i) = \ mathbb {E} _ {(s, a, r, s ”) \ sim U (D)} \ vasen [\ vasen (r + \ gamma \ max_ {a”} Q (s ”, a ”; \ theta_i ^ -) – Q (s, a; \ theta_i) \ oikea) ^ 2 \ oikea] $$
Mikä on kokemusten toisto ja mitkä ovat sen edut maallikoiden kannalta?
Vastaus
Keskeinen osa lainattu teksti on:
Kokemusten toistamiseksi tallennamme agentin kokemukset $ e_t = (s_t, a_t, r_t, s_ {t + 1} ) $
Tämä tarkoittaa, että Q-oppimisen suorittamisen sijaan tila / toimintapareilla, kun ne tapahtuvat simulaation tai todellisen kokemuksen aikana, järjestelmä tallentaa löydetyt tiedot [tila, toiminta, palkkio, seuraava asema] – tyypillisesti isossa taulukossa. Huomaa, että tämä ei tallenna liitettyjä arvoja – tämä on raaka-aine, joka syötetään myöhemmin toiminta-arvo-laskelmiin.
Oppimisvaihe erotetaan sitten loogisesti kokemuksen hankkimisesta ja perustuu satunnaisotosten ottamiseen tästä taulukosta. Haluat silti limittää kaksi prosessia – toimimisen ja oppimisen – koska politiikan parantaminen johtaa erilaiseen käyttäytymiseen, jonka pitäisi tutkia toimia lähempänä optimaalisia, ja haluat oppia niistä. Voit kuitenkin jakaa tämän haluamallasi tavalla – esim. ota yksi askel, opi kolmesta satunnaisesta aiemmasta vaiheesta jne. Q-Learning-tavoitteet käyttävät kokemusten toistoa käyttäessä samoja tavoitteita kuin online-versio, joten sille ei ole uutta kaavaa. Annettu häviökaava on myös se, jota käyttäisit DQN: ssä ilman kokemuksen toistoa. Ero on vain mitkä s, a, r, s ”,” syötät siihen.
DQN: ssä DeepMind-tiimi ylläpiti myös kahta verkkoa ja vaihtoi kumpi oli oppimisen ja mikä ruokinta nykyisessä toiminta-arvossa arvioidaan ”bootstrapsiksi”. Tämä auttoi algoritmin vakaudessa käytettäessä epälineaarista funktion approksimaattoria. Tätä tarkoittaa palkki muodossa $ {\ theta} ^ {\ overline {\ space}} _ i $ – se tarkoittaa painojen vaihtoehtoista jäädytettyä versiota.
Kokemusten uusinnan edut:
-
Aikaisemman kokemuksen tehokas käyttö oppimalla sen kanssa useita kertoja. Tämä on avain, kun todellisen kokemuksen hankkiminen on kallista, voit hyödyntää täysin Q-oppimisen päivitykset ovat inkrementaalisia eivätkä lähene toisiinsa nopeasti, joten useat läpäisyt samoilla tiedoilla ovat hyödyllisiä, varsinkin kun välittömissä tuloksissa (palkkio, seuraava tila) on pieni varianssi, kun annetaan sama tila, toimintapari.
-
Parempi lähentymiskäyttäytyminen funktion approksimaattoria kouluttaessa. Tämä johtuu osittain siitä, että tiedot ovat enemmän kuin iid -tietoja, jotka oletetaan useimmat valvotut lähentymisen todisteet.
Kokemusten toistamisen haitta:
- Monivaiheisten oppimisalgoritmien, kuten Q ($ \ lambda $), käyttäminen on vaikeampaa , joka voidaan virittää antamaan paremmat oppimiskäyrät tasapainottamalla ennakkoluulojen (käynnistysvarmistuksesta johtuvan) ja varianssin välillä (viivästysten ja satunnaisuuden vuoksi pitkän aikavälin tuloksissa). Monivaiheinen DQN ja kokemuksen uudelleentoisto DQN on yksi laajennuksista, joita tutkitaan artikkelissa Rainbow: Parannusten yhdistäminen syvävahvistusoppimisessa .
DQN: ssä käytetyn lähestymistavan on lyhyesti esittänyt David Silver osassa tätä videoluentoa (noin klo 01:17: 00, mutta kannattaa nähdä osiot ennen sitä). Suosittelen katsomaan koko sarjaa, joka on jatko-opintojakso vahvistamisen oppimisesta, jos sinulla on aikaa.
Kommentit
- Anna ’ sanovat koulutuksen aikana, että olemme yhdessä tilassa ja ryhdymme toimiin epsilon-ahneiden käytäntöjen mukaisesti ja sinä päätät toiseen valtioon. Joten saat palkintoja ja seuraavan valtion. Tässä palkinto voi olla pelin pisteet ja tilat voivat olla näytön pikselikuviot. Ja sitten otamme virheen funktion apoksimaattorimme ja ahneesta käytännöstä saamamme arvon välillä käyttämällä jo jäädytettyä funktion approksimaattoria. Mutta kokemuksen uusinnalla lähentimen optimoinnissa otamme jonkin satunnaisen tilan toimintatietojoukon. Olenko oikeassa?
- @ShamaneSiriwardhana: Kyllä, luulen, että olet oikeassa. Se on täsmälleen samat tiedot todellisesta liikeradasta, mutta sen sijaan, että opit vain viimeisimmästä vaiheesta, tallennat sen isoon taulukkoon ja otat taulukon (yleensä useita näytteitä, joista voit valita 1000: n edellisen vaiheen tallennuksen) ). Jos tarvitset lisää selvennyksiä, ehkä kysy kysymys sivustolta.
- Joo, käin läpi paperin uudelleen. Siinä sanotaan myös, että tämä menetelmä voi parantaa myös politiikan ulkopuolista oppimista. Koska Q: ssa oppiminen toimii epsilon-ahneiden käytäntöjen mukaan, mutta päivitysarvot toimivat ahneiden käytäntöjen mukaisesti. Joten kun joka kerta päivitämme hermoverkkoparametrejamme päivitettynä mini-erätilastoilla, mikä ei vielä tärkeämmin liity tarkkoihin ajankohtaisiin tilastotietoihin, mutta ennen tätä tapahtuneet myös auttavat korreloimaan tietoja. ’ käynyt läpi sateenkaaren paperin, enkä nähnyt ’ en nähnyt mitään erityisiä kommentteja erityisen temppun käytöstä kokemusten uusinnan ja monilähetysten yhdistämisessä. vaihe menetelmä. Olen myös ’ kuullut, että monivaiheista menetelmää on alun perin mahdotonta yhdistää kokemusten toistoon, mutta miksi ei vain valita satunnaisesti n-peräkkäistä kokemusta yhden sijasta kokemuksen uusinnasta, mutta toistosta niin että jokaisen n-kokemuksen välillä ei löydy korrelaatioita? Eikö ’ t tätä monivaiheista kokemusten toistoa?
- @NeilSlater Miksi ” on vaikeampaa käyttää Vaiheoppimisalgoritmit ”? Mitä tarkoitit?
Vastaa
Algoritmi (tai ainakin sen versio, sellaisena kuin se on toteutettu Coursera RL -kiviprojekti ) on seuraava:
-
Luo uusintapuskuri, joka tallentaa viimeisen
#buffer_size
SARS (Valtio, toiminta, palkinto, uusi valtio) kokemuksia. -
Suorita agenttisi ja anna sen kerätä kokemuksia toistopuskuriin, kunnes sillä (puskurilla) on vähintään
#batch_size
kokemuksia .- Voit valita toimintoja tietyn käytännön mukaan (esim. soft-max erilliselle toimintatilalle, Gaussian jatkuvalle jne.) $: n yli \ hat {Q} (s, a; \ theta) $ -funktion estimaattori.
-
Kun se saavuttaa
#batch_size
tai enemmän:-
tee kopio funktion estimaattorista ( $ \ hat {Q} (s, a; \ theta) $ ) kulloinkin, eli kopio painoista $ \ theta $ – jotka ”jäädytät” ja älä päivitä, ja käytä laskemaan ”todelliset” tilat $ \ hat {Q} (s ”, a”; \ theta) $ . Suorita
num_replay
päivitykset:-
näyte
#batch_size
kokemuksia toistopuskurista. -
Käytä näytteenottokokemuksia pr muokkaa eräpäivitystä funktion estimaattoriin (esim. Q-Learningissa, jossa $ \ hat {Q} (s, a) = $ hermoverkko – päivitä verkon painot). Käytä jäädytettyjä painoja ”todellisena” toimintoarvo-funktiona, mutta jatka ei-jäädytetyn toiminnon parantamista.
-
-
Tee tämä, kunnes päästä päätetilaan.
-
älä unohda liittää uusia kokemuksia jatkuvasti uusintapuskuriin
-
-
Suorita niin monta jaksoa kuin tarvitset.
Mitä tarkoitan ”totta”: jokainen kokemus voidaan ajatella ”valvotuksi” oppimisduoiksi, jossa sinulla on todellinen arvofunktio $ Q (s, a) $ ja funktion estimaattori $ \ hat {Q} (s, a) $ . Tavoitteenasi on vähentää Value-Error-arvoa, esim. $ \ sum (Q (s, a) – \ hat {Q} (s, a)) ^ 2 $ . Koska luultavasti sinulla ei ole pääsyä true -toimintoarvoihin, käytät sen sijaan viimeisimmän estimaattorin parannettua käynnistysversiota , ottaen huomioon saadut uudet kokemukset ja palkkiot. Q-oppimisen ”todellinen” toimintoarvo on $ Q (s, a) = R_ {t + 1} + \ gamma \ max_ {a ”} \ hat {Q} (s”, a ”; \ theta) $ jossa $ R $ on palkkio ja $ \ gamma $ on alennustekijä.
Tässä on ote koodista:
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