第303篇 Actor-Critic方法详解

发布时间:2026/10/27 2:00:40

第303篇 Actor-Critic方法详解 上篇聊了策略梯度从REINFORCE到A2C。你可能注意到一个趋势纯粹的策略梯度方法方差太大需要引入价值函数来降低方差。Actor-Critic就是把策略Actor和价值函数Critic显式地分成两个组件让它们各司其职。这个框架是现在主流RL算法的基础。PPO、A3C、DDPG、SAC本质上都是Actor-Critic的不同变体。理解了这个框架后面学具体算法就轻松很多。Actor和Critic各自干什么Actor是策略网络负责选择动作。输入当前状态s输出动作的概率分布π_θ(a|s)。训练时用策略梯度来更新参数θ目标是最大化期望回报。Critic是价值网络负责评估Actor的表现。输入当前状态s有时也包含动作a输出价值估计V(s)或Q(s,a)。训练时用TD误差来更新参数目标是让价值估计尽可能准确。两者的协作方式是这样的Actor执行动作后获得奖励Critic评估这个动作好不好计算优势函数A Q-V或TD误差δ r γV(s) - V(s)然后Actor根据这个评估来调整自己的策略。好的动作概率增大差的动作概率减小。# Actor-Critic的核心更新逻辑 # Actor更新用优势函数加权策略梯度 # loss_actor -log π_θ(a|s) * A.detach() # loss_actor entropy_coeff * entropy # 熵正则化 # Critic更新最小化价值估计的TD误差 # loss_critic (V(s) - (r γ * V(s)).detach())^2注意A.detach()——优势函数不传梯度给Critic。Actor和Critic的loss是分开计算的各自更新各自的参数。为什么Actor-Critic比纯策略梯度好纯策略梯度REINFORCE用的是从当前时刻到episode结束的累积回报G_t作为权重。这个G_t有两个问题方差大而且必须等episode结束才能更新。Actor-Critic用Critic的估计替代了G_t。Critic给出的是当前状态的价值V(s)或者动作价值Q(s,a)不需要等episode结束。这就把蒙特卡洛方法变成了时序差分TD方法每一步都能更新。从偏差-方差的角度看REINFORCE用的是无偏但高方差的蒙特卡洛估计Actor-Critic用的是有偏但低方差的TD估计。Critic刚开始训练不好时偏差大但随着Critic越来越准偏差会减小。实践中这个trade-off是非常值得的。还有一个好处Actor-Critic可以处理非终止状态。REINFORCE必须等到episode结束才能计算回报但很多机器人任务是连续控制的比如平衡、行走没有明确的终止状态。Actor-Critic用Critic的估计作为bootstrap不需要等episode结束。DDPG连续控制的Actor-CriticDDPGDeep Deterministic Policy Gradient是2016年的工作专门解决连续动作空间的控制问题。它是确定性策略的Actor-Critic——Actor直接输出动作值不是概率分布Critic估计Q(s,a)。DDPG有四个网络Actor、Critic、Target Actor、Target Critic。Target网络是主网络的慢拷贝用于稳定训练。Actor的更新用确定性的策略梯度∇J E[∇_a Q(s,a) · ∇_θ π(s)]。直觉上就是Critic告诉Actor在这个状态下动作往哪个方向调能增大Q值。DDPG还用了两个关键技巧。经验回放Experience Replay把采集到的(s, a, r, s)存到缓冲区训练时随机采样batch。这打破了数据之间的时序相关性提高了数据利用率。缓冲区的大小通常在10万到100万之间太小了数据多样性不够太大了内存吃不消。采样时一般用均匀分布也可以用优先级回放Prioritized Replay给TD误差大的样本更高的采样概率。软更新Soft UpdateTarget网络参数用θ_target τ·θ (1-τ)·θ_target来更新τ通常取0.005。这比硬拷贝更稳定。硬拷贝就是每隔N步把主网络的参数直接复制给Target网络这种方式会导致Target值突然跳变训练不稳定。软更新让Target值缓慢变化训练曲线更平滑。DDPG的网络架构也有讲究。Actor和Critic通常都是3-4层的全连接网络隐藏层大小256或400。连续控制任务中Actor的最后一层用tanh激活输出范围在[-1, 1]之间然后乘以动作范围的上界。Critic接收状态和动作的拼接作为输入有两种常见的结构一种是早期融合状态和动作拼在一起过网络一种是后期融合状态和动作分别过网络在某个中间层合并。实验表明后期融合通常效果更好。DDPG在连续控制任务上表现不错但它有个已知问题Q值容易过高估计。因为Critic用的是max操作隐式地通过选取最优动作误差会累积。TD3修复DDPG的过估计TD3Twin Delayed DDPG是2018年的工作针对DDPG的三个问题提出了三个修复。第一个是双Critic。用两个独立的Q网络取较小的那个Q值来做目标。这直接解决了过估计问题——跟Double DQN的思路类似。第二个是延迟Actor更新。Critic每更新两次Actor才更新一次。这给Critic足够的时间来稳定Q值估计避免Actor基于不准确的Q值做优化。第三个是目标平滑。在目标动作上加少量噪声让Critic在动作空间上平滑减少对局部峰值的过拟合。TD3在MuJoCo基准测试上大幅超过DDPG是目前连续控制任务中最可靠的off-policy算法之一。面试要点面试中聊Actor-Critic几个核心概念要能讲清楚。Actor和Critic的交互机制。Actor负责探索输出动作Critic负责评估给出价值。Actor根据Critic的评估来调整策略。这种分工让算法既能探索又能学习比纯策略梯度或纯价值方法都更有优势。on-policy和off-policy在Actor-Critic中的体现。A2C是on-policy的数据用完就扔。DDPG/TD3是off-policy的用经验回放重用数据。off-policy的样本效率高但训练更不稳定需要更多的工程技巧目标网络、梯度裁剪等。Actor-Critic到PPO的演进。PPO本质上也是Actor-Critic但它通过截断重要性采样比率来限制策略更新的幅度防止策略一步走太远导致崩溃。这个改进让PPO成为目前最流行的on-policy算法。超参数的敏感性。Actor-Critic方法的超参数很多学习率、折扣因子γ、GAE的λ、熵系数、网络结构等。这些超参数的选择对最终效果影响很大。实践中一般先用默认值跑一遍Stable-Baselines3的默认值已经调得不错了然后根据训练曲线做调整。如果训练初期回报上升很快但后期震荡可能是学习率太大或者Critic不够准确。如果一直不收敛可能是探索不够增大熵系数或者奖励尺度不合适做归一化。奖励缩放Reward Scaling和观测归一化Observation Normalization是工程中非常重要的技巧。不同任务的奖励尺度可能差很多有的任务奖励在0-1之间有的在0-1000之间不做归一化的话超参数就没法通用。Stable-Baselines3内部自动做了观测的running mean归一化和奖励的缩放这也是它开箱即用的原因之一。给你的建议理解Actor-Critic最好的方式是动手实现一个。从A2C开始在CartPole或Pendulum上跑通。然后改成DDPG体会on-policy和off-policy的区别。建议读一读Lilian Weng的博客Implementation of Reinforcement Learning Algorithms里面给出了清晰的伪代码和实现细节。代码方面Stable-Baselines3的实现质量很高适合学习参考。上一篇第302篇 策略梯度——从REINFORCE到现代方法下一篇预告第304篇 PPO——最流行的强化学习算法
延伸阅读

