Go语言编码规范:官方标准与最佳实践
崩贾巢眯3.2 REINFORCE: 最早的策略梯度算法在完成策略梯度定理的推导后,我们获得了梯度的理论形式:然而,这个期望本身仍然无法直接计算。我们面临的根本问题是:轨迹空间是高维甚至连续无限的,无法枚举所有可能的组合。策略优化的实践核心在于用有限采样近似期望:与环境交互收集条轨迹,然后用经验平均估计梯度:这就是 REINFORCE 算法(Williams, 1992)的核心思想。其训练流程为:用当前策略采样条完整轨迹对每条轨迹计算累积回报(从时刻到终止)可选地引入固定 baseline(如所有轨迹的平均回报)计算梯度并更新参数:采样带来的根本挑战:方差问题我们真正想要的是策略的平均性能,但只能通过有限采样来估计。这引入了两个核心要求:无偏性(unbiased):采样梯度的期望应等于真实梯度低方差(low variance):不同采样批次的梯度应相近REINFORCE 满足无偏性,但存在高方差问题。考虑一个简单例子:示例:训练语言模型回答医疗问题。Prompt: 如何缓解头痛?Response 1(轨迹1): 多喝水,适当休息,必要时服用布洛芬。 → 奖励Response 2(轨迹2): 头痛可能由多种原因引起... (啰嗦但正确) → 奖励Response 3(轨迹3): 建议立即手术治疗。 (错误) → 奖励即使这三条回复来自同一个策略,它们的回报差异巨大()。用这些样本计算的梯度会剧烈波动,导致:需要大量轨迹(如)才能得到稳定估计训练过程缓慢且不稳定对于长对话(如轮),方差会指数级增长关键疑问:每次更新参数后策略就变了,那我是只用一条轨迹就更新吗?回答:不是。REINFORCE 的标准做法是:用当前策略采样条轨迹(如)用这条轨迹的平均梯度更新参数一次更新后策略变为,之前的条轨迹全部作废重新用采样新的条轨迹,重复上述过程这就是 On-Policy 的含义:数据必须来自当前策略,每次更新后旧数据失效,导致样本效率极低。3.3 Actor-CriticREINFORCE 的高方差源于用 Monte Carlo 回报(需要完整轨迹)。如果能用一个学习出来的函数估计未来回报,就可以:降低方差(函数估计比单次采样稳定)支持单步更新(不需要等轨迹结束)这就是 Actor-Critic 框架的核心思想:引入 Critic 网络估计状态价值,用它构造低方差的优势函数。双网络架构系统维护两个神经网络:Actor:策略网络,负责生成动作Critic:价值网络,评估状态的好坏训练目标:Critic 的更新:学习预测真实回报其中是实际观察到的累积回报(监督信号)。Actor 的更新:用 Critic 估计的优势调整策略其中优势函数衡量动作相对于平均水平的好坏。关键实现细节:计算优势时必须阻断梯度:advantage reward - value.detach() # ? 阻断梯度回传这确保 Actor 的更新不会干扰 Critic 的学习目标。单步更新的进阶TD 误差在 Actor-Critic (AC) 框架中我们可以使用 TD (Temporal Difference) 误差 来替代传统的 Monte Carlo 回报从而实现单步更新。TD 优势的定义如下与 Monte Carlo 方法对比Monte Carlo 优势 ():公式特点需要运行完整个轨迹才能计算是无偏估计但通常具有很高的方差。TD 优势 ():公式特点只需要一步single-step transition即可计算方差较低但是一个有偏估计其准确性依赖于价值函数的估计精度。3.4 GAE (Generalized Advantage Estimation) 的推导1. 真实的优势函数我们首先定义一个理论上“真实”的优势函数它使用实际的未来回报我们的目标是使用一系列的 TD 误差来构造一个对这个“真优势”的良好估计。2. 基于 Bellman 方程的展开根据 Bellman 递推公式任意时刻的回报可以展开为将其代入真实优势的定义中为了引入 TD 误差我们在上式中同时加上和减去观察上式我们可以发现第一个方括号内的部分正好是 TD 误差。第二个方括号内的部分是下一时刻的真实优势。于是我们得到了一个关于真实优势的递归关系3. 递归展开与关键结论将上述递归关系不断展开可以得到关键结论真实的优势函数等于所有未来 TD 误差的折扣加权和。这个结论非常直观代表当前这一步决策带来的“惊喜”或“估计误差”。代表未来每一步的误差。折扣因子确保了越遥远的未来其误差对当前优势的影响越小。GAE 的核心思想偏差-方差的权衡问题与动机虽然上述展开式在理论上很完美但在实践中存在两个问题依赖完整轨迹它依然需要未来所有的值这意味着必须等到整个回合episode结束后才能计算这本质上是 Monte Carlo 风格的估计方差很大。误差累积我们不希望使用过长的序列因为未来的不确定性高价值函数的估计误差会不断累积。我们需要在“充分利用未来信息”和“抑制噪声降低方差”之间找到一个平衡点。引入偏差-方差的平衡因子GAE 的核心思想是引入一个衰减系数(通常取值在 0.9 到 0.99 之间)用它来控制未来 TD 误差的权重。GAE 的定义环境的奖励折扣因子反映了任务本身对未来的重视程度。优势函数的折扣因子是我们用来控制偏差-方差权衡的人为超参数。每一步的 TD 误差。理解的作用当时这等价于传统的 TD(0) 误差只考虑一步信息。这种方法偏差最大但方差最小。当时这恢复了原始的展开式等价于 Monte Carlo 方法。这种方法无偏但方差最大。当时GAE 在 TD 和 Monte Carlo 之间进行插值。未来的权重会以的速率衰减实现了在“看得多远”与“抑制噪声”之间的平滑过渡。GAE 的计算与实现上述求和公式可以转化为一个高效的反向递推形式非常适合在代码中实现。GAE 递推公式这个计算过程类似于循环神经网络RNN中的反向传播我们从轨迹的末端开始反向遍历计算每一时刻的优势值。伪代码示例advantages torch.zeros_like(rewards)gae 0# 从后往前遍历时间步for t in reversed(range(T)):# 1. 计算当前步的 TD 误差 deltadelta rewards[t] gamma * values[t1] - values[t]# 2. 使用递推公式计算 gaegae delta gamma * lam * gae# 3. 存储当前步的优势值advantages[t] gae注意计算必须反向遍历时间因为依赖于未来的。values[t1] 是 Critic 网络对下一状态的价值预测。这个高效的计算方法是 PPO、A2C、A3C 等现代强化学习算法的标准组成部分。GAE 与 n-step TD 的关系GAE 还可以被看作是所有 n-step TD 优势估计 的指数加权平均其中n-step 优势的定义为总结来说决定了我们将多少不同长度n-step的 TD 估计综合在一起。较小的更侧重于短期的、偏差较大的估计。较大的更侧重于长期的、方差较大的估计。在实践中通常是一个很好的经验默认值。3.5 On-Policy 的困境与重要性采样样本效率的致命弱点前述所有算法(REINFORCE, AC, A2C/A3C)都是 On-Policy:梯度计算要求数据来自当前策略。这导致:每次更新后,改变,旧数据立即失效对于 LLM,生成一次回复需要数秒,但只能用一次就丢弃训练 100 万步需要采样 100 万条新数据量化对比(以 Qwen-7B 为例):方法 单次采样耗时 数据复用 训练 1000 步总耗时On-Policy 3 秒 1 次 3000 秒Off-Policy(PPO) 3 秒 4 次 750 秒重要性采样:Off-Policy 的数学工具核心问题:能否用旧策略的数据训练新策略?数学原理(重要性采样定理):对于任意函数,证明(简单积分变换):应用到策略梯度:原目标是,但数据来自,引入比率修正:进一步简化(利用),可将目标函数写为:医疗问答示例:旧策略生成:多喝水,休息(概率)新策略评估该回复:(更倾向此回答)优势(好回答)修正后的梯度贡献:关键挑战:如果比率过大(如 10),说明新旧策略差异巨大,重要性采样失效,梯度估计方差爆炸。需要约束策略更新幅度。3.6 TRPO: 信赖域约束下的策略优化优化目标的理论保证TRPO(Schulman et al., 2015)的核心思想:在限制策略变化的前提下最大化性能提升。优化问题:KL 散度约束衡量两个分布的差异:直观理解:目标函数:最大化性能(用旧数据评估新策略)约束条件:KL 散度(如 0.01),确保新策略不偏离太远医疗问答示例:旧策略分布:P(多喝水)0.3, P(休息)0.4, P(吃药)0.3新策略分布:P(多喝水)0.5, P(休息)0.35, P(吃药)0.15计算 KL 散度:如果,则该更新违反约束,需要缩小更新步长。实现方法:二阶优化TRPO 用共轭梯度法求解带约束的优化问题,需要计算 Hessian 矩阵(目标函数的二阶导数)。虽然理论保证强(单调改进),但计算复杂度高,实现困难,调参敏感。3.7 PPOPPO(Schulman et al., 2017)用一阶优化 巧妙的目标函数设计达到 TRPO 的效果,成为深度 RL 和 RLHF 的标准算法。3.7.1 PPO-Clip: 用裁剪替代 KL 约束核心思想:不显式约束 KL 散度,而是直接限制比率的变化范围。目标函数:其中将限制在(通常)。逐项分析:情况 1: 优势(好动作,希望增加概率)如果:正常梯度,继续增加如果:被裁剪为,停止增加(防止过度优化)情况 2: 优势(坏动作,希望减少概率)如果:正常梯度,继续减少如果:被裁剪为,停止减少(防止过度惩罚)医疗问答示例(具体计算):Prompt: 如何缓解头痛?Response: 多喝水,适当休息旧策略:(log prob -4.6)新策略:(log prob -3.5)优势:(好回答)比率:PPO 处理(设):原始项: r * A 3.0 * 0.8 2.4裁剪项: clip(3.0, 0.8, 1.2) * A 1.2 * 0.8 0.96最终: min(2.4, 0.96) 0.96 ← 被裁剪!解读:虽然新策略概率增加了 3 倍,但 PPO 只允许增加到 1.2 倍的幅度,防止策略突变。3.7.2 PPO-KL: 自适应惩罚另一种变体直接在目标中加入 KL 惩罚:自适应:如果:增大(加强惩罚)如果:减小(放松约束)实践中 PPO-Clip 更常用,因为无需调节。3.7.3 PPO-Clip 完整训练流程

