Qual é o compromisso exploração-exploração ideal em Q * bert?
Estou treinando um agente RL com Deep Q-learning + Experience Replay no ambiente Q * bert Atari. Após 400.000 frames, meu agente parece ter aprendido informações estratégicas sobre o jogo, mas nenhuma sobre o meio ambiente. Ela aprendeu que uma boa estratégia imediata é simplesmente pular para baixo nas duas diagonais e cair do tabuleiro, completando assim uma grande parte do primeiro nível. No entanto, não resta entender os limites do tabuleiro para evitar pulos, nem nada sobre como evitar inimigos. Estou perguntando isso aqui, em vez de Stack Overflow porque é uma questão mais geral com menos necessidade em termos de compreensão de programação. Simplesmente, estou perguntando se isso é ou não uma questão de política de exploração de poros (o que eu presumo). Se você concorda, qual deveria ser uma política de exploração melhor para Q * bert que facilitaria a experiência de aprendizado do meu agente?
Conforme a solicitação de um comentário:
Você poderia adicionar qual é a sua abordagem de exploração atual e quais opções você está usando para a implementação do Deep Q Learning (por exemplo, tamanho de reprodução, tamanho do lote, arquitetura NN, etapas por cópia de rede alvo, ou se você estiver usando um mecanismo de atualização diferente para o rede de destino). Além disso, se você estiver usando qualquer outra abordagem diferente do papel DQN clássico, como na representação de estado.
Aqui estão meus parâmetros:
- Política de exploração: epsilon =
min(1.0, 1000 / (frames + 1)) - Memória de repetição = 20.000 quadros
- Tamanho do lote = 32 transições
- Arquitetura NN: Conv2D (64, 3, 2), Dropout (0,2), Densa (32, relu), Densa (32, relu), Densa (num_actions, linear)
- Etapas por cópia de rede de destino: 100
Respostas
Posso identificar três, talvez quatro, coisas em sua implementação que podem estar contribuindo para o aprendizado incompleto que você está observando.
Mais exploração em longo prazo
Acho que você identificou corretamente que a exploração pode ser um problema. No aprendizado fora da política (do qual o Q-learning é uma instância), é comum definir uma taxa de exploração mínima. É um hiperparâmetro que você precisa gerenciar. Definido como muito alto, o agente nunca terá as melhores recompensas, pois cometerá muitos erros. Definido muito baixo, o agente não explorará o suficiente para encontrar as ações alternativas corretas quando a oportunidade de aprendê-las ocorrer.
Eu sugeriria para você algo como:
epsilon = max(min(1.0, 1000 / (frames + 1)), 0.01)
Você pode escolher outros números além de 0,01, mas acho que é um começo razoável para muitos jogos Atari. Você pode tentar mais alto, até 0,1 em jogos que são mais tolerantes a erros.
Remover abandono
Não sei por que, mas sempre tenho problemas com abandono em redes neurais RL. Tente remover a camada de exclusão.
Mais camadas convolucionais
Camadas convolucionais são generalizadores muito eficientes para problemas de visão e baseados em grade. Você realmente não se beneficiará muito com uma única camada. Gostaria de acrescentar mais dois, aumentar o número de canais de saída.
Talvez representação estadual?
Não está claro em sua descrição se você está usando um quadro de cor única para a representação de estado ou quadros em tons de cinza empilhados para as últimas 3 entradas. Deve ser o último, e se você quiser replicar mais de perto o papel DQN Atari original, você deve usar os 4 quadros anteriores como entrada.
Além disso, você deve normalizar a entrada na faixa $[0,1]$ ou $[-1,1]$. O alcance da imagem nativa$[0,255]$ é complicado para redes neurais processarem e bastante comum para funções de valor travarem se você não normalizar.