Comparando os algoritmos DQN, A2C e PPO¶

O objetivo deste projeto é comparar três algoritmos de reinforcement learning considerando alguns ambientes disponíveis na biblioteca Gymnasium. Os algoritmos que serão comparados são DQN, A2C e PPO.

Os ambientes que serão utilizados na comparação são:

  • Bipedal Walker;
  • Car Racing, versão discreta e contínua;
  • Cart Pole, e;
  • Lunar Lander

Todas as implementações dos algoritmos citados acima serão feitas utilizando a biblioteca Stable Baselines 3.

Ambiente Cart Pole¶

O ambiente Cart Pole é um ambiente de controle clássico com ações discretas.

Neste ambiente o algoritmo DQN foi executado com os hiperparâmetros padrão da implementação stable baselines, ou seja:

learning_rate=1e-4,
gamma=0.99,
bufer_size=1_000_000,
batch_size=32,
tau=1.0,
target_update_interval=10_000,
exploration_initial_eps=1.0,
exploration_final_eps=0.05

O algoritmo A2C também foi executado com os hiperparâmetros padrão da implementação stable baselines, ou seja: learning_rate=0.0007 e gamma=0.99

O algoritmo PPO foi executado considerando três configurações distintas, com 1, 4 e 8 environment. Os demais hiperparâmetros permaneceram os mesmos da configuração padrão.

No description has been provided for this image

A partir do gráfico apresentado acima, é possível observar que o algoritmo DQN obteve um desempenho inferior em relação aos demais algoritmos. O algoritmo A2C obteve um desempenho superior ao DQN, mas inferior ao PPO. O algoritmo A2C tem um comportamento muito instável no início, mas ao final consegue convergir com um recompensa similar ao PPO. O algoritmo PPO, independente da quantidade de environments, obteve o melhor desempenho, com uma convergência mais rápida e uma recompensa acumulada maior em relação aos demais algoritmos.

Bipedal Walker¶

O ambiente Bipedal Walker é um ambiente de controle contínuo. O objetivo deste ambiente é fazer com que um robô bípede ande o maior percurso possível sem cair.

Para este ambiente foram testados três configurações de algoritmos:

  • A2C:
