Domande su Q-Learning tramite reti neurali


14

Ho implementato Q-Learning come descritto in,

http://web.cs.swarthmore.edu/~meeden/cs81/s12/papers/MarkStevePaper.pdf

Al fine di ca. Q (S, A) Uso una struttura di rete neurale come la seguente,

  • Sigmoide di attivazione
  • Ingressi, numero di ingressi + 1 per neuroni d'azione (tutti gli ingressi in scala 0-1)
  • Uscite, uscita singola. Q-Valore
  • N numero di M strati nascosti.
  • Metodo di esplorazione casuale 0 <rand () <propExplore

Ad ogni iterazione di apprendimento utilizzando la seguente formula,

inserisci qui la descrizione dell'immagine

Calcolo un valore Q-Target quindi calcolo un errore usando,

error = QTarget - LastQValueReturnedFromNN

e viceversa propagare l'errore attraverso la rete neurale.

Q1, sono sulla buona strada? Ho visto alcuni documenti che implementano un NN con un neurone in uscita per ogni azione.

Q2, La mia funzione di ricompensa restituisce un numero compreso tra -1 e 1. Va bene restituire un numero tra -1 e 1 quando la funzione di attivazione è sigmoide (0 1)

D3: Dalla mia comprensione di questo metodo, dato un numero sufficiente di esempi di formazione, dovrebbe essere messo in quarantena per trovare una politica ottimale? Quando si allena per XOR a volte lo impara dopo 2k iterazioni a volte non impara nemmeno dopo 40k 50k iterazioni.


Per curiosità, come hai combinato l'input dello stato con l'input dell'azione, al fine di alimentare entrambi contemporaneamente alla rete? Hai questo pezzo di codice disponibile pubblicamente? Grazie!
Pedro Lopes,

Risposte:


9

Q1. Sei sicuramente sulla strada giusta, ma alcune modifiche potrebbero essere di grande aiuto. Alcune persone usano un'unità di output per azione in modo che debbano eseguire la propria rete una sola volta per la selezione dell'azione (devi eseguire la tua rete una volta per ogni possibile azione). Ma questo non dovrebbe fare la differenza per quanto riguarda l'apprendimento , e vale la pena implementarlo solo se hai intenzione di ridimensionare significativamente il tuo modello.

Q2. Generalmente, le persone usano una funzione di attivazione lineare per l'ultimo strato della loro rete neurale, specialmente per l'apprendimento di rinforzo. Ci sono molte ragioni per questo, ma la più pertinente è che una funzione di attivazione lineare ti consente di rappresentare l'intera gamma di numeri reali come output. Pertanto, anche se non conosci i limiti delle ricompense per il tuo compito, sei comunque sicuro di essere in grado di rappresentare quell'intervallo.

Q3. Sfortunatamente, le garanzie teoriche per combinare le reti neurali (e l'approssimazione di funzioni non lineari in generale) con l'apprendimento per rinforzo sono praticamente inesistenti. Esistono alcune versioni più elaborate dell'apprendimento per rinforzo (principalmente dal laboratorio di Sutton) che possono fare il tipo di affermazioni sulla convergenza che menzioni, ma non ho mai visto quegli algoritmi applicati "in natura". La ragione di ciò è che, sebbene non si possano promettere grandi prestazioni, in genere si ottiene in pratica, con la giusta attenzione agli iperparametri e alle condizioni iniziali.

Un ultimo punto che vale la pena menzionare per le reti neurali in generale: non usare le funzioni di attivazione sigmoid per reti con molti livelli nascosti! Sono maledetti dal problema dei "gradienti di fuga"; il segnale di errore raggiunge a malapena i livelli precedenti (osservando la derivata della funzione dovrebbe chiarire perché questo è il caso). Invece, prova a utilizzare unità lineari rettificate (RELU) o unità "soft plus", poiché generalmente mostrano prestazioni molto migliori nelle reti profonde.

Vedi questo documento per una grande implementazione di reti neurali addestrate con l'apprendimento per rinforzo:

Mnih, Volodymyr, et al. "Giocare ad Atari con un profondo apprendimento di rinforzo." arXiv prestampa arXiv: 1312.5602 (2013).


0

Per la funzione di attivazione, anche maxout funziona bene. L'utilizzo di un trainer adeguato è fondamentale per le reti profonde, avevo provato vari trainer ma ho deciso di restare con RMSprop ed è fantastico!


1
Benvenuto nel sito, @ user3355911. Questo è probabilmente troppo scarso per essere una risposta qui. Puoi espanderlo e arricchirlo di più?
gung - Ripristina Monica
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.