Este artigo detalha o processo de desenvolvimento de um modelo de machine learning para a análise de desempenho em um jogo educativo de adição. Utilizando a biblioteca PyTorch e o motor de jogo Unity, o objetivo principal é classificar o desempenho do jogador (avancar ou permanecer no mesmo nível) com base em métricas como número de acertos consecutivos, tempo médio de resposta e total de erros cometidos. O artigo abrange desde a leitura e preparação dos dados até a criação, treinamento, avaliação e exportação do modelo para um formato compatível com outros ambientes, como Unity.

 

Machine Learning
Machine Learning

Machine Learning no Contexto de Jogos Educativos

O uso de ML em jogos educativos permite a criação de sistemas adaptativos que ajustam a dificuldade com base no desempenho do jogador. Isso torna o aprendizado mais dinâmico, desafiador e motivador, ajudando os jogadores a progredirem de acordo com suas habilidades individuais. Neste pequeno projeto, aplicamos redes neurais artificiais para prever se um jogador está pronto para avançar no jogo ou se precisa repetir determinados desafios.


O Conceito do Jogo

O jogo consiste em exibir problemas simples de adição ao jogador. Ele precisa inserir a resposta e receber um feedback imediato sobre seu acerto ou erro. Além disso, registramos métricas como:

  • Número de acertos consecutivos;
  • Tempo médio de resposta;
  • Total de erros cometidos.

Essas informações são usadas para determinar se o jogador deve avançar para desafios mais difíceis ou permanecer no mesmo nível.

Coletando os Dados para o Modelo

Antes de treinar um modelo de machine learning, é essencial dispor de uma base de dados representativa. Para isso, geramos artificialmente um conjunto de dados baseado em regras simples:

  • Jogadores com muitos acertos consecutivos e respostas rápidas devem avançar.
  • Jogadores com erros frequentes ou tempo de resposta alto devem continuar treinando no mesmo nível.

A base de dados foi balanceada para garantir que o modelo não ficasse tendencioso em suas previsões.

Criando e Treinando um Modelo com PyTorch

Utilizamos PyTorch, uma das principais bibliotecas para Machine Learning, para treinar um modelo simples de rede neural. O modelo recebe três entradas principais:

  1. Acertos consecutivos – Mede a consistência do jogador.
  2. Tempo médio de resposta – Indica a rapidez na resolução dos problemas.
  3. Total de erros – Avalia a dificuldade do jogador em resolver as questões.
Estrutura da Rede Neural

A rede neural foi projetada com as seguintes características:

  • Camada de entrada com 3 neurônios (uma para cada métrica).
  • Uma camada oculta com 16 neurônios ativados por ReLU.
  • Uma camada de saída com um neurônio ativado por Sigmoid, indicando a probabilidade de avanço.

Usamos o algoritmo de Gradiente Descendente Estocástico (SGD) para otimização, e a função de perda Binary Cross Entropy para calcular o erro do modelo. O treinamento ocorreu ao de poucas épocas, com avaliação contínua para garantir a convergência do modelo.

Dados obtidos

As tabelas a seguir  mostra os resultados do modelo, incluindo as métricas de desempenho e a matriz de confusão.  A acurácia teve um desempenho de 98.33%

Matriz de confusão

Resultado

Integração com Unity usando Barracuda

Para tornar o modelo útil dentro do jogo, exportamos a rede treinada no formato ONNX e carregamos no Unity usando Barracuda, um framework para inferência de Machine Learning em tempo real. O modelo analisa os dados do jogador a cada conjunto de perguntas e toma decisões como:

  • Se a probabilidade de sucesso for alta, o jogador avança para problemas mais difíceis.
  • Se for baixa, o jogador repete questões similares para reforçar o aprendizado.

A decisão é baseada na saída do modelo, que gera uma probabilidade entre 0 e 1 indicando se o jogador deve seguir ou continuar no mesmo nível.

 

Expansão e Melhorias Futuras

Este é apenas um exemplo do potencial do machine learning na educação. Com mais dados e ajustes, poderíamos expandir o sistema para diferentes operações matemáticas, como subtração, multiplicação e divisão. Outras melhorias incluem:

  • Aprimoramento do modelo: Adicionando mais camadas ocultas e refinando hiperparâmetros.
  • Geração de desafios personalizados: Criando um tutor virtual que sugere estratégias de aprendizado.
  • Expansão para outros jogos educativos: Aplicando a técnica em diferentes disciplinas, como lógica e ciência.

Conclusão

Esse projeto demonstra como Machine Learning pode ser aplicado em jogos educativos, tornando o aprendizado mais adaptável ao desempenho individual de cada jogador. Com o uso de redes neurais, Unity e Barracuda, conseguimos criar uma experiência interativa e personalizada, ajudando os jogadores a melhorar suas habilidades matemáticas de maneira progressiva.

Este é apenas um exemplo do potencial do ML na educação. Com mais dados e ajustes, poderíamos expandir o sistema para diferentes operações matemáticas ou até mesmo implementar um tutor virtual que sugere estratégias personalizadas de aprendizado!

 

Quer saber mais sobre outra técnicas de IA:
De Nível em Nível: Como Prever o Tempo de Jogo com TensorFlow 

IA – State Machine | Unity