Otimização proximal de política (PPO)
Objetivo substituto limitado, estimativa de vantagem GAE e PPO com stable-baselines3.
Otimização proximal de política (PPO) é uma aula grátis de Learn AI with Python no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Learn AI with Python, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Learn AI with Python inclui 4 aulas no total.
Por que PPO?
PPO é atualmente o algoritmo de RL padrão: estável, eficiente em amostras e fácil de ajustar. Ele resolve um problema central dos gradientes da política — atualizações grandes demais que destroem a política — ao limitar o quanto a política pode mudar a cada atualização.
O perigo de grandes atualizações
Uma única atualização da política grande demais pode fazer o desempenho desmoronar e, como o RL é executado em política, a recuperação é difícil. O PPO mantém cada atualização próxima da política atual para permanecer seguro.
A razão entre probabilidades
O PPO acompanha a razão entre as probabilidades nova e antiga da ação: ratio = pi_new(a|s) / pi_old(a|s). Uma razão próxima de 1 significa que a política mudou pouco; uma razão distante de 1 significa uma grande mudança.
ratio = torch.exp(new_log_prob - old_log_prob)O objetivo substituto com recorte
A característica marcante do PPO é o objetivo substituto com recorte. Ele multiplica a razão pela vantagem, mas aplica um recorte à razão, limitando-a a [1-eps, 1+eps] e eliminando o incentivo para alterar demais a política.
clipped = torch.clamp(ratio, 1 - eps, 1 + eps)
objective = torch.min(ratio * adv, clipped * adv)
loss = -objective.mean()O limiar de recorte épsilon
eps (normalmente 0.2) é o limiar de recorte. Ele limita o quanto a razão pode se afastar de 1; assim, mesmo que a vantagem seja grande, a atualização da política permanece limitada e estável.
eps = 0.2 # allow at most +/-20% change in probabilityPor que min() e o recorte funcionam
Usar o min entre os objetivos com e sem recorte torna o limite pessimista: melhorias além do intervalo de recorte não oferecem recompensa adicional, portanto o otimizador não tem motivo para ultrapassá-lo.
Estimativa generalizada de vantagem
O PPO estima as vantagens com GAE, que combina retornos de várias etapas usando os parâmetros gamma e lambda. O GAE equilibra viés e variância para produzir estimativas de vantagem suaves e confiáveis.
def gae(rewards, values, gamma=0.99, lam=0.95):
adv, gae_acc = [], 0
for t in reversed(range(len(rewards))):
delta = rewards[t] + gamma * values[t+1] - values[t]
gae_acc = delta + gamma * lam * gae_acc
adv.insert(0, gae_acc)
return advVárias épocas por lote
Ao contrário do REINFORCE, o PPO reutiliza cada lote de dados coletados por várias épocas de otimização. O recorte torna isso seguro, melhorando bastante a eficiência de amostras.
for _ in range(n_epochs):
# recompute ratio and clipped loss on the same batch
optimizer.zero_grad()
loss.backward()
optimizer.step()PPO com Stable-Baselines3
Na prática, raramente é necessário programar o PPO manualmente. O Stable-Baselines3 fornece uma implementação testada. Crie-a com o tipo de política, o ambiente e o nível de detalhamento; depois, chame learn.
from stable_baselines3 import PPO
model = PPO("MlpPolicy", env, verbose=1)
model.learn(total_timesteps=100_000)Usando o agente treinado
Depois do treinamento, use predict para obter ações para novas observações. Defina deterministic=True durante a avaliação para escolher a ação mais provável em vez de fazer amostragem.
obs, _ = env.reset()
action, _ = model.predict(obs, deterministic=True)
model.save("ppo_agent")Por que PPO predomina
O PPO combina atualizações estáveis com recorte, vantagens calculadas por GAE e reutilização de dados em um algoritmo robusto e geral que funciona em muitas tarefas com ajustes mínimos; por isso, é usado em tudo, da robótica ao RLHF.
Verificação rápida
Teste sua compreensão do PPO.
Recapitulação: PPO
Você aprendeu o objetivo substituto com recorte do PPO, que usa a razão entre probabilidades e um limiar de recorte eps para limitar as atualizações, o GAE para estimar vantagens e a reutilização de dados em várias épocas. Você executou tudo facilmente com PPO("MlpPolicy", env, verbose=1) no Stable-Baselines3.
Perguntas Frequentes
A aula “Otimização proximal de política (PPO)” é grátis?
Sim — o texto completo de “Otimização proximal de política (PPO)” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Learn AI with Python, atualize para CoddyKit PRO. O curso de Learn AI with Python inclui 4 aulas no total.
O que vou aprender em “Otimização proximal de política (PPO)”?
Objetivo substituto limitado, estimativa de vantagem GAE e PPO com stable-baselines3. Você pratica Learn AI with Python com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Learn AI with Python?
Nenhuma experiência prévia é necessária. Learn AI with Python no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Otimização proximal de política (PPO)”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Learn AI with Python?
Sim. Cada aula de Learn AI with Python inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Métodos de gradiente de política: REINFORCE
- Métodos ator-crítico (A2C)
- Otimização proximal de política (PPO)
- Ambientes personalizados do Gymnasium