7

ho implementato Q-Learning come descritto in,Domande su Q-Learning usando Reti Neurali

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

Per circa. Q (S, A) io uso una struttura di rete neurale come il seguente,

  • attivazione sigmoide
  • Input, numero di ingressi + 1 per azione neuroni (tutti gli ingressi scalato 0-1)
  • uscite, uscita singola. Q-Value
  • N numero di livelli nascosti M.
  • Exploration metodo casuale 0 < rand() < propExplore

Ad ogni apprendimento iterazione utilizzando la seguente formula,

enter image description here

a calcolare un valore di Q-Target quindi calcolare un errore utilizzando,

error = QTarget - LastQValueReturnedFromNN 

e indietro propagare l'errore tramite h la rete neurale.

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

Q2, funzione My ricompensa restituisce un numero compreso tra -1 e 1. E 'ok per restituire un numero compreso tra -1 e 1 quando la funzione di attivazione è sigma (0 1)

Q3, Dalla mia comprensione della questo metodo dato abbastanza istanze di formazione dovrebbe essere messo in quarantena per trovare una politica ottimale wight? Quando si allena per XOR a volte lo impara dopo 2k iterazioni a volte non imparerà nemmeno dopo 40k 50k iterazioni.

+0

Si può anche chiedere questo a http://datascience.stackexchange.com/ – runDOSrun

+0

La mia ipotesi è che le risposte sono sì, sì, sì, tuttavia le reti neurali sono bestie complesse. È facile dare parametri sbagliati, velocità di apprendimento, numero di unità nascoste. Al contrario, l'apprendimento Q tabulare è banale da implementare ed eseguire il debug. – maxy

+0

@maxy Q-learning tabulare è banale fintanto che lo spazio degli stati è piuttosto piccolo. – Luke

risposta

5

Q1. È più efficiente se metti tutti i neuroni di azione nell'output. Un singolo passaggio in avanti ti darà tutti i valori di q per quello stato. Inoltre, la rete neurale sarà in grado di generalizzare in un modo molto migliore.

Q2. Sigmoid viene in genere utilizzato per la classificazione. Mentre puoi usare sigmoid in altri livelli, non lo userei nell'ultimo.

Q3. Bene ... Q-learning con reti neurali è famoso per non sempre convergente. Dai un'occhiata a DQN (deepmind). Quello che fanno è risolvere due questioni importanti. Decodificano i dati di allenamento usando la riproduzione di memoria. La discesa del gradiente stocastico non piace quando i dati di allenamento vengono dati in ordine. Secondo, eseguono il bootstrap usando vecchi pesi. In questo modo riducono non stazionario.