Experience Replay: a memória que torna o DQN estável

bebê aprendendo a andar

O Experience Replay é um componente essencial do DQN. Primeiramente, ele armazena transições (s, a, r, s’) em um buffer. Em segundo lugar, ele amostra mini-batches aleatórios para treinar a rede. Por conseguinte, as correlações temporais entre experiências são quebradas. Isso estabiliza o aprendizado significativamente. Sem replay, o DQN diverge facilmente.

Características do Experience Replay

O buffer de replay é uma fila circular de tamanho fixo. Transições antigas são descartadas quando o buffer enche. Cada transição é usada múltiplas vezes em diferentes épocas. Isso aumenta a eficiência amostral do algoritmo. Além disso, o replay permite aprendizado offline. O agente pode revisitar experiências passadas. Consequentemente, o DQN aprende de forma mais robusta e estável.

A amostragem uniforme é a abordagem mais simples. Contudo, versões avançadas usam priorização. Experiências com maior erro TD são amostradas com mais frequência. Isso acelera o aprendizado em problemas esparsos. O buffer é armazenado em RAM ou memória GPU. O tamanho típico é 1 milhão de transições para jogos Atari. Para problemas simples, 10.000 a 100.000 transições são suficientes.

Hiperparâmetros e fórmulas matemáticas

Os hiperparâmetros do replay buffer incluem tamanho máximo e batch size. Tamanhos típicos são 10.000 a 1.000.000. O batch size usual é 32, 64 ou 128. A perda é calculada como \( L(θ) = \frac{1}{|B|} \sum_{(s,a,r,s’) \in B} (r + \gamma \max_{a’} Q(s’,a’;θ^-) – Q(s,a;θ))^2 \). Aqui B é o mini-batch amostrado. O gradiente descendente é aplicado após cada amostragem.

A taxa de aprendizado α é tipicamente 0.00025 para Adam. O fator de desconto γ é 0.99. A rede alvo é atualizada a cada C passos (ex: 1000). Ou usamos soft update com τ=0.001. O buffer é inicializado vazio. Durante os primeiros passos, apenas coletamos experiências. Depois, começamos o treinamento com replay. Essa é a fase de warmup.

Exemplo clássico: CartPole com análise do replay

Considere o ambiente CartPole com estado contínuo. O DQN com Experience Replay é treinado por 500 episódios. O buffer armazena as últimas 10.000 transições. O código abaixo mostra o impacto do replay. Ele visualiza o tamanho do buffer e a frequência de uso das experiências. Gráficos mostram como o replay melhora a estabilidade e convergência.

Deep Q-Networks (DQN): aproximando funções com redes neurais

bebê aprendendo a andar

O DQN combina Q-Learning com redes neurais profundas. Primeiramente, ele resolve o problema de espaços de estados contínuos. Tabelas Q não funcionam quando há milhões de estados. Em segundo lugar, a rede neural aproxima a função Q(s,a). Por conseguinte, o DQN aprende a jogar jogos vendo apenas pixels. Esta foi uma revolução no aprendizado por reforço.

Características da arquitetura DQN

A arquitetura usa duas redes neurais principais. A rede online é atualizada a cada passo. A rede alvo (target) é atualizada lentamente. Isso estabiliza o treinamento. Além disso, o DQN usa replay de experiência (experience replay). Transições são armazenadas em um buffer. Amostras aleatórias quebram correlações entre experiências. Consequentemente, o aprendizado é mais estável e eficiente.

A rede online tem parâmetros θ. A rede alvo tem parâmetros θ⁻. A perda é calculada como \( L(θ) = \mathbb{E}[(r + \gamma \max_{a’} Q(s’,a’;θ^-) – Q(s,a;θ))^2] \). O gradiente descendente é aplicado apenas à rede online. A rede alvo é atualizada por cópia suave (soft update): \( θ^- \leftarrow τθ + (1-τ)θ^- \). Ou usamos hard update a cada C passos.

Hiperparâmetros e fórmulas matemáticas

Os hiperparâmetros do DQN são críticos para convergência. A taxa de aprendizado α tipicamente é 0.00025. O fator de desconto γ é 0.99. O buffer de replay armazena 1 milhão de transições. O tamanho do batch é 32 ou 64. A frequência de atualização da rede alvo é 10000 passos. A exploração usa ε-greedy com decaimento de 1.0 para 0.1. O erro TD é \( \delta = r + \gamma \max_{a’} Q(s’,a’;θ^-) – Q(s,a;θ) \). A perda é o erro quadrático médio.

O DQN original foi aplicado a jogos da Atari. Ele aprendeu a jogar Breakout, Pong e Space Invaders. A entrada era imagens de 84×84 pixels em escala de cinza. A rede tinha três camadas convolucionais e duas densas. O desempenho superou humanos em vários jogos. DQN é considerado um marco histórico em IA.

Exemplo clássico: ambiente CartPole

Considere o ambiente CartPole do OpenAI Gym. Um carrinho deve equilibrar uma haste na vertical. O estado é contínuo (posição, velocidade, ângulo). As ações são discretas (esquerda ou direita). O DQN aproxima Q(s,a) com uma rede neural. O código abaixo implementa DQN para resolver CartPole. Ele mostra gráficos de recompensa e perda durante o treinamento.