Aprendizado de reforço profundo - significa Q como uma métrica de avaliação

Aug 18 2020

Estou ajustando um modelo de aprendizado profundo para um aluno do jogo Space Invaders (imagem abaixo). O estado é definido como a distância euclediana relativa entre o jogador e os inimigos + distância relativa entre o jogador e os 6 lasers inimigos mais próximos normalizada pela altura da janela (se a posição do jogador for$(x_p,y_p)$ e a posição de um inimigo é $(x_e,y_e)$, a distância euclidiana relativa é $\frac{\sqrt{(x_p-x_e)^2+(y_p-y_e)^2}}{HEIGHT}$e HEIGHT é a altura da janela). Portanto, a dimensão do espaço de observação é (10 + 6), o que resulta em uma entrada da minha rede neural profunda de 16 unidades.

Meu agente não parece aprender (a função de recompensa não aumenta) e pensei em verificar os valores médios de Q, que são a saída de minha rede neural profunda principal, e, em vez de aumentar, observei que os valores médios de Q estabilizam (como na figura abaixo) em vez de aumentar. Modifiquei muitos parâmetros de ajuste (tamanho do lote, arquitetura da rede neural e parâmetros ...), mas ainda tenho o mesmo problema. Alguma ideia de por que os valores médios de Q não aumentam?

Aqui estão alguns resultados sobre o aluno:

Respostas

NeilSlater Aug 20 2020 at 04:35

Acho que seu principal problema é usar a distância relativa como recurso principal. Possui dois pontos fracos principais:

  • A distância para um objeto não dá a direção para o objeto. As melhores opções de ação dependem criticamente da direção. Por exemplo, um raio laser inimigo 0,1 unidades diretamente acima do jogador é um perigo imediato que requer ação evasiva, enquanto 0,1 unidades à esquerda ou à direita não é um perigo e está prestes a deixar a janela do jogo. Sua característica de distância relativa não faz distinção entre esses cenários, mas é uma diferença crítica.

  • Um pouco menos importante, mas a distância bruta não captura nenhuma sensação de movimento. Se os inimigos se movem consistentemente curva a curva, mas nem sempre exatamente na mesma direção ou na mesma velocidade, então suas velocidades também devem fazer parte do estado.

Uma maneira de melhorar os recursos é adicionar um componente de velocidade para cada item, mostrando a rapidez com que ele se aproxima ou se afasta do jogador. Isso pode ajudar um pouco, mas sinto que você precisa de mais dados do que distância e velocidade.

Eu acho que você deveria usar normalizado $x, y$posição como recursos para cada item sendo rastreado, além da velocidade normalizada$dx, dy$ para qualquer tipo de objeto que pode mudar de direção (se os lasers inimigos estão sempre caindo diretamente, você pode não precisar de nada para eles).

Além do que, além do mais:

  • Se as bordas da janela são importantes, você deve incluir pelo menos o relativo $x$de um deles, para que o agente saiba sua posição absoluta na tela e quanto espaço tem para manobrar. Isso é verdade se o jogador está impedido de se mover mais para a esquerda ou para a direita, ou se o jogador "passa" para o outro lado da tela. Ambos os tipos de efeito afetarão significativamente a forma como o jogo é reproduzido próximo à borda da tela.

  • Para rastrear o valor previsto, você precisa rastrear a localização dos mísseis dos jogadores. Não é suficiente apenas deixar o agente prever quando é melhor disparar - para rastrear com precisão uma função de valor, ele precisa "ver" se o míssil que disparou há alguns passos de tempo tem probabilidade de atingir ou errar um alvo.

  • Tanto para os lasers inimigos quanto para os mísseis de jogadores, não há problema em filtrar e classificar os dados por alguns critérios (como distância até o jogador). Desde que isso seja consistente, pode até ajudar muito ter esse pré-processamento.