Estou tentando usar uma rede neural para aproximar o valor de Q no aprendizado de Q, como em Perguntas sobre Q-Learning usando redes neurais . Conforme sugerido na primeira resposta, estou usando uma função de ativação linear para a camada de saída, enquanto ainda estou usando a função de ativação sigmóide nas camadas ocultas (2, embora eu possa alterar isso mais tarde). Também estou usando um único NN que retorna uma saída para cada ação conforme recomendado.
No entanto, o algoritmo ainda está divergindo pelo simples problema de balanceamento de carrinho. Então, receio que meu Q-update esteja errado. Após a inicialização, o que eu fiz em cada etapa é o seguinte:
- Calcule usando a propagação direta do NN para todas as ações.
- Selecione uma nova ação, , aterre em um novo estado s t .
- Calcule usando a propagação direta do NN para todas as ações.
- Defina o vetor de erro como
- Backpropagate o erro através do NN para atualizar as matrizes de peso.
Alguém poderia me indicar onde eu errei?
Além disso, você acha que devo incluir também um termo tendencioso na camada de entrada e na primeira camada oculta (ou seja, para as funções sigmóides)? Isso fará diferença?
Muito obrigado antecipadamente por sua ajuda. Posso ajudar a esclarecer a pergunta ou compartilhar o código, se necessário.
fonte