Day 0|强化学习阅读入门:先分清谁决策、谁评价、数据从哪里来
建议用时:15–20 分钟,包含文末自测。 这一篇为后面的论文准备一套够用的语言。读完后,你应该能拆开“随机、无模型、off-policy Actor–Critic”这句话,也能看出两篇论文究竟改了决策规则、评价方法,还是数据使用方式。不需要先背算法年表,也不需要现在推完所有公式。
一、先跟着一辆小车完成一次任务
我们用一个贯穿全文的教学例子:在模拟器中,让小车停到一米外的标线旁。小车可以连续调节加速度,越过边界算失败。下面的奖励与数字都是为讲解构造的,不是某篇论文的实验结果。
每隔一小段时间,小车读取位置和速度,选择加速度,模拟器推进,再告诉它新的位置、速度和奖励。靠近目标、平稳停车可以得较高分;距离远、动作过猛或碰撞可以被扣分。
- 智能体(agent)是选择动作并学习的部分;环境(environment)负责动作之后会发生什么。
- 状态(state)是描述当前决策所需情形的变量。本例先假设位置和速度足够;若只给一张照片,速度可能不可直接得到,那是观测(observation),不一定包含完整状态。
- 动作(action)是这一步选的加速度。奖励(reward)是环境对这次转移给的即时标量反馈。
- 策略(policy)把可用信息变成动作或动作分布。它回答“现在怎样开”,并不直接告诉你“最后能得几分”。查看策略定义
同一个位置,如果速度不同,合适的动作也不同。这解释了为什么论文首先要交代状态与观测:漏掉关键变量,会把两个应该区别对待的情形压成一个输入。若任务严格要求五秒内完成,剩余时间也可能需要进入状态;若只是每收集五秒就暂停记录,则是另一种边界。
把这段过程当作第一张概念地图:策略选择动作,环境产生下一状态和奖励,数据记录这段交互,学习算法利用数据更新策略或辅助模型。 接下来所有术语都在这几个位置上分工。
二、奖励、回报和价值分别回答什么
奖励只说这一步。回报(return)把以后多步奖励合起来,表示一段行为的总体结果。本文约定 是执行 后收到的奖励;对在 时刻结束的轨迹,写成:
是折扣因子(discount factor),控制远期奖励相对于近期奖励的权重。有限任务可以使用 ;持续任务是否收敛还要看相应条件。别把折扣理解为“智能体只看眼前”:小车可能需要先承受减速成本,才能避免稍后的大惩罚。
一次实际行驶得到一个 。价值函数(value function)估计的是在某种后续行为下,回报的期望。环境有随机性、策略会采样,或者初始状态不同,都会让实际结果变化。
V 看处境,Q 看处境中的一个动作
状态价值(state value) 问:“来到状态 ,随后一直按策略 开,平均能得到多少回报?”
动作价值(action value) 问:“来到 ,先指定做 ,之后再按 开,平均能得到多少回报?”二者的差别是有没有先固定当前动作。对同一套普通回报定义,有:
优势(advantage) 表示某个动作比该状态下策略的平均表现好多少。小车靠近标线时,轻刹的 可能高于继续加速;优势关心的是这种相对改善。价值数值可以为负,负数本身不意味着估计器出了错。
上标 很重要:换了后续策略,同一个状态的价值也可能改变。 则通常指最优动作价值,与某个当前策略的 有区别。后面的 SAC 采用含熵的 soft 价值约定,不能把这里的普通价值关系原封不动套进去。对照 V · 对照 Q
三、算法标签是几条不同的分类轴
看到一个新算法,最好分别问下面五个问题。它们可以组合,并不是一棵互斥的算法家谱。
1. 策略输出一个动作,还是动作分布
确定性策略(deterministic policy)常写成 ,相同输入对应一个动作。随机策略(stochastic policy)常写成 ,输出分布,再从中采样。
小车的随机策略可以给出加速度分布,并不只会在几个离散动作中选择。连续/离散描述动作空间;随机/确定描述决策方式。确定性策略在采样时也可以另外加探索噪声,环境本身也可能随机,三种随机来源要分开。随机策略 · 确定性策略
2. 谁直接决定动作,谁估计好坏
Actor(策略部分)直接表示并更新策略;Critic(价值评估部分)学习 V、Q 或相关价值估计,为策略改进提供信号。Actor–Critic描述这两个角色配合,不要求它们必须是两台机器或完全独立的神经网络。查看角色分工
价值方法也能选动作。例如 Q-learning 可以依据 Q 值选动作,而不单独训练一个参数化 Actor。反过来,策略梯度也可以直接用采样回报更新策略;并非所有策略方法都必须有一个学出来的 Critic。Critic 估计的长期回报,也不同于只给当前结果打分的奖励函数。
3. 有没有利用环境如何变化的模型
有模型(model-based)方法利用已知或学得的环境模型做预测、规划或生成学习数据。例如先预测“小车若轻刹三步会停在哪里”,再选择动作。无模型(model-free)方法不依赖这样的环境转移模型来改进决策,可直接学习策略或价值。有模型 · 无模型
这里的“模型”特指环境转移、奖励或与决策有关的预测结构。一个方法有很大的神经网络,仍可能是无模型;一个方法用已知物理方程规划,也可以是有模型,而不必先训练世界模型。
4. 学习期间还能不能取得新的交互数据
在线强化学习(online RL)在学习过程中继续与环境交互、补充数据。离线强化学习(offline RL)在既定数据集上学习,训练阶段不继续靠当前策略收集环境数据。这里的在线与互联网连接无关。在线学习 · 离线学习
如果只有别人开车留下的一批记录,模型可能对记录里很少出现的急转或急刹过于乐观。离线方法要认真处理这种分布外动作问题。因此,把一个在线算法的采样循环关掉,并不自动得到可靠的离线算法。
5. 产生数据的策略与学习目标的策略是什么关系
On-policy(同策略)方法主要使用与正在评价、改进的策略相匹配的数据;off-policy(异策略)方法允许数据来自不同的行为策略(behavior policy),而目标策略(target policy)另有所指。同策略 · 异策略
在线/离线问“还能不能收集”;on/off-policy 问“谁收集、学谁”。小车不断收集新数据,同时复用早期策略的经验,可以既在线又 off-policy。离线训练常涉及异策略数据,但两组词仍不能互换。
四、把 PPO 和 SAC 放在同一张地图上
现在让两套算法分别训练这辆小车。先不比较哪套“更强”,而是读它们如何工作。
PPO通常使用随机策略和 Actor–Critic。它先冻结一份旧策略,收集一批新 rollout,再在这批数据上更新若干轮,随后重新采样。它的常用裁剪目标通过新旧概率比和优势来减弱某些过大更新的收益。虽然一批数据会使用多次,PPO 仍通常归入 on-policy 路线;这与任意复用长期历史数据不同。读 PPO
SAC也是随机 Actor–Critic,但通常从经验回放池(replay buffer)抽取多个时期的数据,进行 off-policy 更新。它把策略熵纳入目标,使动作多样性也参与优化。熵(entropy)刻画分布的不确定程度;它在目标中的权重控制奖励与随机性的折中,并非越高越好。标准 SAC 是无模型方法,训练一般在线进行;“可以复用旧数据”不等于“任意离线数据上都可靠”。读 SAC
这两个例子都可以是随机、无模型、在线的 Actor–Critic,却在数据复用和优化目标上不同。因而“随机策略就是 on-policy”“有 Critic 就是 off-policy”都不成立。
本系列 SAC 文章固定讨论原始 2018 版本,包括独立 V 网络;后来的常见实现可能移除 V 网络并使用自动温度调节。读论文时要保留版本差别,不能拿后来代码中的每个模块反推早期原文。
为什么概率比会出现
重要性采样(importance sampling)试图用来自一个分布的样本估计另一个分布下的量。对于旧策略生成的动作,常见的一步比值是:
把小车动作临时简化成几个档位:旧策略选择轻刹的概率为 0.2,新策略为 0.3,则这个动作的比值为 1.5。它表示相对权重,不是把奖励凭空增加 50%。连续动作使用相应概率密度的比值。重要性采样速查
分母必须覆盖目标分布会用到的样本;极小分母会带来大权重和高方差。轨迹级修正还可能涉及多个比值相乘,状态访问分布也会改变。因此,一个动作比值并不能无条件解决所有异策略偏差。PPO 的裁剪进一步改变了替代目标,它也不提供“所有概率或 KL 都被硬性限制”的保证。
五、episode、rollout 与 MCTS 在哪里
回合(episode)是任务定义的一次完整尝试,例如从小车复位到成功或撞出边界。Rollout(轨迹展开/采样片段)是沿策略实际或模拟运行得到的一段序列,可以是完整回合,也可以只截取其中固定长度的一段。回合 · Rollout
为了凑齐一批数据而暂停采样,通常不代表任务真正终止。真正终止与时间截断会影响是否用下一状态价值补上未观察的未来,读 TD、GAE 和 PPO 时要特别留意。
蒙特卡洛树搜索(Monte Carlo Tree Search,MCTS)位于“做决定前先搜索”的位置。它反复选择分支、扩展节点、评估叶子并回传统计量,把有限模拟预算分配到候选动作上。用在小车教学例子时,可以先把加速度离散成几个候选档位再构建树;这只是帮助理解的改写。
搜索需要某种可展开的转移结构。叶子评估可以来自模拟 rollout,也可以来自价值网络;不是所有现代 MCTS 都要随机走到终局。策略网络可以提出有希望的动作,价值网络估计后果,树搜索再综合它们决定实际动作。MCTS 本身是一类规划方法,可以与强化学习组合;它不等同于一种 Actor–Critic 更新规则。MCTS 速查 · AlphaGo · MuZero
六、看到公式时先认清这些符号
本篇约定只是阅读起点,每篇原论文的定义优先。
| 符号 | 本篇含义 | 最需要防止的混淆 |
|---|---|---|
| 状态、观测、动作 | 观测不一定包含完整状态 | |
| 即时奖励、回报、折扣 | 奖励下标在不同教材可能写成 | |
| 参数化随机策略、确定性策略 | 是参数,不是状态 | |
| 状态价值、动作价值、优势 | soft 目标可能改变价值定义 | |
| 生成本轮数据的旧策略 | 不等于偏好优化中的参考策略 | |
| 本节新旧动作概率比 | 其他论文可能用 表示状态分布或更新系数 | |
| SAC 中常表示熵权重 | 在其他算法中可能表示学习率 | |
| 有时表示轨迹,有时表示软更新系数 | 必须读局部定义,不能跨文照搬 |
从回报走到梯度:先看一个不跳步的桥梁
前面说策略要提高长期回报,但“提高”怎样变成参数更新?先把小车简化成一次决策的两动作教学问题:轻刹奖励2,加速奖励0,轻刹概率 。期望回报 ,所以 。取p=0.3,梯度就是0.42。
不用对环境奖励求导,也能得到同一结果。轻刹的score为 ,加速的score为 ;把各动作的概率、奖励、score相乘相加:。这就是REINFORCE中log概率乘回报的最小原型。
再减去与动作无关的基线b=0.6,期望变成 。基线没有改变平均方向,因为对动作求和有 。它改变的是样本波动;若基线含有当前动作或样本自身的额外依赖,就必须重新检查这个等式的使用条件。
多步任务新增的困难是“策略还改变将来访问哪些状态”。对于固定初始分布、的折扣目标,定义归一化访问分布
策略梯度定理把递归影响收进这个权重,使梯度可以写成 。这里d不是随手假设的平稳分布;若换成平均奖励问题,分布与目标须一起更换。GAE原论文还专门区分未折扣任务目标与引入γ的降方差近似,不能跨论文只认字母。
到这里才能清楚看见三个独立接口:Critic/回报估计提供Q或A,GAE选择怎样混合多步残差,TRPO或PPO决定参数怎样移动。把优势估得更准不会自动限制策略步幅,把步幅限制住也不会修复错误优势。
七、接下来怎样读
先读发展时间线,把论文放回当时的问题中。之后可以按这条基础路线进入:
- Actor–Critic理解分工,再读 Q-learning与 REINFORCE,比较价值更新和直接策略更新。
- 读 Dyna,理解经验、预测模型和规划怎样连接;再把 PPO与 SAC放在上面的分类轴上比较。
- 对数据复用感兴趣,进入 CQL;对搜索感兴趣,进入 AlphaGo;对世界模型感兴趣,进入 Dreamer。这几条支线不用同时读完。
每篇先写下四句话:它允许看见什么;它能收集什么数据;它改了哪个机制;它用什么证据判断改善。实验回报更高、真实交互更少、运行更快,是不同结论,不能只看一条上升曲线。
八、用三分钟检查自己
1. SAC 取随机动作,又复用历史经验,是否矛盾?
不矛盾。随机描述策略输出分布;off-policy 描述允许利用不同策略产生的数据。两者属于不同的分类轴。
2. 小车有一个预测长期回报的 Q 网络,是否已经是 model-based?
不能据此判断。Q 评价动作的长期好坏;环境模型描述或支持预测动作之后如何演化。仅有 Q 网络不构成有模型方法的充分条件。
3. 五秒采样结束,是否应该把下一状态价值设为零?
先问五秒是否是任务真正终点。如果只是截断一段持续任务的数据,通常还需要估计未观察的未来;若任务本来就到此结束,则遵循该有限时域任务的终止定义。
参考入口
- Spinning Up的RL分类:用数据来源、策略形式与模型作用核对分类轴。
- SAC算法说明:检查熵项、重参数化与不同版本的实现关系。
- Lilian Weng的策略梯度综述:推导组织的参考;本文小车算例独立构造,论文实验证据在各篇原文入口核对。