He implementado Q-Learning como se describe en,
http://web.cs.swarthmore.edu/~meeden/cs81/s12/papers/MarkStevePaper.pdf
Para aprox. P (S, A) Uso una estructura de red neuronal como la siguiente,
- Activación sigmoidea
- Entradas, número de entradas + 1 para neuronas de acción (todas las entradas escaladas 0-1)
- Salidas, salida única. Q-Value
- N número de M capas ocultas.
- Método de exploración aleatorio 0 <rand () <propExplore
En cada iteración de aprendizaje usando la siguiente fórmula,
Calculo un valor de Q-Target y luego calculo un error usando,
error = QTarget - LastQValueReturnedFromNN
y volver a propagar el error a través de la red neuronal.
Q1, ¿estoy en el camino correcto? He visto algunos documentos que implementan un NN con una neurona de salida para cada acción.
P2, Mi función de recompensa devuelve un número entre -1 y 1. ¿Está bien devolver un número entre -1 y 1 cuando la función de activación es sigmoidea (0 1)
P3: Según tengo entendido este método, dado que hay suficientes instancias de capacitación, ¿debería ponerse en cuarentena para encontrar una política óptima? Al entrenar para XOR, a veces lo aprende después de 2k iteraciones, a veces no aprende incluso después de 40k 50k iteraciones.