Perché non vedi i livelli di abbandono negli esempi di apprendimento del rinforzo?


13

Ho studiato l'apprendimento per rinforzo e in particolare ho cercato di creare i miei ambienti da utilizzare con l'IA di OpenAI Gym. Sto usando gli agenti del progetto stable_baselines per testarlo.

Una cosa che ho notato praticamente in tutti gli esempi di RL è che non sembra esserci mai alcun dropout layer in nessuna delle reti. Perchè è questo?

Ho creato un ambiente che simula i prezzi delle valute e un semplice agente, utilizzando DQN, che tenta di imparare quando acquistare e vendere. Addestrandolo su quasi un milione di timestep tratti da una serie specifica di dati che consiste in un mese di dati sui prezzi di 5 minuti, sembra sovralimentare molto. Se poi valuto gli agenti e il modello rispetto a un valore di un mese diverso di dati viene eseguito in modo abissale. Quindi suona come un overfitting classico.

Ma c'è un motivo per cui non vedi i livelli di dropout nelle reti RL? Esistono altri meccanismi per provare a gestire il sovradimensionamento? O in molti esempi di RL non importa? ad esempio, potrebbe esserci un solo vero modo per ottenere il punteggio più alto nel gioco "breakout", quindi potresti anche impararlo esattamente e non è necessario generalizzare?

O si ritiene che la natura caotica dell'ambiente stesso dovrebbe fornire abbastanza diverse combinazioni di risultati che non è necessario disporre di livelli di abbandono?


1
Hai provato ad aggiungere dropout a una rete RL per vedere cosa succede? Ho (per un solutore LunarLander_v2 che funziona bene altrimenti), e i risultati sono stati terribili, si passa dalla risoluzione in 400 episodi, alla completa mancanza di risoluzione (e ho provato molte varianti in altri parametri). L'altra regolarizzazione è OK e persino benefica. Non so ancora perché i problemi con l'abbandono, stessero pensando di fare una domanda qui. . .
Neil Slater,

Neil, sì, sembra che la tua esperienza echeggi ciò che viene detto di seguito da Dennis. Come mi aspettavo, nello scenario di tipo "risolvi questo enigma" stai davvero cercando di esagerare come vuoi risolvere quel puzzle specifico. E vuoi sapere se stai incontrando un alieno blu contro un alieno rosso in quanto potrebbero comportarsi diversamente nel tuo gioco.
Matt Hamilton,

@MattHamilton Mi è capitato di vedere un thread di tweet fatto da qualcuno sulla storia "I ricercatori di RL stanno valutando i dati di formazione". Ho modificato un link a quello nella mia risposta. Il punto è sempre lo stesso quando si tratta di rispondere alla tua domanda, ma sono d'accordo con la catena di tweet che ho collegato lì che la verità è un po 'più sfumata.
Dennis Soemers,

Risposte:


11

Il dropout introduce essenzialmente un po 'più di varianza. In contesti di apprendimento supervisionato, questo in effetti spesso aiuta a ridurre il sovrautilizzo (anche se credo che anche l'abbandono stia già diventando meno alla moda negli ultimi anni rispetto a pochi anni prima; non sono sicuro al 100%, non è il mio principale Area di competenza).

