Policy Gradient com Linha de Base

Banco Imobiliário

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.

REINFORCE – Monte Carlo Policy Gradient

Banco Imobiliário

O que é aprendizado por reforço baseado em política

O aprendizado por reforço treina agentes através de tentativas. Diferentemente de métodos baseados em valor, a política é aprendida diretamente. Primeiramente, a política é uma função que mapeia estados para ações. O agente não precisa estimar valores para cada ação possível. Em vez disso, ele aprende a probabilidade de executar cada ação. Este tipo de algoritmo é chamado de método baseado em política. Por exemplo, um robô pode aprender a andar sem um mapa de valores. A política é representada por uma rede neural profunda. Os parâmetros da rede são ajustados durante o treinamento. Assim, o agente melhora sua estratégia gradualmente.

Uma vantagem importante é lidar com ações contínuas. Os métodos baseados em política são mais estáveis que os baseados em valor. Eles convergem para políticas ótimas mesmo com aproximação de funções. Contudo, esses métodos podem ter alta variância nos gradientes. Para resolver isso, usa-se a linha de base (baseline). A arquitetura REINFORCE é o algoritmo mais simples desta classe. Ela foi proposta por Williams em 1992. O método usa amostragem Monte Carlo para estimar retornos. Cada episódio completo é usado para atualizar a política. Este é um algoritmo do tipo “episódio completo”.

Arquitetura do modelo reinforce (monte carlo policy gradient)

A arquitetura REINFORCE possui uma rede neural como aproximador. A entrada da rede representa o estado atual do ambiente. A saída fornece probabilidades para cada ação possível. Primeiramente, usa-se uma camada softmax na saída. Esta camada transforma os valores em probabilidades. Entre as camadas, funções de ativação ReLU são aplicadas. A arquitetura clássica contém duas ou três camadas escondidas. Cada camada escondida possui 64 ou 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.

O algoritmo REINFORCE funciona de forma iterativa. Primeiro, um episódio completo é executado com a política atual. Todas as transições (estado, ação, recompensa) são armazenadas. Depois, o retorno descontado é calculado para cada passo. A fórmula do retorno é: \(G_t = \sum_{k=0}^{T-t-1} \gamma^k R_{t+k+1}\). Em seguida, o gradiente da política é estimado. A função objetivo é maximizar a recompensa esperada. O gradiente é calculado usando a regra da cadeia. A atualização dos parâmetros segue a direção do gradiente. Este processo é repetido até a convergência da política.

Hiperparâmetros e fórmulas matemáticas

A taxa de aprendizado (alpha) controla as atualizações 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 número máximo de passos por episódio é um hiperparâmetro. A arquitetura da rede (número de neurônios) também é importante. O tamanho do lote (batch size) afeta a estabilidade. Para REINFORCE, um episódio inteiro é um lote. A inicialização dos pesos da rede é crucial. Usa-se inicialização uniforme ou normal pequena.

A função de perda para REINFORCE é o log-probabilidade ponderada: \(L(\theta) = -\sum_{t=0}^{T-1} \log \pi_\theta(a_t|s_t) G_t\). O gradiente da política é dado por: \(\nabla_\theta J(\theta) = \mathbb{E}\left[\sum_{t=0}^{T-1} \nabla_\theta \log \pi_\theta(a_t|s_t) G_t\right]\). A atualização dos parâmetros segue a regra: \(\theta \leftarrow \theta + \alpha \nabla_\theta J(\theta)\). Uma variante inclui uma linha de base para reduzir variância: \(\nabla_\theta J(\theta) = \mathbb{E}\left[\sum_{t=0}^{T-1} \nabla_\theta \log \pi_\theta(a_t|s_t) (G_t – b)\right]\). A linha de base b geralmente é a média dos retornos. Esta técnica melhora significativamente a convergência. O algoritmo REINFORCE é simples, mas poderoso. Ele resolve problemas onde ações contínuas são necessárias. Muitos jogos e robóticas 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 REINFORCE deve aprender a política ótima. Uma rede neural representará a política diretamente. A saída da rede será uma distribuição de probabilidade sobre ações.

Primeiramente, implemente a rede neural com duas camadas. A entrada terá 4 neurônios (observações do ambiente). A saída terá 2 neurônios com ativação softmax. Em segundo lugar, execute episódios completos para coleta de dados. Depois, calcule os retornos descontados para cada passo. Normalize os retornos para reduzir a variância. Treine o agente por 1000 episódios no Google Colab. Ao final, exiba um gráfico das recompensas acumuladas. Mostre também a política aprendida pelo agente. O código abaixo resolve completamente este enunciado.

O código implementa o algoritmo REINFORCE completo. A rede neural representa diretamente a política do agente. Primeiramente, cada episódio é executado com a política atual. Todas as ações e recompensas são armazenadas durante o episódio. Depois, os retornos descontados são calculados para cada passo. Os retornos são normalizados para reduzir a variância. Em seguida, o gradiente da política é estimado e aplicado. Este processo é repetido até a política convergir. O agente aprende a equilibrar o poste por centenas de passos. Parabéns! Você implementou seu primeiro Policy Gradient.