DQN com Fixed Q-Targets

 

1.4.2 – Metodos Baseados em Valor
1.4.2.4 – Aproximacao de Funcoes
1.4.2.4.3 – DQN com Fixed Q-Targets
LEGENDA
Principal
Ramo
Metodo
Problemas
Modelo
Arquitetura

O que é aprendizado por reforço baseado em valor

O aprendizado por reforço ensina um agente a tomar decisões. O agente recebe recompensas por ações corretas no ambiente. Primeiramente, ele aprende uma função chamada valor Q. Esta função estima a recompensa futura para cada ação. O problema baseado em valor busca maximizar essas recompensas. Por exemplo, um robô aprende a andar sem quedas. O agente não precisa de exemplos prontos para aprender. Ele descobre as melhores ações por tentativa e erro. Assim, o aprendizado ocorre através da interação direta. Esta abordagem é fundamental para inteligência artificial moderna.

Uma tabela simples guardaria os valores Q para cada estado. Contudo, essa tabela fica enorme em problemas complexos. Por exemplo, um jogo de video game tem milhões de estados. A tabela não conseguiria armazenar todos esses valores. É aí que entra a aproximação de funções. Uma rede neural é usada para estimar os valores Q. A rede neural generaliza entre estados semelhantes. Consequentemente, o agente aprende mesmo com muitos estados. Esta técnica permite resolver problemas do mundo real. Ela é chamada de Deep Q-Network (DQN).

Arquitetura do modelo DQN com experience replay

A DQN utiliza uma rede neural profunda como aproximador. A entrada da rede representa o estado atual do ambiente. A saída fornece os valores Q para todas as ações possíveis. Primeiramente, a rede possui camadas totalmente conectadas. Entre as camadas, funções de ativação ReLU são aplicadas. A camada final não possui ativação para valores livres. A arquitetura clássica contém três camadas escondidas. Cada camada escondida possui 128 neurônios tipicamente. O tamanho da entrada varia conforme o problema resolvido. Por fim, o tamanho da saída iguala-se ao número de ações.

A Experience Replay guarda as experiências do agente. Cada experiência é armazenada como uma tupla (s, a, r, s’). O buffer de replay contém as últimas N experiências. Durante o treinamento, um lote aleatório é amostrado. Este processo quebra a correlação entre experiências sequenciais. Primeiramente, o aprendizado torna-se mais estável. Em segundo lugar, as experiências podem ser reutilizadas. Por conseguinte, a amostragem aleatória melhora a eficiência. O buffer típico armazena entre 10.000 e 1.000.000 transições. Este mecanismo foi proposto por Mnih et al. (2015).

Hiperparâmetros e fórmulas matemáticas

A taxa de aprendizado (alpha) controla a atualização da rede. Valores típicos variam entre 0.0001 e 0.001. O fator de desconto (gamma) prioriza recompensas imediatas. Geralmente, gamma entre 0.9 e 0.99 é utilizado. O epsilon para exploração decai ao longo do treinamento. Começamos com epsilon=1.0 e terminamos com 0.01. O tamanho do lote (batch size) afeta a estabilidade. Valores comuns são 32, 64 ou 128 transições. A frequência de atualização da rede alvo é crucial. Atualizamos a cada C passos (geralmente C=1000).

A fórmula central do DQN é a equação de Bellman: \(Q(s,a) = r + \gamma \max_{a’} Q(s’, a’)\). O erro quadrático médio (MSE) é usado como função de perda: \(L = \mathbb{E}\left[\left(r + \gamma \max_{a’} Q_{target}(s’,a’) – Q(s,a)\right)^2\right]\). A rede alvo (Q_target) é uma cópia congelada da rede principal. Esta arquitetura reduz a correlação entre predição e alvo. O gradiente descendente atualiza os pesos da rede principal. Após cada C passos, os pesos são copiados para a rede alvo. O algoritmo completo converge para políticas ótimas. Vários jogos da Atari foram vencidos com esta técnica.

Enunciado do exemplo clássico: o ambiente cartpole

Você deve equilibrar um poste sobre um carrinho móvel. O ambiente se chama CartPole-v1 no biblioteca Gymnasium. O carrinho pode mover-se para esquerda ou direita. O objetivo é manter o poste na posição vertical. Cada passo sem queda gera uma recompensa de +1. O episódio termina quando o poste cai mais de 15 graus. Ou quando o carrinho sai dos limites da pista. Seu agente DQN deve aprender a política ótima. A rede neural aproximará os valores Q para cada ação. Experience Replay deve ser usado para estabilizar o treinamento.

Primeiramente, implemente o buffer de replay circular. Em segundo lugar, crie uma rede neural com 3 camadas. A entrada terá 4 neurônios (observações do ambiente). A saída terá 2 neurônios (esquerda ou direita). Treine o agente por 500 episódios no Google Colab. Ao final, exiba um gráfico das recompensas acumuladas. Mostre também o desempenho antes e depois do treinamento. O código abaixo resolve completamente este enunciado. Ele roda sem necessidade de ajustes adicionais. A política treinada equilibra o poste por centenas de passos.

O código implementa um agente DQN completo com Experience Replay. A rede neural aproxima os valores Q para cada ação possível. O buffer replay armazena as últimas 10.000 experiências. Primeiramente, o agente explora o ambiente aleatoriamente. Com o tempo, ele reduz a exploração e explora o conhecimento. As recompensas acumuladas aumentam significativamente. O poste permanece equilibrado por centenas de passos. Esta solução foi amplamente validada na literatura. O agente aprende sem nenhum conhecimento prévio do ambiente. Parabéns! Você implementou seu primeiro DQN funcional.

Deixe um comentário