Ik “heb Googles DeepMind Atari paper gelezen en ik probeer het om het concept van “ervaringsherhaling” te begrijpen. Herhaling van ervaringen komt in veel andere leerpapieren ter versterking naar voren (vooral de AlphaGo-paper), dus ik wil begrijpen hoe het werkt. Hieronder staan enkele fragmenten.
Ten eerste gebruikten we een biologisch geïnspireerd mechanisme, ervaringsherhaling genaamd, dat de gegevens willekeurig verdeelt, waardoor correlaties in de observatiereeks worden verwijderd en veranderingen in de gegevensverdeling worden gladgestreken.
Het artikel werkt als volgt uit:
Terwijl er andere stabiele methoden bestaan voor het trainen van neurale netwerken in de setting van reinforcement learning, zoals neurale aangepaste Q-iteratie, omvatten deze methoden de herhaalde training van netwerken de novo honderden iteraties. Bijgevolg zijn deze methoden, in tegenstelling tot ons algoritme, te inefficiënt om met succes te worden gebruikt met grote neurale netwerken. We parametriseren een functie met een geschatte waarde $ Q (s, a; \ theta_i) $ met behulp van het diepe convolutionele neurale netwerk dat wordt getoond in figuur 1, waarin $ \ theta_i $ zijn de parameters (d.w.z. gewichten) van het Q-netwerk bij iteratie $ i $ . Om de ervaring opnieuw af te spelen, slaan we de ervaringen van de agent $ e_t = (s_t, a_t, r_t, s_ {t + 1}) $ op bij elke tijdstap $ t $ in een dataset $ D_t = \ {e_1, \ dots, e_t \} $ . Tijdens leren, passen we Q-learning-updates toe op voorbeelden (of mini-batches) van ervaring $ (s, a, r, s “) \ sim U (D) $ , gelijkmatig willekeurig getrokken uit de pool van opgeslagen monsters. De Q-learning-update tijdens iteratie $ i $ gebruikt de volgende verliesfunctie:
$$ 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] $$
Wat is ervaringsherhaling en wat zijn de voordelen ervan, in termen van leken?
Antwoord
Het belangrijkste deel van de geciteerde tekst is:
Om ervaringsherhaling uit te voeren, slaan we de ervaringen van de agent op $ e_t = (s_t, a_t, r_t, s_ {t + 1} ) $
Dit betekent dat in plaats van Q-learning uit te voeren op status / actie-paren zoals ze optreden tijdens simulatie of feitelijke ervaring, het systeem de gegevens opslaat die zijn ontdekt voor [staat, actie, beloning, volgende_staat] – meestal in een grote tafel. Merk op dat dit niet de bijbehorende waarden opslaat – dit zijn de ruwe gegevens die later in de berekeningen van actiewaarden kunnen worden gebruikt.
De leerfase is dan logisch gescheiden van het opdoen van ervaring, en gebaseerd op het nemen van willekeurige steekproeven uit deze tabel. Je wilt nog steeds de twee processen – handelen en leren – met elkaar verweven, omdat het verbeteren van het beleid zal leiden tot ander gedrag dat acties zou moeten onderzoeken die dichter bij de optimale liggen, en daar wil je van leren. U kunt dit echter naar wens splitsen, bijv. neem een stap, leer van drie willekeurige eerdere stappen enz. De Q-Learning-doelen gebruiken bij het gebruik van ervaringsherhaling dezelfde doelen als de online versie, dus daar is geen nieuwe formule voor. De gegeven verliesformule is ook degene die je zou gebruiken voor DQN zonder ervaringsherhaling. Het verschil is alleen welke s, a, r, s “, a” je eraan toevoegt.
In DQN onderhield het DeepMind-team ook twee netwerken en wisselde welke was leren en welke men huidige actiewaarde schattingen invoert als “bootstraps”. Dit hielp met de stabiliteit van het algoritme bij gebruik van een niet-lineaire functiebenadering. Dat is waar de balk voor staat in $ {\ theta} ^ {\ overline {\ space}} _ i $ – het geeft de alternatieve bevroren versie van de gewichten aan.
Voordelen van ervaringsherhaling:
-
Efficiënter gebruik van eerdere ervaring door er meerdere keren mee te leren. Dit is essentieel wanneer het opdoen van praktijkervaring duur is, u kunt er volledig gebruik van maken De Q-learning-updates zijn incrementeel en convergeren niet snel, dus meerdere passen met dezelfde gegevens zijn gunstig, vooral wanneer er een lage variantie is in de onmiddellijke resultaten (beloning, volgende status) gegeven dezelfde status, actiepaar.
-
Beter convergentiegedrag bij het trainen van een functiebenaderer. Deels komt dit doordat de gegevens meer lijken op iid gegevens die worden verondersteld in meest begeleide convergentiebewijzen.
Nadeel van ervaringsherhaling:
- Het is moeilijker om leeralgoritmen met meerdere stappen te gebruiken, zoals Q ($ \ lambda $) , die kunnen worden afgestemd om betere leercurves te geven door te balanceren tussen bias (als gevolg van bootstrapping) en variantie (als gevolg van vertragingen en willekeur in langetermijnresultaten). Meerstaps DQN met ervaringsherhaling DQN is een van de uitbreidingen die worden onderzocht in het artikel Rainbow: Combinatie van verbeteringen in diepgaand leren .
De aanpak die wordt gebruikt in DQN is kort uiteengezet door David Silver in delen van deze videocollege (rond 01:17: 00, maar de moeite van het bekijken waard). Ik raad aan om de hele serie te bekijken, die een cursus op graduate niveau is over bekrachtigingsleren, als je tijd hebt.
Reacties
- Laat ‘ s zeggen dat we tijdens de training in de ene staat zijn en dat we een actie ondernemen volgens het hebzuchtige beleid van epsilon en je eindigt in een andere staat. Dus je krijgt beloningen, en de volgende staat. Hier kan de beloning de score van het spel zijn en de toestanden kunnen de pixelpatronen in het scherm zijn. En dan nemen we de fout tussen onze functie-aproximator en de waarde die we kregen van het hebzuchtige beleid opnieuw met behulp van de reeds bevroren functie-benaderer. Maar met de ervaringsherhaling bij het optimaliseren van de benadering, nemen we een willekeurige gegevensset voor statusacties. Heb ik gelijk?
- @ShamaneSiriwardhana: Ja, ik denk dat je gelijk hebt. Het zijn exact dezelfde gegevens van het echte traject, maar in plaats van alleen te leren van de meest recente stap, sla je het op in een grote tabel en een sample uit die tabel (meestal meerdere samples, met een opslag van duizenden eerdere stappen om uit te kiezen ). Als je meer verduidelijking nodig hebt, stel dan misschien een vraag op de site.
- Ja, ik heb de krant nog eens doorgenomen. Het zegt ook dat deze methode ook het leren buiten het beleid kan verbeteren. Omdat in Q leren met handelen volgens epsilon-hebzuchtig beleid, maar waarden bijwerken volgens hebzuchtig beleid. Dus wanneer elke tijdstap onze neurale netparameters worden bijgewerkt door mini-batchstatistieken, wat nog belangrijker is, niet gerelateerd is aan exacte tijdstapstatistieken, maar wat er eerder is gebeurd, helpt dit ook om de gegevens niet te correleren.
- @Neil Slater, I ‘ ik heb de Rainbow-paper doorgenomen en ik heb ‘ geen speciale opmerkingen gezien over het gebruik van een speciale truc om ervaringsherhaling en multi- stap methode. Ook heb ik ‘ gehoord dat de methode met meerdere stappen oorspronkelijk onmogelijk te combineren is met ervaringsherhaling, maar waarom niet willekeurig n-opeenvolgende ervaringen kiezen in plaats van 1 uit ervaringsherhaling, maar uit de herhaling dus dat er tussen elke n-ervaringen geen correlaties zijn gevonden? Is het niet ‘ niet mogelijk om deze ervaring opnieuw af te spelen?
- @NeilSlater Waarom is het ” moeilijker om meerdere algoritmen voor stapsgewijs leren “? Wat bedoelde je?
Antwoord
Het algoritme (of tenminste een versie ervan, zoals geïmplementeerd in het Coursera RL sluitsteenproject ) is als volgt:
-
Maak een Replay “Buffer” die de laatste
#buffer_size
SARS (Staat, Actie, Beloning, Nieuwe Staat) ervaringen. -
Voer uw agent uit en laat hem ervaringen verzamelen in de replay-buffer totdat deze (de buffer) ten minste
#batch_size
ervaringen heeft .- U kunt acties selecteren volgens een bepaald beleid (bijv. soft-max voor discrete actieruimte, Gaussian voor continu, enz.) via uw $ \ hat {Q} (s, a; \ theta) $ functie schatter.
-
Zodra het
#batch_size
, of meer:-
maak een kopie van de functie schatter ( $ \ hat {Q} (s, a; \ theta) $ ) op dit moment, dwz een kopie van de gewichten $ \ theta $ – die u “vastzet” en niet bijwerkt, en gebruik om de “ware” toestanden te berekenen $ \ hat {Q} (s “, a”; \ theta) $ . Rennen voor
num_replay
updates:-
voorbeeld
#batch_size
ervaringen uit de replay buffer. -
Gebruik de steekproefervaringen om pr Voer een batchupdate in voor uw functie schatter (bijv. in Q-Learning waar $ \ hat {Q} (s, a) = $ Neuraal netwerk – update de gewichten van het netwerk). Gebruik de bevroren gewichten als de “echte” actiewaardenfunctie, maar blijf de niet-bevroren functie verbeteren.
-
-
doe dit totdat je een terminale toestand bereiken.
-
vergeet niet om constant nieuwe ervaringen toe te voegen aan de herhalingsbuffer.
-
-
Ren zo veel afleveringen als je nodig hebt.
Wat ik bedoel met “waar”: elke ervaring kan worden gezien als een “begeleid” leerduo, waar je een echte waarde-functie hebt $ Q (s, a) $ en een functie-schatter $ \ hat {Q} (s, a) $ . Uw doel is om de waarde-fout te verminderen, bijv. $ \ sum (Q (s, a) – \ hat {Q} (s, a)) ^ 2 $ . Aangezien je waarschijnlijk “geen toegang hebt tot de true actiewaarden, gebruik je in plaats daarvan een bootstrapped verbeterde versie van de laatste schatter , rekening houdend met de nieuwe ervaring en beloning die is gegeven. In Q-learning is de “ware” actiewaarde $ Q (s, a) = R_ {t + 1} + \ gamma \ max_ {a “} \ hat {Q} (s”, a “; \ theta) $ waarbij $ R $ de beloning is en $ \ gamma $ is de kortingsfactor.
Hier is een fragment uit de code:
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