⚠️ Implementação do Framework Professor-Aluno aplicado ao desafio Cart-Pole, usando python, tensorflow e gym. Adicionalmente, os agentes DQN foram adaptados da implementação disponibilizada por Keon. Todos os detalhes do ambiente, do framework e dos resultados obtidos estão descritos no relatório do projeto.
Este projeto aborda a implementação do Framework Professor-Aluno e investiga seus efeitos sobre o treinamento de um agente para resolver o jogo Cart-Pole. Ambos os agentes, professor e aluno, utilizam-se do algoritmo de aprendizado por reforço conhecido como Q-Learning, combinado a uma rede neural profunda, uma abordagem conhecida como DQN. Dos algoritmos presentes no framework, três foram investigados, sendo eles: early advising, importance advising e mistake correcting. Esses métodos foram utilizados para treinar um novo agente, e comparados ao treinamento de um agente sem a utilização do framework. Por fim, algumas variações de parâmetros do framework também foram investigadas.
No framework para aprendizado por reforço, o agente referido como aluno, aprende a realização de uma tarefa, enquanto outro agente, conhecido como professor, tem a possibilidade de sugerir uma ação para cada estado encontrado pelo aluno, como representado na figura:
O CartPole-v1 é um ambiente simples que consiste em um mastro localizado sobre um carrinho móvel. A cada turno, o sistema aplica uma força sobre o mastro com o intuito de desequilibrá-lo. O agente deve então tentar reequilibrar o mastro movendo o carrinho para direita ou para esquerda.
A cada turno que o mastro passa em pé, o jogador recebe 1 ponto, e a recompensa máxima para vencer uma rodada é de 500 pontos. No entanto, o episódio acaba caso o mastro se mova mais que 15 graus, para qualquer lado, ou caso o carrinho se mova mais do que 2,4 unidades do centro do mapa.
Crie um ambiente e ative-o, em seguida clone o repositório e instale os requerimentos utilizando os seguintes comandos:
git clone https://github.com/eduardoatr/Professor_Aluno.git
cd Professor_Aluno
pip install -r requirements.txt
Execute o script cartpole.py, fornecendo como parâmetro o método de recomendação utilizado no framework, como mostrado no exemplo a seguir:
python cartpole.py "mistake"
As opções de recomendação são: early, importance e mistake. Adicionalmente, a flag --show pode ser passada como parâmetro para que uma animação mostrando cada execução do ambiente seja renderizada. Por fim, outras configurações do método podem ser modificadas passando-as por parâmetro. Use o comando de ajuda para consultar as alterações possíveis da seguinte maneira:
python cartpole.py --help
Para mais informações, consulte o relatório.