Ferramentas e ambientes para aprendizagem por reforço
De acordo com a Farama Foundation, a aprendizagem por reforço é uma abordagem popular para a IA, onde um agente aprende a tomar ações sequenciais em um ambiente por tentativa e erro. A aprendizagem por reforço é conceitualizada como um loop onde o agente observa o estado de seu ambiente e, em seguida, toma uma ação que muda esse estado. No momento de receber a próxima observação, o agente também recebe uma recompensa associada à ação mais recente. Esse processo continua em um ciclo, e durante a aprendizagem, o agente procura maximizar sua recompensa média esperada. Na prática, os ambientes são mais frequentemente um pedaço de software como um jogo ou simulação.
Exemplo de trecho de código para treinar um agente em um ambiente de aprendizagem por reforço:
import gymnasium as gym
env_name = "CartPole-v1"
env = gym.make(env_name).env
done = False
episodios = 1000
for i in range(episodios):
state = env.reset()
while not done:
action = select_action(state)
next_state, reward, done, truncated, info = env.step(action)
- o conjunto de dados,
- o pré-processamento do conjunto de dados, e
- o algoritmo de aprendizado.
Na aprendizagem por reforço, a pilha de software é mais complexa. Começa com a construção do próprio ambiente, geralmente um pedaço de software como uma simulação. A lógica do ambiente base é então envolvida com uma API à qual o código de aprendizado pode ser aplicado. Dependendo de como o algoritmo de aprendizado por reforço interage com o ambiente, camadas de pré-processamento são então aplicados (por exemplo, para tornar as observações de imagem em escala de cinza). Somente depois que tudo isso é feito, um algoritmo de aprendizado por reforço pode ser aplicado.
Atividade
- Acesse o Gymnasium API e leia a documentação.
- Instale o Gymnasium API na sua máquina. Em outras palavras, crie um projeto, com ambiente virtual, e instale o Gymnasium API.
- Leia a documentação dos ambientes Taxi Driver e Cliff Walking que fazem parte dos Toy Text environments.
- Implemente o loop genérico de treinamento, apresentado abaixo e discutido na última aula, para entender como os ambientes Taxi Driver e Cliff Walking funcionam.
- A linha 4 é desnecessária. Você pode simplesmente ignorar.
- Implemente para a linha 8:
agent.update(action, state, reward)
um registro em algum arquivo de log para o registro das experiências. - O script deve considerar os dois ambientes. No entanto, se você preferir, pode implementar dois scripts, um para cada ambiente. Ou implementar um script que recebe o nome do ambiente como argumento de linha de comando.
- Mantenha este código salvo em algum lugar pois você vai precisar dele para as próximas aulas.
Questões
- Como os estados são representados nestes dois ambientes?
- Quais são as ações possíveis nestes dois ambientes?
- Como as recompensas são dadas nestes dois ambientes?
Principais referências
- The Farama Foundation.
- How to use Gymnasium API: a Python library for single agent reinforcement learning.
- PettingZoo: a Python library for multi-agent reinforcement learning.
- SuperSuit: wrappers for RL environments.
Outras ferramentas
- Worldgen: ambiente de aprendizagem por reforço para treinar agentes em ambientes multi-agents (competitivos e cooperativos) em um espaço 3D.