Lunar Lander Project
Objetivo da atividade: implementar um agente capaz de controlar o lunar lander do ambiente env = gym.make('LunarLander-v2')
.
Entrega básica
Sugestão de atividades:
-
Leia a documentação existente neste link.
-
Implemente um agente capaz de controlar o lunar lander usando o algoritmo Deep Q-Learning.
-
Faça a persistência da rede neural para que depois a mesma possa ser utilizada por um outro script para pousar o lunar lander de forma correta. Ou seja, no seu projeto, além do script para treinamento, você também deverá entregar o script que faz uso do modelo treinado.
-
Para estes dois últimos itens você pode reutilizar o código existente em
DeepQLearning.py
. Apenas preste atenção na estrutura da rede neural e nos hiperparâmetros. -
Na documentação do projeto você precisa:
- descrever brevemente qual é o problema, qual é o action space e observation space;
- apresentar a curva de aprendizado na forma de uma gráfico, e;
- apresentar dois gifs animados: o primeiro com o comportamento do agente em uma situação intermediária do treinamento (ou seja, o agente em uma situação onde não sabe executar direito a tarefa) e o segundo com o comportamento do agente na situação final.
-
Não esqueça de adicionar ao projeto o arquivo de
requirements.txt
com todas as bibliotecas necessárias para a execução do projeto.
Ao entregar estes itens você tem garantido um B.
Entrega avançada com DQN
Para ter uma nota A+ neste projeto você precisa:
- Implementar a versão final do algoritmo Deep Q-networks (DQN) como apresentado no pseudo-código abaixo:
Preste atenção em alguns pontos: (i) Esta versão do algoritmo faz uso de duas redes (linha 1 e 2); (ii) Toda a escolha de ação acontece usando a value network \(\theta\) (linha 8); (iii) A recompença acumulada é calculada usando a target network \(\overline{\theta}\) (linha 15); (iv) O cálculo da função de perda é feito usando a value network (linha 16); O update dos parâmetros a cada episódio acontece somente na value network \(\theta\) (linha 17), e; (v) A target network é atualizada a cada \(C\) episódios (linha 18) - esta atualização é uma simples cópia dos pesos (\(\overline{\theta} \leftarrow \theta\)).
Espera-se que com o uso de duas redes neurais o aprendizado do agente seja mais estável. Ao utilizar apenas uma rede neural o aprendizado do agente pode ser instável porque a rede neural está estimando a função de valor e ao mesmo tempo está sendo atualizada.
- Comparar os resultados alcançados com o uso desta implementação versus a implementação de Deep Q-Learning que já temos disponível em termos de aprendizado do agente.
- Na documentação do projeto você precisa adicionar esta análise.
- No projeto você precisa adicionar os scripts que você implementou.
- Não esqueça de atualizar o arquivo de
requirements.txt
, se necessário.
Você deve submeter o seu projeto neste link: https://classroom.github.com/a/Khj4RN1- do Github Classroom.
Deadline
O deadline para a entrega desta atividade é 24 de março de 2024 (domingo) às 23:30 horas. Este trabalho deve ser feito em grupo com até 4 integrantes.
Exemplo de entrega completa
O projeto mais completo entregue em 2024/1 fois este aqui.