Eu implementei o Q-Learning conforme descrito em,
http://web.cs.swarthmore.edu/~meeden/cs81/s12/papers/MarkStevePaper.pdf
Para aprox. Q (S, A) Eu uso uma estrutura de rede neural como a seguir,
- Ativação sigmóide
- Entradas, número de entradas + 1 para neurônios de Ação (Todas as Entradas Escaladas 0-1)
- Saídas, saída única. Valor Q
- N número de M camadas ocultas.
- Método de exploração aleatório 0 <rand () <propExplore
Em cada iteração de aprendizado usando a seguinte fórmula,
Calculo um valor Q-Target e calculo um erro usando,
error = QTarget - LastQValueReturnedFromNN
e voltar a propagar o erro através da rede neural.
Q1, estou no caminho certo? Eu vi alguns trabalhos que implementam um NN com um neurônio de saída para cada ação.
Q2, Minha função de recompensa retorna um número entre -1 e 1. Tudo bem retornar um número entre -1 e 1 quando a função de ativação é sigmóide (0 1)
P3: Pela minha compreensão desse método, dadas as instâncias de treinamento suficientes, deve-se colocar em quarentena para encontrar uma política ideal. Às vezes, durante o treinamento para XOR, ele é aprendido após 2k iterações; às vezes, não é aprendido mesmo após 40k 50k iterações.