相关新闻

SW装配体绘制之高级配合-轮廓中心

SW装配体绘制之高级配合-轮廓中心

SW装配体绘制之高级配合-轮廓中心

2026/7/6 13:04:33 阅读更多 →
如何用labelimg标注yolo数据集,并利用工具自动划分数据集

如何用labelimg标注yolo数据集,并利用工具自动划分数据集

桶遗止繁程序员的节后困境 相信很多同行都有过这样的经历: 国庆7天假期,前4天出门旅游累成狗,后3天报复性熬夜刷剧打游戏。现在是10月7日,后天(10月9日)就要上班了,突然发现: 生物钟…

2026/7/4 9:04:09 阅读更多 →
计算机毕业设计之基于springBoot的村镇快递超市库存管理系统设计与实现

计算机毕业设计之基于springBoot的村镇快递超市库存管理系统设计与实现

二十一世纪我们的社会进入了信息时代,信息管理系统的建立,大大提高了人们信息化水平。传统的管理方式对时间、地点的限制太多,而在线管理系统刚好能满足这些需求,在线管理系统突破了传统管理方式的局限性。于是本文针对这一需求设…

2026/7/6 11:14:33 阅读更多 →

最新新闻

Hermes Studio API 参考手册:后端集成与自定义扩展

Hermes Studio API 参考手册:后端集成与自定义扩展

