图解强化学习 |手算近端策略优化算法(PPO)

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: PPO(近端策略优化)是当前最主流的强化学习算法,以训练稳定、上手简单、泛化性强著称。它通过Actor-Critic双网络架构,结合PPO-Clip损失函数限制策略更新幅度,并利用GAE优势估计提升样本效率,广泛应用于游戏AI、机器人控制、大模型对齐等领域。

 PPO 算法的基础认识

PPO = Proximal Policy Optimization(近端策略优化算法)

PPO 是目前落地最广、上手最简单、训练稳定性极强的通用强化学习算法,兼顾离散与连续动

作场景,游戏AI、机器人控制、大模型对齐、工业决策等任务普遍首选它。它属于策略梯度类算

法,核心思想是严格限制新旧策略的更新幅度,在保证策略稳步提升的同时,避免参数更新幅

度过大导致训练震荡、模型崩溃,还支持重复利用采样样本,大幅提升数据效率。

image.gif


PPO 算法的网络结构

① Actor —— 策略网络

输入:状态 s

输出:动作分布(均值 + 方差)、动作 a、对数概率 log π(a|s)

作用:根据状态输出要执行的动作,是负责 “做决策” 的网络

image.gif

② Critic —— 价值网络

输入:状态 s

输出:状态价值 V (s)(评估当前状态好不好、未来能拿多少奖励)

作用:评价 Actor 做得好不好,计算优势函数 A

image.gif


网络更新

① Actor 网络更新(策略更新)

使用:PPO-Clip 损失函数

目的:更新策略,让好动作概率变高,坏动作变低,但更新幅度被限制,不会崩。

输入:

  • 状态 s
  • 旧动作概率 π_old
  • 新动作概率 π_new
  • 优势函数 A

计算:

  1. 求概率比 r = π_new / π_old
  2. 裁剪到 [1-ε, 1+ε]
  3. 取 min (r*A, clip (r)*A) → 得到最终损失
  4. 反向传播更新 Actor

特点:

  • 只在 “近端” 小范围更新
  • 训练超级稳定
  • 不会像传统策略梯度那样炸掉

image.gif

image.gif

image.gif

image.gif

image.gif

② Critic 网络更新(价值评估更新)

使用:MSE 均方误差损失

目的:让价值估计 V (s) 更准,从而让优势函数 A 更准。

输入:

        状态 s

         实际回报 G / TD 目标值

计算:

Critic 输出 V (s)

计算 V (s) 与 目标回报 的误差

MSE 损失反向传播更新 Critic

特点:

简单、稳定

帮助 Actor 获得更准确的优势信号

image.gif

image.gif

image.gif


手动计算

当前执行 → 永远用旧策略动作

更新网络 → 只用新策略算旧动作的概率

新策略的动作,要等到【下一轮】才会执行!

广义优势估计

image.gif

TD 误差(td_delta)

td_delta = 即时奖励 + 折扣×下一个状态价值 - 当前状态价值

image.gif

GAE 优势(advantage)

advantage = 当前TD误差 + 衰减系数 × 下一步的advantage

image.gif

td_delta = [10, 5, -10]
gamma * lamda = 0.81 (衰减系数)

image.gif

t=2

r = -10
advantage = -10 + 0.81×0 = -10
r = 5
advantage = 5 + 0.81×(-10) = -3.1
r = 10
advantage = 10 + 0.81×(-3.1) = 7.489
GAE 优势 = [7.489, -3.1, -10]

image.gif

模型更新(update)

gamma = 0.9
lamda = 0.9
clip_eps = 0.2      → 裁剪范围 [0.8, 1.2]
# 两条样本
state0 = [1.0, 0.0, 1.0, 0.0, 0.0, 0.0]
state1 = [0.9, 0.1, 0.8, 0.2, 0.5, 0.1]
action0 = 0
action1 = 2
advantage = [-0.82, -2.0]

image.gif

新旧概率比 ratio

旧策略 s0 动作 0 概率 = 0.70
旧策略 s1 动作 2 概率 = 0.10
old_log_prob0 = ln(0.70) ≈ -0.357
old_log_prob1 = ln(0.10) ≈ -2.303
新策略 s0 动作 0 概率 = 0.91  → ratio≈1.3
新策略 s1 动作 2 概率 = 0.05
new_log_prob0 = ln(0.91) ≈ -0.094
new_log_prob1 = ln(0.05) ≈ -3.000
new_log_prob0 - old_log_prob0
= (-0.094) - (-0.357)
= 0.263
ratio0 = exp(0.263) ≈ 1.30
new_log_prob1 - old_log_prob1
= (-3.000) - (-2.303)
= -0.697
ratio1 = exp(-0.697) ≈ 0.50
ratio0 = 1.30   (超过 1.2,需要裁剪)
ratio1 = 0.50  (低于 0.8,需要裁剪)

