Curso de Aprendizado por Reforço Profundo
Explore a combinação de rede neural e aprendizagem por reforço. Algoritmos e exemplos em Python e PyTorch
Você já ouviu falar dos resultados surpreendentes alcançados pela Deepmind com AlphaGo Zero e pela OpenAI no Dota 2? É tudo uma questão de redes neurais profundas e aprendizagem por reforço. Quer saber mais sobre isso?
Esta é a oportunidade certa para você finalmente aprender Deep RL e usá-lo em projetos e aplicações novos e interessantes.
Aqui você encontrará uma introdução detalhada a esses algoritmos. Entre os quais você aprenderá q learning, deep q learning, PPO, ator crítico e implementá-los usando Python e PyTorch.
O objetivo final é usar essas tecnologias de uso geral e aplicá-las a todos os tipos de problemas importantes do mundo real. Demis Hassabis
Este repositório contém:
Palestras (e outros conteúdos) principalmente do canal DeepMind e Berkley no Youtube.
Algoritmos (como DQN, A2C e PPO) implementados em PyTorch e testados no OpenAI Gym: RoboSchool e Atari.
Fique ligado e siga-me no #60DaysRLChallenge
Agora também temos um canal no Slack . Para receber um convite, envie um e-mail para [email protected]. Além disso, envie-me um e-mail se tiver alguma ideia, sugestão ou melhoria.
Para aprender Deep Learning, Visão Computacional ou Processamento de Linguagem Natural, verifique minha jornada de ML de 1 ano
Antes de começar.. Pré-requisitos
- Nível básico de Python e PyTorch
- Aprendizado de máquina
- Conhecimentos básicos em Deep Learning (MLP, CNN e RNN)
Nota rápida: meu NOVO LIVRO foi lançado!
Para aprender mais detalhadamente o Aprendizado por Reforço e RL Profundo, confira meu livro Algoritmos de Aprendizado por Reforço com Python !!
Índice
- O cenário da aprendizagem por reforço
- Implementando Ciclo RL e OpenAI Gym
- Resolvendo Problemas com Programação Dinâmica
- Aprendizado Q e aplicativos SARSA
- Rede Q Profunda
- Aprendendo otimização estocástica e DDPG
- Implementação de TRPO e PPO
- Aplicações DDPG e TD3
- RL baseado em modelo
- Aprendizagem por imitação com o algoritmo DAgger
- Compreendendo algoritmos de otimização de caixa preta
- Desenvolvendo o Algoritmo ESBAS
- Implementação prática para resolver desafios de RL
Índice - Aprendizagem por Reforço
- Semana 1 - Introdução
- Semana 2 – Noções básicas de RL
- Semana 3 - Algoritmos baseados em valores - DQN
- Semana 4 - Algoritmos de gradiente de política - REINFORCE e A2C
- Semana 5 – Gradientes de Política Avançados – PPO
- Semana 6 - Estratégias de Evolução e Algoritmos Genéticos - ES
- Semana 7 - Aprendizagem por reforço baseada em modelo - MB-MF
- Semana 8 – Conceitos Avançados e Projeto de Sua Escolha
- Últimos 4 dias - Revisão + Compartilhamento
- Melhores recursos
- Recursos adicionais
Semana 1 - Introdução
- Por que o Aprendizado por Reforço é um método de aprendizagem tão importante - Uma explicação simples
- Introdução e visão geral do curso - CS294 por Levine, Berkley
- Aprendizado por Reforço Profundo: Pong from Pixels por Karpathy
Outros recursos
- A "Bíblia" da Aprendizagem por Reforço: Capítulo 1 - Sutton & Barto
- Ótimo artigo introdutório: Deep Reinforcement Learning: Uma Visão Geral
- Comece a codificar: Do zero: AI Balancing Act em 50 linhas de Python
Semana 2 - Noções básicas de RL: MDP, programação dinâmica e controle livre de modelo
Aqueles que não conseguem lembrar o passado estão condenados a repeti-lo -George Santayana
Esta semana conheceremos os blocos básicos da aprendizagem por reforço, desde a definição do problema até a estimativa e otimização das funções que são utilizadas para expressar a qualidade de uma política ou estado.
Aulas teóricas
- Processo de decisão de Markov - David Silver (DeepMind)
- Processos de Markov
- Processos de decisão de Markov
- Planejamento por Programação Dinâmica - David Silver (DeepMind)
- Iteração de política
- Iteração de valor
- Predição sem modelo - David Silver (DeepMind)
- Aprendizagem de Monte Carlo
- Aprendizagem de diferença temporal
- TD(λ)
- Controle sem modelo - David Silver (DeepMind)
- Iteração de política Ɛ-ganancioso
- Pesquisa GLIE Monte Carlo
- SARS
- Amostragem de Importância
Projeto da Semana - Q-learning
Q-learning aplicado ao FrozenLake - Para exercícios, você pode resolver o jogo usando SARSA ou implementar o Q-learning sozinho. No primeiro caso, apenas algumas alterações são necessárias.
Outros recursos
- A "Bíblia" da Aprendizagem por Reforço: Capítulos 3 e 4 - Sutton & Barto
- Introdução às funções de valor - DRL UC Berkley por Sergey Levine
Semana 3 - Algoritmos baseados em valor - DQN
Esta semana aprenderemos conceitos mais avançados e aplicaremos redes neurais profundas a algoritmos de Q-learning.
Aulas teóricas
- Aproximação de funções de valor - David Silver (DeepMind)
- Aproximadores de funções diferenciáveis
- Métodos incrementais
- Métodos em lote (DQN)
- Algoritmos avançados de Q-learning - Sergey Levine (UC Berkley)
- Buffer de repetição
- Q-learning duplo
- Ações contínuas (NAF,DDPG)
- Dicas práticas
Projeto da Semana – DQN e variantes
DQN e algumas variantes aplicadas ao Pong - Esta semana o objetivo é desenvolver um algoritmo DQN para jogar um jogo de Atari. Para torná-lo mais interessante desenvolvi três extensões do DQN: Double Q-learning , Multi-step learning , Dueling Networks e Noisy Nets . Jogue com eles e, se você se sentir confiante, poderá implementar replay priorizado, redes de duelo ou RL de distribuição. Para saber mais sobre essas melhorias leia os jornais!
Artigos
Deve ler
- Jogando Atari com Deep Reinforcement Learning - 2013
- Controle em nível humano por meio de aprendizagem por reforço profundo - 2015
- Rainbow: Combinando Melhorias no Aprendizado por Reforço Profundo - 2017
Extensões do DQN
- Aprendizado por Reforço Profundo com Q-learning Duplo - 2015
- Repetição da Experiência Priorizada - 2015
- Duelando arquiteturas de rede para aprendizado por reforço profundo - 2016
- Redes ruidosas para exploração - 2017
- Aprendizagem por Reforço Distributivo com Regressão Quantílica - 2017
Outros recursos
- A "Bíblia" da Aprendizagem por Reforço: Capítulos 5 e 6 - Sutton & Barto
- Aprendizado por reforço profundo na empresa: preenchendo a lacuna entre os jogos e a indústria
Semana 4 - Algoritmos de gradiente de política - REINFORCE e A2C
A semana 4 apresenta os métodos Policy Gradient, uma classe de algoritmos que otimiza diretamente a política. Além disso, você aprenderá sobre algoritmos Ator-Crítico. Esses algoritmos combinam gradiente de política (o ator) e função de valor (o crítico).
Aulas teóricas
- Métodos de gradiente de política - David Silver (DeepMind)
- Gradiente de política de diferenças finitas
- Gradiente de Política de Monte-Carlo
- Gradiente de política ator-crítico
- Introdução ao gradiente de política - Sergey Levine (RECAP, opcional)
- Gradiente de política (REINFORCE e Vanilla PG)
- Redução de variância
- Ator-Crítico - Sergey Levine (mais aprofundado)
- Ator-Crítico
- Fator de desconto
- Projeto de algoritmo Ator-Crítico (modo em lote ou online)
- linha de base dependente do estado
Projeto da Semana - Vanilla PG e A2C
Vanilla PG e A2C aplicados ao CartPole - O exercício desta semana é implementar um método de gradiente de política ou um ator-crítico mais sofisticado. No repositório você pode encontrar uma versão implementada do PG e A2C. Alerta de bug! Preste atenção que o A2C me deu um resultado estranho. Se você achar fácil a implementação de PG e A2C, você pode tentar com a versão assíncrona de A2C (A3C).
Artigos
- Métodos de gradiente de política para aprendizagem por reforço com aproximação de função
- Métodos assíncronos para aprendizado por reforço profundo
Outros recursos
- A "Bíblia" da Aprendizagem por Reforço: Capítulos 9 e 10 - Sutton & Barto
- RL intuitivo: introdução ao Advantage-Actor-Critic (A2C)
- Agentes Assíncronos Ator-Crítico (A3C)
Semana 5 – Gradientes de Política Avançados – PPO
Esta semana é sobre métodos avançados de gradiente de políticas que melhoram a estabilidade e a convergência dos métodos de gradiente de políticas "Vanilla". Você aprenderá e implementará PPO, um algoritmo RL desenvolvido pela OpenAI e adotado no OpenAI Five.
Aulas teóricas
- Gradientes de política avançada - Sergey Levine (UC Berkley)
- Problemas com métodos de gradiente de política "Vanilla"
- Limites de desempenho da política
- Teoria da Melhoria Monotônica
- Algoritmos: NPO, TRPO, PPO
- Gradientes de política natural, TRPO, PPO - John Schulman (Berkey DRL Bootcamp) - (RECAP, opcional)
- Limitações dos métodos de gradiente de política "Vanilla"
- Gradiente de Política Natural
- Otimização de Política de Região de Confiança, TRPO
- Otimização de Política Proximal, PPO
Projeto da Semana - PPO
PPO aplicado ao BipedalWalker - Esta semana, você terá que implementar PPO ou TRPO. Sugiro o PPO dada a sua simplicidade (em comparação com o TRPO). Na pasta do projeto Week5 você encontra uma implementação do PPO que aprende a jogar BipedalWalker . Além disso, na pasta você encontra outros recursos que o ajudarão no desenvolvimento do projeto. Divirta-se!
Para saber mais sobre PPO leia o artigo e dê uma olhada no vídeo do Arxiv Insights
Artigos
- Otimização da política da região de confiança - 2015
- Algoritmos de Otimização de Política Proximal - 2017
Outros recursos
- Para entender melhor o PPO e o TRPO: A Busca da Felicidade (Robótica)
- Porcas e parafusos do Deep RL
- Prática recomendada de PPO: Treinamento com Otimização de Política Proximal
- Explicação do algoritmo PPO por Arxiv Insights
Semana 6 - Estratégias de Evolução e Algoritmos Genéticos - ES
No último ano, as estratégias de evolução (ES) e os algoritmos genéticos (AG) demonstraram alcançar resultados comparáveis aos métodos RL. Eles são algoritmos de caixa preta sem derivados que requerem mais dados do que RL para serem aprendidos, mas são capazes de escalar em milhares de CPUs. Esta semana veremos esses algoritmos de caixa preta.
Palestras e Artigos - Teoria
- Estratégias de Evolução
- Introdução ao ES: um guia visual para estratégias de evolução
- ES para RL: Estratégias Estáveis em Evolução
- Métodos Livres de Derivados - Palestra
- Estratégias de Evolução (discussão em artigo)
- Algoritmos Genéticos
- Introdução aos algoritmos genéticos - incluindo código de exemplo
Projeto da Semana - ES
Estratégias de evolução aplicadas ao LunarLander - Esta semana o projeto é implementar um ES ou GA. Na pasta Week6 você pode encontrar uma implementação básica do artigo Estratégias de Evolução como uma Alternativa Escalável ao Aprendizado por Reforço para resolver o LunarLanderContinuous. Você pode modificá-lo para jogar em ambientes mais difíceis ou adicionar suas ideias.
Artigos
- Neuroevolução Profunda: Algoritmos Genéticos são uma Alternativa Competitiva para Treinamento de Redes Neurais Profundas para Aprendizagem por Reforço
- Estratégias de evolução como uma alternativa escalável para aprendizagem por reforço
Outros recursos
- Algoritmos de Otimização Evolucionária - Dan Simon
Semana 7 - Aprendizagem por reforço baseada em modelo - MB-MF
Os algoritmos estudados até agora não têm modelo, o que significa que escolhem apenas a melhor ação dado um estado. Esses algoritmos alcançam um desempenho muito bom, mas requerem muitos dados de treinamento. Em vez disso, algoritmos baseados em modelo aprendem o ambiente e planejam as próximas ações de acordo com o modelo aprendido. Esses métodos são mais eficientes em termos de amostragem do que os métodos livres de modelo, mas no geral alcançam pior desempenho. Nesta semana você aprenderá a teoria por trás desses métodos e implementará um dos últimos algoritmos.
Aulas teóricas
- RL baseado em modelo, David Silver (DeepMind) (versão concisa)
- Integrando Aprendizagem e Planejamento
- Visão geral de RL baseado em modelo
- Arquiteturas integradas
- Pesquisa baseada em simulação
- RL baseado em modelo, Sergey Levine (UC Berkley) (versão detalhada)
- Aprendendo sistemas dinâmicos a partir de dados
- Visão geral do RL baseado em modelo
- Modelos globais e locais
- Aprendendo com modelos locais e regiões de confiança
- Aprendendo políticas imitando controladores ideais
- Retropropagação em uma política com modelos aprendidos
- Algoritmo de pesquisa de política guiada
- Imitando o controle ideal com DAgger
- Aprendizado avançado de modelos e imagens
- Modelos no espaço latente
- Modelos diretamente no espaço da imagem
- Modelos inversos
Projeto da Semana – MB-MF
MB-MF aplicado ao RoboschoolAnt - Esta semana optei por implementar o algoritmo baseado em modelo descrito neste artigo. Você pode encontrar minha implementação aqui. NB: Em vez de implementá-lo no Mujoco como no artigo, usei o RoboSchool, um simulador de robô de código aberto, integrado ao OpenAI Gym.
Artigos
- Agentes com imaginação aumentada para aprendizagem por reforço profundo - 2017
- Aprendizagem por reforço com tarefas auxiliares não supervisionadas - 2016
- Dinâmica de redes neurais para aprendizagem por reforço profundo baseada em modelo com ajuste fino sem modelo - 2018
Outros recursos
- A "Bíblia" da Aprendizagem por Reforço: Capítulo 8 - Sutton & Barto
- Modelos Mundiais - Os agentes podem aprender dentro de seus próprios sonhos?
Semana 8 – Conceitos Avançados e Projeto de Sua Escolha
Esta última semana é sobre conceitos avançados de RL e um projeto à sua escolha.
Aulas teóricas
- Sergey Levine (Berkley)
- Conexão entre inferência e controle
- Aprendizagem por reforço inverso
- Exploração (parte 1)
- Exploração (parte 2) e aprendizagem por transferência
- Aprendizagem e transferência multitarefa
- Meta-aprendizado e paralelismo
- Aprendizagem avançada de imitação e problemas abertos
- David Silver (Deep Mind)
O projeto final
Aqui você pode encontrar algumas ideias de projetos.
- Pommerman (multijogador)
- Desafio IA para Próteses (Desafio)
- Modelos Word (implementação em papel)
- Solicitação de pesquisa OpenAI (Pesquisa)
- Concurso Retro (aprendizado por transferência)
Outros recursos
- Alfa Go Zero
- Papel
- Postagem do blog DeepMind: AlphaGo Zero: Aprendendo do zero
- Vídeo do Arxiv Insights: como funciona o AlphaGo Zero - Google DeepMind
- OpenAI Cinco
- Postagem do blog OpenAI: OpenAI Five
- Vídeo do Arxiv Insights: OpenAI Five: Enfrentando profissionais humanos no Dota II
Últimos 4 dias - Revisão + Compartilhamento
Parabéns por completar o Desafio RL de 60 Dias!! Deixe-me saber se você gostou e compartilhe!
Vê você!
Melhores recursos
Aprendizagem por Reforço: Uma Introdução - por Sutton & Barto. A "Bíblia" da aprendizagem por reforço. Aqui você pode encontrar o rascunho em PDF da segunda versão.
Aprendizagem prática por reforço profundo - por Maxim Lapan
Aprendizado profundo - Ian Goodfellow
Deep Reinforcement Learning - aula da UC Berkeley por Levine, confira aqui o site.
Curso de Aprendizado por Reforço - por David Silver, DeepMind. Ótimas palestras introdutórias de Silver, pesquisador principal do AlphaGo. Eles seguem o livro Reinforcement Learning de Sutton & Barto.
Recursos adicionais
Aprendizado por reforço incrível. Uma lista selecionada de recursos dedicados ao aprendizado por reforço
GroundAI em RL. Artigos sobre aprendizagem por reforço
Uma xícara de café ☕
Qualquer contribuição é muito apreciada! Saúde!