Aprendizagem por Reforço

Jogue um jogo de tabuleiro contra um agente treinado com aprendizado por reforço e implantado com o TensorFlow Lite.

iniciar

Se você é novo no TensorFlow Lite e está trabalhando com Android, recomendamos explorar o exemplo de aplicativo a seguir que pode ajudá-lo a começar.

Exemplo Android

Se você estiver usando uma plataforma diferente do Android ou já estiver familiarizado com as APIs do TensorFlow Lite , poderá baixar nosso modelo treinado.

Baixar modelo

Como funciona

O modelo foi construído para que um agente de jogo jogue um pequeno jogo de tabuleiro chamado 'Plane Strike'. Para uma introdução rápida deste jogo e suas regras, consulte este README .

Abaixo da interface do aplicativo, construímos um agente que joga contra o jogador humano. O agente é um MLP de 3 camadas que toma o estado do tabuleiro como entrada e gera a pontuação prevista para cada uma das 64 células possíveis do tabuleiro. O modelo é treinado usando gradiente de política (REINFORCE) e você pode encontrar o código de treinamento aqui . Após treinar o agente, convertemos o modelo em TFLite e implantamos no aplicativo Android.

Durante o jogo real no aplicativo Android, quando é a vez do agente agir, o agente analisa o estado do tabuleiro do jogador humano (o tabuleiro na parte inferior), que contém informações sobre ataques anteriores bem-sucedidos e malsucedidos (acertos e erros) e usa o modelo treinado para prever onde atacar em seguida, para que possa terminar o jogo antes do jogador humano.

Referências de desempenho

Os números de benchmark de desempenho são gerados com a ferramenta descrita aqui .

Nome do modelo Tamanho do modelo Dispositivo CPU
Gradiente de política 84 KB Pixel 3 (Android 10) 0,01ms*
Pixel 4 (Android 10) 0,01ms*

* 1 fio usado.

Entradas

O modelo aceita um tensor float32 3-D de (1, 8, 8) como o estado da placa.

Resultados

O modelo retorna um tensor float32 2-D de formato (1,64) como as pontuações previstas para cada uma das 64 posições de ataque possíveis.

Treine seu próprio modelo

Você pode treinar seu próprio modelo para uma placa maior/menor alterando o parâmetro BOARD_SIZE no código de treinamento .