Introdução
Reinforcement Learning (RL) é a subárea de Machine Learning que mais se assemelha com a ideia que o público geral têm de Inteligência Artificial. É esta área que é responsável pelos algoritmos por trás daqueles robôs que vão aprendendo a se mexer com um determinado comportamento, é por causa deste algoritmo que acabamos comprando mais do que deveríamos em lojas on-line e, por fim, é neste tipo de algoritmo que se baseia o programa que bateu o campeão de Go – um jogo no qual especialistas diziam que demoraria um século até um computador vencer um humano.
Bem, com todas estas façanhas o Reinforcement learning parece ser a bola da vez em Inteligência Artificial e Meachine Learning, porém como qualquer outra subárea de Machine Learning, pode acabar se tornando amedrontadora a primeira vista para iniciantes que querem começar a aprendê-la. Desta forma, como em qualquer assunto novo que se está começando, é necessário respirar fundo e pensar qual a melhor estratégia para para iniciar o aprendizado e este autor acredita que para começar a entender um assunto novo teórico é necessário no compreender duas coisas:
1. Contexto: O que ele representa como um todo;
2. Conceitos Elementares: As ideias chave que são base para todos os outros conceitos.
Com isso, é possível formular e entender 99% dos problemas de Reinforcement Learning e dar o pontapé inicial nos seus estudos de RL.
Neste artigo, apresento o que RL representa em alto nível e suas ideias base. Acredito que isso é o suficiente para entender o básico de qualquer composição relacionada ao tema.
1. Contexto
Reinforcement Learning, assim como Machine Learning, pode ser descrito em termos bem simplórios, como criar um programa de computador que aprende a partir de dados, e após o aprendizado desempenha alguma ação quando mais dados são apresentados a ele. Simples assim! Não precisamos complicar mais que isso. Especificamente, em RL a aprendizagem ocorre por meio de interações em certas situações e ,dependendo da situação e da ação desempenhada, acaba recebendo mais ou menos recompensas.
As recompensas recebidas em cada situação mostram como se comportar melhor no futuro, afim de receber mais recompensas, ou seja, um aprendizado por tentativa e erro. Entretanto, o nosso programa não se contenta com a gratificação imediata, ele tenta agir em cada situação de forma a maximizar as recompensas futuras.
Toda vez que nosso programa toma uma ação, ele pode ter uma mudança no ambiente, isto é, pode modificar a forma como as situações e os dados se apresentarão a ele no futuro. Isto, provavelmente, é a maior diferença entre Reinforcement Learning e as outras áreas de Machine Learning.
Sintetizando, existem três características principais em RL:
- Aprendizagem por tentativa e erro de ações;
- Maximização de recompensas futuras;
- Interação e modificação das situações por meio de suas ações.
2. Conceitos elementares
Agora que já temos em mente o que RL representa como um todo, *é necessário parar de olhar para a floresta e começar a olhar para as árvores*. Assim, vamos entrar nos detalhes de quais são as partes necessárias de um modelo básico de RL.
Como esses conceitos são abstratos, utilizaremos um exemplo prático e simples como o jogo da velha. No jogo, estamos criando um programa cujo objetivo é vencer a maior parte das partidas jogadas e durante ele, contra adversários (humanos ou outros programas), aprender a vencer mais partidas no futuro.
Agente
O primeiro elemento é o agente que representa a abordagem programada para jogar o jogo da velha. Em RL o agente é qualquer entidade que está desempenhando ações e recebendo recompensas. Na prática, não precisa ser necessariamente um programa de computador, podendo ser um mecanismo ou até mesmo um ser vivo dependendo do problema. Todavia, para a maioria dos fins, é um algoritmo que alguém acaba programando, ou seja, um programa de computador.
Ambiente
Ambiente é tudo aquilo que não é considerado o agente. No caso do jogo da velha, poderia ser desde o adversário até todo o universo, incluindo seus estados quânticos. Na prática, representa apenas o contexto ao redor do agente relevante ao problema sendo resolvido. No nosso caso seria o tabuleiro e o adversário. O agente desempenha ações no ambiente e através dele recebe recompensas e informações que podem ser utilizadas, as quais serão abordadas a seguir.
Estados
Estados são as situações e informações que compõem o ambiente. Podemos dizer que o ambiente é composto por todos os estados possíveis, sendo eles as situações que vão surgindo para o agente conforme interage com o ambiente. Em termos matemáticos estes estados são representados por dados ou variáveis que representam cada um deles.
Os estados do nosso exemplo seriam todas as possíveis combinações de um jogo da velha. Cada vez que um jogador faz uma jogada a configuração do jogo muda, em outras palavras, o tabuleiro como um todo e quais casas estão ocupadas e vazias se modificam, surgindo um novo estado para o agente.
É importante mencionar que na literatura existe uma distinção sutil entre os estados já mencionados anteriormente e os estados que o nosso agente acaba recebendo informações – observados pelo agente. Eles representam todas as informações possíveis, incluindo quais o agente não tem acesso. O termo estados acaba sendo utilizado com muito mais frequência, inclusive quando se fala de observações na verdade.
No jogo da velha, os estados incluem informações que nosso agente não tem acesso e incluiriam os pensamentos do adversário, além de suas futuras jogadas. Já as observações seriam apenas as informações que se tem acesso e as configurações de posição das peças no tabuleiro.
Matematicamente se descrevem estados por meio de:

