Lançamento — Repositório de Aprendizado por Reforço

Aprenda do zero a técnica de aprendizado de máquina que vem cada vez mais ganhando atenção

Nelson Alves Yamashita
Turing Talks
5 min readJul 4, 2021

--

Projeto desenvolvido por Ariel Guerreiro, Bernardo Coutinho, Eduardo Eiras, Felipe Machado, Fernando Matsumoto, Luís Henrique Fernandes, Nelson Yamashita e Rafael Coelho

Apresentação

Bem vindo a mais uma edição do Turing Talks! Hoje iremos divulgar um pouco de um projeto que temos realizado no último ano, nosso Repositório de Aprendizado por Reforço!

Ele está disponível neste link no nosso Github:

O que é Aprendizado por Reforço?

O Aprendizado por Reforço (RL), em inglês Reinforcement Learning, é uma subárea do Aprendizado de Máquina que estuda programas que aprendem a realizar tarefas complexas por tentativa e erro, a partir do feedback que recebe de suas ações.

Esse tipo de aprendizado se assemelha muito com o processo de aprendizado intuitivo dos seres humanos, no qual o indivíduo experimenta algo, e com base na resposta desse experimento, decide se ele vale a pena ou não. Quando uma criança encosta o dedo em uma superfície quente, por exemplo, ela recebe uma resposta negativa, e não repete a mesma ação novamente.

As técnicas de Aprendizado por Reforço são muito poderosas, já que conseguem gerar comportamentos extremamente complexos, muito difíceis de serem programados, como fazer um robô caminhar ou até correr sem cair.

Por que decidimos fazer esse repositório?

Cumprindo com nosso pilar de disseminação do conhecimento, queríamos criar um material em português de nível acessível sobre RL, que contasse com explicações didáticas ao mesmo tempo que possuíam algum rigor sobre a teoria, e que também tivessem as implementações dos algoritmos descritos.

Com isso compilamos informações de diversas fontes que são referência no estudo de aprendizado por reforço em inglês, como o fantástico livro do Sutton & Barto, a documentação do repositório Spinning Up in Deep RL da OpenAI, aulas do lendário David Silver, entre outros.

Fizemos questão também que cada explicação de algoritmo seja acompanhada por uma implementação em um Jupyter Notebook. Para que dessa maneira você consiga acompanhar a explicação teórica junto com suas consequências no código.

Conteúdos do repositório

O repositório está dividido em três principais partes: a introdução, os algoritmos clássicos de RL e os algoritmos de RL profundo.

Introdução

Nessa seção explicamos alguns conceitos principais de RL, essenciais para o entendimento dos outros tópicos do repositório.

Aqui você aprenderá sobre coisas como o que um agente, estado, recompensa, ação e política e como esse conceitos interagem entre si.

Além disso, também incluímos a explicação sobre um tema que pode causar bastante confusão para aqueles que estão aprendendo RL pela primeira vez, a diferença em algoritmo On-Policy e Off-Policy.

Algoritmos Clássicos de Aprendizado por Reforço

Aqui você poderá ler sobre alguns algoritmos de RL que apresentam os fundamentos teóricos da área. Dizemos que eles são “clássicos” por utilizarem mais métodos matemáticos-probabilísticos para garantir seu funcionamento, ao invés de redes neurais.

Nele você encontrará explicações sobre o que é o problema do k-Armed Bandits (que até já falamos aqui no Medium), muitas vezes usado como exemplo introdutório, por conta da simplicidade teórica e de implementação, o que ajuda a mostrar os conceitos aprendidos na parte de introdução.

Também explicamos sobre métodos de Monte Carlo em Aprendizado por Reforço com uma evolução natural do processo, os método de Temporal-Difference Learning. Este método é de grande importância para entender alguns algoritmos importantes de RL profundo.

Algoritmos de Aprendizado por Reforço Profundo

O Aprendizado por Reforço Profundo é a combinação do Aprendizado por Reforço com o Aprendizado Profundo (Deep Learning). Nesta área, são utilizadas redes neurais, potentes modelos de reconhecimento de padrões, para aprender e estimar importantes funções, como a política ótima de um agente ou a função de valor de um problema.

Como todos os algoritmos serão construídos a partir de redes neurais, é recomendado utilizar algum framework de Deep Learning, como o PyTorch ou o Tensorflow. Neste repositório, todas as redes serão criadas usando o PyTorch. Caso não esteja muito familiarizado com esta biblioteca, recomendamos os seguintes materiais: Nosso Workshop de Redes Neurais com PyTorch e nosso post aqui no medium de Construindo uma Rede Neural do zero com PyTorch.

Aqui você encontrará explicações sobre alguns dos algoritmos mais potentes de Aprendizado por Reforço, implementados de uma maneira didática para um melhor entendimento. Você verá algoritmos como Deep-Q Networks (que também já fizemos um texto aqui), uma evolução do algoritmo de Temporal difference de Q-Learning, Policy Gradient, que tentam estimar diretamente uma política ótima e os poderosos algoritmos de Actor Critic, que combinam estimadores de função de valor e estimadores de uma política ótima.

Conclusão

Esperamos que você aproveite o repositório e consiga aprender e solidificar seu conhecimento nesta área que às vezes não é tão bem compreendida quanto os outros modelos de aprendizado de máquina!

Pretendemos continuar atualizando o repositório com outros algoritmos e mais exemplos, então não esquece de deixar uma star nele! Caso você encontre algum erro ou possua alguma sugestão, ficaremos muito felizes com sua contribuição no repositório, seja ela um issue ou um pull request :D.

Você também pode entrar em nosso Discord onde estamos constantemente realizando aulas abertas e publicando outros assuntos interessantes. Você também pode nos acompanhar em nossas redes sociais: Facebook, Linkedin, Instagram, Medium!

--

--