Policy Gradient com Linha de Base

1.4.3 – Metodos Baseados em Politica
1.4.3.1 – Metodos de Gradiente de Politica
1.4.3.1.2 – Policy Gradient com Linha de Base
LEGENDA
Principal
Ramo
Metodo
Problemas
Modelo
Arquitetura

O que é policy gradient com linha de base

O policy gradient com linha de base é um método de aprendizado por reforço. Diferentemente do REINFORCE básico, ele reduz a variância dos gradientes. Primeiramente, a linha de base é um valor que subtraímos do retorno. Este valor não depende da ação escolhida pelo agente. Geralmente, usa-se a média dos retornos como linha de base. Por exemplo, podemos subtrair a média das recompensas acumuladas. Esta técnica é chamada de “baseline” na literatura. Ela mantém o gradiente não viesado (esperado igual ao original). Contudo, a variância é significativamente reduzida. Assim, o aprendizado torna-se mais estável e rápido.

A linha de base resolve um problema comum nos gradientes de política. Os retornos brutos podem variar muito entre diferentes episódios. Esta alta variância dificulta a convergência do algoritmo. Uma linha de base bem escolhida centraliza os retornos em zero. Consequentemente, os gradientes positivos e negativos são balanceados. Ações boas recebem gradientes positivos (acima da baseline). Ações ruins recebem gradientes negativos (abaixo da baseline). Este mecanismo acelera significativamente o aprendizado. O método é amplamente utilizado em problemas complexos. Por exemplo, em jogos e robótica com ações contínuas.

Arquitetura do modelo com linha de base

A arquitetura básica mantém uma rede neural para a política. Contudo, uma rede separada pode estimar a linha de base. Esta rede adicional é chamada de “crítico” ou “value network”. Primeiramente, a política (ator) decide qual ação tomar. Em segundo lugar, o crítico estima o valor do estado atual. O valor estimado serve como linha de base adaptativa. Ambas as redes são treinadas simultaneamente. A política é atualizada para maximizar recompensas acima da baseline. O crítico é atualizado para minimizar o erro de predição. Esta arquitetura é conhecida como Ator-Crítico com linha de base.

Uma versão mais simples usa uma linha de base constante. Por exemplo, a média móvel dos retornos dos últimos episódios. Esta abordagem não requer uma rede neural adicional. Primeiramente, calcula-se a média dos retornos acumulados. Depois, subtrai-se esta média de cada retorno individual. O gradiente da política é então calculado com valores centralizados. Esta técnica é eficaz e fácil de implementar. Contudo, uma linha de base adaptativa geralmente produz melhores resultados. A escolha da linha de base depende do problema específico. Ambas as abordagens serão demonstradas no código exemplo.

Hiperparâmetros e fórmulas matemáticas

A taxa de aprendizado (alpha) controla as atualizações da política. 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. A linha de base pode ser uma média móvel com janela N. O tamanho da janela típica é entre 10 e 100 episódios. Para linha de base adaptativa, usa-se uma rede separada. A taxa de aprendizado do crítico pode ser diferente da política. O número de neurônios nas redes é um hiperparâmetro importante. Valores entre 64 e 256 são comuns na prática.

A função de perda com linha de base é modificada: \(L(\theta) = -\sum_{t=0}^{T-1} \log \pi_\theta(a_t|s_t) (G_t – b)\). O gradiente da política com linha de base é: \(\nabla_\theta J(\theta) = \mathbb{E}\left[\sum_{t=0}^{T-1} \nabla_\theta \log \pi_\theta(a_t|s_t) (G_t – b(s_t))\right]\). A linha de base ótima é o valor esperado do retorno: \(b(s_t) = \mathbb{E}[G_t | s_t]\). Esta é a função valor do estado V(s). O erro do crítico é minimizado com: \(L_{critic} = \sum (G_t – V(s_t))^2\). A atualização conjunta dos parâmetros segue: \(\theta \leftarrow \theta + \alpha \nabla_\theta \log \pi_\theta(a_t|s_t) (G_t – V(s_t))\). Esta fórmula reduz significativamente a variância. O aprendizado torna-se mais estável e eficiente. Muitos problemas complexos usam esta abordagem.

Enunciado do exemplo clássico: o ambiente cartpole

Você deve equilibrar um poste sobre um carrinho móvel. O ambiente se chama CartPole-v1 na 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 deve usar Policy Gradient com linha de base. A linha de base será a média móvel dos retornos. Esta abordagem reduzirá a variância do treinamento.

Primeiramente, implemente a rede neural da política. A entrada terá 4 neurônios (observações do ambiente). A saída terá 2 neurônios com ativação softmax. Em segundo lugar, mantenha uma lista dos retornos recentes. Calcule a média dos últimos 50 retornos como linha de base. Depois, subtraia esta média dos retornos atuais. Treine o agente por 800 episódios no Google Colab. Ao final, exiba um gráfico das recompensas acumuladas. Compare com o REINFORCE básico para ver a melhoria. O código abaixo resolve completamente este enunciado.

O código implementa o Policy Gradient com linha de base. A média móvel dos retornos passados é usada como baseline. Primeiramente, cada episódio é executado com a política atual. Depois, os retornos descontados são calculados normalmente. Em seguida, a linha de base é subtraída de cada retorno. Este processo centraliza os gradientes em torno de zero. Ações com retornos acima da média são reforçadas. Ações com retornos abaixo da média são desencorajadas. O resultado é um aprendizado mais estável e rápido. Parabéns! Você implementou um Policy Gradient com linha de base.

Deixe um comentário