更多相关文章

2026/10/23 11:33:23

GMap.NET官方Demo实战:WinForm上位机地图定位与坐标转换

简介:本资源是面向.NET开发者的GMap.NET地图集成实战Demo,适用于Windows Forms与WPF桌面应用开发场景,帮助初学者快速掌握地理信息可视化核心技能。压缩包共40个文件,含13个C#源码文件(如MainWindow.xaml.cs等&#xf…

2026/10/25 10:40:40

S7-300与ET200M、G120变频器PROFIBUS通讯实例与故障排查

PROFIBUS这个总线,新建项目里确实越来越少了,很多新线直接上PROFINET。但如果你接触老产线改造、第三方设备对接、设备维护,PROFIBUS仍然是一道绕不过去的坎。这次就以一个典型通讯实例来讲:西门子S7-300 PLC作为DP主站&#xff0…

2026/10/27 1:57:37

UseIt Studio 全场景智能应用落地指南

在日常的内容创作和运营工作中,我们常常被重复性的文案撰写、多平台适配以及海量信息处理所困扰。无论是电商大促期间的商品详情页更新,还是社交媒体上对突发热点的快速响应,传统的人工模式往往难以兼顾效率与质量。很多时候,团队…

2026/10/27 1:57:37

MiniCPM5-2B测试评价

MiniCPM5-2B 本地实测|轻量2B中文模型指令遵循、逻辑与创作能力深度测评测试载体:Ollama 模型:openbmb/MiniCPM5-2B:latest 说明:本文测评核心聚焦模型本身能力,硬件仅作为运行载体,不重点讨论显卡速度、显…

2026/10/26 0:20:20

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/26 1:53:47

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/27 0:59:21

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/27 0:02:28

WorkBuddy_新建任务与工作模式19_“模式选错”的典型代价

“模式选错”的典型代价 摘要 在软件工程中,设计模式、架构模式、并发模式乃至团队协作模式的选择,往往在项目早期就决定了后续的开发效率和维护成本。本文通过多个真实场景,剖析“模式选错”带来的典型代价——包括返工成本、技术债务累积、…

2026/10/27 0:02:28

WorkBuddy_新建任务与工作模式20_新手推荐路径

新手推荐路径 摘要 在 AI 辅助开发工具快速普及的今天,新手面对最多的困惑往往不是"工具够不够强",而是"我该从哪一步开始用"。本文提出一条经过实践验证的三阶段学习路径:先从 Ask(问答式交互)起…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