image.gif

PPO Clip 损失

adv0 = -0.82
adv1 = -2.0

image.gif

part1 = 1.30 * (-0.82) = -1.066
part2 = clamp(1.30) → 1.2  → 1.2 * (-0.82) = -0.984
取 min:
min(-1.066, -0.984) = -1.066

image.gif

part1 = 0.50 * (-2.0) = -1.0
part2 = clamp(0.50) → 0.8 → 0.8 * (-2.0) = -1.6
取 min:
min(-1.0, -1.6) = -1.6

image.gif

策略损失 policy_loss

policy_loss = - [ (-1.066) + (-1.6) ] / 2
policy_loss = - [ -2.666 / 2 ]
policy_loss = - [ -1.333 ]
policy_loss = 1.333

image.gif

价值损失 value_loss

V(s0) = -3.18
V(s1) = 0.0
td_target0 = -1.0 + 0.9*0 = -1.0
td_target1 = 0.0
loss0 = (-3.18 + 1.0)^2 = ( -2.18 )^2 = 4.75
loss1 = 0
value_loss = (4.75 + 0)/2 = 2.375

image.gif

手算结果

ratio0        = 1.30
ratio1        = 0.50
policy_loss   = 1.333
value_loss    = 2.375

image.gif

image.gif


目录
相关文章
|
4天前
|
人工智能 自然语言处理 文字识别
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
Qwen3.7-Max是阿里云百炼面向智能体时代推出的新一代旗舰模型,对标GPT-5.5、Claude Opus 4.7等闭源旗舰。该模型支持百万级token上下文窗口,具备顶级推理能力、多模态搜索与视觉理解增强、流式输出低延迟响应等核心优势,覆盖编程、办公、长周期自主执行等复杂场景。同时支持OpenAI接口兼容,便于系统快速迁移。用户可通过Token Plan团队或节省计划等订阅方式灵活调用,适合企业级高要求场景使用。
2058 7
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
|
12天前
|
人工智能 开发工具 iOS开发
Claude Code 新手完全上手指南:安装、国产模型配置与常用命令全解
Claude Code 是一款运行在终端环境中的 AI 编程助手,能够直接在命令行中完成代码生成、项目分析、文件修改、命令执行、Git 管理等开发全流程工作。它最大的特点是**任务驱动、终端原生、轻量高效、多模型兼容**,无需图形界面、不依赖 IDE 插件,能够深度融入开发者日常工作流。
3379 10
|
15天前
|
Shell API 开发工具
Claude Code 快速上手指南(新手友好版)
AI编程工具卷疯啦!Claude Code凭借任务驱动+终端原生的特性,成了开发者的效率搭子。本文从安装、登录、切换国产模型到常用命令,手把手带新手快速上手,全程避坑,30分钟独立用起来。
3435 25
|
8天前
|
人工智能 Linux BI
国内用 Claude Code 终于不用翻墙了:一行命令搞定,自动接 DeepSeek
JeecgBoot AI专题研究 一键脚本:Claude Code + JeecgBoot Skills + DeepSeek 全平台接入 一行命令装好 Claude Code + JeecgBoot Skills + DeepSeek 接入,无需翻墙使用 Claude Code,支持 Wind
2539 5
国内用 Claude Code 终于不用翻墙了:一行命令搞定,自动接 DeepSeek
|
27天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23606 15
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
|
6天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全+三种模式+记忆体系+实战工作流完整手册
Claude Code 是当前最流行的终端级 AI 编程助手,能够直接在命令行中完成代码生成、项目理解、文件修改、命令执行、错误修复等全流程开发工作。它不依赖图形界面、不占用额外资源,却能深度理解项目结构,自动生成规范代码,大幅提升研发效率。
1094 3
|
13天前
|
存储 Linux iOS开发
【2026最新】MarkText中文版Markdown编辑器使用图解(附安装包)
MarkText是一款免费开源、跨平台的Markdown编辑器,主打所见即所得实时预览,支持Windows/macOS/Linux。内置数学公式、流程图、代码高亮、多主题及PDF/HTML导出,是Typora的轻量免费替代首选。(239字)