Este projeto fornece infraestrutura otimizada para aprendizagem por reforço. Ele estende a interface do ginásio OpenAI para vários ambientes paralelos e permite que os agentes sejam implementados no TensorFlow e executem computação em lote. Como ponto de partida, fornecemos BatchPPO, uma implementação otimizada de Otimização de Política Proximal.
Cite o artigo TensorFlow Agents se você usar o código deste projeto em sua pesquisa:
@article { hafner2017agents ,
title = { TensorFlow Agents: Efficient Batched Reinforcement Learning in TensorFlow } ,
author = { Hafner, Danijar and Davidson, James and Vanhoucke, Vincent } ,
journal = { arXiv preprint arXiv:1709.02878 } ,
year = { 2017 }
}
Dependências: Python 2/3, TensorFlow 1.3+, Gym, ruamel.yaml
Clone o repositório e execute o algoritmo PPO digitando:
python3 -m agents.scripts.train --logdir=/path/to/logdir --config=pendulum
O algoritmo a utilizar é definido na configuração e pendulum
aqui iniciado utiliza a implementação PPO incluída. Confira mais configurações predefinidas em agents/scripts/configs.py
.
Se você quiser retomar uma execução iniciada anteriormente, adicione o sinalizador --timestamp=<time>
ao último comando e forneça o carimbo de data/hora no nome do diretório da sua execução.
Para visualizar as métricas, inicie o TensorBoard em outro terminal e aponte seu navegador para http://localhost:2222
:
tensorboard --logdir=/path/to/logdir --port=2222
Para renderizar vídeos e coletar estatísticas do OpenAI Gym para enviar ao placar, digite:
python3 -m agents.scripts.visualize --logdir=/path/to/logdir/ < time > - < config > --outdir=/path/to/outdir/
Lançamos este projeto como um ponto de partida que facilita a implementação de novas ideias de aprendizagem por reforço. Esses arquivos são bons lugares para começar ao modificar o código:
Arquivo | Contente |
---|---|
scripts/configs.py | Configurações de experimento especificando as tarefas e algoritmos. |
scripts/networks.py | Modelos de redes neurais. |
scripts/train.py | O arquivo executável que contém a configuração do treinamento. |
algorithms/ppo/ppo.py | O gráfico do TensorFlow para o algoritmo PPO. |
Para executar testes de unidade e linting, digite:
python2 -m unittest discover -p " *_test.py "
python3 -m unittest discover -p " *_test.py "
python3 -m pylint agents
Para mais dúvidas, abra um problema no Github.
Incluímos uma interface em lote para ambientes OpenAI Gym que se integra totalmente ao TensorFlow para implementações de algoritmos eficientes. Isto é conseguido através destes componentes principais:
agents.tools.wrappers.ExternalProcess
é um wrapper de ambiente que constrói um ambiente OpenAI Gym dentro de um processo externo. As chamadas para step()
e reset()
, bem como o acesso aos atributos, são encaminhadas para o processo e aguardam o resultado. Isso permite executar vários ambientes em paralelo sem ser restringido pelo bloqueio global do interpretador do Python.agents.tools.BatchEnv
estende a interface do OpenAI Gym para lotes de ambientes. Ele combina vários ambientes OpenAI Gym, com step()
aceitando um lote de ações e retornando um lote de observações, recompensas, sinalizadores concluídos e objetos de informação. Se os ambientes individuais viverem em processos externos, eles serão intensificados em paralelo.agents.tools.InGraphBatchEnv
integra um ambiente em lote ao gráfico do TensorFlow e torna suas funções step()
e reset()
acessíveis como operações. O lote atual de observações, últimas ações, recompensas e sinalizadores concluídos é armazenado em variáveis e disponibilizado como tensores.agents.tools.simulate()
funde a etapa de um ambiente em lote no gráfico e um algoritmo de aprendizado por reforço em uma única operação a ser chamada dentro do loop de treinamento. Isso reduz o número de chamadas de sessão e fornece uma maneira simples de treinar algoritmos futuros. Para entender todo o código, familiarize-se com as operações de fluxo de controle do TensorFlow, especialmente tf.cond()
, tf.scan()
e tf.control_dependencies()
.
Este não é um produto oficial do Google.