model = A2C(
   policy = "MlpPolicy",
   env = vec_env, # configuração com 1 environment
   learning_rate=0.00096, 
   n_steps=8, 
   gamma=0.99, 
   gae_lambda= 0.9,
   vf_coef= 0.4,
   ent_coef= 0.0,
   max_grad_norm= 0.5,
  • PPO com clip_range de 0.2 e gamma de 0.99, demais configurações padrão da implementação stable baselines;

  • PPO com clip_range de 0.18 e gamma de 0.999, demais configurações padrão da implementação stable baselines. Esta configuração foi obtida a partir do site Hugging Face.

No description has been provided for this image

A partir do gráfico apresentado acima, é possível observar que o algoritmo A2C obteve um desempenho inferior em relação aos demais algoritmos. O algoritmo PPO com clip_range de 0.2 e gamma de 0.99 teve uma convergência mais rápida com algumas oscilações. O algotimo PPO com clip_range de 0.18 e gamma de 0.999 obteve uma convergência mais lenta. No entanto, sem oscilações e com uma recompensa final similar ao PPO com clip_range de 0.2 e gamma de 0.99.

Lunar Lander¶

O ambiente Lunar Lander é um ambiente de controle com espaço de ações discreto. O objetivo deste ambiente é fazer com que uma nave lunar pouse na plataforma de pouso.

Neste ambiente foram testadas algumas configurações com os algoritmos A2C, DQN e PPO. As configurações testadas foram:

  • PPO_env1:
env = gym.make("LunarLander-v2")
vec_env = make_vec_env("LunarLander-v2", n_envs=1)
model = PPO("MlpPolicy", vec_env, verbose=1)
  • DQN_env1:
model = DQN(
    policy="MlpPolicy",
    env=vec_env,
    learning_rate=1e-3,
    buffer_size=1_000,
    batch_size=64,
    gamma=0.99,
    exploration_fraction=0.1,
    exploration_initial_eps=0.9,
    exploration_final_eps=0.02,
    tau=1,
  • A2C_env1:
env = gym.make("LunarLander-v2")
model = A2C(policy = "MlpPolicy", env = env)
  • A2C_env8:
env = make_vec_env("LunarLander-v2", n_envs=8)
model = A2C(
   policy = "MlpPolicy",
   env = env, 
   learning_rate=1e-2, 
   gamma=0.99,
No description has been provided for this image

Ao analisar o gráfico acima, é possível observar que os algoritmos AC2_env1 e PPO_env1 obtiveram as melhores curvas de aprendizado. Mais estáveis e com uma recompensa média maior.

Car racing discreto¶

O ambiente Car Racing é um ambiente de controle com espaço de ações discreto. O objetivo deste ambiente é fazer com que um carro de corrida complete a pista no menor tempo possível.

Foram utilizadas inúmeras configurações para os algoritmos A2C, DQN e PPO. Basicamente, as variações adotadas foram em relação ao número de environments utilizados e com relação a arquitetura da rede neural utilizada (MlpPolicy: uma rede full connected padrão e CnnPolicy: uma CNN).

A estrutura adotada por este ambiente para representar os estados é uma imagem de 96x96 pixels. Portanto, espera-se que a CNN tenha um desempenho superior em relação a MlpPolicy.

No description has been provided for this image

A configuração com melhor desempenho foi a PPO com 8 environments e CnnPolicy. A partir do gráfico acima, é possível observar que a PPO com 8 environments e CnnPolicy obteve uma convergência mais rápida e uma recompensa acumulada maior em relação aos demais algoritmos.

Os hiperparâmetros adotados nesta configuração foram:

vec_env = make_vec_env(ENV_NAME, n_envs=8, env_kwargs=env_kwargs)

    model = PPO(
        policy="CnnPolicy",
        env=vec_env,
        clip_range=0.2,
        ent_coef=0.0,
        gae_lambda=0.95,
        n_steps=512,
        n_epochs=10,
        vf_coef=0.5,
        learning_rate=2e-4,
        batch_size=128,
        gamma=0.99,

Car racing contínuo¶

O ambiente Car Racing é um ambiente de controle com espaço de ações contínuo. O objetivo deste ambiente é fazer com que um carro de corrida complete a pista no menor tempo possível. Neste ambiente os estados são representados utilizado uma imagem de 96x96 pixels.

As configurações avaliadas neste ambiente foram PPO com MLPolicy e PPO com CNN.

No description has been provided for this image

A partir do gráfico acima, é possível observar que a PPO com CnnPolicy obteve um desempenho superior em relação a PPO com MlpPolicy.

Considerações finais¶

Este estudo avaliou três algoritmos de reinforcement learning (A2C, DQN e PPO) em quatro ambientes distintos. As implementações dos algoritmos foram feitas utilizando a biblioteca Stable Baselines 3. Os ambientes utilizados foram ambientes da biblioteca Gymnasium. A comparação dos algoritmos foi feita considerando a recompensa acumulada ao longo do treinamento, ou seja, a curva de aprendizado de cada algoritmo.

A partir dos experimentos realizados, foi possível observar que o algoritmo PPO obteve um desempenho superior em relação aos demais algoritmos. O algoritmo PPO obteve uma convergência mais rápida e uma recompensa acumulada maior em relação aos demais algoritmos na maioria dos ambientes avaliados.

A forma como os hiperparâmetros foram definidos para cada algoritmo e ambiente pode ter influenciado nos resultados obtidos. A escolha dos hiperparâmetros foi feita de forma arbitrária e não foi feita uma busca sistemática dos melhores hiperparâmetros para cada algoritmo e ambiente.

O uso da biblioteca Stable Baseline 3 facilitou a implementação dos algoritmos e a avaliação dos resultados. Isto só foi possível porque os ambientes utilizados implementam a interface da biblioteca Gymnasium.

Considerando os resultados obtidos por este estudo, é possível concluir que o algoritmo PPO é uma boa escolha para problemas que podem ser resolvidos com reinforcement learning. Além disso, dado um novo problema, é possível desenvolver um ambiente usando a biblioteca Gymnasium e testar o algoritmo PPO com a implementação do stable baseline para verificar se ele é capaz de encontrar uma política ótima. Neste caso, a equipe responsável pelo desenvolvimento do agente deve-se preocupar em definir os estados, ações e recompensas do ambiente de forma adequada para que o algoritmo PPO possa aprender a política ótima. Em outras palavras, o foco do desenvolvimento fica na definição do ambiente e não na implementação do algoritmo de reinforcement learning.