Eu quero criar uma IA que possa jogar cinco em linha / gomoku. Como mencionei no título, quero usar o aprendizado por reforço para isso.
Eu uso o método gradiente de política , ou seja, REFORÇAR, com a linha de base. Para a aproximação das funções de valor e política, eu uso uma rede neural . Possui camadas convolucionais e totalmente conectadas. Todas as camadas, exceto a saída, são compartilhadas. A camada de saída da política possui (o tamanho da placa) e uma unidade de saída macia . Então é estocástico. Mas e se a rede produzir uma probabilidade muito alta de uma movimentação inválida? Uma jogada inválida ocorre quando o agente deseja verificar um quadrado com um "X" ou "O". Eu acho que pode ficar preso nesse estado de jogo.
Você poderia recomendar alguma solução para este problema?
Meu palpite é usar o método ator-crítico . Para uma jogada inválida, devemos dar uma recompensa negativa e passar o turno para o oponente.
fonte
Normalmente, os métodos softmax em métodos de gradiente de política que usam aproximação de função linear usam a seguinte fórmula para calcular a probabilidade de escolher a açãoa . Aqui, os pesos são θ , e as características ϕ é uma função do estado atual s e uma ação do conjunto de ações A .
No pseudocódigo, a fórmula pode ser assim:
Seja usando aproximação de função linear ou não linear (sua rede neural), a idéia é usar apenas os movimentos legais ao calcular seu softmax. Esse método significa que apenas movimentos válidos serão dados pelo agente, o que é bom se você quiser mudar seu jogo mais tarde e que a diferença de valor entre a escolha limitada de ações será mais fácil de ser discriminada pelo agente. Também será mais rápido à medida que o número de ações possíveis diminuir.
fonte
IMHO a idéia de movimentos inválidos é inválida. Imagine colocar um "X" nas coordenadas
(9, 9)
. Você pode considerar uma jogada inválida e dar uma recompensa negativa. Absurdo? Certo!Mas, na verdade, seus movimentos inválidos são apenas uma relíquia da representação (que por si só é direta e correta). O melhor tratamento para eles é excluí-los completamente de qualquer cálculo.
Isso fica mais aparente no xadrez:
Em uma representação posicional, você pode considerar a jogada
a1-a8
, que só pertence ao jogo se houver uma Torre ou uma Rainha ema1
(e algumas outras condições se mantiverem).Em uma representação diferente, você pode considerar a mudança
Qb2
. Novamente, isso pode ou não pertencer ao jogo. Quando o jogador atual não tem rainha, certamente não.Como os movimentos inválidos estão relacionados à representação e não ao jogo, eles não devem ser considerados.
fonte
Recentemente, enfrentei um problema semelhante com o Campo Minado.
O jeito que eu resolvi foi ignorando completamente os movimentos ilegais / inválidos.
Espero que isto ajude.
fonte