从直觉开始 · 离线强化学习

算法的名字很长,
思路可以很简单。

同一份跑步数据,五种学习思路。
先理解它们为什么这样做,再走进公式和代码。

先认识三个词

看懂后面,只需要这一点基础。

01

策略 Actor / Policy

负责决定怎么做。输入当前状态,输出动作或动作分布。

02

价值 Critic / Q

负责估计值不值得。Q 值是做某个动作后,未来累计收益的估计。

03

离线数据 Dataset

已经收集好的经验记录。强化学习通常用状态、动作、奖励、下一状态和终止标记。

BC 只用状态和动作即可学习。DDPG、TD3、SAC 原本是常见的在线交互、off-policy 方法;off-policy 并不等于天然适合固定离线数据。

五个算法 · 一条理解路线

从「照着做」到「谨慎改进」。

推荐按 BC → DDPG → TD3 → SAC → CQL 阅读。点击名称切换,展开小问答检查理解。

模仿学习01 / 05

BC先学会模仿

看到相似的状态,就模仿数据里做过的动作。

打个比方

像跟着教练的录像学跑步:看到身体前倾,就学习教练此时如何摆腿。

它是怎么学的?

  1. 取出一条「状态 → 动作」示范。
  2. 让策略根据状态预测动作。
  3. 比较预测与示范的差距,反复缩小误差。
再多懂一点:一句公式

模仿误差 = 平均(预测动作 − 示范动作)²

误差越小,动作越像示范;它不直接判断这样做能拿多少长期奖励。

想一想BC 的动作误差很小,是否说明实际跑得一定更好?

不一定。动作相似只说明模仿得像,真实表现还需要在环境中评估累计回报。

确定性策略02 / 05

DDPG一边行动,一边打分

策略负责出动作,评价网络负责估计这个动作的长期价值。

打个比方

像运动员和教练配合:运动员尝试摆腿方式,教练估计哪种动作更有利于接下来跑得快。

它是怎么学的?

  1. Critic 从奖励和下一状态学习动作的 Q 值。
  2. Actor 为当前状态给出一个确定的动作。
  3. 经典 DDPG 沿着 Critic 的评价改进 Actor,并缓慢更新目标网络。
再多懂一点:一句公式

评价目标 = 当前奖励 + 折扣因子 × 下一步的预计价值

Q 值看的是后续累计收益的估计;Actor 追求更高的估计值。终止状态不再计入未来价值。

想一想Q 值变大,能否直接认为真实奖励提高了?

不能。Q 值是模型的估计,可能存在高估;需要独立环境评估来验证。

稳定化改进03 / 05

TD3先让评价稳下来

在 DDPG 思路上,用双评价、慢一点的策略更新和目标动作扰动减少误判。

打个比方

像请两位教练打分,参考较谨慎的那个;动作方案不用每次打分后立刻大改。

它是怎么学的?

  1. 训练两个 Critic,用较小的目标 Q 值构造学习目标。
  2. 给目标动作加小幅且受限的噪声,平滑局部尖峰。
  3. Critic 多学几步,Actor 再更新;目标网络随策略延迟更新。
再多懂一点:一句公式

目标评价参考 = min(目标 Q₁,目标 Q₂)

两个目标评价取较小值,有助于缓解高估;这仍然是估计,不是可靠性的保证。

想一想两个 Critic 的评价应该取平均,还是取较小值构造目标?

TD3 采用较小值来构造目标,目的是缓解过高估计;Actor 的更新通常使用第一个 Critic。

随机策略04 / 05

SAC保留合理的选择余地

经典 SAC 既追求高奖励,也鼓励策略保持适度的动作多样性。

打个比方

像练跑步时保留几种合理步幅,而不是过早认定只有一个动作最好。

它是怎么学的?

  1. Actor 输出动作分布,而不是固定的一组动作。
  2. 双 Critic 学习包含熵项的长期价值目标。
  3. 经典 SAC 用价值与熵共同优化策略,温度系数控制多样性的权重。
再多懂一点:一句公式

经典 SAC 的目标 ≈ 累计奖励 + 温度系数 × 策略熵

熵可以理解为动作选择的多样性。温度权重大时,更重视保留选择;它不是随便乱做动作。

想一想离线 SAC 有随机策略,就能主动去环境里探索吗?

不能。离线训练只使用已有数据;策略有随机性与训练时能否采集新数据是两件事。

离线强化学习05 / 05

CQL对陌生动作谨慎打分

给 Q 学习加入保守约束,减少对缺少数据支持的动作的过高估计。

打个比方

像只看训练录像的教练:对录像里几乎没见过的高难度动作,不能凭想象给出很高分。

它是怎么学的?

  1. 用已有转移数据学习 Critic 的价值目标。
  2. 比较采样候选动作与数据动作的 Q 值,加入保守惩罚。
  3. 策略根据受到约束的评价学习,减少利用虚假高分的机会。
再多懂一点:一句公式

Critic 损失 = 价值拟合误差 + 保守惩罚的加权项

保守项抑制缺少支持的高估,同时相对保留数据动作的价值;不是把所有 Q 值一律压低。

想一想CQL 的保守惩罚越大,策略就一定越好吗?

不一定。过强的保守约束可能压制有效改进,应结合稳定性与独立回报评估判断。

放在一起看

各自解决什么问题?

下表概括经典思想;上方卡片单独说明本项目的离线改写。

五种算法的学习思路对照
算法核心问题记忆关键词怎么理解
BC怎样模仿示范?动作拟合照着数据做
DDPG连续动作怎样改进?Actor + Critic按评价调动作
TD3评价高估、训练不稳怎么办?双 Q · 延迟 · 平滑让评价和更新更稳
SAC怎样兼顾收益与动作多样性?随机策略 · 熵保留合理选择
CQL离线数据外动作被高估怎么办?保守价值学习陌生动作谨慎打分
NB 是本项目的版本名,不是通用算法名称。

它没有统一的一招:BC_NB 使用回报加权,其他版本分别调整保守项、策略约束与训练尺度。是否改进,要看同等设置下的独立评估;训练损失和图表本身不能证明回报更高。

把直觉接到真实实验

理解思路之后,看看它们学得怎样。

数据、训练曲线和对比分析,都保留在这里。