Menu
Baixar currículo
Todos os projetos

Agente com Deep Q-Network

Snake AI

Agente treinado com Deep Q-Network (DQN) que aprende a jogar Snake de forma autônoma a partir do estado do jogo, sem nenhuma estratégia programada.

Papel
Projeto pessoal · RL
Ano
2024
Tecnologias
  • Python
  • TensorFlow
  • Gym
  • NumPy
  • curses
Links
Ver código no GitHub(abre em nova aba)
  • 1.000

    episódios de treino

  • DQN

    com experience replay

A ideia

Ninguém ensina o agente a jogar Snake. Ele só enxerga o estado do jogo e uma recompensa: positiva ao comer, negativa ao bater. Todo o resto, de perseguir a comida a desviar da própria cauda, precisa ser aprendido.

Como funciona

  • Jogo. Uma implementação clássica de Snake em Python com curses, com movimento, detecção de colisão e pontuação.
  • Ambiente. Um ambiente customizado do OpenAI Gym envolve o jogo: define a representação do estado, o espaço de ações (cima, baixo, esquerda, direita) e a função de recompensa.
  • Agente. Uma Deep Q-Network em TensorFlow estima o valor de cada ação. Ela explora com uma política ε-greedy que decai de 1,0 até 0,01 e aprende com mini-batches sorteados de uma memória de replay de 2.000 passos, o que estabiliza o treino.

O treino roda por 1.000 episódios e salva o modelo a cada 50. Depois, a cobra joga sozinha usando a política aprendida.

Por que importa

O mais difícil é desenhar a recompensa: uma recompensa mal formulada ensina a cobra a andar em círculos para sempre em vez de comer. Depurar comportamento, e não código, é outra disciplina, e a mesma intuição vale para qualquer sistema que aprende no mundo real.

Próximo projetoCompilador LPDCompilador e máquina virtual, do zero em C
  • Início
  • Experiência#experience
  • Projetos#projects
  • Competências#skills
  • Formação#education
  • Contato#contact
  • FloraSenseMonitor de saúde de plantas com TinyML
  • IoTTendancePresença em tempo real com RFID
  • Snake AIAgente com Deep Q-Network
  • Compilador LPDCompilador e máquina virtual, do zero em C
  • Alternar tema de cores
  • View in EnglishEN
  • Copiar e-mailpedrodc51203@gmail.com
  • Baixar currículoPDF
  • GitHubgithub.com/pedrodcarvalho
  • LinkedInlinkedin.com/in/pedro-domitti-de-carvalho
  • Emailpedrodc51203@gmail.com