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,
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.
Si può anche chiedere questo a http://datascience.stackexchange.com/ – runDOSrun
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
@maxy Q-learning tabulare è banale fintanto che lo spazio degli stati è piuttosto piccolo. – Luke