Hermes Studio API 参考手册:后端集成与自定义扩展 【免费下载链接】hermes-studio Web dashboard for Hermes Agent — multi-platform AI chat, session management, scheduled jobs, usage analytics 项目地址: https://gitcode.com/gh_mirrors/he/hermes-stu…

2026/7/6 15:54:50 阅读更多 →
ai模特识别能力如何?商用图片批量生成平台横评与实用对比

ai模特识别能力如何?商用图片批量生成平台横评与实用对比

随着ai模特识别技术持续进步,电商行业的商品展示效率和多样性得以大幅提升。作为从业者,我实际体验多款平台后发现,商用级AI图片处理工具正在逐步成为电商图片生产新基建。 作图鸟详解 作图鸟地址:https://www.zuotuniao.com/?…

2026/7/6 15:52:49 阅读更多 →
Hermes Studio 安全配置最佳实践:认证、授权与数据保护

Hermes Studio 安全配置最佳实践:认证、授权与数据保护

Hermes Studio 安全配置最佳实践:认证、授权与数据保护 【免费下载链接】hermes-studio Web dashboard for Hermes Agent — multi-platform AI chat, session management, scheduled jobs, usage analytics 项目地址: https://gitcode.com/gh_mirrors/he/hermes…

2026/7/6 15:52:49 阅读更多 →
Fashion-MNIST实战指南:从传统MNIST到现代计算机视觉的进阶之路

Fashion-MNIST实战指南:从传统MNIST到现代计算机视觉的进阶之路

Fashion-MNIST实战指南:从传统MNIST到现代计算机视觉的进阶之路 【免费下载链接】fashion-mnist A MNIST-like fashion product database. Benchmark :point_down: 项目地址: https://gitcode.com/gh_mirrors/fa/fashion-mnist 在机器学习的演进历程中&…

2026/7/6 15:48:45 阅读更多 →
深度解析Marp插件开发:5大进阶实战技巧与架构设计指南

深度解析Marp插件开发:5大进阶实战技巧与架构设计指南

深度解析Marp插件开发:5大进阶实战技巧与架构设计指南 【免费下载链接】marp The entrance repository of Markdown presentation ecosystem 项目地址: https://gitcode.com/gh_mirrors/mar/marp Marp作为现代化的Markdown演示文稿生态系统,为开发…

2026/7/6 15:48:45 阅读更多 →
Lightpanda:9倍内存效率的革命性无头浏览器,专为AI时代打造

Lightpanda:9倍内存效率的革命性无头浏览器,专为AI时代打造

Lightpanda:9倍内存效率的革命性无头浏览器,专为AI时代打造 【免费下载链接】browser Lightpanda: the headless browser designed for AI and automation 项目地址: https://gitcode.com/GitHub_Trending/browser32/browser 在AI代理、自动化测试…

2026/7/6 15:46:42 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