Um estado s pertencente ao conjunto de todos os estados possíveis S.
Ações
Ações, como já havíamos dito, são as possíveis formas que o agente consegue interagir com o ambiente. No nosso exemplo do jogo da velha, as ações são as marcações das peças nas casas disponíveis no tabuleiro – note que as ações possíveis mudam a medida que novas jogadas vão sendo feitas, ou seja, o conjunto de ações possíveis é alterado dependendo do estado.
No caso, as ações são ditas discretas, possibilitando a visibilidade e contagem de quais são as jogadas possíveis dentro de um conjunto. Porém, também existem ações contínuas, as quais não é possível contar todas as ações. Um exemplo, seria um agente que tivesse que guiar um carro tendo como ações acelerar e desacelerar o motor. Nesta situação, não conseguimos contar todas as ações possíveis, pois ele pode acelerar 1 km/h, 1,1 km/h ou 1,00001… km/h e assim por diante, as possibilidades de ações se tornam infinitas.
A forma de se modelar matematicamente as ações que um agente pode tomar se define por:

Uma ação a pertencente ao conjunto de ações possíveis A.
Cada ação tomada pelo agente pode causar uma mudança de estado e após a tomada da ação uma recompensa é recebida.
Recompensa
As recompensas são o ponto central de RL, quando o agente está aprendendo ele está basicamente se tornando melhor na ação escolhida em um determinado estado, de forma a maximizar as recompensas recebidas no futuro.
É importante salientar que a recompensa é obtida sempre por meio de uma transição do estado de origem para o próximo estado após a tomada de uma ação.
Isto significa que o próximo estado sempre vem acompanhado de uma recompensa.
Em nosso exemplo do jogo da velha poderíamos dar uma recompensa de +1 toda vez que o nosso programa fizesse uma jogada vencedora, -1 toda vez que o adversário fizesse o mesmo e 0 nas demais jogadas.
A recompensa é expressa matematicamente como:

Podendo ser um número de qualquer valor negativo ou positivo. Lembrando que as recompensas diferem para cada transição de estado.
Incerteza
Nesse momento já se tem na cabeça que o agente interage com o ambiente mudando de estado e vai recebendo recompensas. Esse processo de interação e mudança é chamado de processo estocástico – estocástico só é outra palavra para aleatório. Mas como assim, aleatório? Bem, dado que um agente decide tomar uma ação, não existe uma certeza de qual será o próximo estado. Então, na verdade o próximo estado que o agente irá cair será definido aleatoriamente de acordo com a distribuição de probabilidades.
As chamadas probabilidades de transição, representam as probabilidades de se mudar para um próximo estado, dado que um agente tomou uma ação A e está no estado S. Em termos matemáticos mais precisos:

Em um jogo da velha, as ações são marcar as posições em um tabuleiro e como isso está diretamente associado a mudança de estado, sendo que não está sujeito a nenhuma aleatoriedade. Neste caso, as probabilidades de transição seriam de 100% para a mudança do estado desejado. Embora, em outras situações em que o RL é utilizado, pode não haver uma certeza se irá cair no próximo estado desejado. De forma mais clara, um algoritmo de RL que faz sugestões de produtos para usuários em um site de compras pode muito bem ofertar um produto, dessa forma, o usuário que está recebendo a sugestão pode não aceitar a oferta. A aprovação da oferta, que é uma transição de estado, não é uma certeza, o que em outras palavras pode significar aleatório.
Política
O que determina a ação que o agente tomará é chamada de política. A política do agente é o que diz qual ação o ele tomará, dado o encontro em um determinado estado. Existem dois tipos de política: determinística – que simplesmente retorna uma ação a ser tomada para cada estado e probabilística que diz qual será a próxima ação por meio de uma distribuição de probabilidades. A probabilística mais comumente utilizada é equacionada da seguinte forma:

Aqui π representa apenas uma função, que retorna a probabilidade de tomar a ação a dado que o agente se encontra em um estado s.
A política é o que os algoritmos de RL acabam atualizando através das iterações ou podemos dizer que o algoritmo acaba aprendendo. Quando o agente de um jogo da velha estiver jogando ele decidirá suas jogadas com uma política aprendida em partidas anteriores. Assim, ele “olharia” para a política conforme cada estado encontrado no caminho. A decisão de qual será a próxima jogada se daria pelas probabilidades da política.
As perguntas que ficam são: como ele estaria aprendendo essa política? É durante o jogo?
Não, para a maioria dos algoritmos de RL, o agente estaria atualizando a política a cada partida. As partidas são um conceito distinto em RL.
Episódio
Em RL o conceito de episódio representa uma série de interações entre um agente e o ambiente sendo que em algum momento o episódio chega ao fim.
Os episódios seriam as partidas de um jogo com um game over no final. Algumas vezes quando o episódio não tem um fim claro se estabelece um tempo limite como o fim do episódio. Especificamente no nosso caso, os episódios seriam as próprias partidoas do jogo da velha. No final da partida, o nosso agente teria uma recompensa acumulada e dependendo dela seria feito um ajuste na política do agente.
Sumário

Por fim, vimos como Reinforcement Learning é um algoritmo que aprende por tentativa e erro de interações com o ambiente, onde o objetivo é maximizar o agregado de recompensas futuras. Ele faz isso por meio de um agente que toma ações no ambiente, tais ações são determinadas por uma política. Após cada ação, o próximo estado será definido de forma aleatória e em seguida a transição de estado – uma recompensa – será retornada para o agente.
Em determinado momento se chega ao fim de um episódio e olhando para a sequência de ações, estados e recompensas, o agente atualiza a política de forma que possa apresentar um melhor desempenho em futuras partidas.
Voltando ao nosso caso do jogo da velha, os conceitos elementares do nosso exemplo seriam:
- Agente: Um programa feito para jogar o jogo da velha;
- Ambiente: O tabuleiro, as peças e o jogador adversário ao programa;
- Estados: Todas as possíveis configurações que um jogo da velha pode ter durante uma partida;
- Ações: Todas as possíveis jogadas durante uma partida;
- Recompensa: Seria determinada pelo programador e a partir de cada ação, sendo a maioria das recompensas neutras e apenas aquelas que ganhariam e perderiam o jogo teriam valores positivos ou negativos.
- Política: O que o programa irá fazer em determinada situação de uma partida;
- Episódios: As partidas de jogo da velha.
Se você ainda não matou sua curiosidade por esta incrivel área e quer ver mais existe um excelente artigo que mostra uma aplicação prática de Reinforcement Learning. O autor do artigo Usando IA para montar um time do Cartola mostra como ele utilizou RL de maneira lúdica para criar um time vencedor no Cartola.
Encerrando, obrigado por ler meu artigo, matenha-se curioso e até a próxima.

Cientista de dados