Nell'apprendimento per rinforzo, la varianza aggiuntiva non è proprio ciò che stiamo cercando. Vi è già una grande variazione nei segnali di apprendimento che otteniamo e questa variazione tende già ad essere un grosso problema per la stabilità e / o la velocità di apprendimento. Per esempio:

  • La casualità nella selezione dell'azione porta alla varianza dei rendimenti che osserviamo
  • Ci può essere casualità inerente all'ambiente stesso, portando a una maggiore varianza nelle nostre osservazioni (alcuni ambienti non sono deterministici)
  • r+maxun''Q(S',un'')r'' problema, che può essere visto come ulteriore varianza nei nostri segnali di apprendimento.

Molte parti importanti degli algoritmi Deep RL (senza le quali i nostri processi di formazione si trasformano empiricamente in destabilizzazione e degradazione) sono molto su misura per ridurre quella varianza. Ad esempio, le reti target in DQN sono state introdotte specificamente per ridurre il problema dei target mobili. Da questo punto di vista, non sorprende che se dovessimo aggiungere di nuovo una varianza artificiale attraverso altri mezzi (come l'abbandono), ciò danneggerebbe le prestazioni / destabilizzerebbe l'apprendimento.


Esistono altri meccanismi per provare a gestire il sovradimensionamento? O in molti esempi di RL non importa? ad esempio, potrebbe esserci un solo vero modo per ottenere il punteggio più alto nel gioco "breakout", quindi potresti anche impararlo esattamente e non è necessario generalizzare?

Nella maggior parte delle attuali ricerche sull'apprendimento del rinforzo (profondo), il sovrautilizzo non è effettivamente considerato un problema. La stragrande maggioranza della ricerca RL consiste nella formazione in un ambiente (ad esempio Cartpole o Breakout, o in un livello particolare in Pacman, o nella navigazione in un labirinto specifico, ecc.) E nella valutazione costante delle prestazioni durante quel processo di apprendimento o nella valutazione prestazioni dopo un tale processo di apprendimento nello stesso ambiente .

Se dovessimo confrontare tale metodologia di valutazione con ciò che accade nell'apprendimento supervisionato ... fondamentalmente stiamo valutando le prestazioni sul set di formazione * . Nell'apprendimento supervisionato, ciò sarebbe assolutamente inaccettabile, ma in RL è trattato come accettabile e più regola che eccezione. Alcuni dicono che questo è semplicemente un problema nella ricerca RL attuale, qualcosa che deve cambiare. Si potrebbe anche sostenere che non è necessariamente un problema; se siamo davvero in grado di addestrare l'agente esattamente nello stesso ambiente in cui vorremmo implementarlo in un secondo momento ... beh, allora qual è il problema con il suo adattamento a quell'ambiente?

Pertanto, quando utilizziamo la metodologia di valutazione sopra descritta, in effetti ci stiamo adattando a un ambiente specifico, ma il sovradimensionamento è buono anziché negativo in base ai nostri criteri di valutazione . È chiaro che questa metodologia non porta ad agenti che possono generalizzare bene comunque; se alleni costantemente un agente per navigare in un particolare labirinto, probabilmente non sarà in grado di navigare in un labirinto diverso dopo l'allenamento.

* Nota: la verità, secondo me, è leggermente più sfumata di quella che stiamo davvero "valutando sul set di addestramento" in RL. Vedi, ad esempio, questo bel thread di tweet: https://twitter.com/nanjiang_cs/status/1049682399980908544


Ho creato un ambiente che simula i prezzi delle valute e un semplice agente, utilizzando DQN, che tenta di imparare quando acquistare e vendere. Addestrandolo su quasi un milione di timestep tratti da una serie specifica di dati che consiste in un mese di dati sui prezzi di 5 minuti, sembra sovralimentare molto. Se poi valuto gli agenti e il modello rispetto a un valore di un mese diverso di dati viene eseguito in modo abissale. Quindi suona come un overfitting classico.

Si noti che la metodologia di valutazione qui descritta non si adatta più alla metodologia di valutazione più "comune". Hai un problema con la deriva dei concetti , con la non stazionarietà nell'ambiente. Ciò significa che un overfitting può essere un problema per te.

Tuttavia, non sono sicuro che il dropout possa aiutare (è ancora una varianza aggiuntiva che potrebbe ferire). Innanzitutto, vorrai assicurarti che ci sia un modo per tenere traccia del tempo / mese nei tuoi input, in modo tale che almeno avrai la possibilità di apprendere una politica che si adatta nel tempo. Se hai un confine chiaro e solido tra "fase di allenamento" e "fase di valutazione" e sai che la deriva del concetto si verifica oltre quel limite (sai che il tuo ambiente si comporta diversamente nella fase di addestramento dalla fase di valutazione) ... in realtà non hanno molte speranze di apprendere una politica solo dall'esperienza nella fase di formazione che funziona ancora bene nella fase di valutazione. Sospetto che dovrai sbarazzarti di quel confine chiaro e solido. Voi' Vorrei continuare a studiare anche durante la fase di valutazione. Ciò consente al tuo algoritmo di apprendimento di raccogliere effettivamente esperienze nell'ambiente modificato e di adattarsi ad esso.


1
Dennis, grazie mille per la tua risposta molto dettagliata! Gran parte di ciò conferma i miei sospetti: vale a dire che più RL sta cercando di risolvere un problema molto specifico in un ambiente specifico in cui spesso esiste una chiara "migliore" soluzione a quel problema.
Matt Hamilton,

2
@MattHamilton Nota che esiste una ricerca verso RL per ambienti più generali. Se sei interessato a queste cose, ti consigliamo di cercare combinazioni di "Apprendimento di trasferimento" e "Apprendimento di rinforzo", o cose come RL multi-task (RL multi-obiettivo può anche essere interessante, ma probabilmente è leggermente diverso ). Questi tipi di sforzi tendono comunque ad essere significativamente meno performanti rispetto all'approccio tradizionale di formazione e valutazione su un ambiente alla volta.
Dennis Soemers,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.