É bastante comum observar inteligências artificiais jogando jogos. Se você já jogou algum jogo, com certeza viu algum personagem controlado por algum algoritmo. Esses personagens parecem ter um comportamento inteligente, ou seja, parece que existe um humano controlando eles. Neste artigo, você vai entender como robôs aprendem a jogar jogos.
Como robôs aprendem a jogar jogos: Aprendizado por reforço
O conceito de aprendizado por reforço é muito utilizado em diferentes áreas. O conceito é simples de entender, e podemos fazer uma analogia com ensinar truques a animais.
Então, vamos supor que iremos ensinar um cachorro a sentar quando for pedido. Note que o diálogo não é possível, uma vez que eles não são tão espertos como os humanos para aprenderem de uma forma mais dinâmica.
Então, criamos um estado, nesse estado nós solicitamos, verbalmente, que o cachorro sente. Já o cachorro vai criar um novo estado, ou seja, ele vai tomar alguma ação diante do estado anterior. Ele pode simplesmente não reagir, ir até o dono e começar a brincar ou até mesmo sentar, como o solicitado.
Para que ele aprenda a ação certa, você vai premiá-lo quando ele sentar, e puni-lo quando ele fazer qualquer outra coisa a não ser sentar. O prêmio pode ser dar um petisco ao cachorro. A punição, que obviamente não tem nada a ver com agressão, pode ser simplesmente não dar o petisco ao cachorro.
Após repetidas vezes, em algumas delas ele vai acabar sentando, e vai ser premiado. Isso gera uma associação na mente do cão entre aquele comando verbal “senta!”, que por sinal ele não entende o significado, com uma premiação que ele pode receber se ele sentar.
Com isso, o cachorro vai aprendendo e logo ele estará sentando sempre que for solicitado à ele.
Etapas do aprendizado por reforço
O aprendizado por reforço se baseia nesses princípios. De uma forma geral, as seguintes etapas envolvem o aprendizado por reforço:
- Observar o estado atual
- Tomar uma decisão com base em alguma estratégia
- Tomar alguma recompensa ou punição sobre essa decisão tomada
- Refinar a estratégia
- Repetir até atingir o objetivo
Como robôs aprendem a jogar jogos: Q-learning
Q-learning é uma das metodologias de aprendizado por reforço, que se baseia em mapear valores, chamados de Q, para cada estado e ação possível.
Essa metodologia é útil em situações de estado discreto. Ou seja, quando podemos contar a quantidade de estados possíveis.
Podemos atribuir um valor Q para cada ação em um determinado estado. O conjunto dos valores Q para todos os estados podem ser mostrados na Q-table. Essa é uma matriz em que cada linha representa um estado, e nas linhas estão os Q-valores para cada ação naquele estado.
No decorrer do aprendizado, se em um estado tomarmos uma boa decisão, aumentamos o valor de Q para aquela decisão naquele estado. Se tomarmos uma má decisão, reduzimos aquele valor Q.
O treinamento deve se repetir, até que em todos os estados tenham os valores Q altos e baixos, Esses valores altos são as decisões que devemos tomar naquele estado específico, e os valores baixos as decisões que devemos evitar naquele estado.
Após isso, deveremos saber quais decisões tomar em cada estado possível. Ou seja, dado um estado, basta consultar a Q-table e verificar qual ação é mais aconselhável.
É assim que muitos robôs aprendem a jogar alguns tipos de jogos, eles passam um tempo aprendendo, isso na fase de produção do jogo. E quando o usuário está jogando, o robô está consultando seus dados que foram armazenados na aprendizagem.
Conclusão
Em suma, conhecemos o conceito de aprendizado por reforço e vimos uma das várias metodologias de aprendizado por reforço. Uma forma de implementar esses conceitos é utilizando a linguagem Python. Temos artigos introdutórios de python, como por exemplo, como lidar com matrizes em python. Isso pode te ajudar a dar o pontapé inicial nos seus estudos. Até a próxima!
Referências
https://www.learndatasci.com/tutorials/reinforcement-q-learning-scratch-python-openai-gym/