← 复习站首页五套模拟卷
强化学习 · 中文知识库RL2–RL12 / 按课件章节整理
教学重写版 · 先讲为什么,再讲怎么算

先知道在解决什么,再看公式。

每一节都从一个具体问题开始,交代情境、符号和方法的来由,再逐步计算,最后自己试一道。主要用中文解释,保留英文术语与原课件页码。

11 个课件章节80 个知识条目155 条公式逐步讲解 · 自测带答案

从不会开始,按 RL2 → RL12 一步步学

建议先从“先认符号”开始,再按章节阅读。每节的正文完整展开;自测答案先收起来,等你想好再打开。读到一半不理解,可用文末“先补这里”回看前置内容。★ 标记照片中的重点。

每节都带你走一遍:眼前的问题是什么 → 为什么需要这个方法 → 符号指谁 → 每个数字从哪里来 → 结果说明什么 → 换一道小题自己算。
遇到公式不要急着背,先把旁边的中文情境读完整。
查看资料范围、章节对应与重点页码

依据你提供的 RL2–RL12 共 11 份课件整理。重复示例合并到对应知识点;保留主要定义、公式关系、算法步骤、推导思路、案例与限制条件。原课件页码指 PDF 的实际页序。

章节原文件页数照片重点页
RL2RL_2_Introduction.pdf39照片未单独标记
RL3RL_3_Formulation.pdf49照片未单独标记
RL4RL_4_MDP.pdf7018–25、38–52、57–68
RL5RL_5_DP.pdf718–14、28–36、48–53
RL6RL_6_Model-free Prediction.pdf7121–28、40–43
RL7RL_7_Model-free Control.pdf6716–18、34–36、55–61
RL8RL_8 Value Function Approximation.pdf529–11
RL9RL_9 DQN.pdf4830–32
RL10aRL_10a DQN+.pdf443–11、14–27、32–39
RL11RL_11 Policy Gradient.pdf5912–19、41–58
RL12RL_12 Integrated Learing & Planning.pdf72照片未单独标记

重点标记依据你的手写复习照片,只表示优先顺序,不表示未标记内容不考。RL4 首段手写范围按 38–52 解读;RL6 的 trade-off 按课件内容解释为 MC 与 TD。Expected SARSA 等对照补充已在正文标出。

RL2 · PDF 第 3–9 页从问题讲起 · 逐步算清

强化学习究竟在解决什么问题?

Reinforcement learning; Sequential decision making

本节一步步会讲什么

从一个需要连续做决定的问题开始

你让机器人从家里去充电站。它在门口有两条路:右路看起来很近,但走进去才发现后面被堵住;左路第一步离充电站更远,却能绕过去。如果只问“这一步有没有靠近目标”,右路似乎更好;如果问“最后能不能到、总共花多久”,左路可能更好。强化学习要处理的正是这种问题:眼前动作会改变后面还能遇到什么、还能做什么。

机器人并没有一份标着“每个路口正确方向”的答案。它要走、观察后果、修正判断,然后逐渐找到更好的走法。这里先理解这个过程,再认识名称。

把故事里的四个角色认清楚

术语在这个例子里是什么它不是什么
Agent 智能体负责选择方向的机器人决策程序不是整张地图
Environment 环境道路、障碍物、移动结果和反馈规则不是机器人自己的选路规则
Action 动作在一个路口选择向左或向右不是最终整条路线
Reward 奖励每次移动后收到的分数,例如每步 -1不是老师直接告诉它的正确动作标签

用数字看“长期”为什么重要

假设左路要走 3 步就到,右路绕进死路后要走 8 步才到,每一步奖励都为 -1,暂时不折扣。左路整段获得 -1-1-1=-3;右路获得八个 -1,共 -8。因为 -3 大于 -8,最大化累计奖励就会偏好左路。注意,两条路第一步的奖励都是 -1,单看第一次反馈无法判断哪个路线更好。

若有随机障碍,左路一半时候需 2 步、一半时候需 4 步,则平均回报为 0.5×(-2)+0.5×(-4)=-3。我们关心的是多次尝试的预期长期表现,不是保证每一回合都恰好得 -3。

这和“学习识别图片”有什么不同?

监督学习通常拿到“输入及其目标标签”,例如照片对应猫或狗;强化学习通常只看到自己采取的动作产生的结果。机器人走了左边,不能凭这一次经验就知道没走的右边会怎样。这也解释了为什么后面需要学习探索,以及怎样把最后的好坏传回早先的动作。

自己试一下

两条路线第一步都扣 1 分。一条总共 4 步终止,另一条总共 7 步终止。不折扣且每步都扣 1,哪条路线的累计奖励更大?为什么不能只比较第一步?

我想好了,展开答案与理由

4 步路线的回报为 -4,7 步路线为 -7,所以应偏好 4 步路线。两者第一步都为 -1,差别存在于后续,因此只比较即时奖励无法区分。这里比较的是整段回报,而不是把负号当成“越负越好”。

仅保存在当前浏览器
RL2 · PDF 第 11–21 页从问题讲起 · 逐步算清

奖励、长期目标与信用分配

Reward; Reward hypothesis; Credit assignment

本节一步步会讲什么

先看“现在得分高”为什么可能不是好选择

一个游戏有两条路线。路线 A 先得到 5 分,随后掉进陷阱扣 20 分;路线 B 先得 0 分,随后安全到达目标得 8 分。如果只追求下一笔分数,会选 A;若按不折扣的总得分评价,A 是 5-20=-15,B 是 0+8=8,就应选 B。奖励告诉你一次结果,任务目标通常关心整段行为。

这一节要把 reward、return、value 三个看起来相似的词分开。后面所有 Bellman、MC、TD 计算都建立在这个区别上。

同一故事中的三个量

量含义例子
Reward 奖励 r刚刚一次转移收到的反馈路线 A 的第一笔是 5
Return 回报 G从某个时刻开始,把以后奖励按规则累计不折扣时 A 的回报为 -15
Value 价值 v在规定行为方式下,对可能回报取平均一半得 8、一半得 4,价值为 6

字母只是简写:r 常指一笔实际奖励;G 指一条未来轨迹的累计结果;v 指许多可能未来的平均。价值不是这一次一定拿到的分数。例如价值 6 可以来自每回合只拿到 8 或 4,根本没有一回合恰好得到 6。

折扣先作直观认识

如果规定晚一步的奖励只算原来的一半,这个“一半”写成 γ=0.5。路线 A 的回报变为 5+0.5×(-20)=-5;路线 B 变为 0+0.5×8=4。第一个奖励不打折,后面的才按距离现在的步数打折。具体记法会在 RL4 的回报一节完整展开。

信用分配到底在分配什么?

下棋直到最后才得到“赢 1 分、输 -1 分”,但最后结果与几十步之前的落子有关。信用分配 credit assignment 就是判断:哪些早先决定对这个结果有贡献,应该提高或降低它们的评价?不是把最后 1 分简单平均分给每个动作,也不是只夸最后一步。后面的 MC 会使用完整回报,TD 会利用后继价值逐步传递反馈。

奖励设计也必须对准目的

每走一步扣 1、到达终点后结束,在期望终止步数有限且不折扣时,回报恰好是步数的负数,所以最大化回报等价于少走路。但如果只奖励“经过某个位置”,机器人可能反复经过该位置刷分,而不去终点。奖励假设是用累计奖励表达目标的建模思路,不保证随便选一套奖励就代表真实目的。

自己试一下

某策略一半时候回报为 10,另一半时候回报为 -2。它的价值是多少?价值是否等于下一步的即时奖励?

我想好了,展开答案与理由

价值为 0.5×10+0.5×(-2)=4。这里是在平均整段回报,不是在平均某一笔即时奖励;没有额外信息时不能说下一步奖励就是 4,也不能说每回合都获得 4。

仅保存在当前浏览器
RL2 · PDF 第 22–29 页从问题讲起 · 逐步算清

探索、利用与经验来源

Exploration; Exploitation; Online and offline

本节一步步会讲什么

你还不知道哪家店最好时,怎么选?

熟悉的餐厅每次约 7 分,新餐厅从没去过,可能只有 3 分,也可能有 10 分。今天去老店,是利用已有认识获得较可靠的好结果;今天试新店,是花一次机会获取信息。两者都可能合理,关键在于你是否还需要弄清未知选择,以及未来还有多少机会使用新知识。

强化学习里的价值是学出来的,起初可能很不准。如果第一次碰巧把一个好动作估低了,以后又永远只选当前最高的动作,就再也没有数据纠正它。

用一次估计错误说明为什么不能永远贪心

假设动作 A 的真实平均奖励是 7,B 的真实平均奖励是 9,但当前只试过各一次,估计分别为 7 和 3。贪心 greedy 的意思是每次选当前估计最大的动作,所以会一直选 A。这样 A 的估计会不断更新,B 却一直停在 3。问题不是 B 真差,而是它没有再次被尝试。

探索 exploration 是有意保留尝试其他动作的机会;利用 exploitation 是根据已有估计选择看起来最好的动作。后面 RL7 的 ε-greedy 会给出一种具体的混合规则;现在先把“收集信息”和“使用信息”分清。

一个可计算的探索规则

假设今天以 0.8 的概率直接选当前最好 A,以 0.2 的概率在 A、B 中均匀抽一个。均匀表示各一半,因此 A 的总概率为 0.8+0.2×0.5=0.9,B 为 0.2×0.5=0.1。进入探索分支后仍可能抽到 A,所以“探索 20%”不等于“选 B 20%”。

另外两组分类不要混在一起

分类它问的是什么具体例子
Online / Offline 在线与离线训练时还能继续与真实环境交互吗?边玩边采数据是在线;只用已有记录训练是离线
On-policy / Off-policy 同策略与离策略数据由谁的策略产生,学习目标又是谁?行为会探索,但学习目标按贪心继续,可是离策略

“在线”不是“同策略”的中文别名。Q-learning 可以边实际玩边学,即在线;但它的目标评价贪心后续,而行为还在探索,因此是离策略。离线数据如果完全没有覆盖某动作,就不能轻易靠“下一次再试它”获得补充证据。

自己试一下

三个动作中 A 当前最好。以 0.7 概率直接选 A,以 0.3 概率在全部三个动作中均匀抽取。A、B、C 各被选中的概率是多少?

我想好了,展开答案与理由

探索分支给每个动作 0.3/3=0.1。A 还拥有直接利用的 0.7,所以概率为 0.8;B、C 各 0.1,总和为 1。不能把 A 写成 0.7,因为探索时也可能抽中 A。

仅保存在当前浏览器
RL2 · PDF 第 30–38 页从问题讲起 · 逐步算清

泛化:为什么需要深度强化学习?

Generalization; Deep reinforcement learning

本节一步步会讲什么

先想象一张越来越大的记分表

如果迷宫只有 10 个格子,你可以给每个格子单独记录“从这里出发平均能得到多少分”。但如果机器人看到的是相机图像,光线略变、位置移动一点就可能产生一张新图。给所有可能图像逐一建表、每张都尝试很多次,几乎做不到。

我们希望在几个路口学到的经验,也能帮助判断没见过但相似的路口。这种把已有经验用于新情况的能力叫泛化 generalization。这一节解释为何后来要引入函数近似和神经网络,而不是要求你先会搭网络。

从“每个状态一个数”变成“共享一条规则”

假设我们用到出口的距离 d 来概括状态。距离 2 的地方学到价值约 -2,距离 4 的地方约 -4。一个简单近似规则可以是“价值约等于距离的负数”。于是没单独训练过的距离 3,也能估成 -3。

\hat v(s,w)=w\,d(s)

这里 s 是当前状态,d(s) 是从这个状态提取的距离特征,w 是共享的可学习参数;帽子表示估计而非保证正确的真值。若 w=-1,则 d=2、3、4 分别输出 -2、-3、-4。网络可以学习更复杂的映射,但“输入状态,输出估计”的角色没有变。

共享为什么既有好处,也会出错?

若我们把 w 从 -1 更新到 -1.2,距离 2 的估计会从 -2 改为 -2.4,距离 3 也随之变成 -3.6。一个状态上的经验能影响其他状态,这就是共享规律的效果。可如果距离同为 3 的两条路,一条通畅、一条被墙堵住,只用距离就无法区分。函数近似会泛化,也会把不该相似的状态混在一起。

“深度”改变哪一部分?

深度强化学习常用多层神经网络表示价值、策略或环境模型。它增强了表示复杂图像等输入的能力,目标仍然是改善长期累计奖励。使用网络不代表方法一定基于环境模型:例如 DQN 的网络估计动作价值 Q,而不是预测环境下一状态,所以通常仍称 model-free。

为什么 RL 数据不像固定题库?

机器人连续走的相邻画面很相似;策略学得更好后,又会去不同的区域,后续数据分布也变化。既有样本之间的相关性,又有行为变化引起的数据变化。RL9 的经验回放和目标网络就是为训练中的部分困难提供缓解办法,不能理解成“网络越深就自动解决”。

自己试一下

采用估计规则 V̂(s)=w×d(s),当前 w=-2。一个从未访问的状态距离为 3,它的估计是多少?这是否证明它的真实价值就是这个数?

我想好了,展开答案与理由

规则输出 -2×3=-6。这个数是共享规则给出的预测;它能在没有单独访问该状态时输出结果,体现泛化,但不能证明真实价值为 -6。若距离不是充分特征或参数没学好,预测可能偏差很大。

仅保存在当前浏览器
RL3 · PDF 第 4–11、29–31 页从问题讲起 · 逐步算清

智能体、环境与交互时序

Agent; Environment; History

本节一步步会讲什么

把一次移动慢放,先别背下标

机器人现在站在路口。先看清自己在哪,再选向右;动作执行后,地面可能让它成功到隔壁,也可能打滑留在原地,同时这次移动扣 1 分。先有当前信息和动作,后有这次动作的结果。强化学习的下标就是为了把这个先后顺序写清楚。

每个记号放在哪个时刻?

记号含义本次移动的例子
t当前决策时刻的编号例如 t=0,刚准备出发
St做这次决定前的状态当前在路口 A
At此刻选出的动作向右
Rt+1这个动作执行后收到的奖励移动扣 1,所以为 -1
St+1这个动作执行后到达的状态成功到 B,或打滑仍在 A
S_t\longrightarrow A_t\longrightarrow(R_{t+1},S_{t+1})

箭头是时间顺序,不是某个求值公式。奖励写 t+1,是因为它与下一状态一起作为本次动作的后果返回;这并不意味着这笔奖励在回报里必须先乘一次折扣。

策略的随机与环境的随机分两步

假设机器人以 0.6 概率选右、0.4 概率选左;如果选了右,地面有 0.8 概率让它成功移动、0.2 概率让它留在原地。第一层是机器人如何选,第二层是选完后世界如何变化。

“选右并成功”的概率是 0.6×0.8=0.48;“选右并打滑”的概率是 0.6×0.2=0.12。两项加起来 0.60,正好等于所有“选右”事件的概率。不要把 0.6 和 0.8 相加,因为同一路径要连续满足两件事。

环境概率怎样写?

p(s',r\mid s,a)=P(S_{t+1}=s',R_{t+1}=r\mid S_t=s,A_t=a)

竖线“|”读作“已知……条件下”。s 是已知的当前状态,a 是已知已选动作;s′ 与 r 是接下来可能出现的状态和奖励。s′ 的撇号只是“下一个状态”的标记,不是求导。这个 p 属于环境;π(a|s) 才表示策略选动作的概率。

观测与历史为什么也会出现?

Ot 表示目前实际看到的观测,例如一张相机图;Ht 表示截至现在的观测、动作、奖励记录。观测不一定包含全部必要信息,智能体可能需要用历史形成内部状态,这正是下一节马尔可夫性要讨论的问题。

自己试一下

智能体以 0.25 概率选 retry。选中后,环境以 0.5 概率回到 X、0.5 概率终止。一次决策中“选 retry 且回 X”的概率是多少?

我想好了,展开答案与理由

先选 retry,再发生回 X,两层概率相乘:0.25×0.5=0.125。0.5 只是已经选中 retry 后的条件概率,不能直接作为整个决策中回 X 的概率。

仅保存在当前浏览器
RL3 · PDF 第 12–20 页从问题讲起 · 逐步算清

马尔可夫状态:当前信息是否足够?

Markov property; Information state

本节一步步会讲什么

为什么“我站在哪”有时还不够?

两次你都站在同一扇门前,做同样的“开门”动作。第一次以前捡过钥匙,门开了;第二次没有钥匙,门打不开。如果状态只写“门口”,就把影响结果的两种情况混在一起。你必须回头查历史有没有拿钥匙,才能更准确预测结果。

把状态改为“当前位置 + 是否持有钥匙”后,过去绕过多少圈、在哪个时刻捡到钥匙,一般不再重要。当前状态已经保留了预测下一步所需的那部分信息。这就是理解 Markov property 的入口。

它要求“信息够用”,不是“所有过去都无关”

马尔可夫性说:已知当前状态及动作以后,更多的过去信息不会再改变对下一状态、奖励的条件预测。历史仍可能影响当前状态;只是这种影响已经被当前状态总结了。

P(S_{t+1},R_{t+1}\mid H_t,A_t)=P(S_{t+1},R_{t+1}\mid S_t,A_t)

左边知道完整历史 Ht 和这次动作 At;右边只知道压缩后的状态 St 和动作。等号表示这两种信息条件给出的下一结果分布相同。这里不是说 St、At 完全不影响未来,恰恰是说它们已经足够。

一个数字例子帮助区分“随机”与“缺信息”

假设有钥匙时开门成功率为 0.9,无钥匙时为 0。只按位置记录,历史上门口一半人有钥匙,会得到一个混合成功率 0.5×0.9+0.5×0=0.45。但若再告诉你“这次已经拿了钥匙”,你会把预测改成 0.9。额外历史改变了预测,所以位置这个表示不充分。

改用包含钥匙的状态后,同一状态“门口、有钥匙”每次仍可能以 0.1 概率开门失败。这是环境随机性,不违反马尔可夫性;只要此前更早历史不会再改变这组 0.9/0.1 的概率。

怎样判断自己的状态有没有漏信息?

先固定同一个状态描述和动作,再问:如果知道速度、钥匙、剩余电量、之前是否触发机关等历史信息,预测会不会改变?会,就可能遗漏了关键变量。这比背“memoryless”更能帮助做选择题和建模题。

环境状态是环境内部决定未来所需的表示;智能体实际使用的状态表示可能没有完整观察到它。完全可观测 MDP 假设决策所需状态能被观察,下一节会处理看不完整的情况。

自己试一下

一辆车的下一位置取决于当前速度。若状态只记录位置,而不知道它向左还是向右运动,这个表示为什么可能不满足马尔可夫性?

我想好了,展开答案与理由

同一位置、同一控制动作下,不同速度会导致不同下一位置。如果过去的画面能告诉我们速度,那么加入历史会改变预测,说明“位置”不够。把相关速度加入状态可以补上这个缺口;是否完全充分仍要看实际动力学还有没有其他隐藏变量。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL3 · PDF 第 21–27 页从问题讲起 · 逐步算清

部分可观测:观察不一定就是状态

POMDP; Belief state; State representation

本节一步步会讲什么

只给你一张截图,你知道车正在往哪走吗?

汽车在画面中央,同一张位置图可能来自向左运动,也可能来自向右运动。你能看到当前画面,却看不到速度;但速度会影响下一步结果。另一例是两个走廊长得一样,只看现在这张照片无法判断自己在哪一个。环境仍在演化,只是智能体看到的信息不完整。

上一节要求状态足以预测未来;这一节讨论当单次观测做不到时,怎样表达“我对真实情况还不确定”。这类问题称部分可观测决策问题 POMDP。

状态、观测和信念不是同一个东西

术语在走廊例子里的含义
隐藏状态 St实际上位于走廊 A 还是 B
观测 Ot相机看到的画面
历史 Ht之前看过什么、做过什么、收到什么反馈
信念 bt利用这些记录,估计位于各隐藏状态的概率
b_t(s)=P(S_t=s\mid H_t)

括号里的 s 是你正在问的某个可能状态。bt(A)=0.7 的意思是“根据截至现在的信息,我认为在 A 的概率为 70%”,不是说机器人同时有 70% 的身体在 A。

用一条新观测更新判断

开始时,你认为在 A 的概率 0.7,在 B 的概率 0.3。现看到一个红色标记:若在 A,看到它的概率为 0.8;若在 B,概率为 0.2。两种解释的未归一化权重分别为 0.7×0.8=0.56 和 0.3×0.2=0.06。

总权重为 0.62,因此看到红标记后,在 A 的概率变成 0.56/0.62=28/31≈0.9032,在 B 的概率为 3/31≈0.0968。新证据更支持 A,所以信念向 A 移动。这是一个没有状态移动的简单观测更新;有动作和状态转移时,还需先用转移模型预测。

记住历史的几种办法

保存完整历史最直接,但记录会越来越长。若模型已知,信念分布可作为一种系统化的状态表示。工程中也常拼接最近几帧,或让循环网络学习记忆。多帧可以帮忙估速度,但“用了四帧”不是一个普遍的信息充分性证明。

例如你 100 步前拿过钥匙,最近四帧都只显示门口,那么拼四帧仍可能不知道钥匙状态;需要保留更长期的关键信息。

自己试一下

你认为在 A、B 的概率各 0.5。一条观测在 A 出现的概率是 0.9,在 B 是 0.1。看到这条观测后,在 A 的概率是多少?

我想好了,展开答案与理由

权重为 0.5×0.9=0.45 和 0.5×0.1=0.05,总和 0.5。归一化得 A 的概率 0.45/0.5=0.9,B 为 0.1。不能只写 0.45,因为完整信念分布必须加起来等于 1。

仅保存在当前浏览器
RL3 · PDF 第 33–41 页从问题讲起 · 逐步算清

策略、价值函数、模型:三者各管什么?

Policy; Value function; Model

本节一步步会讲什么

在一个路口,你其实会问三个不同的问题

机器人走到 S:第一问“我现在选左还是右?”;第二问“左、右各自长期大约有多好?”;第三问“如果选右,可能到哪、会收到几分?”三问经常同时出现,但答案类型不同。把它们混在一起,就会把 Q 值误当动作概率,或把神经网络误当环境模型。

先看输出是什么,再认名字

组件回答的问题具体输出
Policy 策略 π在当前状态怎样选动作?左概率 0.7,右概率 0.3
Value function 价值函数 V/Q从这里或做这个动作后,长期平均有多好?Q(左)=8,Q(右)=4
Environment model 环境模型指定动作后会发生什么?右走有 0.8 到 X、0.2 到 Y,奖励均为 -1

策略的概率非负、相加为 1。价值是分数的期望,可以是负数,也没有相加为 1 的要求。模型则描述一次转移及奖励的规律。

把同一份信息按三个用途算一遍

当前策略左 0.7、右 0.3,动作长期价值分别为 8、4。按这个策略行事,起点平均价值为 0.7×8+0.3×4=6.8。如果只想选当前价值最大的动作,会选左,但这个贪心规则是从 Q 导出的一个新策略,不能说原策略本来就“必选左”。

若右动作给奖励 -1,且 γ=0.5、下一状态 X/Y 的价值为 12、2,模型计算出的右动作价值是 -1+0.5(0.8×12+0.2×2)=4。这说明模型和后继价值可共同用于计算 Q,但它们本身不是同一种对象。

确定性与随机策略怎样写?

a=\pi(s),\qquad \pi(a\mid s)=P(A_t=a\mid S_t=s)

左式把策略写成直接输出一个动作的函数,例如 π(S)=左;右式输出动作分布,例如 π(左|S)=0.7。竖线表示已经知道当前状态。随机策略并不表示每次都均匀乱选,它可以有很明确的不均匀偏好。

后面算法怎样使用这些组件?

价值方法先学 V 或 Q,再据此选动作;策略方法直接调整动作分布;actor–critic 同时学策略和价值。Model-based 方法显式利用环境转移与奖励模型;model-free 方法不需要先提供这种模型。

自己试一下

一个网络输入状态,输出 (2,6)。仅知道它是 DQN 的输出,能否说动作概率是 0.25 和 0.75?

我想好了,展开答案与理由

不能。DQN 输出的是动作价值 2 和 6,而不是概率。若采用贪心策略,会选第二动作;若采用 ε-greedy,还需要给定 ε 才能得到动作概率。直接把两个 Q 除以总和,没有得到任何已指定算法的必然规则。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL3 · PDF 第 42–47 页从问题讲起 · 逐步算清

预测、控制、学习与规划

Prediction; Control; Learning; Planning

本节一步步会讲什么

同一张地图,可以提出两类任务

你已经规定机器人“每个方向各以 1/4 概率选”,现在想知道平均要多久到出口。这是在评价一个已经给定的做法。另一种提问是“每个路口到底应该怎样选,才能最快出去”,这时做法本身还需要寻找。

前者叫 prediction 或 policy evaluation,预测/策略评估;后者叫 control,控制。这里 prediction 主要指预测长期表现,不只是预测下一状态的名称。

固定什么、求什么?

任务已经给定的内容希望得到的答案
策略评估环境规律和策略 π该策略的价值 vπ 或 qπ
最优控制环境或可采集的经验最佳行为规则 π* 以及最优价值

下标 π 表示“按哪一种做法继续”;星号 * 表示“在可选策略中最好的”。不必现在记住求法,先看题目究竟允许不允许你改变行为。

一个最小数值例子

S 有左、右两动作,都立即结束,分别得 2、6 分。若策略规定左右各一半,评估结果为 0.5×2+0.5×6=4。你不能在评估题里突然写 max(2,6)=6,因为那已经换成必选右的行为了。若题目问最优控制,则选择右,最优价值为 6。

同一环境得到 4 与 6 并不矛盾:一个回答固定随机策略表现,一个回答最佳可实现表现。

学习与规划又是另一组区别

学习 learning 关注用经验改进估计;规划 planning 关注利用环境模型推演可能未来。若已经知道左右奖励是 2、6,可以在纸上比较,这属于模型支持的计算。若不知道规则,就亲自各试几次,把观测奖励用于估计,是从真实经验学习。

这两组词可以交叉组合:用模型计算固定随机策略的价值,是规划中的预测;用采样经验寻找更优动作,是学习中的控制。Dyna 还会先从真实经验学模型,再用模型生成模拟经验做更多更新,所以不是非得把一套系统塞进单一词里。

读题时的判断顺序

先找有没有给定 π。如果要求 evaluate π,就先保持这个动作分布。再看数据来源:给了完整概率模型,可以做期望备份;只给轨迹,则通常处理样本回报或 TD 更新。最后看要求输出一个数值表,还是一个动作选择规则。

自己试一下

同一环境左得 1、右得 9,都立即终止。策略选择左的概率为 0.75。问“这个策略的价值”和问“最优策略及价值”,答案各是什么?

我想好了,展开答案与理由

固定策略的价值为 0.75×1+0.25×9=3。最优策略是总选右,价值为 9。第一个问题必须使用给定概率;第二个问题允许改变动作规则,因此取最优动作。

仅保存在当前浏览器
RL4 · PDF 第 8–17 页从问题讲起 · 逐步算清

马尔可夫过程、MRP 与 MDP

Markov process; MRP; MDP

本节一步步会讲什么

从“天气会怎样变”到“我该做什么”

假设我们只观察晴、雨两种天气,知道今天晴时明天晴的概率 0.8、雨的概率 0.2。这只描述状态如何变化,没有好坏分数,也没有可选动作,称马尔可夫过程 MP 或马尔可夫链。

若再规定晴天每天得到 2 分、雨天扣 1 分,并说明未来怎样折扣,就能问“从晴天起的长期平均分数是多少”,这变成马尔可夫奖励过程 MRP。如果还能选择是否撑伞,而动作会影响奖励或状态变化,就进入马尔可夫决策过程 MDP。三个缩写的差别在于增加了什么信息,而不是三个完全无关的新公式。

按增加的要素整理

对象已经描述什么能提出什么问题
MP / Markov chain状态和转移概率下一状态有多大概率出现?
MRP再加奖励和折扣从这里继续演化,预期累计奖励多少?
MDP再加动作及动作条件下的规律应该选什么动作才能改善长期结果?

转移矩阵到底是一张什么表?

令状态顺序为 (晴,雨)。设雨天明天晴的概率为 0.4、雨为 0.6。把“从哪里出发”放在行,“到哪里去”放在列:

当前 → 下一状态晴雨
晴0.80.2
雨0.40.6

P 的一个元素 Pij 就是从 i 到 j 的概率。每行必须非负且和为 1,因为从一个当前状态出发,所有可能下一结果的总概率为 1。列和不必为 1,这里晴这一列和为 1.2,也没有问题。

P_{ij}=P(S_{t+1}=j\mid S_t=i),\qquad\sum_jP_{ij}=1

怎样用表求下一状态价值的平均?

假设晴、雨的未来价值暂给为 10、0。从晴出发,后继平均为 0.8×10+0.2×0=8;从雨出发为 0.4×10+0.6×0=4。因此把价值列向量 v=(10,0)ᵀ 乘到 P 右边,Pv=(8,4)ᵀ,正好同时算出两行的后继平均。

这还没有加本次奖励和折扣;MRP 的 Bellman 方程会把这一步放进“即时奖励 + 折扣后的平均未来价值”。先认清矩阵行列,后面就不必机械猜乘法方向。

自己试一下

状态顺序 (A,B),A 以 0.3 到 A、0.7 到 B。若 v(A)=2、v(B)=6,从 A 看下一状态价值的平均是多少?A 的概率应该放在矩阵哪一行?

我想好了,展开答案与理由

平均为 0.3×2+0.7×6=4.8。概率 (0.3,0.7) 放在 A 对应的行,因为这一行描述“从 A 出发”。这只是后继价值平均,还没加即时奖励或乘折扣。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL4 · PDF 第 18–27 页照片重点相关从问题讲起 · 逐步算清

回报与折扣:从哪一步开始乘 γ?

Return; Discount factor; Episodic tasks

本节一步步会讲什么

先把一段经历列成时间表

你刚要出发,接下来的三个动作分别带来奖励 2、-1、4,然后结束。现在问“从出发时看,这段经历一共值多少?”如果晚一步的分数只按前一步的一半计算,就设折扣因子 γ=0.5。第一笔奖励已经是接下来立刻收到的奖励,不需要先打折。

从出发时看奖励权重贡献
第一次收到212
第二次收到-10.5-0.5
第三次收到40.5²=0.251

把三项相加,起点回报为 2-0.5+1=2.5。折扣的是“距离所问起点有多远”,不是奖励数值的大小。

每个符号现在都有对应物

Gt 表示从时刻 t 开始往后看的回报;Rt+1 是此刻动作之后收到的第一笔奖励;γ 是每往后延迟一步多乘一次的系数;T 表示回合结束的时刻。求和里的 j=0 表示第一笔,所以权重是 γ⁰=1。

G_t=\sum_{j=0}^{T-t-1}\gamma^jR_{t+j+1}

这条式子只是把表格压成一行。Σ 读“把所有这些项加起来”,并不是另外需要求解的参数。

换一个起点,折扣次数要重新数

刚收到第一笔 2 分后,未来只剩 -1 和 4。此时 G₁=-1+0.5×4=1;再往后 G₂=4。由此可以从终点往前倒推:

G_t=R_{t+1}+\gamma G_{t+1}

先 G₂=4,再 G₁=-1+0.5×4=1,最后 G₀=2+0.5×1=2.5。右侧 Gt+1 已把后面的奖励按“下一时刻”折过;整体再乘一次 γ,刚好将它们推远一步,没有重复乱乘。

终点为零究竟指什么?

进入终点那一步得到 4 分,这笔必须算。到达终点之后不再行动、没有后续奖励,所以余下回报 GT=0。不能把“终点之后没有回报”误解为“进入终点的奖励也不要”。

γ=0、γ 接近 1、γ=1 分别意味着什么?

γ=0 时只保留下一笔奖励;γ 越接近 1,远期权重下降越慢。奖励有界且 γ<1 时,无限持续任务也有有界折扣和,例如每步奖励 1、γ=0.5,总和为 1/(1-0.5)=2。γ=1 表示不折扣,若永远每步得 1,总和会发散;适当终止且期望回报有限的任务则可以使用。

自己试一下

奖励依次为 -2、4、8,γ=0.5,然后终止。请分别从三个时刻倒推回报。

我想好了,展开答案与理由

最后 G₂=8;G₁=4+0.5×8=8;G₀=-2+0.5×8=2。直接展开也是 -2+0.5×4+0.25×8=2。第一个 -2 不折扣,终止前的 8 仍计入。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL4 · PDF 第 28–36 页从问题讲起 · 逐步算清

MRP 的 Bellman 方程与联立求解

Bellman equation; Matrix solution

本节一步步会讲什么

未来有很多步,难道要把每条无限路径全写出来?

一个过程有状态 A、B 和终点 T。A 每次给 1 分,之后各一半到 A 或 B;B 每次给 2 分,之后以 0.25 概率回 A、0.75 概率结束。因为可能循环,路径长度不固定。我们不想一条条枚举全部未来,而想用“剩下的长期价值”把共同的尾部归并起来。

设 γ=0.8,终点之后没有奖励,故 v(T)=0。v(A) 表示从 A 开始的预期折扣总奖励,v(B) 类似。这两个数目前未知,目标就是求出它们。

把一句人话写成一个方程

从 A 开始,第一笔一定是 1;后面一半在 A、一半在 B。因此后继长期价值的平均为 0.5v(A)+0.5v(B),由于这部分晚一步开始,要乘 γ=0.8。

v_A=1+0.8[0.5v_A+0.5v_B]=1+0.4v_A+0.4v_B

从 B 开始,第一笔是 2;后面只有 0.25 的分支继续到 A,另 0.75 的终点分支价值为 0。

v_B=2+0.8[0.25v_A+0.75(0)]=2+0.2v_A

同一未知数在等号两边出现,是因为过程可能回到同一状态,之后又面临相同的长期问题。这是自洽关系,不是把奖励重复加错了。

联立时每一步怎样做?

第一式移项得 0.6vA-0.4vB=1。把第二式的 vB=2+0.2vA 放进去,得到 0.6vA-0.4(2+0.2vA)=1。展开为 0.6vA-0.8-0.08vA=1,因此 0.52vA=1.8。

v_A=\frac{1.8}{0.52}=\frac{45}{13},\qquad v_B=2+0.2\frac{45}{13}=\frac{35}{13}

代回检查:A 的右侧为 1+0.4×(45+35)/13=45/13;B 为 2+9/13=35/13。两式同时满足才算解对。

一般形式只是同一件事的缩写

v(s)=r(s)+\gamma\sum_{s'}p(s'\mid s)v(s')

r(s) 是从 s 出发的一步奖励期望,p 是后继概率,Σ 遍历所有可能 s′,v(s′) 是后继的长期价值。先平均下一步,再把后面的长期价值当作整体接上。

v=r+\gamma Pv,\qquad(I-\gamma P)v=r

矩阵 P 把各状态的后继平均一次算完,I 是对角线为 1 的单位矩阵。解方程组通常比手写逆矩阵更自然。有限状态且 γ<1 时有常用的唯一解保证。

自己试一下

仅有一个非终止状态 S:每步奖励 2,之后一定回 S,γ=0.5。写出 Bellman 方程并求解。

我想好了,展开答案与理由

从 S 出发先得 2,随后又回到价值为 v(S) 的同一状态,所以 v=2+0.5v。移项 0.5v=2,得 v=4。检查无限奖励流也是 2+1+0.5+…=4,而不是认为循环一定导致无限值。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL4 · PDF 第 38–41 页照片重点相关从问题讲起 · 逐步算清

MDP 与固定策略诱导的 MRP

MDP tuple; Policy-induced MRP

本节一步步会讲什么

先弄明白:为什么突然要把 MDP 变成 MRP?

机器人在状态 Y 可以选择 retry(再试一次)或 finish(结束)。如果还没告诉你机器人怎样选,就不能回答“下一步从 Y 到 X 的总概率是多少”:经常 retry 和从不 retry 的机器人显然不同。MDP 把每种动作的后果列清楚,但还保留“选哪种动作”这个决策入口。

现在把做法固定:在 Y 永远以 0.25 概率 retry、0.75 概率 finish。以后只想评价这套做法,不再讨论更换动作。这样我们就可以把“先选动作,再由环境决定结果”两层合并,直接得到“从 Y 到每个下一状态的总概率”。合并后的过程仍有随机性,只是不再显式保留可自由选择的动作,这就是由策略诱导的 MRP。

先把状态、动作和奖励定义完整

本例状态有 Y、X、T。Y 是当前选择点,X 是重试后可能到达的另一个非终止状态,T 是终点。为了让例子成为完整过程,规定从 X 只有一个 exit 动作,奖励为 0 并到 T;T 后不再产生奖励。我们本节主要看从 Y 出发的一步规律,未来折扣 γ 先不参与这一步概率合并。

当前状态可选动作选该动作的概率执行动作后的环境结果这一步奖励
Yretry 再试一次0.250.5 到 X,0.5 到 T0
Yfinish 结束0.751 到 T4
Xexit 离开11 到 T0

注意“0.25 选 retry”是策略的随机性;“选了 retry 后,0.5 到 X”是环境的随机性。它们位于一条路径的不同阶段,不能任选一个作为最终概率。

第一步:列出所有完整路径

一条完整路径路径概率怎么算结果
Y → 选 retry → X0.25×0.5=0.125到 X,奖励 0
Y → 选 retry → T0.25×0.5=0.125到 T,奖励 0
Y → 选 finish → T0.75×1=0.75到 T,奖励 4

同一路径连续发生两件事,用概率相乘;不同路径最终到同一目的地,把路径概率相加。三条完整路径概率和为 0.125+0.125+0.75=1,这也检查了有没有漏分支。

第二步:不再关心通过哪个动作,只按终点归类

到 X 只有第一条路径,所以 P^π(Y→X)=0.125。到 T 有 retry 失败和主动 finish 两条不同路径,所以 P^π(Y→T)=0.125+0.75=0.875。这里没有从 Y 直接回 Y 的分支,因此对应概率为 0。

固定策略后的转移矩阵,状态顺序 (Y,X,T)到 Y到 X到 T
从 Y00.1250.875
从 X001
从 T001

终点写成吸收状态,即以 1 概率留在 T,奖励为 0;这只是把终止后的过程统一写进矩阵,不能因此认为终点还会赚新分数。

第三步:把一步奖励也平均进去

retry 的一步奖励为 0,finish 为 4,所以期望一步奖励是 0.25×0+0.75×4=3。若按上方完整路径算,也是 0.125×0+0.125×0+0.75×4=3。这 3 是平均数;一次真实动作只可能收到 0 或 4,并不要求真的出现 3。

现在再看通用公式,每个符号都有来源

P^\pi_{ss'}=\sum_a\pi(a\mid s)p(s'\mid s,a)

s 是当前状态,例如 Y;s′ 是目标下一状态,例如 T;a 遍历所有可选动作 retry、finish;π(a|s) 表示在 s 选 a 的概率;p(s′|s,a) 表示已经选 a 后到 s′ 的概率;上标 π 只是标记“使用哪套策略”,不是幂次。竖线“|”读作“在已知……条件下”,Σ 读作“把各动作贡献相加”。

把 s=Y、s′=T 放进去,就是 0.25×0.5+0.75×1=0.875。这不是要求你记一个新的神秘运算,而是刚才的按路径乘、按目的地加。

r^\pi(s)=\sum_a\pi(a\mid s)r(s,a)

r(s,a) 表示已经选定动作 a 后,一步奖励的期望。若动作本身还会产生随机奖励,这个期望要先对其环境结果算好;之后再乘动作概率。r^π(Y)=3 正是固定策略的一步平均奖励,不是从 Y 开始的总回报。

最后才用五元组把 MDP 的资料打包

\mathcal M=(\mathcal S,\mathcal A,p,r,\gamma)

S 是有哪些状态,A 是有哪些动作,p 是每个动作怎样引起转移,r 是一步奖励规律的相应表示,γ 是未来折扣。这个括号不是计算式,只是一张“构建问题要交哪些资料”的清单。固定 π 后,得到状态、P^π、r^π、γ 描述的 MRP,再用上一节 Bellman 方程评价它。

自己试一下

其他规律不变,把 Y 处 retry 概率改为 0.6、finish 改为 0.4。求到 X、到 T 的总概率和一步期望奖励。

我想好了,展开答案与理由

到 X:0.6×0.5=0.3。到 T:retry 分支贡献 0.6×0.5=0.3,finish 分支贡献 0.4×1=0.4,合起来 0.7。平均奖励:0.6×0+0.4×4=1.6。检查 0.3+0.7=1。这里修改的是策略,所以虽然环境规律未变,诱导出的 MRP 已改变。

把上面的过程亲手展开

策略如何变成一行转移概率?

当前位置是 Y。retry 是再试一次:奖励 0,一半回 X、一半终止。finish 是现在结束:奖励 4,确定到 T。滑块只改变你选 retry 的概率,环境规则保持题给数值。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL4 · PDF 第 42、48–52 页照片重点相关从问题讲起 · 逐步算清

状态价值 V 与动作价值 Q

State value; Action value

本节一步步会讲什么

在路口问问题,第一步到底有没有被指定?

你走到 S,接下来通常以 0.25 概率选左、0.75 概率选右。别人可以问:“按你平时这套走法,从 S 开始平均有多好?”也可以问:“如果这一次强制先向左,之后再按你平时的走法,会有多好?”两问都评价长期结果,但第二问已经固定了第一个动作。

V 回答第一问,Q 回答第二问。先把这个条件差异理解清楚,后面两个符号就不会只剩下要背的字母。

先用两个已知长期结果算 V

假设先左、以后按 π 行动的平均回报是 8;先右、以后按 π 行动的平均回报是 4。于是 qπ(S,左)=8、qπ(S,右)=4。平时 25% 走左、75% 走右,所以状态价值是 0.25×8+0.75×4=5。

v_\pi(s)=\sum_a\pi(a\mid s)q_\pi(s,a)

π 是后续采用的策略,π(a|s) 是第一步选 a 的概率;Σ 把所有第一动作贡献相加。值 5 是这套随机策略的平均表现,8 是强制先左的条件表现,它们不是互相矛盾的答案。

Q 又怎样从后继 V 得到?

假设指定“先右”后,立即得到 1 分;随后以 0.5 到 X、0.5 到 Y,且 vπ(X)=2、vπ(Y)=10,γ=0.5。先算下一状态价值平均:(2+10)/2=6;这部分晚一步开始,折扣后为 3;再加现在的奖励 1,得到 qπ(S,右)=4。

q_\pi(s,a)=\sum_{s',r}p(s',r\mid s,a)[r+\gamma v_\pi(s')]

q(S,右) 里不再乘“平时只有 0.75 概率选右”,因为题目已经固定先选右。但右动作产生的两个环境结果仍要平均。当前动作固定与下一结果随机可以同时成立。

把定义与条件读成人话

v_\pi(s)=\mathbb E_\pi[G_t\mid S_t=s]
q_\pi(s,a)=\mathbb E_\pi[G_t\mid S_t=s,A_t=a]

Gt 是从现在起的回报,E 是“对可能结果取平均”,竖线右侧是已知条件。第一式已知当前状态 s;第二式还多知道第一动作 a。下标 π 表示之后按该策略继续,不能把它误读为一个要相乘的概率。

什么时候用哪个?

已知多个动作 Q 和策略概率,要算 V,就按动作概率平均。已知转移模型、即时奖励及后继 V,要算某动作 Q,就先指定动作,再平均环境结果。想选动作时比较 Q;想评价已给定随机策略时,不能擅自把概率平均换成 max。

自己试一下

一个状态有两个动作,Q 分别为 -2、6,策略概率为 0.75、0.25。状态价值是多少?若只问第二动作的 Q,是否要再乘 0.25?

我想好了,展开答案与理由

V=0.75×(-2)+0.25×6=0。第二动作 Q 已经给定为 6,不再乘 0.25;0.25×6=1.5 是它对随机策略状态价值的加权贡献,不是该动作自己的条件价值。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL4 · PDF 第 43–56 页照片重点相关从问题讲起 · 逐步算清

Bellman 期望方程:四种写法如何对应?

Bellman expectation equations

本节一步步会讲什么

先说这四条式子究竟想解决什么

你已经固定一套选动作的规则 π,现在想评价它。从起点开始,可能选不同动作,动作又可能造成不同结果,以后还会继续选动作。若把每条未来路线写到底,表达会很长。Bellman 关系把长期回报拆成“眼前一笔奖励 + 下一状态起的剩余价值”,并对不确定的分支取平均。

四种写法不是四个不同算法,而是同一张决策树的四种展开程度:当前层可以用 V 或 Q 表示,下一层也可以用 V 或 Q 表示。先跟着一个完整小例子把每个数算出来,再把它们放回公式。

例子中的所有规则先给全

有四个状态 S、X、Y、T;S 是起点,T 是终点,γ=0.5。到达 T 后没有未来奖励,vπ(T)=0。

位置策略怎样选动作动作的即时奖励动作之后去哪
Sa 概率 0.251一半到 X,一半到 T
Sb 概率 0.752确定到 Y
XL、R 各 0.5L 得 2;R 得 6两者都随后终止
YL、R 各 0.5L 得 4;R 得 8两者都随后终止

“即时奖励”是在这一行动后领取的那笔;“下一状态价值”则从到达该状态后再开始计,所以两者没有重复。

第一步:从离终点最近的 X、Y 算起

X 的两个动作做完都结束,所以 qπ(X,L)=2、qπ(X,R)=6。按各一半选,vπ(X)=0.5×2+0.5×6=4。同理 qπ(Y,L)=4、qπ(Y,R)=8,vπ(Y)=0.5×4+0.5×8=6。

这里的“期望 expectation”就是按发生概率计算平均:不是取最想要的 6 或 8,也不要求每次真的获得平均数 4 或 6。计算 vπ(X) 时仍在评价给定随机策略,不是在改进它。

第二步:假设 S 的第一动作已指定,分别算两个 Q

指定 a 后,先得 1,再分两支:若到 X,后续价值为 4,当前看要乘 0.5,所以这个分支的累计评价为 1+0.5×4=3;若到 T,为 1+0.5×0=1。两支各一半,因此 qπ(S,a)=0.5×3+0.5×1=2。

指定 b 后,先得 2,确定到 Y,后续价值为 6,故 qπ(S,b)=2+0.5×6=5。

不要在 qπ(S,a) 中再乘 0.25。它问的是“已经指定 a 以后有多好”,不是“随机策略里 a 分支对总平均贡献多少”。

第三步:回到 S,连第一动作也按策略平均

S 以 0.25 选价值为 2 的 a,以 0.75 选价值为 5 的 b,所以 vπ(S)=0.25×2+0.75×5=4.25。到这里,例子所需的 V 和 Q 都已得出。下面四式只是在选择把哪些中间结果写开。

先认公式里的每个符号

符号读法与对应含义
s、a已知当前状态、当前动作;例子中可以是 S、a
s′、r可能出现的下一状态与这一步奖励;撇号不是求导
b在下一状态选的动作名;是求和用的占位字母,不专指例子中 S 的动作 b
π(a∣s)在已知当前状态 s 条件下,策略选 a 的概率
p(s′,r∣s,a)在已知状态 s 且动作 a 已选定后,环境产生下一状态 s′ 和奖励 r 的概率
Σa、Σs′,r分别把所有当前动作、所有可能下一状态与奖励组合的贡献相加
γvπ(s′)后继长期平均价值向当前折扣一步

条件竖线“|”不是除号;读作“在……条件下”。p 与 π 也不是一回事:π 管选动作,p 管动作执行后的环境后果。

写法 1:V 用 Q 表示——只展开选动作这一层

v_\pi(s)=\sum_a\pi(a\mid s)q_\pi(s,a)
v_\pi(S)=0.25(2)+0.75(5)=4.25

什么时候用:题目已经给各动作的 Q,且给策略概率。里面的环境转移与未来行为已经包含在 Q 中,不必再重复算一遍。这一式的随机性平均对象是“第一步选哪个动作”。

写法 2:Q 用 V 表示——固定当前动作,展开环境这一层

q_\pi(s,a)=\sum_{s',r}p(s',r\mid s,a)[r+\gamma v_\pi(s')]
q_\pi(S,a)=0.5[1+0.5(4)]+0.5[1+0.5(0)]=2

已知 s=S、动作=a,可能的 (s′,r) 只有 (X,1) 与 (T,1),各概率 0.5。因此求和里看起来复杂的两个下标,实际只对应这两条分支。b 动作只有一条结果,故 qπ(S,b)=1×[2+0.5×6]=5。

写法 3:V 用后继 V 表示——把前两式接起来

v_\pi(s)=\sum_a\pi(a\mid s)\sum_{s',r}p(s',r\mid s,a)[r+\gamma v_\pi(s')]
v_\pi(S)=0.25\{0.5[1+0.5(4)]+0.5[1+0.5(0)]\}+0.75[2+0.5(6)]

先算内层:a 对应 2,b 对应 5;再算外层 0.25×2+0.75×5=4.25。外层平均选动作,内层平均该动作可能产生的环境结果。两个求和各负责一层,不能漏掉任意一层,也不能把概率全加起来。

如果你已经把策略合并成 MRP,也可先算 S 的平均即时奖励为 0.25×1+0.75×2=1.75;后继概率到 X 为 0.125、到 Y 为 0.75、到 T 为 0.125。于是 vπ(S)=1.75+0.5[0.125×4+0.75×6+0.125×0]=4.25,答案完全相同。

写法 4:Q 用后继 Q 表示——再展开下一状态选动作这一层

q_\pi(s,a)=\sum_{s',r}p(s',r\mid s,a)\left[r+\gamma\sum_b\pi(b\mid s')q_\pi(s',b)\right]

这里当前动作 a 已经固定,所以最外面没有当前动作的 π(a|s)。但到达 X 后仍要按 π 选择 L 或 R,因此后继 V 要展开成 0.5qπ(X,L)+0.5qπ(X,R)。

q_\pi(S,a)=0.5\{1+0.5[0.5(2)+0.5(6)]\}+0.5[1+0]=2

内层 0.5×2+0.5×6=4,是 X 的价值;折扣并加奖励得到 3,再与终止分支的 1 各按一半平均,得到 2。终点分支没有下一次选动作,剩余项直接为零。

同样,qπ(S,b)=2+0.5[0.5×4+0.5×8]=5。只要分清“现在的动作”和“到下一状态后的动作”,就不会把下一层策略概率漏掉。

四种写法在做题时怎样选?

题目给了什么最顺手的关系
当前动作 Q 和策略 π写法 1:按策略平均 Q 得 V
模型 p、奖励与后继 V写法 2 算 Q;还要当前 V 就再按策略平均
完整模型与固定策略,要求求状态值写法 3,列出关于所有状态 V 的方程
下一状态各动作 Q 与策略 π写法 4,先算下一状态动作平均,再向前接一步

为什么还会看到 Vₖ、Vₖ₊₁?

上述 vπ、qπ 是真实价值之间应满足的等式,可能要联立求解。若暂时不知道真值,先用一张猜测表 Vₖ 替代右侧的 vπ,再算新表 Vₖ₊₁,才成为迭代策略评估。k 数的是计算更新轮数,不是公式里又多了一个环境概率。

自己试一下

例子中其他条件不变,仅把 S 选 a、b 的概率改成各 0.5。X、Y 的策略仍各一半,γ 仍为 0.5。请算 qπ(S,a)、qπ(S,b) 和 vπ(S),并说明前两个值为什么没有变。

我想好了,展开答案与理由

qπ(S,a)=2,qπ(S,b)=5,仍和原例相同。因为 Q 已指定当前动作,而后继 X、Y 的规则没有改变,此例又不会回到 S,所以这些 Q 的后续情况不受 S 的新动作概率影响。新的 V=0.5×2+0.5×5=3.5。一般若后续还能回到被改策略的状态,Q 也可能改变;本例不变有其结构原因。

同一个环境,逐步算到 V(S)

先算未来,再回到当前

X 的两个动作各一半,奖励 2 或 6 后终止;Y 的两个动作各一半,奖励 4 或 8 后终止。S 做 a 收到 1 分,然后一半到 X、一半到 T;做 b 收到 2 分并到 Y。现在调整 S 选 a 的概率与折扣,看平均值如何变化。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL4 · PDF 第 57–63 页照片重点相关从问题讲起 · 逐步算清

最优价值、最优策略、max 与 argmax

Optimal value; Optimal policy; argmax

本节一步步会讲什么

“能得多少分”和“应该选哪个”是两个答案

一个状态有三个动作:左、右、等待。它们的动作价值依次是 -3、-1、-1。你问“最好能达到多少”,答案是数字 -1;你问“哪个动作达到这个最好结果”,答案是右或等待。max 和 argmax 就分别用来表达这两个问题。

最大值不是绝对值最大:-1 大于 -3。若表示损失,少损失 1 比损失 3 好。所以看到一组负 Q 也照常比较数值大小。

两个运算都写给你看

\max(-3,-1,-1)=-1
\arg\max_{a\in\{L,R,W\}}q(s,a)=\{R,W\}

L、R、W 分别代表左、右、等待;arg 是 argument 的缩写,这里指“使函数达到最大值的输入动作”。数学上 argmax 可以是一个集合;算法若只需输出一个动作,还要规定如何处理并列,例如选较小编号或随机选一个最大动作。

最优里的星号又比普通价值多了什么?

vπ(s) 是按某个已经给定的策略 π 继续的平均回报。v*(s) 是在允许的所有策略中,能达到的最高平均回报。q*(s,a) 仍然先固定这一步做 a,只是之后允许采取最佳后续行为。

v_*(s)=\max_\pi v_\pi(s),\qquad q_*(s,a)=\max_\pi q_\pi(s,a)

这里 max 的下标是 π,表示在策略之间比较;从 q* 导出最优动作时,才是在动作 a 之间比较。它们都叫最大化,但比较的对象不同。

一个“策略不同、价值相同”的例子

在 S 选左立即得 4 并终止,选右也立即得 4 并终止。总选左与总选右是两套不同的确定性策略,却都得到最优价值 4;任何混合它们的随机策略在这个状态也得到 4。因此最优价值唯一,不代表最优策略一定唯一。

若动作值只是当前估计 Q,而不是 q*,用 argmax Q 得到的只是当前贪心动作,不一定已经真实最优。后面需要学习或规划,把估计逐步变准确。

\pi_*(s)\in\arg\max_a q_*(s,a)

∈ 读作“属于”,提示最优策略可以从并列最大动作中选一个。标准有限、完全可观测、折扣 MDP 存在确定性的平稳最优策略;这里是说存在,不是说所有最优策略都必须唯一或确定。

自己试一下

动作 a、b、c 的值为 (2,7,7)。max 是什么?argmax 是什么?若要求选择单个动作,还缺哪项约定?

我想好了,展开答案与理由

max=7,是数值;argmax={b,c},是达到这个数值的动作集合。要输出一个动作,需要并列处理规则,例如取 b 或在 b、c 间随机。写“argmax=7”把动作与价值混淆了。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL4 · PDF 第 64–69 页照片重点相关从问题讲起 · 逐步算清

Bellman 最优性方程:动作取最大,环境仍取平均

Bellman optimality equations

本节一步步会讲什么

你能选动作,但不能挑运气

有两个动作。a 执行后,一半时候总共得 0 分,一半时候总共得 10 分;b 执行后总共稳定得 6 分。如果每次行动前只能选 a 或 b,不能事后挑哪个随机结果发生,那么 a 的平均是 5,b 的平均是 6,应选 b。只盯着 a 可能拿到 10 分,相当于把不能控制的运气也当成能选择的东西。

Bellman 最优性方程就是把“先对同一动作的随机后果求平均,再在动作之间选最大”正式写出来。它与前一节固定策略的期望方程只差一个关键决策:动作分布不再被指定为 π,而是寻找最好的动作。

先用即时奖励和后继值做一次完整比较

设 γ=0.5。a 即时奖励为 1,之后各一半到 X 或 T,最优后继价值分别为 v*(X)=8、v*(T)=0。a 的候选值是 0.5(1+0.5×8)+0.5(1+0)=3。b 即时奖励为 2,确定到价值为 4 的 Y,候选值是 2+0.5×4=4。

先得出动作候选值 (3,4),再取最大 4,并选择 b。最大价值 4 与最佳动作 b 是两个不同的输出。

状态价值的最优方程

v_*(s)=\max_a\sum_{s',r}p(s',r\mid s,a)[r+\gamma v_*(s')]

s 是当前状态,a 是你可选择的动作;p 是该动作之后环境各结果的概率;r 是这次实际奖励;s′ 是下一状态;v*(s′) 假设到了那里以后继续采取最优行为。内层 Σ 算每个动作的平均长期评价,外层 max 才决定最优动作值。

不要把 max 移到环境结果上。刚才 a 的最好分支评价为 5,但它只有一半概率发生;用 5 代替 a 的平均 3,会错误地选择 a。

动作价值的最优方程

q_*(s,a)=\sum_{s',r}p(s',r\mid s,a)\left[r+\gamma\max_bq_*(s',b)\right]

左侧已经指定当前动作 a,所以外面不再对当前动作取最大;到下一状态 s′ 后,动作还可以选择,因此在括号里对下一动作 b 取最大。b 在这里是占位字母,意思是“遍历下一状态的可用动作”。

如果下一状态两个动作 Q* 为 2、6,则该状态最优后续价值为 6;若那里执行固定随机策略各一半,后续平均才是 4。这正是最优性与固定策略评估的差别。

为什么不能总像上一节那样解一个线性系统?

固定策略时,动作概率已知,可以合并成一个固定的 Pπ,写成线性方程。最优问题里哪个动作最大会依赖未知价值,含 max 的关系一般不是同一个固定线性系统。策略迭代和价值迭代就是后面两种主要求解方式。

自己试一下

γ=0.5。a 奖励为 0,随后一半到价值 10 的状态、一半终止;b 奖励为 1,确定到价值 4 的状态。两个候选值是多少,应选哪个?

我想好了,展开答案与理由

a=0+0.5(0.5×10+0.5×0)=2.5;b=1+0.5×4=3。因此选 b,最大价值为 3。不能因为 a 的一个后继值为 10 就直接选 a,那样漏掉了随机分支概率。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL5 · PDF 第 3–14 页照片重点相关从问题讲起 · 逐步算清

动态规划与迭代策略评估

Dynamic programming; Policy evaluation

本节一步步会讲什么

方程知道了,但状态太多,怎样一步步算出答案?

上一章 Bellman 方程告诉我们真实价值要满足什么关系。只有两个状态时可以联立消元;有几百个状态时,也可以先猜一张价值表,再反复用“一步奖励 + 后继估计”修正。这样的模型计算是动态规划 DP 的核心做法之一。

本节只做策略评估:行为规则 π 已经给定,暂时不改动作。我们要让估计表逐步接近这套策略的真实价值,不是开始就把每个地方都改成贪心。

一个两状态任务,先列清规则

状态 A 每次奖励 1 后确定到 B;状态 B 每次奖励 2 后确定回 A;γ=0.5。这里没有动作选择的歧义,相当于策略已固定。真实价值应满足 vA=1+0.5vB、vB=2+0.5vA。

但我们先不消元,把初始估计设成 V₀(A)=0、V₀(B)=0。大写 Vₖ 表示第 k 轮的估计,小写 v 表示正在逼近的真值。

把前三轮完整写出来

轮数A 怎么算B 怎么算整张新表
k=11+0.5×0=12+0.5×0=2(1,2)
k=21+0.5×2=22+0.5×1=2.5(2,2.5)
k=31+0.5×2.5=2.252+0.5×2=3(2.25,3)

第二轮 B 使用的是第一轮 A=1,而不是刚算出的第二轮 A=2。原因是本例采用同步更新:先完整读旧表,再统一得到新表。若你在第二轮 B 写 2+0.5×2=3,计算的就变成另一个更新约定。

一般策略评估更新怎样读?

V_{k+1}(s)=\sum_a\pi(a\mid s)\sum_{s',r}p(s',r\mid s,a)[r+\gamma V_k(s')]

先取某动作 a 的各环境结果,用旧表 Vₖ(s′) 估计后面的未来;把结果按环境概率 p 平均;再按策略概率 π 平均各动作。k+1 是这次新表的轮数,不是奖励发生在未来 k+1 步,也不是智能体走了几步。

怎样知道方向是否对?

本例精确解为 vA=8/3≈2.6667、vB=10/3≈3.3333。随着重复更新,表会向这两个数靠近。实际可记录最大单轮变化 Δ=maxs|Vₖ₊₁(s)-Vₖ(s)|,当它足够小就停止,但“本轮变化很小”和“误差严格等于零”不是一回事。

\Delta_k=\max_s|V_{k+1}(s)-V_k(s)|

DP 使用的资料从哪里来?

这里使用了已知的转移与奖励模型,能对所有后继结果求期望;不需要机器人真的按每个分支各走一次。RL6 的 MC、TD 则在不知道完整模型时用采样经验学习。先理解本节的模型备份,会更容易分辨后面的样本更新。

自己试一下

仍用本例,已知 V₃=(2.25,3)。按同步规则计算 V₄。

我想好了,展开答案与理由

A 读取旧 B=3:1+0.5×3=2.5;B 读取旧 A=2.25:2+0.5×2.25=3.125。因此 V₄=(2.5,3.125)。若 B 写成 3.25,说明误用了同轮新 A=2.5。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL5 · PDF 第 15–19、31–35 页从问题讲起 · 逐步算清

格子世界:边界、终点与 k=2、k=3

Gridworld; Synchronous backups

本节一步步会讲什么

这张表记录的不是位置,而是每个位置的预计剩余代价

机器人在 4×4 格子里随机走,四个方向各 1/4;左上角 (1,1)、右下角 (4,4) 是终点。每从非终点做一次动作就扣 1 分,包括走入终点,也包括撞墙留在原地。γ=1,所以不折扣。我们要评价这套随机走法,而不是指挥它每次朝最近终点走。

表中一个格子的数越负,表示预计还要扣的分越多。所有格子初始设为 0,只是算法的起始猜测;不是说从这些格子真实出发都不需要付代价。

先固定同一个格子,别整张表一起硬背

看终点右侧的格子 s=(1,2)。四个动作的去向:上会撞墙留在 (1,2),下到 (2,2),左进终点 (1,1),右到 (1,3)。先把后继位置列对,再查上一轮表。

V_{k+1}(s)=-1+\frac14\sum_{a\in\{U,D,L,R\}}V_k(s'_a)

U/D/L/R 是四动作;s′_a 是执行该动作后到的位置;每条分支先付 -1,再接旧价值。因四个动作即时奖励都一样,四个 -1 的加权平均仍为 -1,所以可以把它提出求和外。

k=0 和 k=1:先有初值,再做第一轮

V₀ 全为 0。对任一非终止格,四个后继旧值都为 0,所以 V₁=-1+(0+0+0+0)/4=-1。终点自身固定为 0,不用执行这个更新,因为回合在那里已经结束。

k=2:右侧全部查 V₁

从 (1,2) 选什么到哪里V₁ 中该位置的值
上 U(1,2),撞墙-1
下 D(2,2)-1
左 L(1,1),终点0
右 R(1,3)-1
V_2(1,2)=-1+\frac{-1-1+0-1}{4}=-1.75

这不是只选最好方向,仍是四个方向都按 1/4 平均。除以 4 的是四个未来值的总和,不是把 -1 的即时奖励只收四分之一。

先准备 k=3 需要的 V₂ 数字

V₂(2,2)=-2:这个格子一步内到不了两个终点,四个后继在 V₁ 都为 -1,所以 -1+(-4)/4=-2。V₂(1,3) 也为 -2,理由相同。V₂(1,2) 刚算得 -1.75,终点为 0。

从 (1,2) 的四个后继查 V₂ 得到的值
上:撞墙仍在 (1,2)-1.75
下:(2,2)-2
左:终点 (1,1)0
右:(1,3)-2
V_3(1,2)=-1+\frac{-1.75-2+0-2}{4}=-2.4375

先求和 -5.75,再除以 4 得 -1.4375,最后加本次 -1,得到 -2.4375。课件一位小数显示约 -2.4;算题时应保留未提前四舍五入的数字。

为什么整张表每一轮都更负?

初值 0 忽略了所有未来代价;第一轮补进一层步数代价,第二轮再把后继的代价接进来,第三轮继续传播。它是在修正对剩余长期结果的估计,不是机器人这一轮真的在四个方向都走了一遍。

自己试一下

在同一个 4×4 网格中,计算 V₂(1,3)。请先写出它的四个后继 V₁ 值,而不是直接猜 -2。

我想好了,展开答案与理由

上撞墙留 (1,3),下到 (2,3),左到 (1,2),右到 (1,4);四个都是非终止格,所以 V₁ 均为 -1。V₂=-1+(-1-1-1-1)/4=-2。第三轮再用它作为 (1,2) 的右侧后继旧值。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL5 · PDF 第 20–30、36 页照片重点相关从问题讲起 · 逐步算清

策略改进:先试一个动作,再比较

Policy improvement theorem

本节一步步会讲什么

已经知道旧走法怎样,下一步怎样改?

策略评估得到的是“照旧方法继续,平均有多好”。现在假设在当前状态只把第一动作换一下,之后仍照旧方法继续:算算每个候选第一动作能得到多少,再选最好的。这一步叫策略改进。

它不是凭直觉猜一条全新路线,而是利用已经评估出的旧价值,比较每个动作的一步后果。

用一个完整小任务分清旧价值与新价值

γ=0.5。S 的 stay 得 0 并回 S,go 得 1 并到 U;U 的 rest 得 0 并留 U,cash 得 4 并终止。旧策略 π 在 S 总 stay、在 U 总 rest。

先评估旧策略:vπ(S)=0+0.5vπ(S),所以为 0;vπ(U)=0+0.5vπ(U),也为 0。别先改 U 的动作,否则就不再是旧策略的评估。

第一轮改进:每个动作都用旧表 (0,0)

候选动作第一笔奖励 + 折扣旧后继值qπ
S, stay0+0.5×00
S, go1+0.5×01
U, rest0+0.5×00
U, cash4+0.5×04

因此新策略 π′ 在 S 改选 go,在 U 改选 cash。注意旧 Q 中 S 的 go 只算成 1,因为定义 qπ 时,到 U 后假设继续旧策略 rest,而不是提前使用新动作 cash。

改完策略后必须重新评估

π′ 下 U 一步得到 4,所以 vπ′(U)=4;S 先选 go 得 1,再到 U 选 cash 得 4,故 vπ′(S)=1+0.5×4=3。新价值为 (3,4),不是把旧表每个状态最大的 Q=(1,4) 直接抄过来!差出来的 2,正是 U 的后续做法由 rest 改成 cash 后传回 S 的折扣收益。

再次用新表比较 S:stay=0+0.5×3=1.5,go=1+0.5×4=3,仍选 go。U 的 rest=0+0.5×4=2,cash=4,仍选 cash。新策略精确评估后仍然贪心,才说明它在这个任务中已稳定。

公式只是这个比较过程的简写

\pi'(s)\in\arg\max_a\sum_{s',r}p(s',r\mid s,a)[r+\gamma v_\pi(s')]

π′ 是新策略;argmax 返回动作而非分数;括号中始终读取旧策略的真实价值 vπ。若环境随机,一个动作的后继还要按 p 平均,再与其他动作比较。

为什么这样做通常不会比旧策略差?

旧策略的状态价值,是各候选 Q 按旧动作概率的加权平均。最大的候选 Q 至少不小于这个平均数。因此,每个状态都选贪心动作,第一步条件比较不差;在标准有限折扣条件下,将这种改善沿后续过程不断展开,可以得到 vπ′≥vπ 的策略改进结论。

这个保证依赖正确的评估或相应误差条件。若 V 只是非常粗糙的猜测,其最大动作可能选错,不能无条件宣布真实表现必然上升。

自己试一下

旧策略在某状态以 0.5、0.5 选择动作 a、b,qπ 分别为 2、6。旧状态价值是多少?贪心改进选什么?由这两个数能否立即知道整个新策略的精确价值?

我想好了,展开答案与理由

旧 V=0.5×2+0.5×6=4;第一步贪心改进选 b,因为 6 最大。但 qπ(s,b)=6 假设之后继续旧策略,若新策略也修改了未来状态的行为,就需要重新评估,不能仅由这一组旧 Q 得到所有新状态价值。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL5 · PDF 第 28–47 页照片重点相关从问题讲起 · 逐步算清

策略迭代与广义策略迭代

Policy iteration; Modified PI; GPI

本节一步步会讲什么

为什么一次“找更好的动作”之后还要继续?

你改进了下游路口的走法,上游路口到那里的价值就可能改变。上游以前不值得走的路,现在也许值得了。因此不能只评估一次、改动作一次就假定全局完成。策略迭代就是把“评估当前规则”和“根据评价换更好规则”交替重复,直到得到稳定的选择。

本节把前两节的评估与改进连起来,用一个完整例子显示每轮读的是哪一套策略的价值。

任务规则与初始策略

γ=0.5,终点 T 价值为 0。S 有动作 a:得 1 回 S;动作 b:得 0 到 U。U 有动作 c:得 3 并终止;动作 d:得 1 到 S。初始策略 π₀=(a,d),表示 S 选 a、U 选 d,不是两个动作的概率各一半。

步骤一:评估 π₀,动作先别变

v_0(S)=1+0.5v_0(S),\qquad v_0(U)=1+0.5v_0(S)

第一式移项得 0.5v₀(S)=1,所以 S=2;再放进第二式,U=1+0.5×2=2。这里写 v₀ 仅标记第 0 套策略的精确价值,不是“从零表做零轮备份”。

步骤二:用 (2,2) 比较全部候选动作

状态第一个动作候选值第二个动作候选值新动作
Sa:1+0.5×2=2b:0+0.5×2=1a
Uc:3d:1+0.5×2=2c

因此 π₁=(a,c)。我们保持 S 的 a,只把 U 的 d 改为 c。比较时全部读 π₀ 的价值,不能一边改 U 一边把它的新值混进本轮其他比较。

步骤三:重新评估 π₁

S 仍选 a,方程不变,价值为 2。U 现在选 c,立即得 3 并终止,价值为 3。所以 vπ₁=(2,3)。

步骤四:检查能否再改善

现在 S 的 a=1+0.5×2=2,b=0+0.5×3=1.5,仍选 a;U 的 c=3,d=1+0.5×2=2,仍选 c。精确评估后贪心改进保持同一策略,这张价值表满足 Bellman 最优性关系,因此 (a,c) 最优。

标准过程与两个扩展名词

标准 policy iteration 的循环是:固定 π 求价值 → 用其价值贪心改进 → 策略变化则重复。Modified policy iteration 不要求每次评估都做到精确,可以做有限轮评估后再改进。Generalized policy iteration(GPI)是更宽的思想:评价与改进相互推动,可以分开轮流,也可局部、交织执行。

例如 SARSA 不是每轮先精确解完整方程组再改全表,但仍可以理解为价值学习与行为改善相互配合。这是概念上的联系,不表示所有算法的收敛条件完全一样。

自己试一下

在 π₁=(a,c) 的价值 (2,3) 下,为什么 S 不改选 b?请写出两个动作值,而不是只说 a 更好。

我想好了,展开答案与理由

a 先得 1,再回到价值 2 的 S,所以 1+0.5×2=2;b 先得 0,再去价值 3 的 U,所以 0+0.5×3=1.5。2>1.5,因此仍选 a。U 的价值更高不表示去 U 一定更好,还要把当前奖励与折扣一起算进去。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL5 · PDF 第 39–45 页从问题讲起 · 逐步算清

租车问题:把现实故事写成 MDP

Jack's car rental; Modelling example

本节一步步会讲什么

先看经理每天究竟在决定什么

有两个租车点 A、B。晚上经理可以把车从一个点搬到另一个点;第二天顾客会随机来租,也会有人还车。多搬一辆可能让需求旺盛的地方多做一笔生意,却要付运输成本,还可能使另一地点缺车。我们要找长期调配规则,不能只凭“哪个地方平均需求高”决定所有动作。

这一节的重点是把故事拆成状态、动作、随机结果、奖励和下一状态。课件的完整问题会用 Poisson 分布描述请求与归还;先用一个明确的简化数值例子学会建模步骤,再处理更大的概率表。

哪些是你能控制的,哪些不是?

MDP 元素租车故事里的含义
状态 s=(nA,nB)夜间调配前,两地各有多少辆车
动作 a今晚从 A 向 B 搬几辆,或反向搬几辆
环境随机量第二天两地租车请求数与归还数
奖励 r这一天实际租出车辆的收益减调配等成本
下一状态 s′租出与归还后,各地最后剩多少车

动作必须合法,例如 A 只有两辆就不能搬走三辆,调入后也不能超过容量。先列合法动作,不能先算出一个不可能执行的“最优数”。

一个单日玩具例子,把每一步算清

假设当前状态为 (2,0),每租出一辆收入 10,搬一辆成本 2;今天无车辆归还、容量足够。A 的需求确定为 1,B 的需求一半为 0、一半为 1。先只考虑“不搬”与“搬一辆 A→B”。这组数字为教学简化,不是要求背成原课件的固定参数。

不搬时开门前仍 (2,0)。无论 B 有没有顾客,它都没车可租;A 租出一辆,收益 10、无运输费,下一状态 (1,0)。所以两种需求结果合并后,这个动作的即时收益确定为 10。

搬一辆时开门前为 (1,1),先付成本 2。B 无需求的分支:只 A 租出一辆,净收益 10-2=8,下一状态 (0,1)。B 有一次需求的分支:两地各租出一辆,净收益 20-2=18,下一状态 (0,0)。两支各一半,因此即时净收益期望为 (8+18)/2=13。

为什么有了 10 和 13 还不能马上宣布长期最优?

假设 γ=0.5,当前给出的后继价值估计为 V(1,0)=10、V(0,1)=2、V(0,0)=0。则不搬候选值为 10+0.5×10=15;搬一辆为 0.5[8+0.5×2]+0.5[18+0]=13.5。

单看今天平均净收益,搬车的 13 大于 10;加上明天及以后车辆分布的价值,却可能不搬更好。这里未来价值是为了展示计算方式而给出的估计,并非已经求出的完整任务最优解。

q(s,a)=\sum_{s',r}p(s',r\mid s,a)[r+\gamma V(s')]

公式里的每一项就是“某一需求与归还组合发生的概率 × 该结果的即时净收益和后续价值”。实际租出数量是 min(可用车辆,请求数量),不能把所有请求都算作已经成交。

自己试一下

仍用当前 (2,0) 的玩具例子,若 γ=0、只关心今天收益,选不搬还是搬一辆?若 B 有需求概率改为 0.2,搬一辆的平均即时净收益又是多少?

我想好了,展开答案与理由

γ=0 时未来价值不计,原例搬一辆平均收益 13>10,选搬。若 B 有需求概率为 0.2,则无需求概率 0.8,搬车平均收益为 0.8×8+0.2×18=10,与不搬的 10 并列。两种情况下都先算各需求结果,再按概率平均。

仅保存在当前浏览器
RL5 · PDF 第 48–53 页照片重点相关从问题讲起 · 逐步算清

价值迭代:每轮都直接取最大

Value iteration

本节一步步会讲什么

不等一套策略评完,能否边算边选更好的?

策略迭代往往先把某个策略评价到足够准确,再比较动作。价值迭代选择更紧凑的做法:每次更新一个状态时,直接用当前后继价值算各动作候选值,把最大值写进新表。重复这个最优性备份,让价值表逼近 v*。

它没有给你一套固定的随机动作概率要一直平均;但每个动作内部的随机环境结果仍需求期望。先区分动作选择与环境结果,才不会把 max 用错位置。

沿用可以自己重算的两状态任务

γ=0.5。S:a 得 1 回 S,b 得 0 到 U;U:c 得 3 终止,d 得 1 到 S。终点价值 0,初始 V₀(S)=V₀(U)=0。

对 S,候选值分别是 1+0.5Vₖ(S) 与 0.5Vₖ(U);对 U,分别是 3 与 1+0.5Vₖ(S)。每轮均读上一张完整表。

V_{k+1}(S)=\max[1+0.5V_k(S),\ 0.5V_k(U)]
V_{k+1}(U)=\max[3,\ 1+0.5V_k(S)]

第一轮:先用零表比较

S 的 a 候选值是 1,b 为 0,取 1;U 的 c 为 3,d 为 1,取 3。所以 V₁=(1,3)。这一步只把即时奖励及零未来估计接进来,不是完成了所有无限未来的计算。

第二轮:两个候选恰好并列

读 V₁=(1,3)。S 的 a=1+0.5×1=1.5,b=0.5×3=1.5,并列,V₂(S)=1.5;U 的 c=3,d=1+0.5×1=1.5,所以 V₂(U)=3。得到 V₂=(1.5,3)。

第三轮:之前的并列被后续信息打破

读 V₂=(1.5,3)。S 的 a=1+0.5×1.5=1.75,b=1.5,所以选 a;U 的 c=3,d=1.75,所以选 c。V₃=(1.75,3)。继续会得到 S=1.875、1.9375……,最终逼近 2;U 保持 3。

一般公式怎样对应到这几轮?

V_{k+1}(s)=\max_a\sum_{s',r}p(s',r\mid s,a)[r+\gamma V_k(s')]

对一个动作先算“奖励加折扣后的旧后继值”的期望;max 返回所有候选中的最大数,放进新表。要输出策略,再用 argmax 找到达到这个数的动作。k 是计算轮数,不是环境时间。

怎样检查最终值?

用 (2,3) 代回:S 的 a=2、b=1.5;U 的 c=3、d=2。取最大仍为 (2,3),表不再改变,满足 Bellman 最优性方程。最优动作是 (a,c)。在有限折扣 MDP 下,反复备份有标准收敛保证。

自己试一下

已知 V₃=(1.75,3),请算 V₄ 的两个状态值,并列出 S 的两个动作候选。

我想好了,展开答案与理由

S 的 a=1+0.5×1.75=1.875,b=0.5×3=1.5,最大为 1.875。U 的 c=3,d=1.875,最大为 3。所以 V₄=(1.875,3)。必须先列候选再取 max,不能把 S 两个动作按一半平均。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL5 · PDF 第 54–62 页从问题讲起 · 逐步算清

同步、原地、优先更新与样本备份

Asynchronous DP; Prioritized sweeping

本节一步步会讲什么

同一个方程,为什么别人一轮算出的数字和你不同?

假设旧价值表为 A=1、B=2,更新规则是 A←1+0.5B,B←2+0.5A。你算出新 A=2 后,计算 B 时究竟用旧 A=1,还是刚得到的新 A=2?这不是算术细节,而是更新约定。题目不同约定会产生不同的中间表。

本节把“读取哪张表”“先更新哪里”“枚举还是抽样”这几件独立的事拆开,避免都混成一个“迭代”词。

同步与原地,完整算一轮

同步 synchronous:所有右侧读旧表。因此新 A=1+0.5×2=2;新 B=2+0.5×1=2.5。先把它们放到另一张新表,整轮结束后再替换旧表,得到 (2,2.5)。

原地 in-place:按 A 后 B 顺序,一算完就写回。A 先从 1 改成 2;随后 B 读到已经改过的 A=2,所以 B=2+0.5×2=3,得到 (2,3)。两种过程都可能用于求同一不动点,但有限轮轨迹不同。

若原地顺序反过来,B 先变成 2.5,A 再用它变成 2.25,得到 (2.25,2.5)。所以原地计算题还需要说明更新顺序。

为何还要决定“优先算哪个状态”?

若一个大迷宫只有靠出口的几格价值刚刚发生明显变化,立刻更新它们的前驱,可能更快把新信息往前传。优先扫描 prioritized sweeping 把计算资源集中在变化较大或受到影响的状态;实时 DP 则更偏向当前访问及相关状态。

“前驱”就是能通过某个动作转移到当前状态的地方。如果 X 的价值突然由 0 改为 10,能到 X 的前驱动作候选值也可能大幅变化,因此值得重新计算。这里优先的是计算顺序,不是改写环境概率。

完整备份与样本备份再分一层

假设某动作奖励 1,γ=0.5;后继一半是价值 2 的 X,一半是价值 6 的 Y。完整备份枚举两分支,得到 1+0.5(0.5×2+0.5×6)=3。

样本备份若本次只抽到 X,目标是 1+0.5×2=2;若只抽到 Y,目标是 4。一次样本可能不同于期望 3,许多合适样本平均才会反映该期望。样本方式每次较便宜,但有随机波动。

你在决定什么常见选择
右侧读哪种值?统一旧表,或当前已写回的表
这一轮先处理哪里?固定顺序、优先变化大的状态、当前相关状态
怎样处理后继?完整枚举期望,或抽取样本

自己试一下

旧表 A=0、B=4,仍用 A←1+0.5B、B←2+0.5A。同步一轮与先 A 后 B 的原地一轮分别是什么?

我想好了,展开答案与理由

同步:A=1+0.5×4=3,B=2+0.5×0=2,得到 (3,2)。原地先 A=3,再 B=2+0.5×3=3.5,得到 (3,3.5)。两者差在 B 读的是旧 A=0 还是新 A=3。

仅保存在当前浏览器
RL5 · PDF 第 63–70 页从问题讲起 · 逐步算清

为什么 Bellman 迭代会收敛?

Supremum norm; Contraction mapping

本节一步步会讲什么

一直反复更新,凭什么相信不会越算越离谱?

前几节从零开始,一轮轮更新,数值似乎越来越接近某个答案。但“几个例子看起来接近”不是一般证明。我们想知道:如果两张初始猜测表不一样,做同样的 Bellman 更新后,它们之间的差异会不会缩小?若每次都按固定比例缩小,就很难永远停在两个不同答案上。

在有限 MDP、0≤γ<1 的常见设置下,Bellman 算子具有这种压缩性质。先把“表之间差多远”定义清楚,再理解为什么会压缩。

两张表的误差怎样量化?

假设 V=(1,4)、W=(3,3),两个位置的差分别为 -2、1,绝对差为 2、1。我们只取其中最大的 2,表示最坏位置有多大差异,称无穷范数。

\|V-W\|_\infty=\max_s|V(s)-W(s)|

双竖线表示一种长度/误差度量,下面的 ∞ 是这种“取最大绝对差”的约定,不表示误差本身无限大;max 的对象是各状态误差。

为什么一次期望备份不会放大最大差异?

设所有状态上两张表的差都不超过 2。某动作后继以 0.25、0.75 到两个状态,那么加权平均的差最多为 0.25×2+0.75×2=2。即使各项误差方向不同,也只可能抵消,不能使绝对平均超过最大绝对误差。

两张表做同一个备份时,即时奖励完全相同,在相减时消掉;剩下的后继差异还要乘 γ。如果 γ=0.5,最大差异于是至多从 2 缩到 1。

把这个过程写成压缩关系

\|TV-TW\|_\infty\leq\gamma\|V-W\|_\infty

T 不是本节里的终点状态,而是“对整张价值表做一次 Bellman 更新”的操作符。Tπ 表示固定策略期望备份,T* 表示最优性备份。后者也满足相同界,因为两组候选值的最大值之差,不会超过对应候选之间的最大差异。

怎样从“两张表靠近”得到“逼近真值”?

真实价值 v 是不动点:Tv=v,意思是已经正确的价值再备份一次不会改变。把 W 选成这个不动点,上式说明每轮估计到真值的最坏误差至多乘一次 γ;重复 k 次得到:

\|V_k-v\|_\infty\leq\gamma^k\|V_0-v\|_\infty

例如初始最坏误差不超过 10、γ=0.5,第一轮误差界为 5,第二轮为 2.5,第三轮为 1.25,第四轮为 0.625。这是上界,不是声称实际误差每次恰好等于这些数。γ 越接近 1,这个保证的缩小速度越慢。

停止阈值与实际误差怎样联系?

若某张表 V 的一次备份变化 δ=||TV-V||∞ 已知,在折扣条件下可以得到 ||V-v||∞≤δ/(1-γ)。例如 γ=0.5、δ≤0.01,则当前表误差可界为 0.02。它说明小变化能提供误差信息,但不能直接说误差就等于 δ。

自己试一下

初始误差上界为 8、γ=0.5,做三轮后理论上界是多少?若实际误差更小,是否违反公式?

我想好了,展开答案与理由

上界为 8×0.5³=1。实际误差可以小于 1,因为公式是“≤”而非“=”。例如实际误差为 0.4 完全符合这个保证;上界用于控制最坏可能情况。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL6 · PDF 第 2–14 页从问题讲起 · 逐步算清

蒙特卡洛预测:等回合结束,用真实回报估值

Monte Carlo prediction; First-visit; Every-visit

本节一步步会讲什么

先想一个实际问题:不知道迷宫规则,怎样评价一个位置?

上一章的 DP 可以查地图、查转移概率,计算“走这个方向会怎样”。现在把地图拿走:你只知道自己走过什么位置、每一步得几分,并且每次都按同一种走法行动。我们先不改变走法,只想知道:从 A 出发,照这个规则走下去,平均能拿到多少总分?这就是预测 prediction。

蒙特卡洛 Monte Carlo,简称 MC,采用很直接的办法:亲自走完整局,算这局从 A 开始的总回报;多走几局,再平均。它不需要提前知道环境规则。“随机”不等于乱算,随机经历提供了用来估计期望的样本。

先把奖励和回报分开

Reward 是某一步刚收到的分数。Return 是从某个时刻开始、一直到结束的奖励总和,还可能包含折扣。γ 是折扣因子;从当前时刻看,第一笔奖励系数为 1,第二笔为 γ,第三笔为 γ²。V(A) 是我们对 A 的价值估计,vπ(A) 是固定策略 π 下想估计的真实期望;帽子或大小写的差别不要理解成另一种任务。

完整算一局,先从最后一步倒回来

假设这一局是 A→B→A→终点,三次转移依次得 1、2、3 分,γ=0.9。最后一次到 A 后只剩奖励 3,所以那次回报为 3。站在 B 时,先得 2,后面那笔 3 晚一步,回报为 2+0.9×3=4.7。站在首次 A 时,先得 1,剩下 B 的回报整体晚一步,所以回报为 1+0.9×4.7=5.23。

G_2=3,\qquad G_1=2+0.9(3)=4.7,\qquad G_0=1+0.9(4.7)=5.23

同一个 A 出现两次,对应回报不一样。这并不矛盾:一次距离终点较远,一次已接近结束;我们观察到的是不同随机经历中的样本,而不是每次都相同的真值。

首次访问和每次访问,只是在决定收哪些样本

版本这一局给 A 收集的回报若目前只有这一局,用样本均值估计 A
First-visit MC第一次出现后的 5.235.23
Every-visit MC两次出现后的 5.23 和 3(5.23+3)/2=4.115

“首次”每个回合重新计算,不是整个训练只更新 A 一次。B 在这局只出现一次,两种规则都使用 4.7。

多局数据怎样合在一起?

V(s)=\frac{1}{N(s)}\sum_{i=1}^{N(s)}G^{(i)}(s)

s 是要评价的状态;G⁽ⁱ⁾(s) 是第 i 个被采用的回报样本;N(s) 是采用了多少个样本;Σ 表示把它们逐个加起来,再除以数量。比如 A 两局的首次回报为 5.23 和 2,均值为 3.615。后面会学“不保存全部样本”的增量写法。

自己试一下

一局 A→B→A→终点,奖励改为 2、0、4,γ=0.5。三个回报是多少?只用本局的新数据时,首次访问和每次访问样本均值分别给 A 多少?

我想好了,展开答案与理由

先从末尾算:G₂=4;G₁=0+0.5×4=2;G₀=2+0.5×2=3。首次访问只收集 3,A 的估计为 3;每次访问收集 3 和 4,均值为 3.5。这里没有指定固定学习率,所以不能额外乘一个 α。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL6 · PDF 第 15–20 页从问题讲起 · 逐步算清

增量均值、固定步长与学习率

Incremental mean; Step size; Robbins–Monro

本节一步步会讲什么

上节已经会求平均,但数据越来越多怎么办?

MC 每次收集一个回报后都能重新算平均。然而保存一百万个旧回报、每次全部相加很麻烦。我们希望只记住两个数:目前的平均值和样本个数。新数据来了,用这两个数就能得到新的平均值。

把“旧平均”拆回“旧总和”,公式就出来了

假设前 n−1 个样本的平均值是 Mₙ₋₁,那么它们的总和是 (n−1)Mₙ₋₁。第 n 个样本记为 Xₙ。新总和加上 Xₙ,再除以 n,整理后得到下面两种完全相同的写法。

M_n=\frac{(n-1)M_{n-1}+X_n}{n}=M_{n-1}+\frac{1}{n}(X_n-M_{n-1})

这里 n 是“已收集样本总数”,不是环境时间,也不是状态编号。Xₙ−Mₙ₋₁ 是新样本与旧平均的差;乘 1/n 表示新样本只占全部 n 个样本中的一份。

用三个数字检查它真的在求平均

前两个回报是 2、6,旧平均 (2+6)/2=4。第三个回报为 10,差距是 10−4=6。此时 n=3,所以只把差距的三分之一加到旧平均:4+6/3=6。直接相加也得到 (2+6+10)/3=6。

强化学习把这个结构推广为“旧值向目标移动”

V(s)\leftarrow V(s)+\alpha[G-V(s)]

箭头表示把左边表格里的数改成右边结果。V(s) 是更新前的估计,G 是这次得到的目标回报,α 是学习率,控制靠近目标多少。旧值 4、目标 10、α=0.2,先算误差 6,再算增量 1.2,最后新值为 5.2。目标 10、误差 6、新值 5.2 是三个不同的量。

若每次令 α=1/N(s),且 N 是该状态实际采用的样本数,就得到普通样本均值。若 α 始终固定为 0.5,则不会等权平均:从 V₀=0 出发,依次见到回报 2、6,先更新到 1,再到 3.5;而两个样本的平均是 4。

为什么固定步长更重视新样本?

每次更新也可写成 V新=(1−α)V旧+αG新。旧估计先缩小,再加入新目标。α=0.5 时,上一轮里的每个旧样本权重又减半。因此它适合跟踪变化的均值,但在随机环境中也可能一直有小幅波动。

V_n=(1-\alpha)^nV_0+\alpha\sum_{i=1}^{n}(1-\alpha)^{n-i}G_i

不必先背这个展开式:看 n=2 就够了,V₂=(1−α)²V₀+α(1−α)G₁+αG₂,能直接看到新回报 G₂ 的权重大于旧回报 G₁。

收敛条件在限制什么?

\sum_n\alpha_n=\infty,\qquad\sum_n\alpha_n^2<\infty

第一条希望累积学习能力不太早耗尽;第二条希望随机噪声的影响能逐渐被平均掉。1/n 满足这组常见条件,固定正 α 不满足第二条。它们是一些收敛定理的条件之一,还需任务和覆盖等假设,不是任何网络的万能保证。

自己试一下

旧估计为 6,目标为 2。分别用 α=0.25 和 α=1 计算新值;哪一个等于目标?

我想好了,展开答案与理由

误差为 2−6=−4。α=0.25 时,新值 6+0.25×(−4)=5;α=1 时,新值 6−4=2,直接到达本次目标。负误差意味着向下修正,不意味着算法出错。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL6 · PDF 第 21–26 页照片重点相关从问题讲起 · 逐步算清

TD(0):走一步,就修正一次预测

Temporal-difference prediction; TD error

本节一步步会讲什么

为什么不总等一整局结束?

想象你估计“从当前位置走到终点还要多久”。走完第一段路后,你已经知道这一段花了多少时间,也到了一个新的位置。即使整条路还没走完,也可以把“刚花的时间”和“从新位置预计还要的时间”拼起来,修正原来的估计。TD,Temporal Difference,时间差分学习,就是这种逐步修正思路。

MC 等到结局才用完整回报;TD 只看一步真实结果,后面的部分先借用已有价值估计。因此它能更早更新,但目标也会受已有估计错误的影响。

先把一条经历写清楚,再读公式

在时刻 t,位于状态 Sₜ;动作发生后收到奖励 Rₜ₊₁,并到达 Sₜ₊₁。V(Sₜ) 是当前状态的旧估计,V(Sₜ₊₁) 是下一状态目前的估计。γ 给未来部分打折;α 控制更新幅度。不要因为奖励有 t+1 下标,就额外给第一笔奖励乘 γ。

Y_t=R_{t+1}+\gamma V(S_{t+1})
\delta_t=Y_t-V(S_t),\qquad V(S_t)\leftarrow V(S_t)+\alpha\delta_t

Y 是目标:这次新信息建议当前状态应该值多少。δ 叫 TD error:目标与旧预测差多少。新 V 是把旧预测向目标挪动一部分后的结果。先目标、再误差、最后更新,能避免把三个数混在一起。

第一步:A 到 B,逐个数字来自哪里?

已知 V(A)=1、V(B)=2;观察到 A→B 得奖励 1;题目规定 γ=0.9、α=0.5。先算未来部分:0.9×2=1.8。加刚收到的 1,目标 Y=2.8。与旧 A=1 相比,误差 δ=1.8。只吸收一半误差,A 增加 0.9,得到 V(A)=1.9。

V(A)=1+0.5[1+0.9(2)-1]=1.9

注意 B 的 2 在这里仅被读取,没有更新;此条经历是从 A 出发,所以更新的是 A。

第二步:B 又回到 A,要读哪一个 A?

现在观察 B→A 得奖励 2。若题目要求 online 在线 TD,刚才的 A=1.9 已经存回表格。于是目标是 2+0.9×1.9=3.71,而不是用最初的 A=1 得到 2.9。B 的旧值仍为 2,更新后 B=2+0.5(3.71−2)=2.855。

V(B)=2+0.5[2+0.9(1.9)-2]=2.855

这与 DP 同步扫描不同:同步 DP 的整轮都读同一张旧表;在线 TD 是观察一条、马上改一次、下一条读当前表。顺序必须按题目约定。

最后一步到终点怎么办?

若接着 A→终点得奖励 3,终点价值为 0,所以目标是 3,不再接未来项。此刻 A 的旧值是 1.9,新 A=1.9+0.5(3−1.9)=2.45。进入终点那一步的奖励不能删除。

自己试一下

旧 V(X)=4、V(Y)=6,观察 X→Y 得 −1,γ=0.5、α=0.25。目标、误差、新值分别是什么?若这条转移改成终止呢?

我想好了,展开答案与理由

非终止时:Y目标=−1+0.5×6=2;δ=2−4=−2;新 V(X)=4+0.25×(−2)=3.5。终止时目标只有 −1,误差 −5,新 V(X)=2.75。这里目标符号 Y 与状态名 Y 只是记号碰巧相同,计算时可把目标写成“target”避免混淆。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL6 · PDF 第 27–31、39 页照片重点相关从问题讲起 · 逐步算清

MC 与 TD:偏差、方差与效率

Bias–variance trade-off

本节一步步会讲什么

一个方法看完整结局,另一个只看一步,哪个更可靠?

假设要估计从 A 起平均能拿 10 分。方法一每次给出的目标不是 0 就是 20,长期平均恰好为 10;方法二每次都给 8。前者很晃,却没有平均方向上的偏移;后者很稳定,却总偏低。这说明“稳定”和“准确”不是同一个意思。

偏差 bias 关注大量重复实验后的平均估计与真值差多少;方差 variance 关注估计在重复实验中波动多大。这里要比较的主要是更新目标,而不是看到某次结果就断言整个算法好坏。

在一个真实小问题里比较 MC 和 TD

从 A 出发,第一步总得 0 并到 B;从 B 再走一步终止,最后奖励一半为 0、一半为 20。设 γ=1,固定策略已经给定,因此 v(B)=10,v(A)=0+10=10。

MC 从 A 等到结束,完整回报是 0+0=0 或 0+20=20。平均为 10,因此它是正确价值的无偏样本;但每次离平均值很远,目标方差为 (0−10)²/2+(20−10)²/2=100。

TD 从 A 只观察第一步,目标是 0+V(B)。如果当前 V(B)=8,目标总为 8,没有这次末尾奖励带来的波动,但相对真值偏低 2。它用较稳定的后继预测,换取了对该预测准确性的依赖。

Y_{MC}=G_t,\qquad Y_{TD}=R_{t+1}+\gamma V(S_{t+1})

如果后继估计是对的呢?

同一例子里,若 V(B)=10,TD 目标为 10:既没有末尾采样波动,也没有该估值导致的偏差。一般而言,把真实 vπ 代入下一状态,Bellman 期望关系保证 TD 目标有正确期望;实际训练中我们只有近似 V,才会出现自举误差。

要比较的问题完整回合 MC一步 TD
本次目标的信息此后实际收到的全部奖励一步实际奖励与后继估计
能否提前更新一般要等完整回报已知走一步后即可
目标中的额外不确定性较长轨迹的随机性后继价值估计不准
是否自举否是

为什么 TD 目标暂时有偏,最后仍可能学对?

上面的 B 自己也会从 0 和 20 的经历中学习。随着 B 的估计接近 10,A 的目标也随之改进。表格、覆盖、步长等条件合适时,TD 能收敛到正确固定策略价值。不能因为早期用了一次 8,就说它永远只能学到 8。

自己试一下

把上例当前 V(B) 改为 12,其他条件不变。A 的 TD 目标和相对真值的偏差是多少?MC 目标是否改变?

我想好了,展开答案与理由

TD 目标为 0+12=12,相对 v(A)=10 偏高 2。MC 仍等实际结局,目标为 0 或 20,分布不因你在表里把 B 写成 12 而改变。这正说明 MC 不把当前 V(B) 放进目标。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL6 · PDF 第 32–38 页从问题讲起 · 逐步算清

有限数据反复训练:批量 MC 与 TD 为什么不同?

Batch learning; Certainty equivalence

本节一步步会讲什么

只有一本旧记录,反复学到稳定,会得到什么?

先前讨论的是不断获得新经历。现在数据已经固定,不再增加新回合:把同一批记录反复拿出来训练,直到每个状态的平均更新不再推动它变化。这称这里的 batch learning,批量学习。

“批量”不是一个唯一更新公式。一次冻结表的扫描、用均值梯度更新一次、把固定数据反复训练到收敛,可能是不同问题。本节比较的是最后一种:相应 MC 和 TD 在这批固定数据上的稳定解。

把课件的八局记录列清楚

设 γ=1。第 1 局从 A 出发,A→B 奖励 0,B→终点奖励也为 0。其余 7 局都直接从 B 出发到终点,其中 6 局得 1,1 局得 0。A 一共出现 1 次,B 一共出现 8 次。

记录组局数A 后实际总回报B 后实际总回报
A→B→终点,两步奖励均 0100
B→终点,奖励 16未访问 A每局 1
B→终点,奖励 01未访问 A0

MC 问的是:这些访问之后实际发生了什么?

A 的唯一一次访问后,确实得到 0+0=0,所以基于这些实际回报的样本均值是 VMC(A)=0。B 的八个回报为 0、六个 1、再一个 0,合计 6,因此 VMC(B)=6/8=0.75。

V_{MC}(A)=0,\qquad V_{MC}(B)=\frac68=0.75

TD 多用了一条结构信息:A 总是先到 B

A 的数据告诉我们,先得 0,再到 B;而其他回合提供了 B 以后通常怎样的更多证据。B 的终止转移平均目标仍是 0.75,所以稳定时 VTD(B)=0.75。A 的 TD 目标为 0+V(B),因而最后 A 也被推向 0.75。

V_{TD}(B)=0.75,\qquad V_{TD}(A)=0+1\times V_{TD}(B)=0.75

直觉是:虽然 A 那一次碰巧赶上 B 得 0,其他从 B 开始的经历显示 B 通常更好。只要 B 的状态表示满足 Markov 性,到了 B 之后如何继续不应再取决于你是否从 A 来,因此可以共享这些 B 的经验。

Certainty equivalence 是什么意思?

它指把数据估出的环境规律当成确定采用的模型,再求该模型中的价值。例如本例估出 A→B 的概率为 1、奖励为 0,B→终点的平均奖励为 0.75;解这份经验模型的 Bellman 方程,就得到上面的 TD 稳定解。它不是说真实环境已经确定,也不是说有限数据模型一定正确。

自己试一下

如果另外增加一局 A→B→终点,奖励为 0、1,新的 MC 与经验模型 TD 稳定值分别是多少?

我想好了,展开答案与理由

A 的两个完整回报为 0、1,MC(A)=0.5。B 现在有 9 次访问、总奖励为 7,因此 MC(B)=7/9。经验模型仍有 A→B 概率 1、即时奖励 0,所以 TD(B)=7/9,TD(A)=7/9。不要把新增这一次 B 漏计,否则分母会错。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL6 · PDF 第 40–44 页照片重点相关从问题讲起 · 逐步算清

DP、MC、TD 的统一视角

Sampling; Bootstrapping; Backup

本节一步步会讲什么

同样要给 A 估值,三种方法到底各看了什么?

先给一个共同场景:从 A 出发,第一步奖励为 1;环境有一半概率去 B、一半去 C。题目给 γ=0.5,我们当前估计 V(B)=4、V(C)=8。真实的一次经历恰好去了 B,接着得奖励 2 后终止。

三种方法都想评价相同策略下的 A,但它们掌握的信息和构造目标的方式不同。先比较它们的目标,再决定是否需要学习率,不能先看名字就胡乱套一个更新。

DP:查已知模型,把所有分支平均

DP 知道两个后继及各自概率,不必真的抽中某个后继,就能算一步期望目标。去 B 的一路为 1+0.5×4=3;去 C 的一路为 1+0.5×8=5;各一半,得到目标 0.5×3+0.5×5=4。

Y_{DP}=0.5[1+0.5(4)]+0.5[1+0.5(8)]=4

这里 B、C 的值仍是当前估计,因此有 bootstrapping 自举。完整期望备份本身不靠抽一条分支代替平均,因此这里说它“不采样”。

TD:只看实际发生的一步,再接估计

这次实际发生 A→B,得到 1。TD 不拿没发生的 C 来平均,而是用后继 B 的当前估计 4 接上:目标 1+0.5×4=3。它用实际抽到的转移,所以采样;又用了尚在学习的 V(B),所以自举。

Y_{TD}=1+0.5(4)=3

MC:沿实际经历走到底,不再借 V(B)

这次完整经历的奖励为 1、2,之后终止。MC 目标为 1+0.5×2=2。数字 2 来自真正观察到的最后奖励,不是表格里的 V(B)=4。它沿采样轨迹,因此采样;目标只由完整实际奖励组成,因此不自举。

Y_{MC}=1+0.5(2)=2

两个判断问题,足以把三种方法分开

方法这次目标有没有用抽中的经历代替全部分支?有没有借用价值估计?
完整期望 DP4没有有
一步 TD3有有
完整回合 MC2有没有

若旧 V(A)=0、题目统一要求 α=0.5 的平滑更新,三个新值分别为 2、1.5、1。但标准 DP 扫描通常直接把备份结果赋给 V(A),不应擅自加题目没说的 α。

备份图上的“宽”和“深”如何理解?

Backup 备份是把后面的奖励和价值信息往当前状态传。图画得宽,表示考虑多个可能分支;画得深,表示向未来观察更多步。DP 常是宽的一层期望树;TD 是一条一步样本后接估计;MC 是一条直到终点的样本路径。

自己试一下

若这次实际先去了 C,第一笔奖励仍为 1,随后得 10 后终止,V(B)、V(C) 暂时不变,三个目标各是什么?

我想好了,展开答案与理由

DP 仍按已知两分支平均,目标为 4,不随这一次抽中谁而改变。TD 读到 C 的估计 8,目标 1+0.5×8=5。MC 用完整实际奖励,目标 1+0.5×10=6。三个目标不同反映了使用的信息不同。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL6 · PDF 第 45–50 页从问题讲起 · 逐步算清

n 步 TD:真实看 n 步,再接上估计

n-step return

本节一步步会讲什么

一步 TD 太早相信估计,完整 MC 又等得太久,能否折中?

可以。先真正观察两步或三步,把这几步的实际奖励记下来,剩下未知未来再用价值估计补上。这叫 n-step TD,n 步时间差分。n 控制观察真实经历的长度,不是反复更新同一张表的轮数 k。

理解它时,只需把时间线画出来:当前 Sₜ → 第一奖励 Rₜ₊₁ → 第二奖励 Rₜ₊₂ → … → n 步后 Sₜ₊ₙ。前 n 步已经发生,后面还没发生;这条分界线前用真实奖励,后用估计。

先读两步版本,再读一般形式

G_t^{(2)}=R_{t+1}+\gamma R_{t+2}+\gamma^2V(S_{t+2})

第一笔奖励不折扣;第二笔晚一步,乘 γ;从第二步后的状态继续出发的价值,整体晚两步,乘 γ²。G 的上标 (2) 表示两步目标,不是把 G 平方。

G_t^{(n)}=\sum_{j=0}^{n-1}\gamma^jR_{t+j+1}+\gamma^nV(S_{t+n})

Σ 表示把 j=0 到 n−1 的 n 个实际奖励项相加。V 是分界线之后的未来估计。这里先假设走完 n 步仍未终止;若更早终止,就只加到终止为止,不虚构剩余奖励或后继价值。

同一条轨迹,分别看一步和两步

设 A→B 得 1,B→C 得 2,γ=0.9,当前 V(B)=4、V(C)=5。一步目标只观察 A→B,得 1+0.9×4=4.6;两步目标观察到 B→C 的奖励后,得 1+0.9×2+0.9²×5=6.85。

G_0^{(1)}=4.6,\qquad G_0^{(2)}=1+1.8+4.05=6.85

两步目标不再使用 V(B),因为从 B 出发的第一步结果已经真实看到了;但它仍使用 V(C),所以仍属于自举。数字变大并不自动说明两步“更正确”,还要看后继估计和采样结果。

目标算好后,再单独做更新

若旧 V(A)=3,α=0.2,采用两步目标 6.85:误差为 3.85,增量为 0.77,新 V(A)=3.77。n=2 并不表示把这次增量乘 2,γ=0.9 也不是更新步长。

到终点时,两步方法怎样变成 MC?

若 B 的下一步已经到终点、奖励仍为 2,那么两步目标变成 1+0.9×2=2.8,末尾价值为 0。如果从这次访问开始直到终点只有两步,这个目标恰好包含全部未来奖励,也就是 MC 回报。n=1 则回到 TD(0)。

自己试一下

前三笔奖励是 2、−1、4,γ=0.5,三步后尚未终止且 V=8。三步目标是多少?如果第三步已终止呢?

我想好了,展开答案与理由

非终止:2+0.5×(−1)+0.5²×4+0.5³×8=2−0.5+1+1=3.5。若第三步终止,去掉最后的 1,得到 2.5。末尾估计整体乘 γ³,而不是乘 γ²,因为它从三步后开始。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL6 · PDF 第 51–55 页从问题讲起 · 逐步算清

λ 回报:把不同长度的目标混起来

Forward-view TD(λ); λ-return

本节一步步会讲什么

如果不知道该看一步、两步还是整局,怎么办?

上一节每次挑定一个 n。另一种办法是:把一步目标、两步目标、三步目标等都算出来,再做加权平均。短目标更依赖当前估计,长目标包含更多实际奖励;λ 回报把这些信息按一种规则混合。它首先是一种“构造训练目标”的方式,不是新的环境奖励。

这里先讨论回合结束后计算的前向视角 forward view,并用同一张价值表评价各个自举尾项,避免把不同更新时间的估计混在一个例子里。

λ 管的是目标长度的权重,不是奖励折扣

γ 决定同一条回报里,晚来的奖励打多少折;λ 决定不同步数目标在混合中占多少份。两者都常在 0 到 1 之间,但工作不同。α 仍然是目标构造完成后,更新参数时移动多少的学习率。

若从当前到终点还剩三步,混合方式是:一步目标占 1−λ;两步目标占 (1−λ)λ;完整三步回报拿剩下的 λ²。三个权重相加恰好为 1。

G_t^\lambda=(1-\lambda)G_t^{(1)}+(1-\lambda)\lambda G_t^{(2)}+\lambda^2G_t

把每个目标从同一个例子算出来

设奖励依次是 1、2、3,第三步后终止,γ=1;固定估计 V(Sₜ₊₁)=3、V(Sₜ₊₂)=2。一步目标=1+3=4;两步目标=1+2+2=5;完整回报=1+2+3=6。

取 λ=0.5,权重依次是 0.5、0.25、0.25。因此混合目标=0.5×4+0.25×5+0.25×6=4.75。这个 4.75 不是这局实际总得分 6,而是用来更新当前价值的混合目标。

G_t^{0.5}=0.5(4)+0.25(5)+0.25(6)=4.75

若旧 V=2、α=0.2,则更新为 2+0.2(4.75−2)=2.55。先混合目标,再乘学习率,顺序要清楚。

一般回合公式,逐个符号读

G_t^\lambda=(1-\lambda)\sum_{n=1}^{m-1}\lambda^{n-1}G_t^{(n)}+\lambda^{m-1}G_t

m=T−t 是距终点还剩多少步,T 是终止时刻;n 是备份长度。前面求和处理所有还带自举尾项的目标,最后一项处理完整回报。这里 0≤λ≤1;端点可按连续极限理解,剩一步时直接就是那最后一步回报。

看两个端点,帮助记忆

λ=0 时只保留一步目标,回到 TD(0) 的目标;λ=1 时全部权重落到完整回报。λ 越接近 1,长目标的总体权重越大。下一节会说明如何不等到整局结束,也能用资格迹传播相关信息。

自己试一下

沿用目标 4、5、6,改为 λ=0.8。三个权重和混合目标分别是多少?

我想好了,展开答案与理由

权重是 0.2、0.2×0.8=0.16、0.8²=0.64,总和为 1。目标 0.2×4+0.16×5+0.64×6=0.8+0.8+3.84=5.44,比 λ=0.5 时更接近完整回报 6。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL6 · PDF 第 56–59 页从问题讲起 · 逐步算清

资格迹:让最近访问过的状态一起学习

Eligibility traces; Backward-view TD(λ)

本节一步步会讲什么

奖励很晚才出现,怎样让前面走过的位置也学到东西?

假设 A→B→终点,前面没奖励,最后突然得 10。如果只做一步 TD,首先直接受影响的是 B,A 可能要等下次经历才从 B 变化中学到。资格迹 eligibility trace 给最近访问过的状态留一个逐渐淡去的“记号”,新误差到来时,带记号的状态都能分到更新。

这个记号不是价值,不表示剩余奖励;它表示当前误差应该给这个状态分配多少更新份额。它是后向视角 backward view:每来一个新误差,就向过去访问过的状态传播。

先认识两个表:价值表 V 和痕迹表 e

V(s) 估计状态好不好;e(s) 记录它最近、频繁被访问的程度。每回合开始把所有 e 清零。γ 是奖励折扣,λ 控制迹保留程度,它们的乘积 γλ 决定旧迹每步缩小多少;α 仍是学习率。

e_t(s)=\gamma\lambda e_{t-1}(s)+\mathbf{1}\{S_t=s\}

大括号里的指示量只会是 0 或 1:若 s 就是当前状态 Sₜ,加 1;其他状态不加。这个版本叫累积迹 accumulating traces,同一状态再次访问会在衰减后的旧迹上再加 1。

一步里按什么顺序做?

先读取当前价值表,计算这次 TD error:δ=r+γV(下一状态)−V(当前状态)。把全部旧迹乘 γλ,再给当前状态的迹加 1。最后对所有有迹的状态,用同一个已经算好的 δ 更新。不要更新了一个状态后又重算 δ,否则就变成另一套操作。

V(s)\leftarrow V(s)+\alpha\delta_t e_t(s)

完整走两步,看见信用怎样传回 A

设初始 V(A)=V(B)=0,所有迹为 0;γ=0.9、λ=0.8、α=0.1。第一步 A→B 奖励 0,δ=0+0.9×0−0=0;迹 e(A)=1,e(B)=0。虽然留下了迹,误差为 0,所以价值暂时不变。

第二步 B→终点奖励 2,δ=2−V(B)=2。旧 A 迹衰减为 0.9×0.8×1=0.72;当前 B 迹增加到 1。于是 A 增加 0.1×2×0.72=0.144,B 增加 0.1×2×1=0.2。

第二步结束后eV 的增量新 V
A0.720.1440.144
B10.20.2

A 并不是当前出发状态,却因为刚刚访问过而分到了这次末尾误差。离得越远、旧迹衰减越多,分到的更新通常越小。

λ=0 会发生什么?

旧迹每步全部变为 0,只有当前状态加出的 1 留下,因此每步只更新当前状态,回到 TD(0)。λ 较大时旧迹保留更久;它不表示环境变得更记忆化,Markov 性与学习算法保留过去信息是不同问题。

自己试一下

沿用 γλ=0.72。若又来到 A,更新迹前 e(A)=0.72、e(B)=1,先衰减再给当前 A 加 1,两个新迹是多少?

我想好了,展开答案与理由

A 的旧迹先变为 0.72×0.72=0.5184,再加 1,得到 1.5184;B 只衰减,变为 0.72。累积迹可以大于 1,它不是一个概率,因此没有“不能超过 1”的限制。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL6 · PDF 第 60–71 页从问题讲起 · 逐步算清

前向与后向视角:什么时候真的等价?

Forward–backward equivalence

本节一步步会讲什么

前面两节看起来做了两件事,它们为什么会联系起来?

前向 λ 回报站在 A 看未来:把一步、两步等目标混合后更新 A。后向资格迹站在每个新时刻看过去:这次 TD error 应给 A 分多少?二者都在解决“较晚的新信息怎样分配给较早状态”这个问题,只是整理同一串信息的方向不同。

但说“同一思想”还不够。要声称数值严格相等,必须说清楚:算所有误差时用的是固定旧价值表,还是每一步已经改过的表?下面先使用固定表、整局结束统一应用累计增量的离线约定。

用两步轨迹把相消过程看清楚

一局 A→B→终点,奖励 1、2;γ=0.5。整局计算都冻结 V(A)=3、V(B)=4、V(终点)=0。第一误差 δ₀=1+0.5×4−3=0;第二误差 δ₁=2−4=−2。

从 A 看,完整回报是 G₀=1+0.5×2=2,所以 MC 误差 G₀−V(A)=2−3=−1。将 TD 误差折扣相加:δ₀+0.5δ₁=0+0.5×(−2)=−1,恰好一样。

\delta_0+\gamma\delta_1=[R_1+\gamma V(B)-V(A)]+\gamma[R_2-V(B)]

右边有 +γV(B),还有 −γV(B),这两项抵消;剩下 R₁+γR₂−V(A),就是完整回报减当前估计。这个“一正一负接着抵消”称 telescoping,望远镜相消。

一般形式里,每一项在做什么?

\sum_{j=0}^{T-t-1}\gamma^j\delta_{t+j}=G_t-V(S_t)

T 是终止时刻,j 数的是从当前起往后第几步。每个后继价值的正项,都被下一步误差中的负项抵消,终点价值又为 0,最后只保留整条实际回报与最开始的负估值。这个等式使用同一张固定 V 表。

λ 不等于 1 时,也能看见同样的对应

沿用两步例子,λ=0.5。A 的一步目标是 1+0.5×4=3,完整目标为 2,所以前向混合目标为 (1−0.5)×3+0.5×2=2.5;相对旧 A=3 的误差为 −0.5。

后向累计给 A 的误差份额是 δ₀+γλδ₁=0+0.5×0.5×(−2)=−0.5。若统一 α=0.1,二者都建议 A 改变 −0.05。注意这里只比较 A;每个状态都要按自身访问情况累计。

在线更新为什么要另外讨论?

在线方法第一步后就改 V,之后算出的误差可能读取新值。此时前后项里的 V(B) 未必来自同一张表,不能自动一项项抵消。普通在线 TD(λ) 与用固定表构造的离线 λ-return 一般不严格相等;true online TD(λ) 针对精确在线对应设计了不同的更新。

自己试一下

仍用两步例子,取 λ=1、α=0.2。给 A 的总误差和最终更新值是多少?

我想好了,展开答案与理由

λ=1 时,后向份额为 δ₀+γδ₁=−1,与完整 MC 误差相等。把累计增量统一应用到旧 A=3,得到 3+0.2×(−1)=2.8。这是本节冻结价值、最后统一更新的约定,不是把第一步新值继续送入第二步重算误差。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL7 · PDF 第 3–15、22、25–30 页从问题讲起 · 逐步算清

无模型控制:为什么要学 Q?

Monte Carlo control; Generalized policy iteration

本节一步步会讲什么

之前一直评价一种走法,现在要决定换哪种走法

RL6 的任务是:给定策略 π,估计它好不好。现在假设站在路口有 Left、Right 两个动作,我们不仅要评价现有随机走法,还想逐渐更常选好动作。这叫 control,控制或策略优化。

困难是我们没有地图,不知道每个动作会到哪里。即使已经知道当前位置 V(s)=5,这一个数也没有告诉我们 Left 与 Right 谁更好。若只有 V,通常还需环境模型才能计算动作后果;直接学习 Q(s,a),就能从经验中把每个动作的后果分别记下来。

Q 比 V 多固定了什么?

Q(s,Left) 问的是“现在先选 Left,之后按正在评价的策略继续,预计回报多少”;Q(s,Right) 换成先选 Right。这里 s 是同一个状态,a 是先选定的动作。后续策略仍然重要,并不是 Q 永远只看一步奖励。

从数据到更好的动作,完整走一轮

设在同一个状态 s,多局完整经历给出这样的回报:先选 Left 的两局为 2、4;先选 Right 的两局为 6、8。用样本均值估计,Q(s,Left)=(2+4)/2=3,Q(s,Right)=(6+8)/2=7。

若当前策略各选一半,该状态估计 V=0.5×3+0.5×7=5。现在按这组 Q 贪心改进,应选 Right,因为 7>3;max 返回数值 7,argmax 返回动作 Right。

Q(s,L)=3,\quad Q(s,R)=7,\quad V(s)=0.5(3)+0.5(7)=5

为什么改了策略以后还要继续学习?

刚才两个 Q 的完整回报来自旧的后续走法。改进策略后,不仅当前路口的第一步可能变,未来其他路口也可能改变选择,长期回报分布随之变化。因此不是“算一次 Q,改一次动作,永远结束”,而是持续交替:按探索策略收集完整回合;更新访问过的状态动作 Q;根据新 Q 调整动作选择。

这种评价和改进互相推动的结构叫 generalized policy iteration,广义策略迭代 GPI。它可以是小步交替,不要求每次把价值算到完全精确再改策略。

为什么不能从第一局起永远只选当前最大?

假设初始两动作 Q 都为 0,第一局 Left 恰好得 1,于是 Left 暂时最高。如果以后再也不试 Right,就可能永远不知道它真实平均能得 7。估计高低反映已有样本,不是全知的真相;尚未访问不代表价值差。

探索可以通过 exploring starts 实现:让起始状态动作组合有适当覆盖。但现实机器人常不能任意重置到每个状态,于是常用下一节的 ε-greedy 或 ε-soft 持续给动作试验机会。

自己试一下

同一状态,Q(s,a)=−2,Q(s,b)=−5。哪个动作贪心?如果两个 Q 只各来自一次样本,是否已经证明它永远更好?

我想好了,展开答案与理由

选择 a,因为 −2 大于 −5,长期少亏也更好。但两个值只是很少数据的估计,不能证明真实期望排序必然如此;仍需要适当探索和进一步估计。贪心是“对当前估计取最大”,不是“已知道真最优”。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL7 · PDF 第 16–21 页照片重点相关从问题讲起 · 逐步算清

ε-greedy 与 ε-soft:概率到底怎么算?

ε-greedy; ε-soft policy

本节一步步会讲什么

既想选目前看起来最好的,又怕错过没试够的动作

在一个路口,四个动作当前 Q 值为 (8,3,2,1)。总选第一个动作利用了已有知识,却不给其他动作翻身机会;总是随机则又没有利用已学到的信息。ε-greedy 把这两种需要组合起来。

先在两个“选择程序”之间抽签:概率 1−ε 进入利用分支,选最大 Q;概率 ε 进入探索分支,从全部 m 个动作均匀选一个。ε 是探索分支的概率,m 是当前可选动作数量。探索分支包括最优动作,因此“探索”不等于“必选非最优”。

四动作、ε=0.2,为什么最优动作是 0.85?

利用分支占 0.8,必选第一个动作。探索分支占 0.2,其中四个动作各占 1/4,所以每个分到 0.2×1/4=0.05。第一个动作可从两条路径被选到,概率要相加:0.8+0.05=0.85。其他每个只有探索这条路径,各为 0.05。

\pi(a_*\mid s)=1-\epsilon+\frac{\epsilon}{m},\qquad \pi(a\ne a_*\mid s)=\frac{\epsilon}{m}

π(a|s) 读作“在状态 s 选动作 a 的概率”;a* 是唯一达到最大 Q 的动作。检查总和:0.85+0.05+0.05+0.05=1。

如果两个动作并列最高,怎么分?

把 Q 改成 (8,8,2,1),并规定利用分支在并列最大之间均匀选。利用的 0.8 要分成两份,每个得到 0.4;再各加探索的 0.05,所以两个贪心动作各 0.45,另外两个各 0.05。

\pi(a\mid s)=\frac{1-\epsilon}{g}+\frac{\epsilon}{m}\quad(a\in\arg\max_b Q(s,b))

括号表示 a 属于达到最大 Q 的动作集合;g 是并列最大动作的数量。若某题规定并列时总选最低序号,就不能套“均分利用概率”;必须先读 tie-breaking 规则。

ε-soft 又是什么,为什么还要一个名字?

ε-soft 描述一组符合下限的策略:每个动作的概率都至少是 ε/m。ε-greedy 则是一种具体构造:先给每个动作最低探索份额,再把剩下的利用概率给最大 Q 动作。

例如 m=4、ε=0.2,概率 (0.4,0.3,0.2,0.1) 每项都≥0.05,所以是 ε-soft;但若第一个动作唯一最优,它不是规定的 ε-greedy,因为 ε-greedy 应为 (0.85,0.05,0.05,0.05)。

它如何帮助策略改进?

在必须保留同样最低探索份额的约束下,剩余概率给最高精确 qπ 的动作是合理的改进方向。相应 ε-soft 改进结论有原策略、精确价值和相同约束等前提,不是说给任意已经很好的策略加随机性都会更好。

自己试一下

三个动作 Q=(5,5,1),ε=0.3,利用分支均分并列动作。三个动作的概率是多少?

我想好了,展开答案与理由

探索给每个动作 0.3/3=0.1;利用的 0.7 给前两个各 0.35。最终 (0.45,0.45,0.1),总和为 1。两个最优动作不能各拿整份 0.7,否则总概率会超过 1。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL7 · PDF 第 23–26、37 页从问题讲起 · 逐步算清

GLIE:充分探索与极限贪心

Greedy in the Limit with Infinite Exploration

本节一步步会讲什么

探索应该一直很多,还是尽早停止?

想象你在比较两家食堂。只去第一家,就可能永远不知道第二家更好;但如果已经有很多可靠经验,还始终一半时间去明显较差的一家,也没有充分利用所学。GLIE 同时提出两项长期要求,用来表达“不能太早放弃探索,也要逐渐利用知识”。

全称是 Greedy in the Limit with Infinite Exploration,极限贪心且无限探索。它不是一种奖励,不是 MC 算法,也不是 ε-greedy 的某个固定变体;它是一组描述策略序列长期性质的条件。

两个条件分别约束什么?

条件直白含义要避免的问题
Infinite Exploration相关状态动作对在无限训练中被访问无穷多次某动作因早期运气差而永远被忽略
Greedy in the Limit训练越久,选择非贪心动作的概率趋于零长期一直以固定比例选当前认为较差的动作

“无穷多次”不是有限考试里要求真的跑无穷久,而是收敛分析中的极限条件。“极限贪心”也不是要求某个有限时刻之后永远不再探索;概率不断减小,仍可能在无限时间里发生无穷次。

为什么这两句话能同时成立?

在一个始终反复访问的单一状态、两个动作的简单例子中,令第 n 次选择时 εₙ=1/n。某个非贪心动作得到约 1/(2n) 的概率,这个概率趋于 0;但 1/2+1/4+1/6+… 的总和发散,所以仍保留持续探索的机会。在相应随机选择与访问条件下,可以同时满足两方面。

这个例子只是帮助理解“概率变小”不等于“总次数有限”,不能自动拿来证明任意多状态 MDP 的 GLIE。

两个反例,分别看清缺了哪条

固定 ε=0.1、两动作、唯一最优时,非贪心动作概率始终为 0.05。即使不断探索,也没有趋于零,通常不满足极限贪心。

若 εₙ=2⁻ⁿ,探索概率降得很快,总探索概率之和有限。可能很快几乎不再试另一个动作,不能保证无限探索。更复杂的环境里,到达某个状态也许要连续执行几次探索动作,单独写 ε→0 更不能保证该状态有充分访问。

现在把 MC、ε-greedy、GLIE 放回各自位置

MC 或 SARSA 规定怎样从数据更新价值;ε-greedy 规定这一次怎样选动作;GLIE 约束一系列策略长期怎样探索和趋向贪心。一种逐渐调整 ε 的 ε-greedy 方案在满足额外条件时可以具有 GLIE 性质,但两者不是同义词。

N_k(s,a)\to\infty,\qquad P_{\pi_k}(A\notin\arg\max_a Q_k(s,a)\mid s)\to0

Nₖ(s,a) 是截至第 k 阶段访问次数;Qₖ 是当时的动作价值估计;argmax 返回当前最大动作集合。第二式要求落到集合之外的概率趋零。

自己试一下

“只要 ε 趋于零,就一定满足 GLIE”错在哪里?“GLIE 是 MC ε-greedy”又错在哪里?

我想好了,展开答案与理由

第一句话只看了极限行为,没有证明各状态动作无限访问;过快衰减、不可达状态或到达困难都可能破坏探索条件。第二句话把学习算法、选动作规则和长期性质混成一个东西。MC 可以配 ε-greedy,满足适当探索计划与覆盖时策略序列可能具有 GLIE 性质,但 GLIE 本身不是 MC。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL7 · PDF 第 31–39 页照片重点相关从问题讲起 · 逐步算清

SARSA:使用实际的下一动作

On-policy TD control; SARSA

本节一步步会讲什么

已经有 Q 表,怎样不等整局结束就改进动作选择?

MC 控制要等完整回报。TD 告诉我们可以用“一步奖励+后面估计”提前更新。把同样思路用于 Q,就要多问一句:到了下一状态,到底接哪一个动作的 Q?SARSA 的回答是:接行为策略实际选出的下一动作。

因此名字由五个量组成:S 当前状态,A 当前动作,R 这一步奖励,S′ 下一状态,A′ 实际下一动作。它学习的是正在执行的策略,包括这个策略的探索行为。

先按真实时间顺序收齐五个量

① 在 Sₜ 用当前行为规则选 Aₜ;② 执行动作,收到 Rₜ₊₁ 并到 Sₜ₊₁;③ 若未终止,在新状态用同一行为规则选 Aₜ₊₁;④ 用这个已经选定的动作构造目标;⑤ 更新旧状态动作对 Q(Sₜ,Aₜ),然后继续执行已选出的下一动作。

Y_t=R_{t+1}+\gamma Q(S_{t+1},A_{t+1})
Q(S_t,A_t)\leftarrow Q(S_t,A_t)+\alpha[Y_t-Q(S_t,A_t)]

Q(Sₜ,Aₜ) 是这次要修改的一个条目;Q(Sₜ₊₁,Aₜ₊₁) 是读取的后继条目。α 是学习率,γ 是未来折扣。公式不要求事先知道转移概率。

为什么不能看到最大 Q 就立即拿来用?

设当前条目旧 Q=2,奖励为 1,γ=0.9,α=0.5。下一状态三个动作的 Q 为 (4,1,3)。行为策略这次实际选择了第二个动作,所以读取的下一值是 1,即使第一动作的 4 更大,也不能替换。

Y=1+0.9(1)=1.9,\quad\delta=1.9-2=-0.1,\quad Q_{new}=2+0.5(-0.1)=1.95

目标 1.9 表示考虑这次实际后续动作后,新信息比旧估计 2 稍低;于是只向下改 0.05。SARSA 不是把旧 Q 直接设为 1.9,也不是把“第二动作”误读成数值 2。

On-policy 同策略到底同在哪里?

数据中的当前动作和下一动作由行为策略产生,而目标也沿着该策略实际选出的下一动作评价未来。因此正在执行什么策略,就学习这个策略的后果。如果 ε-greedy 偶尔选择危险动作,这种风险会体现在样本和更新里。

例如在悬崖边行走,当前最短路线可能紧贴悬崖;但后续探索偶尔失足会造成很大损失。SARSA 会把持续探索的影响算进价值,可能偏好更稳妥的路线。这是机制上的解释,不保证任意具体环境都出现同一种路线。

若下一状态就是终点呢?

没有下一动作需要选择,后继价值按 0 处理。若旧 Q=2、这步奖励为 −3、α=0.5,目标为 −3,更新为 2+0.5(−3−2)=−0.5。终止的是未来部分,不是这步奖励。

自己试一下

仍用下一状态 Q=(4,1,3),但实际选了第三个动作。其余旧 Q、奖励、γ、α 与上例相同,新 Q 是多少?

我想好了,展开答案与理由

读第三动作的数值 3,目标 1+0.9×3=3.7;误差 3.7−2=1.7;新 Q=2+0.5×1.7=2.85。选择了哪个后继动作,确实会改变 SARSA 的单次更新。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL7 · PDF 第 40–44 页从问题讲起 · 逐步算清

多步 SARSA 与 SARSA(λ)

n-step SARSA; State–action traces

本节一步步会讲什么

一步 SARSA 已经会了,怎样让更早的动作也快速得到反馈?

想象机器人先在 A 选 Right,到 B 再选 Up,最后到 C 才收到奖励。我们希望不仅评价 B 的 Up,也把较晚反馈传播给 A 的 Right。这可以从两个方向实现:向前多看几步奖励,或向后给曾经执行过的状态动作留迹。

这里沿用 RL6 的多步和 λ 思路,但学习对象从 V(s) 换成 Q(s,a)。因此必须记住“在哪个状态做了哪个动作”,不能只记到过哪个状态。

先看两步 SARSA 目标

G_t^{(2),Q}=R_{t+1}+\gamma R_{t+2}+\gamma^2Q(S_{t+2},A_{t+2})

前两项来自实际观察到的两次奖励。最后一项读取两步后、实际选定动作的 Q;不是该状态所有动作中的最大值。一般 n 步形式只是把真实奖励段延长。

G_t^{(n),Q}=\sum_{j=0}^{n-1}\gamma^jR_{t+j+1}+\gamma^nQ(S_{t+n},A_{t+n})

算一遍,分清目标和被更新的条目

假设当前条目 Q(A,Right)=2,接下来实际奖励为 1、2,γ=0.5;两步后实际选出的动作价值 Q(C,Up)=4,α=0.1。两步目标=1+0.5×2+0.5²×4=3。误差=3−2=1,因此只把原条目 Q(A,Right) 更新为 2.1。

即使 C 另一个动作的 Q=9,这个 SARSA 两步目标仍读实际 Up 的 4。若第二步已经终止,则只剩前两笔奖励,目标为 2,不再读取任何 C 动作值。

SARSA(λ) 的迹为什么有两个下标?

e_t(s,a)=\gamma\lambda e_{t-1}(s,a)+\mathbf{1}\{S_t=s,A_t=a\}

e(s,a) 是这一对状态动作的迹。旧迹先衰减;当前实际执行的那一对加 1。同一个状态 A 若先后执行 Left 和 Right,会在两个不同条目留下迹。

Q(s,a)\leftarrow Q(s,a)+\alpha\delta_t e_t(s,a)

这里 δₜ 使用 SARSA 的一步误差 r+γQ(s′,实际 a′)−Q(s,a),而不是 V 的误差。一次误差可能同时调整多个有迹条目。

一次迟到的误差如何分配?

设 γ=0.5、λ=0.8,乘积为 0.4。上一步在 (A,Right) 留下迹 1;这一步执行 (B,Up),于是旧迹变为 0.4,当前迹为 1。若本次 δ=2、α=0.1,(A,Right) 增加 0.1×2×0.4=0.08,(B,Up) 增加 0.2。没有被执行的 (A,Left) 若迹为 0,就不受这次误差直接更新。

自己试一下

上述迹为 0.4 和 1,若误差改为 −3、α=0.2,两个条目各改变多少?

我想好了,展开答案与理由

(A,Right) 改变 0.2×(−3)×0.4=−0.24;(B,Up) 改变 0.2×(−3)×1=−0.6。负误差同样沿迹传播,只是把相关估计向下修正。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL7 · PDF 第 45–51 页从问题讲起 · 逐步算清

离策略评估与重要性采样

Behavior policy; Target policy; Importance sampling

本节一步步会讲什么

旧数据来自另一种走法,还能拿来评价我现在关心的走法吗?

假设过去为了多探索,左右动作各选一半。现在我们想评价一条新策略:80% 选左、20% 选右。把旧数据直接平均,算到的是旧走法的价值,不是新走法。Off-policy 离策略学习处理的就是“产生数据的规则”和“想评价的规则”不同的情况。

用 b 表示行为策略 behavior policy,即真正采集数据时的动作概率;用 π 表示目标策略 target policy,即要评价的动作概率。二者都是“给定状态如何选动作”的分布,不是奖励或价值。

最简单的一步例子:为什么要乘概率比?

一个动作后就终止:Left 的奖励固定为 4,Right 固定为 0。行为 b=(0.5,0.5),直接对行为经验平均,期望为 0.5×4+0.5×0=2。目标 π=(0.8,0.2) 的真实期望却是 0.8×4+0.2×0=3.2。

为了让旧样本代表新分布,给 Left 样本权重 0.8/0.5=1.6,给 Right 样本权重 0.2/0.5=0.4。在行为分布下加权求平均:0.5×1.6×4+0.5×0.4×0=3.2,正好回到目标策略。

\mathbb E_\pi[f(A)]=\mathbb E_b\left[\frac{\pi(A\mid s)}{b(A\mid s)}f(A)\right]

E 表示按某分布求平均;f(A) 是动作对应的被平均数值,例如回报;比值叫 importance-sampling ratio,重要性采样比。目标更常选的动作在旧数据中要放大,目标更少选的要缩小。

为什么覆盖条件不能省?

若目标会选 Left,但行为从来不选 Left,那么分母 b(Left|s)=0,我们既没有相关数据,也不能合法计算概率比。通常要求目标策略有正概率的动作,行为策略也必须有正概率。乘权重不能创造从未收集的证据。

完整轨迹为什么把多个比值相乘?

一条经历连续执行多个动作。它在目标策略与行为策略下出现概率的比值,要比较整串动作概率,因此逐步相乘。相同环境的转移部分在比值中抵消。

\rho_{t:T-1}=\prod_{j=t}^{T-1}\frac{\pi(A_j\mid S_j)}{b(A_j\mid S_j)}

Π 表示连乘;T 是终止时刻;ρ 是整段轨迹权重。例如两步比值为 2 和 0.5,整段权重就是 1;不是把它们相加成 2.5。长串乘积可能变得很大或很小,造成高方差。

普通 IS 与加权 IS,分母不一样

V_{ordinary}=\frac{1}{n}\sum_i\rho_iG_i,\qquad V_{weighted}=\frac{\sum_i\rho_iG_i}{\sum_i\rho_i}

有两条回报 4、2,权重 2、0.5。共同分子是 2×4+0.5×2=9。普通 IS 除以样本数 2,结果 4.5;加权 IS 除以权重和 2.5,结果 3.6。加权版本需权重和非零。

自己试一下

行为策略选某动作概率为 0.2,目标为 0.6,本次回报为 5。该一步权重与加权回报是多少?若目标概率为 0 呢?

我想好了,展开答案与理由

权重 ρ=0.6/0.2=3,加权回报为 15;这是一个加权样本,不表示真实奖励从 5 变成了 15。若目标概率为 0,则权重为 0,该动作样本对这个目标策略的估计不贡献回报。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL7 · PDF 第 52–54 页从问题讲起 · 逐步算清

离策略 TD:只校正当前一步

Off-policy TD prediction

本节一步步会讲什么

重要性采样可以修正整局,是否也能配一步 TD?

上一节用整条轨迹的动作概率比修正 MC 回报。TD 的目标只观察一步真实奖励,然后接上下一状态价值,因此可以考虑只校正当前这一步的动作选择。目的仍是用行为策略 b 的数据,评价目标策略 π;这里学的是 Vπ,不是在做 Q-learning 的最大化控制。

先假设当前表 V 已在估计目标策略的状态价值。当前状态 s 固定后,行为策略选出的动作未必符合目标策略分布,当前一步比值就用于修正这个差别。

把更新分成四个小任务

第一,查这次实际动作的目标概率 π(Aₜ|Sₜ) 和行为概率 b(Aₜ|Sₜ)。第二,两者相除得到 ρₜ。第三,按普通 TD 算目标 Y=r+γV(s′),再算误差 δ=Y−V(s)。第四,用 α、ρ 和误差相乘更新当前状态。

\rho_t=\frac{\pi(A_t\mid S_t)}{b(A_t\mid S_t)}
V(S_t)\leftarrow V(S_t)+\alpha\rho_t[R_{t+1}+\gamma V(S_{t+1})-V(S_t)]

ρ 是分布校正权重,不是新的学习率设定;不过在某一次样本里,它会放大或缩小实际更新。若 b 的概率非常小、π 不小,ρ 可能很大,单次更新就可能波动很大。

完整代入一个样本

旧 V(S)=2,下一状态 V(S′)=8,奖励 r=1,γ=0.5,α=0.1。行为这次动作的概率为 0.25,目标概率为 0.5,因此 ρ=2。TD 目标 Y=1+0.5×8=5;误差 δ=5−2=3;增量 α ρ δ=0.1×2×3=0.6;新 V=2.6。

V_{new}=2+0.1(2)(5-2)=2.6

不要把 ρ 乘在环境奖励上后就丢掉其他修正,也不要把它误解成“此动作发生了两次”。我们仍只观察了一条转移。

为什么课件还会出现另一种公式?

有一种写法把概率比放在目标上,而不是整个 TD 误差上:V←V+α[ρY−V]。同一组数值变成 2+0.1(2×5−2)=2.8,与 2.6 不同。两者单次样本并不相等。

\Delta V_1=\alpha\rho(Y-V),\qquad\Delta V_2=\alpha(\rho Y-V)

但给定当前状态与固定估值,若覆盖成立,行为分布下 Eb[ρ]=Σₐb(a|s)π(a|s)/b(a|s)=1。于是两种更新中的平均旧值项分别为 E[ρV]=V 和 V,条件期望相同。这是“平均关系相同”,不是每个样本数值相同。

做题怎样避免混用?

先抄题目指定的更新式,再把 ρ、Y、V、α 四个数标出来,尤其看括号是 ρ(Y−V) 还是 ρY−V。如果题目只写“off-policy TD”却给了课件公式,就按该公式的括号位置算。

自己试一下

旧 V=2、Y=5、α=0.1,如果目标策略从不选本次动作,ρ=0,两种单次更新分别是什么?

我想好了,展开答案与理由

整误差加权:2+0.1×0×(5−2)=2,不变。加权目标:2+0.1(0×5−2)=1.8。这个反例直观看出两种式子不是样本级别等价;不要因为它们在适当条件下期望相同,就写成每次更新相同。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL7 · PDF 第 55–64 页照片重点相关从问题讲起 · 逐步算清

Q-learning:行为可探索,目标取贪心

Off-policy TD control; Q-learning

本节一步步会讲什么

实际下一步可能探索,能否仍学习“以后都选最好”的价值?

SARSA 将实际下一动作放进目标,因此学习当前行为策略的后果。Q-learning 改问:这一步已经发生后,如果从下一状态开始按当前估计选择最好动作,当前状态动作应值多少?所以它读取下一行 Q 的最大值,而不是实际下一动作的值。

它仍可以用 ε-greedy 去收集经验,甚至这次真的选中了较差的下一动作。但更新目标假设的是下一步贪心选择。这就是行为策略和目标策略分开的核心。

在公式里定位“哪里变了”

Y_t=R_{t+1}+\gamma\max_b Q(S_{t+1},b)
Q(S_t,A_t)\leftarrow Q(S_t,A_t)+\alpha[Y_t-Q(S_t,A_t)]

b 只是遍历下一状态可选动作的临时字母,不是本页的行为策略 b(·|·) 函数;看语境即可区分。maxb 返回该行最大的 Q 数值。若要输出动作,才使用 argmax。

与 SARSA 用同一份数据比较

旧 Q(S,A)=2,r=1,γ=0.9,α=0.5。下一行 Q=(4,1,3),实际下一动作是第二个。Q-learning 先比较 4、1、3,最大为 4;目标=1+0.9×4=4.6;误差=4.6−2=2.6;新 Q=2+0.5×2.6=3.3。

Q_{new}=2+0.5[1+0.9(4)-2]=3.3

SARSA 则读实际第二动作的 1,目标 1.9,更新到 1.95。两种算法必须各自从旧 Q=2 开始,不能先把 SARSA 算出的 1.95 送进 Q-learning,除非题目明确要求连续运行。

为什么它是 off-policy?

行为策略负责“真的怎么走”,可能为了探索选第二动作;目标策略负责“学的是怎样继续走的价值”,这里的 max 对应贪心后续选择。二者可以不同,所以称离策略。Off-policy 不意味着数据不能来自当前策略,也不是说完全不探索。

悬崖例子到底在比较什么?

若最短路线靠近悬崖,完全贪心沿路线走可能回报很好;但 ε-greedy 训练中偶尔探索会跌落,真实训练回报可能很差。Q-learning 的目标仍学习贪心后续路线;SARSA 会把探索跌落的后果纳入当前策略价值,可能选择更安全路线。

因此比较结果时要先问:是在比较带探索的训练回报,还是训练结束后关闭探索的贪心执行回报?两个指标不同,不应混为一句“哪种算法更好”。

终止与负数,两个计算小坑

下一状态终止时,未来项是 0,目标只有 r。若下一行 Q 全为负数,例如 (−5,−2,−4),最大是 −2,不是绝对值最大的 −5。选动作是在最大化回报,不是在最大化损失绝对值。

自己试一下

旧 Q=−3,r=−2,γ=0.5,α=0.2,下一行 (−2,−4,−1)。非终止时 Q-learning 新值是多少?

我想好了,展开答案与理由

先取最大 −1,目标 −2+0.5×(−1)=−2.5;误差 −2.5−(−3)=0.5;新值 −3+0.2×0.5=−2.9。目标虽然仍为负,却比旧估计更好,所以更新向上。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL7 · PDF 第 65–66;关联 RL6 页从问题讲起 · 逐步算清

把控制算法的目标放在一张表里

MC control; SARSA; Q-learning

本节一步步会讲什么

看到一串公式不知道选哪个,先只问“未来那部分从哪里来”

很多控制算法的最后一步都形如 Q新=Q旧+α(目标−Q旧)。真正容易搞错的是目标。先别急着代学习率,把目标拆成“本步奖励”和“之后怎样继续”的部分,就能把 MC、SARSA、Q-learning 区分开。

Expected SARSA 在这里作为对照补充:它不像 SARSA 只用实际选中的下一动作,也不像 Q-learning 只取最大,而是按指定策略把下一行 Q 平均。

先明确同一份数据里每个量的身份

旧 Q(S,A)=2,当前奖励 r=1,γ=0.9,α=0.5。下一状态三个动作 Q=(4,1,3),策略概率 π=(0.8,0.1,0.1),实际选择了第二动作。若继续经历一笔奖励 2 后终止,则从当前起完整回报为 1+0.9×2=2.8。

这里 4、1、3 是估计的长期动作价值;0.8、0.1、0.1 是选动作概率;最后实际奖励 2 则是本局发生的真实数值。三者不能互相替换。

四种目标依次构造

MC 看完整真实回报:目标 2.8,不读取下一行 Q。SARSA 看实际下一动作:第二动作的估计为 1,所以目标 1+0.9×1=1.9。Q-learning 看最大估计 4,所以目标 4.6。

Expected SARSA 先按策略平均下一行:0.8×4+0.1×1+0.1×3=3.6,再加当前奖励与折扣:1+0.9×3.6=4.24。

Y_{Expected}=r+\gamma\sum_b\pi(b\mid s')Q(s',b)

Σ 遍历下一状态所有动作,π(b|s′) 是各动作概率;概率乘相应动作值,再相加得到期望。这里没有对环境所有下一状态再平均,因为本步 s′ 已经由这条样本确定。

目标不同,会怎样影响最终更新?

算法采用的目标从旧 Q=2、α=0.5 算出的新 Q
MC完整样本回报 2.82+0.5×0.8=2.4
SARSA1.92+0.5×(−0.1)=1.95
Q-learning4.62+0.5×2.6=3.3
Expected SARSA4.242+0.5×2.24=3.12

这些是各算法独立从相同初值出发的一次更新。MC 通常更晚才能得到完整目标;本表是在该局已经结束后比较,不能说第一步刚走完就知道未来奖励 2。

考试遇到题目,按这个顺序定位

先看有没有完整回合与每次回报,可能是 MC;若给了“实际下一动作”,要判断是否指定 SARSA;若公式或算法名要求 max,使用 Q-learning;若要求按下一策略概率平均,使用 Expected SARSA。最后检查终止:终止时这些一步自举目标都只剩 r。

自己试一下

若下一动作改成第三个,其他估计与策略概率暂时固定,SARSA、Q-learning、Expected SARSA 的目标哪些会变?

我想好了,展开答案与理由

SARSA 改读第三动作值 3,目标变成 1+0.9×3=3.7。Q-learning 仍取最大 4,目标仍 4.6;Expected SARSA 仍按同一策略概率求平均,目标仍 4.24。MC 还取决于这次动作之后实际产生的完整奖励,不能仅凭动作编号确定。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL8 · PDF 第 3–16 页照片重点相关从问题讲起 · 逐步算清

价值函数近似:从一张大表变成一个函数

Value function approximation; Generalization

本节一步步会讲什么

如果每一个位置、速度都不同,价值表该有多大?

在小迷宫里,可以给每个格子存一个 V,或给每个格子每个方向存一个 Q。可是一辆车的状态包含位置和速度:位置 1.001 与 1.002 不同,速度也能连续变化。若每个组合都单独建一个表格条目,不仅存不下,也不可能让每个条目都被充分访问。

因此我们希望学一个计算规则:输入状态,输出价值估计。它用少量共享参数概括很多状态,这叫 value function approximation,价值函数近似。

先从一个非常简单的函数想起

假设一个已固定策略的导航任务中,“离终点距离”是有用信息。用 d(s) 表示状态 s 的距离,用 w₀、w₁ 两个可调整数描述价值:预测=基准值 w₀+距离系数 w₁×距离。它未必能准确表达所有复杂地形,但比为每个连续位置单独存值更紧凑。

\hat v(s,w)=w_0+w_1d(s)

帽子表示估计,w=(w₀,w₁) 是参数,s 是输入状态,d(s) 是从状态提取的特征。真实想估计的仍然是固定策略价值 vπ(s),任务没有因为换表示方法而改变。

数字例子:一次参数改变,为什么多个状态都会变?

设 w₀=0、w₁=−2。距终点 1、2、3 个单位的状态,预测依次为 −2、−4、−6。负数可表示每步付出成本,距离更远一般更亏。

若根据新经验把距离系数改为 −1.5,三个预测同时变为 −1.5、−3、−4.5。即使你刚刚只在其中一个状态采样,所有使用同一系数的状态都受影响。这就是共享参数带来的 generalization,泛化。

这里仅示范“改参数会影响哪里”,不是声称 −1.5 必然由某条更新公式算出;下一节将讲怎样根据误差有方向地修改参数。

泛化为什么既有好处,也有风险?

好处是:两个相近状态可能有相近价值,在一个位置收集的经验可以帮助另一个没访问过的位置。风险是:如果两个距离相同的状态,一个前面有墙、一个没有,单靠距离特征会把它们混成同一个预测,无法同时拟合真实价值。

这称表示能力或特征问题。增加数据不一定能修复一个根本没有记录“是否被墙阻挡”的表示;需要更合适的特征或更有表达能力的函数。

与环境模型有什么区别?

\hat v(s,w)\approx v_\pi(s),\qquad\hat q(s,a,w)\approx q_\pi(s,a)

左式预测从状态出发的长期回报;右式还指定第一动作。环境模型则预测“下一状态和即时奖励是什么”。虽然两者都可用神经网络表示,但预测对象不同。用神经网络近似 Q,仍然可以是 model-free。

常见函数类包括线性模型、树、核方法和神经网络。本课程进一步使用可微函数,是因为能用梯度说明每个参数怎么改变输出,进而通过误差学习。

自己试一下

若预测规则是 v̂=1−2d,两个状态距离分别为 2 和 5,它们的估值是多少?把系数 −2 改成 −1,哪个状态变化更大?

我想好了,展开答案与理由

原估值为 1−4=−3、1−10=−9。新估值为 1−2=−1、1−5=−4。分别增加 2、5,较远状态变化更大,因为它乘的距离特征更大。这说明同一个参数更新并不让所有状态增加相同数值。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL8 · PDF 第 17–23 页从问题讲起 · 逐步算清

平方误差、梯度下降与随机梯度

MSE; Gradient descent; SGD

本节一步步会讲什么

有了一个可调函数,怎样让它的预测靠近经验目标?

假设函数预测某状态价值为 2,而本次经验提供的目标为 5。我们知道它低估了 3,但一个复杂函数有很多参数,不能随便把每个参数都加 3。因为有些参数增加会抬高预测,有些会降低预测,有些对当前状态几乎没影响。

梯度 gradient 就是记录这些“影响方向和敏感程度”的工具。对于每个参数,它告诉我们:把该参数略微增加一点,当前预测大约会增加多少。多个参数时,梯度是一串数,也就是向量。

先用平方误差定义什么叫预测不好

\ell(w)=\frac12[Y-\hat v(s,w)]^2

Y 是这次目标,v̂ 是预测,w 是参数。平方让高估和低估都受到惩罚,也让大误差受到更大惩罚;前面的 1/2 只是为了求导时抵消平方带来的 2,不会改变哪个预测最好。

若目标 5、预测 2,残差 Y−v̂=3,损失为 3²/2=4.5。损失不是奖励,它是我们为训练函数定义的“预测偏差有多大”的指标。

从最简单的一参数函数亲自算梯度

设 v̂(s,w)=w,所以 w 增加 0.1,预测就增加 0.1,预测对 w 的导数为 1。平方误差对 w 的导数为 (v̂−Y)×1=2−5=−3。负导数表示:往增加 w 的方向走,损失会局部降低。

梯度下降规定 w新=w旧−α×损失梯度。取 α=0.1,得到 w新=2−0.1×(−3)=2.3。新损失=(5−2.3)²/2=3.645,确实比 4.5 小。

为什么强化学习常写成加号?

\nabla_w\ell=(\hat v-Y)\nabla_w\hat v
w\leftarrow w+\alpha[Y-\hat v(s,w)]\nabla_w\hat v(s,w)

损失梯度里有 v̂−Y,梯度下降再减去它,于是可以改写为加上 Y−v̂。它依然是在下降损失,不是看到加号就变成梯度上升。注意目标 Y 在本次求导中被当成固定数,这个前提到 TD 目标中需要特别讨论。

GD、SGD、小批量,到底差在哪里?

如果有很多样本,可以对所有样本损失求平均,得到 mean squared error,均方误差,再算完整平均梯度,这是梯度下降 GD。SGD 每次用一个抽到的样本近似这个平均方向,计算便宜但会有波动。Mini-batch 用一小批样本的平均梯度,是二者之间的常见折中。

L(w)=\frac12\mathbb E[(Y-\hat v(S,w))^2]

E 表示按训练样本分布平均;大写 S 表示随机抽到的状态。一次 SGD 使某个样本误差下降,不代表每次都会让所有样本的总损失都下降;学习率太大也可能越过合适区域。

自己试一下

一参数预测 v̂=w,目标 1,旧 w=3,α=0.25。损失梯度是多少,新参数是多少?

我想好了,展开答案与理由

损失梯度为 (3−1)×1=2;梯度下降得到 3−0.25×2=2.5。也可写成 3+0.25(1−3)=2.5。当前预测高于目标,所以参数应该下降,两个写法方向一致。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL8 · PDF 第 24–28、37 页从问题讲起 · 逐步算清

线性特征:参数为什么更新不同幅度?

Linear approximation; Feature vector

本节一步步会讲什么

怎样把一个状态变成函数能使用的一串数字?

仍以导航为例,我们可以从状态提取“恒为 1 的基准特征”和“离终点距离”。把这串描述记为 x(s),称 feature vector,特征向量;对应的可学习系数记为 w。线性近似把对应位置相乘,再把结果加起来。

恒为 1 的特征让模型可以学习一个与距离无关的基准值。特征是怎样描述状态,权重是每个描述对价值有多大贡献,二者不能混为同一组待更新数。

\hat v(s,w)=w^Tx(s)=\sum_i w_i x_i(s)

上标 T 表示转置,wᵀx 是点积的简写;i 遍历特征维度。若只有两维,就展开为 w₁x₁+w₂x₂,不是把两个向量各自求和再相乘。

先算预测,再问每个参数怎么影响它

设 x=(1,2),w=(0.5,1)。预测为 0.5×1+1×2=2.5。若第一权重增加 0.1,预测增加 0.1×1=0.1;若第二权重增加 0.1,预测增加 0.1×2=0.2。因此两个参数的敏感程度不同,恰好分别等于各自特征 1、2。

\nabla_w\hat v(s,w)=x(s)

一次完整更新,每一步都写出来

给定目标 Y=4、学习率 α=0.1。当前残差=4−2.5=1.5。共同的 α×残差=0.15,再乘特征向量,两个参数增量分别是 0.15×1=0.15、0.15×2=0.3。

w_{new}=(0.5,1)+0.1(4-2.5)(1,2)=(0.65,1.3)

把新参数重新带回原状态,预测变为 0.65×1+1.3×2=3.25。预测增加了 0.75,并不是仅增加 α×残差=0.15,因为这次改变的是两个共享参数,第二维还被特征 2 再次放大。

可以直接看出预测变化为什么是 0.75

\Delta\hat v=\alpha(Y-\hat v)x^Tx=0.1(1.5)(1^2+2^2)=0.75

此式只是在固定同一特征、线性函数的一次更新里,把参数增量代回预测得到的关系。它提醒我们特征尺度会影响有效更新强度;并不要求初学时把它作为另一个必须背诵的公式。

表格法原来是一个特殊情况

若有三个状态,给 A 特征 (1,0,0)、B 特征 (0,1,0)、C 特征 (0,0,1),这叫 one-hot。预测 A 时只读取第一个权重,更新 A 时梯度也只在第一维非零,因此只改 A 对应权重,和表格 V(A) 完全一样。

普通共享特征的不同状态可能激活同一维,所以一次更新会影响它们,这就是上一节提到的泛化与干扰。

自己试一下

x=(1,0),旧 w=(2,5),目标 4,α=0.25。新参数和新预测是多少?第二个权重为什么不变?

我想好了,展开答案与理由

旧预测=2×1+5×0=2,误差为 2,增量=0.25×2×(1,0)=(0.5,0)。新参数 (2.5,5),新预测 2.5。第二特征为零,当前预测对第二权重不敏感,所以这一个样本不直接更新它。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL8 · PDF 第 29–32 页从问题讲起 · 逐步算清

用 MC 或 TD 训练近似价值函数

MC approximation; Semi-gradient TD

本节一步步会讲什么

前面说的目标 Y,在强化学习里从哪里拿?

监督学习常给一张“输入与正确答案”的表。强化学习没有直接标注每个状态的真实长期价值,但可以从经历构造目标:MC 用完整回报,TD 用一步奖励加后继预测。然后把目标与当前函数输出比较,通过梯度改共享参数。

学习对象仍是固定策略价值,只是原先更新表格中的一个 V(s),现在更新参数 w,再由参数计算很多状态的 V̂。

用同一个线性模型,先算 MC 更新

当前状态特征 x(s)=(1,2),参数 w=(0.5,1),预测为 2.5。假设完整经历的奖励为 1、2,γ=0.5,第二步后终止;MC 回报 G=1+0.5×2=2。取 α=0.1,误差为 2−2.5=−0.5,参数增量=0.1×(−0.5)×(1,2)=(−0.05,−0.1),新 w=(0.45,0.9)。

w\leftarrow w+\alpha[G_t-\hat v(S_t,w)]\nabla_w\hat v(S_t,w)

G 来自完整实际奖励,不包含当前参数预测。因此在把收集好的样本作为固定训练数据时,目标不需要随着本次参数求导而变化。

再独立从原参数计算 TD,不要接着用 MC 的结果

仍从 w=(0.5,1) 出发,当前特征 (1,2),下一状态特征 x(s′)=(1,1)。第一步奖励 r=1,γ=0.5。下一状态预测是 0.5×1+1×1=1.5,所以 TD 目标=1+0.5×1.5=1.75。当前预测 2.5,误差 δ=−0.75。

\delta_t=R_{t+1}+\gamma\hat v(S_{t+1},w)-\hat v(S_t,w)

把当前特征作为预测梯度,增量=0.1×(−0.75)×(1,2)=(−0.075,−0.15),新 w=(0.425,0.85)。它与 MC 不同,是因为目标信息不同,不是线性求导换了规则。

“半梯度”究竟省略了哪一部分?

TD 目标 Y=1+0.5V̂(s′,w) 也依赖同一组 w。若参数改变,当前预测会变,目标里的下一状态预测也会变。Semi-gradient 半梯度更新先把本次算出的目标 1.75 固定住,只沿当前预测 V̂(s,w) 的梯度更新,不对目标内部那一项求导。

w\leftarrow w+\alpha\delta_t\nabla_w\hat v(S_t,w)

“半”不是把梯度除以 2,也不是只更新一半参数;它指没有把目标对参数的依赖纳入这次求导。若完整对平方 TD 残差求导,就会涉及 x(s)−γx(s′),那是不同更新,不能随意替换课件算法。

为什么要特别关注稳定性?

共享参数使一次更新影响多个状态;自举使目标也依赖当前估计;离策略又可能让学习目标与采样分布不匹配。这三者组合常被称为 deadly triad,致命三要素,可能带来不稳定。这是需要检查条件与算法设计的原因,不是说一出现神经网络就一定失败。

自己试一下

一维预测 V̂(s,w)=w×x,旧 w=1,当前 x=2,下一 x′=3,r=0,γ=0.5,α=0.1。半梯度 TD 新 w 是多少?

我想好了,展开答案与理由

当前预测 2,下一预测 3,目标 1.5,δ=−0.5。当前预测梯度为 x=2,所以 w新=1+0.1×(−0.5)×2=0.9。不能把目标也求导后擅自改成使用 2−0.5×3=0.5 的梯度因子;那不再是题目指定的半梯度更新。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL8 · PDF 第 33–39 页从问题讲起 · 逐步算清

动作价值近似与近似 SARSA

Action-value approximation; Semi-gradient control

本节一步步会讲什么

状态价值函数能评价位置,但选动作还需要区分“在这里做什么”

RL7 的表格 Q 每一格对应一个状态动作对。现在状态多到无法存表,就用函数 q̂(s,a,w) 表示同一对象。输入要包含状态和动作,或者让网络输入状态后同时输出所有离散动作的 Q;无论具体实现怎样,输出都代表长期动作价值,不是动作概率。

动作价值函数既用来比较动作、产生行为,也用来构造后续目标。我们把表格 SARSA 的读取 Q 改为计算 q̂,再把更新一个格子改为更新共享参数。

先看一个可手算的动作特征

用两维特征 x(s,a)。假设当前执行动作的特征为 (1,2),旧参数 w=(0.5,1),当前预测=2.5。下一状态实际选定动作的特征为 (1,1),其预测=1.5。另一个未选动作可能有不同特征,不能替换进 SARSA 目标。

观察奖励 r=1,γ=0.5,α=0.1。目标=1+0.5×1.5=1.75;误差=1.75−2.5=−0.75;当前动作预测对参数的梯度为 (1,2)。因此参数增量=(−0.075,−0.15),新参数 (0.425,0.85)。

\delta_t=R_{t+1}+\gamma\hat q(S_{t+1},A_{t+1},w)-\hat q(S_t,A_t,w)
w\leftarrow w+\alpha\delta_t\nabla_w\hat q(S_t,A_t,w)

每个符号沿用 SARSA 的时序:当前 Sₜ、Aₜ 是被学习的对象;下一 Aₜ₊₁ 是行为策略已选的实际动作;w 是执行这次更新前的参数。目标在本次梯度计算中冻结,这仍是半梯度。

为什么这次更新不只是把一个 Q 数字改掉?

新参数代回当前特征,q̂=0.425+0.85×2=2.125;代回下一状态实际动作特征,q̂=0.425+0.85=1.275。一次更新同时改变了两个预测,因为它们共用 w。

反过来,若用动作分块的 one-hot 特征,让不同动作的参数完全分开,有些更新就不会跨动作影响。影响范围由特征和网络共享结构决定,不是 q̂ 符号本身保证的。

真实运行时按什么顺序?

先用当前 q̂ 通过 ε-greedy 等规则选动作,执行后观察奖励与下一状态,再选出实际下一动作,读取本次需要的两个预测,算一个固定 TD error,最后更新参数并继续。若到终点,不选择下一动作,未来项置零。

从这里怎样走到近似 Q-learning 与 DQN?

把目标里的实际下一动作值换成 maxb q̂(s′,b,w),就得到类似 Q-learning 的最优性自举目标。用深度神经网络表示 q̂,并配经验回放和目标网络等机制,就连接到后面的 DQN。目标选择和函数表示是两个维度,不能把“有神经网络”当成某一个固定算法名字。

自己试一下

若一维 q̂(s,a,w)=w×x(s,a),旧 w=2,当前特征为 1,下一实际动作特征为 2,r=0,γ=0.5,α=0.1,新参数是多少?

我想好了,展开答案与理由

当前预测为 2,下一实际动作预测为 4,目标=0+0.5×4=2,误差为 0。因此参数仍为 2。下一预测较大并不一定意味着当前应上升;要先折扣并加奖励后,再和当前预测比较。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL8 · PDF 第 40–51 页从问题讲起 · 逐步算清

Mountain Car、粗编码、瓦片编码与 RBF

Coarse coding; Tile coding; Radial basis functions

本节一步步会讲什么

小车离山顶更远,为什么有时反而是好动作?

Mountain Car 是一辆动力不足的小车在两山之间运动。它可能无法直接一直向目标山顶推,而需要先向反方向运动,积累速度,再借动量冲上去。只看“眼下距目标多远”会误判,因此状态通常至少包含位置与速度。

这也提醒我们:函数近似的特征应保留影响未来回报的信息。两个位置相同、速度方向相反的状态,价值可以差很多;如果特征只记录位置,模型会把它们混淆。

连续状态怎样转换成可以学习的特征?

一个办法是把位置—速度平面分成区域。Coarse coding 粗编码使用多个可能重叠的区域,每个区域对应一个特征:状态在区域内记 1,在外记 0。同一个状态可以同时激活多个特征,附近状态也可能共享其中一些,因此学习能局部传播。

例如有三个区域特征,某状态落在第 1、3 区域,x=(1,0,1)。若权重 w=(2,5,−1),预测为 2×1+5×0+(−1)×1=1。权重 5 没有贡献,因为第二个区域未激活。

瓦片编码为什么要用多个错开的网格?

Tile coding 用多层网格 tilings,每层都把状态平面切成不重叠小格;不同层稍微错开。一个状态在每一层恰好激活一个瓦片,所有层的激活合起来构成稀疏特征。

设有两层网格,状态 s 激活的两个权重为 1.2、−0.2,预测为 1.0。附近 s′ 可能与 s 在第一层落同格,在第二层落不同格,因此共享第一个权重但不共享第二个。一次训练既帮助附近状态,也保留局部差别,避免只有一层粗网格时跨边界突然完全不共享。

把一个瓦片样本更新完整算出来

若当前两个激活特征均为 1,其他为 0,目标 Y=3,α=0.1,误差=3−1=2。每个激活权重增加 0.1×2×1=0.2,分别变为 1.4、0,当前预测变为 1.4。

两个权重一起增加,预测总共升了 0.4。实践中常结合激活瓦片数量调整学习率;不能想当然认为当前预测只增加 α×误差=0.2。

RBF 让激活程度从“是或否”变成平滑变化

Radial basis function,径向基函数,按状态离某个中心有多远给出响应。越靠近中心,特征越接近 1;越远,越接近 0。

x_i(s)=\exp\left(-\frac{\|s-c_i\|^2}{2\sigma_i^2}\right)

cᵢ 是第 i 个中心,σᵢ 控制影响范围,双竖线表示距离,exp 表示指数函数。用一维例子看:中心 c=0、宽度 σ=1,状态 s=0 时特征为 exp(0)=1;s=1 时为 exp(−1/2)≈0.6065;s=2 时为 exp(−2)≈0.1353。

三种表示最终怎样用来预测价值?

它们都先生成 x(s),再代入 wᵀx(s)。粗编码和瓦片编码多是稀疏 0/1 特征,RBF 是平滑连续响应。用于 Q 时还需把动作区分开,例如不同动作使用不同参数块,或使用状态动作特征。

自己试一下

一个状态激活 3 个瓦片,当前预测为 2,目标为 5,α=0.1,每个激活特征都是 1。各激活权重增加多少,当前预测一共增加多少?

我想好了,展开答案与理由

误差为 3,每个激活权重增加 0.1×3=0.3;三项求和使预测共增加 0.9,变成 2.9。未激活权重不变。这个结果再次说明“参数更新步长”和“最终预测变化”不总是同一个数。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL9 · PDF 第 3–8 页从问题讲起 · 逐步算清

从人工特征到神经网络表示

Deep neural networks; Representation learning

本节一步步会讲什么

先想一个问题:游戏截图怎样变成“往左还是往右”?

前面可以给每个状态存一个价值,但截图有成千上万个像素,球只移动一个像素也会得到另一张图片。逐张图片建表既存不完,也难把“在左边学会避障”的经验用到相似画面。我们需要一个函数:输入画面,输出动作好坏的预测。神经网络就是一种可学习的函数,不是另一个 Bellman 方程。

线性近似往往要求人先选特征,例如球的位置、速度和与球拍的距离。深度网络把部分“提取特征”的工作也交给训练:前面的层将原始输入变成中间表示,后面的层再利用它作预测。“深”指多层变换,不表示网络天然懂任务。

先认符号,再看一层网络

x 是输入数字向量,W 是混合输入的权重矩阵,b 是偏置,h 是输出。ReLU 把负数截为零、正数保留,逐个分量运算。

h=\max(0,Wx+b)

两个输入完整走一遍

设 x=(2,-1)。两个神经元的权重分别为 (1,1)、(-1,2),偏置为 0、1。第一个算 1×2+1×(-1)+0=1,ReLU 后仍为 1;第二个算 -1×2+2×(-1)+1=-3,ReLU 后变成 0,所以隐藏表示 h=(1,0)。

下一层若用权重 (3,-2)、偏置 1 预测某动作价值,输出就是 3×1-2×0+1=4。不是人告诉它“这个特征就是球速”,而是参数决定如何组合输入;训练将根据误差调整这些参数。

它怎样知道自己算错了?

假设经验给出目标 y=6,网络输出 4。半平方损失为 (4-6)²/2=2。损失对输出的导数是 4-6=-2,表示稍微增加输出会减小损失。链式法则继续计算“某权重改变一点,会让输出改变多少”;反向传播高效计算这些导数;梯度下降沿减小损失的方向改权重。

为看清方向,暂时只训练最终偏置。学习率 0.1 时,新偏置=1-0.1×(-2)=1.2,新输出=4.2,向目标靠近。完整网络会调整许多共享参数,因此还可能改变其他状态的预测。

遇到网络图时,先找哪三件事?

先找输入代表什么,再找输出代表什么,最后找训练目标从哪里来。中间画了许多方框,并不改变这三个基本问题。若输出是每个动作的预计回报,就是价值近似;若输出经 softmax 后成为动作概率,就是策略表示。不要因为两张网络图长得相似,就认为它们执行的是同一个学习任务。

自己试一下

输入 x=(1,3),权重 (2,-1),偏置 0。ReLU 后输出多少?不用 ReLU 又是多少?

我想好了,展开答案与理由

加权和是 2×1-1×3=-1。不用 ReLU 输出 -1;用 ReLU 输出 max(0,-1)=0。非线性让多层网络不再只是可合并的一串线性变换。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL9 · PDF 第 9–21 页从问题讲起 · 逐步算清

CNN:局部连接、共享权重与特征图

Convolution; Stride; Padding; Pooling

本节一步步会讲什么

为什么要在图像上滑动一个小窗口?

边缘可以出现在屏幕左边,也可以在右边。若每个位置都单独学习一套边缘检测器,既浪费参数,也难共享经验。卷积网络 CNN 用同一个小计算模板在各位置重复使用:同样的图案出现在不同位置,都可以被同一组权重识别。

模板叫卷积核 kernel 或 filter。窗口每移动一次,把覆盖的输入与对应权重相乘再求和,得到一个输出数;所有位置的结果组成特征图 feature map。深度学习库常把“不翻转核”的运算也称 convolution,本节按这个常见约定计算。

先做一个一维例子

输入 [1,2,0,3],核 [1,-1],偏置 0,步幅 stride=1,无填充。第一次覆盖 [1,2],输出 1×1+2×(-1)=-1;第二次覆盖 [2,0],输出 2;第三次覆盖 [0,3],输出 -3。所以特征图为 [-1,2,-3]。三个输出用了同样两个权重,不是六个独立权重。

步幅改为 2,只使用起点 0、2 的窗口,输出 [-1,-3]。Padding 则先在边界补值,让核也能覆盖靠近边缘的位置,并改变输出尺寸。

二维尺寸怎么数?

n 是输入边长,k 是核边长,p 是两端各补的长度,s 是步幅;这里不使用扩张卷积。可放下完整核的起点数就是输出边长,向下取整表示最后不完整的窗口不算。

n_{out}=\left\lfloor\frac{n+2p-k}{s}\right\rfloor+1

28×28 输入、5×5 核、p=0、s=1:边长为 28-5+1=24,输出 24×24。若 s=2,则 floor(23/2)+1=12,不是 12.5。

输出多,不代表参数同样多

假设有 3 个输入颜色通道、8 个 5×5 核。每个核覆盖全部 3 通道,需要 75 个权重和 1 个偏置,即 76 个参数;8 个核共 608 个。每个核在所有位置共享这些参数,并产生一张 24×24 特征图,整体输出为 24×24×8。

Pooling 是局部聚合,例如 max pooling 把 [1,4,2,3] 压成最大值 4,通常没有这种可训练卷积权重。全连接层再把提取的信息映射到动作价值等最终输出。

为什么共享参数有实际帮助?

设某个核已经学会识别“相邻像素由暗变亮”,它在画面左上角和右下角都会执行同一个计算。因此识别一种局部模式,不必在每个位置重新学一遍。不过识别局部模式不等于已经理解整幅画面:后面的层还要把位置和多个局部特征组合起来。卷积提供一种适合图像结构的归纳偏好,不是无需数据的视觉理解保证。

自己试一下

10×10 单通道输入,3×3 核,步幅 1、无填充,共 4 个核且各有一个偏置。输出形状与参数数是多少?

我想好了,展开答案与理由

边长 10-3+1=8,所以输出 8×8×4。每核参数 3×3×1+1=10,4 个核共 40。256 个输出数不代表 256 套参数。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL9 · PDF 第 22–31、35–37 页照片重点相关从问题讲起 · 逐步算清

DQN:网络输出动作价值

Deep Q-network; Neural Q-learning

本节一步步会讲什么

先接回 Q-learning:究竟想学什么?

Q-learning 问:“现在在 s,第一步做 a,之后尽量做得好,预计得到多少累计奖励?”小问题可把答案放进 Q 表。游戏截图状态太多,DQN 用神经网络代替这张表,但仍学习动作价值,不是直接输出动作概率。

把当前画面或适当组合的连续画面输入网络,最后为每个离散动作输出一个数字。连续画面有时用于区分运动方向:只看一张图片可能不知道球速。状态信息是否充分是输入设计问题,不是把网络变大就一定解决。

读懂输出的符号

s 是状态,a₁…aₘ 是 m 个候选动作,θ 是在线网络全部可训练权重。Q(s,a;θ) 表示这组权重下的价值估计,分号用于区分输入和参数。

Q(s,\cdot;\theta)=(Q(s,a_1;\theta),\ldots,Q(s,a_m;\theta))

动作依次为 Left、Stay、Right,输出 (2,5,-1),意思是预计长期回报分别为 2、5、-1。最大值是 5,对应 Stay。三个数无需加起来等于 1,也允许负数。

从画面到学习,走完一次

第一步,算出 (2,5,-1)。第二步,按行为规则选动作。若 ε=0.3,均匀探索三个动作,Stay 概率为 0.7+0.3/3=0.8,其他各 0.1。假设这次恰好探索选择 Left。

第三步,环境返回奖励 1、下一状态 s′ 和终止标记,记录为 (s,Left,1,s′,done)。第四步,用这条经验训练时,只拿实际执行动作 Left 的预测与目标比较,而不是把三个输出都改成相同目标。

假设目标网络在 s′ 输出 (3,4,2),γ=0.5,未终止。目标 y=1+0.5×4=3;Left 当前预测为 2,差距为 1。训练用梯度把这一预测向 3 推动。由于参数共享,其他动作和状态的输出也可能跟着变化。

为什么还要回放与目标网络?

数据来自不断变化的行为策略,目标中又含有自己估计的未来价值,因此训练比固定标签回归复杂。经验回放改善数据使用,目标网络减慢目标变化;二者没有改变“学习 Q”的核心目的。

为什么训练时必须记住实际动作?

一次交互只告诉我们真正做出的动作发生了什么,并没有同时观察另外两个动作的真实后果。记录中的 a 决定哪一个当前输出与该样本目标比较。网络可能通过共享参数影响未执行动作,但那是泛化与参数耦合的结果,不能假装这一条经验同时给出了全部动作的监督答案。

自己试一下

网络输出 Left=-3、Stay=-1、Right=-5。贪心时选哪个?Stay 的选择概率是否等于 -1?

我想好了,展开答案与理由

选 Stay,因为 -1 最大,意味着预计亏得最少。Q 是价值而非概率。贪心规则可以给 Stay 概率 1;ε-greedy 的概率要另按探索规则计算。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL9 · PDF 第 32、37–38 页照片重点相关从问题讲起 · 逐步算清

经验回放:重用样本,减弱连续相关性

Experience replay; Replay buffer

本节一步步会讲什么

先想象连续练十道几乎相同的题

智能体连续十帧可能只看到同一条走廊,紧邻样本很相似。如果每次只用刚收到的那一帧训练,模型会连续往同一方向调整,其他场景很久得不到复习。另一方面,机器人交互昂贵,每条经验只用一次又浪费。Replay buffer 就像能反复抽取的经验题库。

里面存的是发生过什么,不是永远正确的标签

一条记录通常含 s、a、r、s′、done:起点、执行动作、真实奖励、后继、是否终止。环境事实保留下来;当前预测 Q 与训练目标 y 却会随网络变化,因此抽到记录后通常重新计算。不能把过去算出的 y 永远当固定正确答案。

四条记录怎样组成批次?

池里有①走廊向左、②走廊向右、③碰到障碍、④进入终点。均匀抽样时每条单次概率都是 1/4。大小为 2 的批次可能抽到①和④,下一次可能抽到②和③。是否放回由实现决定,但更新不再被迫沿原始时间顺序进行。

设某批两个目标为 3、-1,当前预测为 2、1。差距是 1、-2,平均半平方损失为 [1²+(-2)²]/(2×2)=1.25。两个样本共同提供梯度。以后再次抽到它们,预测和目标网络可能已经改变,就要重算损失。

为什么旧行为产生的经验还能用?

Q-learning 的目标评价贪心后续,不要求旧数据由当前贪心策略产生,这支持 DQN 使用回放的旧行为数据。但允许旧策略经验,不表示任何旧经验永远合适:若环境规则改变,旧转移可能过时;池太小也可能缺少关键情境。

一次真实动作获得一条经验,却能支持多次内部更新,这提高真实样本利用率;同时也消耗存储和计算。随机抽批减少连续相关性的影响,但不保证所有经验严格独立同分布,也不补回根本未探索过的数据。

自己试一下

未终止经验奖励 2、γ=0.5。第一次回放时目标网络的下一状态最大值为 4,第二次变成 6。两个目标是什么?奖励记录要改吗?

我想好了,展开答案与理由

目标依次为 2+0.5×4=4、2+0.5×6=5。真实奖励仍是 2,不应改写。改变的是对未来的估计,这解释了回放时为什么重新计算目标。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL9 · PDF 第 30–32、39–41 页照片重点相关从问题讲起 · 逐步算清

目标网络、损失函数与 DQN 训练步骤

Target network; Fixed targets; TD loss

本节一步步会讲什么

为什么训练目标也会移动?

普通图像分类可以把“猫”的标签视为固定答案。Q 学习的目标却含有“下一状态预计还能得多少”,这个数也是自己估出来的。如果当前预测改变,目标也由同一参数立即改变,训练像在追一个移动终点。目标网络给未来价值提供暂时较稳定的参考。

两套参数放在不同位置

在线参数 θ 计算当前 Q,持续接受梯度更新;目标参数 θ⁻ 通常隔一段时间从 θ 复制,负责下一状态的参考。减号不是“负参数”,只是表示延迟副本。两者结构可以相同,但两次同步之间参数不同。

先拆开一个样本的所有符号

i 是批内经验编号;rᵢ 是即时奖励;sᵢ、aᵢ 是真实起点与执行动作;s′ᵢ 是后继;dᵢ=1 表示真正终止,0 表示未终止;γ 是折扣;b 遍历后继状态的候选动作。

Y_i=r_i+\gamma(1-d_i)\max_bQ(s'_i,b;\theta^-)

先找目标网络下一行最大值,再乘折扣和终止掩码,最后加奖励。终止时未来部分整体乘零,进入终点得到的奖励仍保留。

完整算一条经验

r=1、γ=0.9,目标网络下一行 (2,5,3),未终止。最大值 5,折扣未来值 4.5,所以 Y=5.5。在线网络当前执行动作的预测若为 4,则 TD error=5.5-4=1.5,单样本半平方损失=1.5²/2=1.125。目标、误差、损失不是同一个量。

L(\theta)=\frac{1}{2B}\sum_{i=1}^{B}[Y_i-Q(s_i,a_i;\theta)]^2

B 是批次样本数,除以 B 是求平均。优化时把 Y 当常量,只更新在线网络。若为理解而假设 Q 就是一个独立参数 z,α=0.1 时 z 从 4 变为 4+0.1×1.5=4.15;完整神经网络的输出变化还取决于梯度与共享参数。

一轮训练的顺序

真实交互并入池 → 抽批 → 目标网络算 Y → 在线网络算当前实际动作预测 → 计算损失和梯度 → 更新 θ → 到预定时刻再同步 θ⁻。不要每个样本算完都立即让两个网络完全一致,否则失去延迟参考的作用。

“固定目标”固定到什么时候?

固定的是一段训练期间用于产生未来参考的那份参数,不是从训练开始到结束都不变。随着在线网络学到更多信息,需要定期把它复制给目标网络。更新太频繁会失去缓慢变化的参考,更新过慢则可能让目标陈旧;这属于训练设计中的取舍,而不是 Bellman 方程多出了一套真实价值。

自己试一下

沿用上例但经验真正终止。目标、TD error 和半平方损失各是多少?

我想好了,展开答案与理由

Y=1,当前预测仍为 4,因此误差=1-4=-3,损失=(-3)²/2=4.5。终止表示目标没有未来项,不表示在线预测已经等于零。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL9 · PDF 第 42–48 页从问题讲起 · 逐步算清

实验与消融:如何判断一个机制是否有用?

Ablation study; Training stability

本节一步步会讲什么

“加了组件后分高”,足以证明组件有用吗?

一套 DQN 使用回放、目标网络和深度表示,另一套去掉回放却训练两倍时间。分数不同可能来自回放,也可能来自训练预算。消融实验 ablation 尽量保持其他条件相同,只移除或改变一个组件,用来判断它在指定实验条件下的贡献。

先区分因素、控制条件与指标

因素是你打算比较的机制,例如是否有目标网络。控制条件包括环境、真实交互次数、网络规模、更新次数和评估方式。指标可能是平均回报、成功率,或达到某分数所需的真实样本。随机种子影响采样和训练,所以通常需要多次独立运行,而不是只报最好一次。

读一张小表

以下是教学数字,不是课件报告的成绩;三次运行采用相同预算与评估规则。

设置运行 1运行 2运行 3平均分
完整方法8101210
只去掉目标网络31087

完整方法平均 (8+10+12)/3=10,消融版本平均 (3+10+8)/3=7。结果支持目标网络在这组设置下有帮助,但不支持“每次运行都严格更好”:第二次两者同为 10。三个样本还不足以精确刻画所有波动,不能把平均差异自动当普遍定理。

样本效率与计算效率要分别看

若 A 用 1000 次真实交互、5000 次内部更新达到 10 分,B 用 2000 次交互、2000 次更新达到 10 分,A 更省真实样本,却用了更多更新。机器人实验可能特别在意交互成本;实时系统可能还在意处理时间。先看图的横轴是环境步数、训练步数还是运行时间。

回到课件实验应该怎样读?

面对“深度表示优于线性”或“回放改善稳定性”的图,依次问:是否只改一项?网络规模和预算一致吗?评估时用训练中的探索策略还是减少探索后的策略?是单游戏还是多个任务汇总?曲线是单次结果还是多次均值?这些问题限定结论的适用范围。

自己试一下

A 用 500 次交互、5000 次更新达到同样分数,B 用 1000 次交互、1000 次更新。能直接说 A 在所有意义上更高效吗?

我想好了,展开答案与理由

不能。A 的真实样本效率更好,但更新计算更多。没有单次更新成本和总用时,无法判断计算效率;应分别报告真实交互和内部计算预算。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL10 · PDF 第 3–13 页照片重点相关从问题讲起 · 逐步算清

最大化偏差、Double Q 与 Double DQN

Overestimation; Double Q-learning

本节一步步会讲什么

两个动作一样好,为什么取最大会高估?

两个动作真实价值都为 5,但估计有误差。一次估成 (4,6),另一次估成 (6,4),两种情况各一半。单看任一动作,估计平均都是 5,没有偏差;但每次取最大都得到 6。因此最大估计的平均为 6,比真实最大值 5 高。

问题不只是估计会错,而是 max 更容易挑中碰巧向上错的那个。这个偏高数字再通过自举传给前一状态,就可能继续传播。

\mathbb E[\max_iX_i]\geq\max_i\mathbb E[X_i]

Xᵢ 表示第 i 个随机估计,E 表示重复后的平均。先取最大再平均,与先平均再取最大,是不同操作。

解决思路:选择与评价分工

Double Q-learning 学两组估计,用一组决定动作,再用另一组评价这个动作,按算法交替学习两组值。Double DQN 利用在线网络 θ 和目标网络 θ⁻:在线网络选动作编号,目标网络给同一动作打分。

a^*=\arg\max_a Q(s',a;\theta)
Y=r+\gamma(1-d)Q(s',a^*;\theta^-)

a* 是动作,不是最大数值;d 是终止标记。标准 DQN 本来也有在线与目标网络,所以只看网络数量无法区分。

将两张表上下对齐

网络/动作a₁a₂a₃
在线网络413
目标网络253

设 r=1、γ=0.9、未终止。第一步看在线行,最大 4 位于 a₁,记住“第 1 列”。第二步到目标行仍读第 1 列,得到 2。第三步算 Y=1+0.9×2=2.8。传给目标网络的是动作编号 a₁,不是数字 4。

标准 DQN 在目标行自己取最大 5,目标为 5.5。此例 Double 较小,但不知道真实价值时,不能仅凭大小就判断哪一个样本目标更准确。

遇到并列怎么做?

若在线两个动作并列,要看题目给的 tie-breaking。不同并列动作在目标行可能有不同数值,因而得到不同 Double 目标。先写“选哪列”,再算目标,可避免读错网络和列。

为何“另一个评价者”能帮忙,却不是万能?

被在线网络选中的动作,可能只是在线估计恰好偏高。目标网络的误差如果不完全同步,就不必在同一动作上同样偏高,这能减轻选择与评价绑定造成的乐观偏差。但两个网络通常来自相近训练历史,不能当成完全独立的两位专家。这个解释也说明,Double 的重点是误差与选择的关系,而非简单地把数值压低。

自己试一下

在线值 (1,7),目标值 (8,3),r=-1、γ=0.5,未终止。两个方法的目标各是多少?

我想好了,展开答案与理由

Double 在线选第二动作,再读目标第二列 3,得到 -1+0.5×3=0.5。标准 DQN 读目标最大 8,得到 3。不要把在线最大值 7 当成评价值。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL10 · PDF 第 14–25 页照片重点相关从问题讲起 · 逐步算清

优先经验回放:哪些样本应该多练?

Prioritized experience replay; Stochastic prioritization

本节一步步会讲什么

题库里的题,是否应该每道练一样多?

有些经验已经预测得很准,反复练的收益可能小;另一些目标与预测差距大,说明当前网络尚未解释好。优先经验回放 PER 让后者更常被抽中,同时保留其他经验的机会。改变的是“从池里抽哪条经验”,不是“真实环境选哪个动作”。

分清误差、优先级、概率

δᵢ=目标−预测,是第 i 条经验的 TD error,可以正也可以负。pᵢ 是用于加权的正优先级;P(i) 才是抽到记录 i 的概率。η>0 是偏移,避免零误差记录完全失去机会;κ 控制偏向高优先级的程度。

p_i=|\delta_i|+\eta,\qquad P(i)=\frac{p_i^\kappa}{\sum_jp_j^\kappa}

绝对值关注“差得多大”,不是只偏爱低估或高估。分母把所有权重相加,让概率总和为 1。

从三个误差一步步到采样概率

设 δ=(0,-1,3),η=1、κ=1。先取绝对值得 (0,1,3),加偏移得 p=(1,2,4),总和为 7,所以 P=(1/7,2/7,4/7)。第三条出现机会是第一条四倍,不表示学习率也必须四倍。

第一条误差为零,仍有 1/7 机会;以后共享参数更新可能让它再次不准,保留机会有用。相关样本被训练后通常刷新优先级;未刷新记录的旧优先级只是近似,不是永久真值。

κ 到底控制什么?

κ=0 时各正 p 的零次幂都是 1,概率恢复各 1/3。κ=1/2 时权重为 (1,√2,2),差异缩小。κ 越大通常越偏向高优先级,它不是梯度步长 α,也不是 ε-greedy 的探索概率。

Rank-based 方式先按误差大小排序,再用类似 1/rank 的量给优先级,因此较不受单个极端大误差影响。每次只选最大误差则更极端,可能忽略其他经验。课件还讨论按任务假设区分正负误差的非对称规则;这类改动需要解释为何采用该偏好。

把它与做错题联系起来,但不要过度类比

你可能会多练错题,PER 也是把更多机会分配给当前差距大的记录。不过网络参数不断变化,一道“已经会了”的题也可能因为其他更新而再次出错;而一条反复出错的记录可能含有不可预测噪声。算法因此通常保留随机抽取和非零优先级,而不是永久删除误差为零的样本,或把全部预算压在最大误差样本上。

自己试一下

优先级已经是 (2,6),κ=1 与 κ=0 时,概率分别是什么?

我想好了,展开答案与理由

κ=1 时除以总和 8,得到 (1/4,3/4)。κ=0 时权重变成 (1,1),得到 (1/2,1/2)。优先级、采样概率和参数更新量不能混写。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL10 · PDF 第 26–27 页照片重点相关从问题讲起 · 逐步算清

优先回放为什么还要重要性权重?

Importance-sampling correction; Annealing

本节一步步会讲什么

抽得更多,为什么单次反而要算轻一些?

池中两条经验的梯度贡献为 2、6。若想优化每条等权的目标,平均应为 (2+6)/2=4。现在 PER 抽第一条概率 1/4、第二条 3/4,若不修正,平均贡献变成 1/4×2+3/4×6=5。数据本身没变,抽样就改变了实际平均更新方向。

重要性权重希望补偿:抽得过多的记录单次算轻些,抽得过少的单次算重些。不是修改真实奖励,而是修正训练贡献。

公式来自两个概率的比值

希望的均匀概率为 1/N,实际概率为 P(i),其比值为 (1/N)/P(i)。β 决定使用多强校正:β=1 用完整原始比值,β=0 使所有权重为 1。

w_i=\left(\frac{1}{NP(i)}\right)^\beta

N 是池中记录总数,不是批次大小;P(i) 是样本采样概率,不是策略选动作的概率。

继续两条经验的例子

N=2、P=(1/4,3/4)、β=1:w₁=1/(2×1/4)=2,w₂=1/(2×3/4)=2/3。加权后的期望贡献为 (1/4)×2×2+(3/4)×(2/3)×6=1+3=4,恢复均匀经验池的平均。

这个推导要求目标中需考虑的记录都具有正采样概率。如果 P=0,不能通过有限权重补回从未抽中的记录,因此正偏移也有保持覆盖的意义。

归一化与损失的细节

实践中常除以最大权重,避免过大步长。上例除以 2 后是 (1,1/3),相对权重保持,但整体梯度减半,不再与原始版本完全相同;批内归一化还可能产生随机缩放。

若原单样本损失为 δ²/2,应乘成 wδ²/2。δ=2、w=1/3 时,损失为 2/3。如果先把 δ 乘 w 再平方,得到 2/9,相当于用了 w²,通常是另一种更新方案。

β 从零逐渐增大,在改变什么?

β 小时,训练保留较多优先采样带来的偏向;β 接近一时,更强调纠正到均匀经验池目标。它不会把抽样概率直接改回均匀:抽谁仍由优先级决定,只是抽到后的贡献不同。若一道题问“概率是多少”,不能把重要性权重当概率写上去,权重不要求总和为一,也可以大于一。只有先明确希望估计的平均对象,才能判断哪种权重在校正什么。

自己试一下

N=4,某记录 P=1/2、β=1。未归一化权重是多少,为什么小于 1?

我想好了,展开答案与理由

w=1/(4×1/2)=1/2。均匀概率本来为 1/4,它现在被抽到的机会是两倍,所以单次贡献减半以补偿过度代表。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL10 · PDF 第 32–39 页照片重点相关从问题讲起 · 逐步算清

Dueling 网络:状态值与动作优势分开表示

Dueling architecture; Identifiability

本节一步步会讲什么

一个好位置,为什么要每个动作都重新学一次“这里很好”?

赛车在宽阔直道时,暂时向左或向右一点的差别可能小,但“当前比较安全”是动作共享的信息。Dueling 用一条分支表达状态共享的成分,另一条分支表达动作之间的相对差异,再组合成 Q。最终仍预测动作价值,没有把任务换成策略概率学习。

分清分支数值与最终 Q

V(s) 是价值分支输出的一个数;A(s,a) 是优势分支对各动作输出的原始数;Q(s,a) 是聚合结果。m 为动作数,b 遍历动作。分支叫 V、A,不表示它们自动等于任意策略下的精确 vπ、Aπ。

Q(s,a)=V(s)+A(s,a)-\frac{1}{m}\sum_bA(s,b)

计算顺序是:求原始 A 平均 → 每个 A 减去该平均 → 加上 V。这样有效优势的算术平均为零。

为什么不直接 Q=V+A?

若直接相加,把 V 增加 10、所有 A 减少 10,Q 完全不变,分解不唯一。中心化规定组合方式,使最终所有动作 Q 的算术平均等于 V。原始 A 整体平移仍会被减均值抵消,所以不能过度声称全部原始参数都因此唯一。

一步一步算一个状态

V=5、原始 A=(2,-1,0)。平均 A=(2-1+0)/3=1/3。有效优势依次为 5/3、-4/3、-1/3。再加 5,得到 Q=(20/3,11/3,14/3),约 (6.6667,3.6667,4.6667)。

检查均值:(20+11+14)/(3×3)=5,回到 V。最大动作仍是第一个,因为每个原始优势都减去同一个数,排序不变。

与 Double 怎样区分?

Dueling 改一个 Q 网络内部的表示结构;Double 改训练目标中谁选动作、谁评价动作。可以使用 Dueling 架构,同时用 Double 目标,没有冲突。

另一种聚合是 Q=V+A-max A,此时最大 Q 等于 V,和“平均 Q 等于 V”不同。必须看题目规定减均值还是减最大值,不要凭名字自行混用。

再看一个极端情况以确认理解

如果所有原始优势都等于 7,那么平均也是 7,每个有效优势都为零,最终所有 Q 都等于 V。这里原始优势全是正数,并不表示所有动作都比平均表现更好;共同的偏移会被中心化抵消。真正决定动作间相对差别的是原始优势彼此的差,而不是它们共同的绝对高度。这也是看到优势头数值时,必须先按题目聚合规则得到最终 Q 的原因。

自己试一下

V=4,原始 A=(3,1),按减均值组合。两个 Q 及其平均是多少?

我想好了,展开答案与理由

平均 A=2,Q₁=4+3-2=5,Q₂=4+1-2=3,平均为 4。漏减均值会误得 (7,5),其平均 6 不等于分支 V。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL10 · PDF 第 40–44 页从问题讲起 · 逐步算清

DQN 改进总表:改的是哪一个环节?

DQN components; Extension map

本节一步步会讲什么

先画工作流程,再记名字

看到状态 → 网络估计各动作 Q → 行为策略选动作 → 环境产生经验 → 选择训练样本 → 构造目标 → 更新网络。各个 DQN 改进插在不同位置。知道它修改哪一步,比看见两个网络就猜 Double 更可靠。

让同一条经验经过整条流程

记录为 (s,a,1,s′,未终止),在线网络在 s′ 给 (4,1),目标网络给 (2,5),γ=0.9。神经网络代替大 Q 表,回放池保存经验以便重复使用;目标网络用延迟参数提供未来参考。

标准 DQN 读目标行最大 5,目标为 5.5。若换 Double,在线选第一动作,再读目标第一列 2,目标为 2.8。PER 不直接把目标改成 2.8,而是按当前误差调整记录被抽中的机会,并可加权纠偏。Dueling 决定两张网络内部如何用 V、A 分支组成这些 Q 值。

把原问题和方法对应起来

机制遇到的问题具体改动
神经 Q 网络状态太多,表格难存与泛化共享参数函数表示 Q
经验回放连续样本相关、只用一次浪费存经验后随机抽批重用
目标网络自举参考随当前预测快速变化使用延迟参数构造目标
Double DQNmax 容易选中估计偏高的动作在线选动作、目标网络评价
优先回放不同记录当前学习需求不同改变采样概率并考虑权重校正
Dueling共享状态好坏与动作差异可分开表达V 与原始 A 分支中心化组合

简答题怎样写才完整?

问 Double 的作用,先说“带噪估计取最大可能高估”,再说“分离动作选择与评价”,最后说“希望减轻最大化偏差”。只写“更稳定、更准确”太笼统,因为没解释改在哪里。问回放要谈样本使用,不能搬用冻结目标参数的答案。

它们针对不同问题,所以可以组合。但组合越多不代表任何任务都更好:模型容量、超参数、数据覆盖和预算都会影响效果。比较组合时仍需控制其他条件并进行消融。

自己试一下

某方法有回放池和两个网络,但目标仍是目标网络自己取最大。能否断言它采用 Double DQN?

我想好了,展开答案与理由

不能。这属于标准 DQN 的常见结构。只有在线网络负责选下一动作、目标网络负责评价同一动作,才符合这里的 Double 目标。Replay 与网络数量不足以判断。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL11 · PDF 第 2–11、20–23 页从问题讲起 · 逐步算清

策略方法:直接优化动作分布

Policy-based RL; Policy objective

本节一步步会讲什么

前面先学“多好”,现在直接学“怎样选”

Q-learning 先估每个动作的长期价值,再用 argmax 或 ε-greedy 导出行为。另一条路线是直接写一个能输出动作概率的函数,让学习改变这些概率。例如在一个状态下,原来向左概率 0.5、向右 0.5;从经验发现向右更好,就让参数逐渐提高向右的概率。这就是策略方法的入口。

策略不是完全不需要评价好坏,而是最终被直接优化的对象变成了行为规则。Actor–critic 会同时学习策略与价值;只有“输出策略”并不意味着训练时拒绝使用价值信息。

把目标函数翻译成人话

πθ(a|s) 是参数 θ 下,在 s 选择 a 的概率。G₀ 是一回合开始处的折扣回报。J(θ) 是按当前策略反复运行时 G₀ 的期望;它问的是“如果一直使用这组参数,平均表现怎样”。α 是参数步长。

J(\theta)=\mathbb E_{\pi_\theta}[G_0]
\theta\leftarrow\theta+\alpha\nabla_\theta J(\theta)

梯度 ∇J 是一组局部变化率,指出参数稍微往哪个方向改变能提高 J。这里目标是最大化回报,所以用加号做梯度上升;若把损失定义成 -J,对损失做下降等价。

用一个两动作任务算出方向

任务只有一次选择:选右奖励 4,选左奖励 0。让右的概率 p=σ(θ)=1/(1+e⁻θ),左为 1-p。θ=0 时 p=0.5,所以平均回报 J=0.5×4+0.5×0=2。

因为 J=4p,且 sigmoid 的变化率 dp/dθ=p(1-p),在 θ=0 处 dJ/dθ=4×0.5×0.5=1。α=0.1 时 θ 更新到 0.1,右的概率变成约 0.525,平均回报约 2.100。参数增加了 0.1,概率却不是增加 0.1,这两者不能混写。

为什么值得学这条路线?

动作可以是连续的方向、力度或速度,此时枚举所有动作再取 argmax 不方便;参数化高斯分布等方式可直接产生连续动作。策略也能自然保持随机性。但真实任务的 J 通常不知道,需要用采样估计梯度,方差与局部优化问题仍存在。

策略参数不是动作本身

在本例中 θ 只是控制右侧概率的旋钮。θ=0.1 不表示向右移动 0.1 格,也不表示右侧概率恰好为 0.1;必须经过指定的 sigmoid 才得到概率。连续动作策略的参数还可能表示均值、方差等。做计算题时先写清参数如何映射到行为,才能知道一次参数更新究竟会怎样改变动作选择。

自己试一下

仍是右奖励 4、左奖励 0。若右概率由 0.5 提高到 0.75,平均奖励是多少?这是否保证每次都得到 3 分?

我想好了,展开答案与理由

平均奖励是 0.75×4+0.25×0=3,但单次仍只会收到 4 或 0。J 是期望,不是每次执行的固定回报;策略优化希望改善平均表现。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL11 · PDF 第 12–19 页照片重点相关从问题讲起 · 逐步算清

为什么有些问题需要随机策略?

Stochastic policy; Aliasing

本节一步步会讲什么

先区分两种“随机选”

ε-greedy 中的随机常用于探索未知动作:我们还没弄清哪一个好,所以保留试错机会。但有些任务即使已经知道规则,最终策略也有理由保持随机。这不是“还没学会”,而是随机性本身有用。典型原因包括对手会利用可预测行为,或当前观测没有区分真实状态。

先看石头剪刀布

规定胜得 1、负得 -1、平得 0。如果永远出石头,对手看出规律后一直出布,你的平均回报就是 -1。若每轮独立均匀选石头、剪刀、布,对手固定出布时,你赢、输、平各占 1/3,期望回报为 1/3×1+1/3×(-1)+1/3×0=0。

对手改成其他固定动作,也不能利用你固定出同一招的规律。这不表示每轮都赢,而是避免那种可预测性带来的长期被克制。若每三轮按固定顺序轮流出招,即使总体频率一样,也仍可能被知道顺序的对手预测,因此“独立随机”与“固定循环”不同。

再看观测混淆:同一画面未必是同一状态

设两个真实位置都显示同一符号 O。位置 L 只有选 Left 才退出,位置 R 只有选 Right 才退出;选错就留在原位置。如果策略只能看 O,且固定选 Left,那么从 R 开始永远出不去。若每次各 1/2 选择左右,无论起点是哪一个,每次都有 1/2 退出机会。

设剩余步数期望为 E。一步肯定花掉;一半已退出,一半还回到同样困难,因此 E=1+0.5E,得 E=2。随机选择让这个受限观测策略能够退出。但如果状态直接告诉你是 L 还是 R,就可确定性选择正确方向,一步退出。

这和 MDP 的结论冲突吗?

不冲突。标准完全可观测、有限状态动作、折扣 MDP 在相应假设下存在确定性平稳最优策略。对抗博弈或只能依赖混淆观测的受限策略,条件已经不同,不能把这些例子当成“所有 MDP 都必须随机”的证明。

自己试一下

混淆位置例子中,每次从 R 退出的概率改为 1/4,失败后仍留在 R。期望还要几步?

我想好了,展开答案与理由

E=1+(3/4)E,所以 E=4。概率变小使平均等待更长,但只要独立重复且成功概率保持正值,这个例子仍会以概率 1 最终退出。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL11 · PDF 第 24–30 页从问题讲起 · 逐步算清

策略梯度定理与 score function

Policy gradient theorem; Likelihood ratio

本节一步步会讲什么

环境不会给你“奖励对网络参数的导数”,怎么办?

假设做动作后环境只告诉你成功还是失败,并不会告诉你参数 θ 增加 0.01 会怎样。我们仍知道自己如何产生动作:πθ(a|s) 是可微的概率函数。因此可以对“这个动作被选择的概率”求导,再用它得到的长期回报作为权重。这是策略梯度的关键转变。

score function 不是考试分数

这里 score 指 ∇θlogπθ(a|s),是一组导数,描述参数如何变化才能提高当前选中动作的对数概率。log 是自然对数;∇ 是对参数向量求导。概率本身和概率的导数是不同对象。

\nabla_\theta\pi_\theta(a\mid s)=\pi_\theta(a\mid s)\nabla_\theta\log\pi_\theta(a\mid s)

为什么成立?因为 log p 的导数是 (1/p)∇p,再乘回 p 就恢复 ∇p。这让“对所有动作求加权导数”改写为“按当前策略抽动作后求平均”,从而能用采样估计。

先用一次选择验证它

两个动作,A 奖励 4、B 奖励 0,π(A)=σ(θ)。θ=0 时两概率为 0.5。抽到 A 的 score 为 1-p=0.5;抽到 B 的 score 为 -p=-0.5。

回报乘 score 的期望为 0.5×4×0.5+0.5×0×(-0.5)=1。这恰好等于直接对 J=4σ(θ) 求导,在 θ=0 得到的 1。一个样本可能只给 2 或 0 的梯度贡献,但平均方向是正确的。

多步任务为什么还需要 Q?

一个动作不仅影响当前奖励,还影响未来去哪。因此给 score 加权的应是动作的长期价值 qπ,而非只看即时奖励。对折扣起点目标 J=E[G₀],一种完整轨迹形式为:

\nabla_\theta J=\mathbb E\left[\sum_{t=0}^{T-1}\gamma^tq_\pi(S_t,A_t)\nabla_\theta\log\pi_\theta(A_t\mid S_t)\right]

t 为环境时间,T 为终止时刻;γᵗ 把第 t 步的贡献折回起点。策略会改变未来访问分布,定理将这些影响整理为沿策略访问状态的加权期望,不要求在最后表达式中显式求环境转移的导数。

为什么一次梯度可能看起来“不合理”?

采样只看见一个被选动作的结果。如果偶然选到表现一般的动作并碰上好运,这一次更新也可能强化它;下一次坏运气又可能反向推动。理论讨论的是在适当条件下梯度估计的平均,而不是保证每个采样步骤都提高真实回报。增加样本、使用合适基线以及合理步长,是减少这种波动影响的途径,但不能把有限数据噪声直接抹掉。

自己试一下

在上述单步任务中,将 B 奖励改为 2,θ=0 不变。用“概率×回报×score”求期望梯度。

我想好了,展开答案与理由

A 贡献 0.5×4×0.5=1;B 贡献 0.5×2×(-0.5)=-0.5;总和 0.5。A 仍更好,参数仍应增加,但优势小于原来,因此推动较弱。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL11 · PDF 第 32–35 页从问题讲起 · 逐步算清

Softmax 与高斯策略:怎样对策略求导?

Differentiable policies; Gaussian score

本节一步步会讲什么

我们需要的是能调节、又合法的动作分布

离散动作概率必须非负且总和为 1。如果随便给每个概率加一个数,容易破坏这两个条件。Softmax 先让网络输出任意实数分数 logits,再把这些分数转换成合法概率。连续动作则不能为每个实数存一个概率,常用高斯分布的均值与方差来描述如何采样。

Softmax 每个符号是什么?

x(s,a) 是状态动作特征;θ 是参数;θᵀx 是点积得到的 logit,记作 zₐ。e 的幂保证结果为正,再除以所有动作的指数和保证总和为 1。

\pi_\theta(a\mid s)=\frac{e^{\theta^Tx(s,a)}}{\sum_b e^{\theta^Tx(s,b)}}

若两个 logits 为 (0,ln3),指数为 (1,3),概率为 (1/4,3/4)。分数本身不是概率,不能直接把 0 和 ln3 归一化就得到正确结果。对所有 logits 同时减同一常数不改变概率,常减最大 logit 来避免数值溢出。

选中一个动作时,梯度怎样算?

\nabla_\theta\log\pi_\theta(a\mid s)=x(s,a)-\sum_b\pi_\theta(b\mid s)x(s,b)

读法是“选中动作的特征,减去策略平均特征”。假设两个动作的特征为 (1,0)、(0,1),当前概率 (0.25,0.75)。平均特征为 (0.25,0.75)。若选中第二动作,score=(0,1)-(0.25,0.75)=(-0.25,0.25),表示适当降低第一项、提高第二项,会增加第二动作概率。

连续动作:高斯均值怎么移动?

设 A 从均值 μθ(s)、固定方差 σ² 的高斯分布采样。对均值参数的 score 为:

\nabla_\theta\log\pi_\theta(a\mid s)=\frac{a-\mu_\theta(s)}{\sigma^2}\nabla_\theta\mu_\theta(s)

若 μ=θ=0,σ²=1,抽到动作 a=2,则 score=2。若这个动作表现比基线好 3,α=0.1,则均值参数增加 0.1×3×2=0.6,今后更倾向抽到偏正的动作;不是以后永远固定执行 2。

为什么 softmax 的其他动作也会改变?

所有动作共用一个分母。第二动作分数升高后,它的指数不仅增大了自己的分子,也增大了共同分母,所以其他动作的概率会相应减少,整组概率仍然相加为一。不能单独把某动作概率加上一段变化量、让其他概率完全不动。score 公式中的“减去平均特征”正体现这种相对竞争,而不是每个动作各自拥有互不相关的概率旋钮。

自己试一下

两动作概率 (0.25,0.75)、特征仍为两个单位向量,若这次选中第一动作,score 是什么?

我想好了,展开答案与理由

选中特征 (1,0) 减平均特征 (0.25,0.75),得到 (0.75,-0.75)。乘正的优势会提高第一动作相对于第二动作的偏好;乘负优势则方向反转。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL11 · PDF 第 36–44 页照片重点相关从问题讲起 · 逐步算清

REINFORCE:用完整回报估计策略梯度

Monte Carlo policy gradient

本节一步步会讲什么

策略梯度定理用了未知 Q,实际怎么做?

上一节的长期动作价值 qπ 通常不知道。最直接的方法是按当前策略完成一个回合,看看从每一步开始实际得到多少回报 Gₜ,用这个样本代替期望价值。这就是 REINFORCE 的 Monte Carlo 思路:用真实整段结果评价先前的动作,再调整选择概率。

一个回合先固定什么?

在这里的严格轨迹估计约定中,先固定用于采样的参数 θ,记录状态、动作、奖励和动作概率信息;完整回合结束后,从后向前算各 Gₜ,再在生成轨迹的参数处计算各 score,最后汇总一次更新。若课件算法逐步改参数,数值实现可能不同,计算题必须照其明确约定。

G_t=R_{t+1}+\gamma R_{t+2}+\gamma^2R_{t+3}+\cdots
g=\sum_{t=0}^{T-1}\gamma^tG_t\nabla_\theta\log\pi_\theta(A_t\mid S_t)
\theta\leftarrow\theta+\alpha g

g 是本回合对梯度的估计;α 是步长。第一处 γ 在 G 裡折扣相对当前时刻的未来,外部 γᵗ 则把第 t 步贡献对应到起点折扣目标 J=E[G₀],两者不是重复同一件事。

用两步回合完整计算

设两个状态共享一维参数,动作 A 的概率为 sigmoid(θ),初始 θ=0,因此选中 A 的 score 为 0.5。此次两步都选 A,依次得到奖励 1、2,然后结束。γ=0.5、α=0.1。

先倒推回报:G₁=2,G₀=1+0.5×2=2。第 0 步贡献是 γ⁰×G₀×score=1×2×0.5=1;第 1 步贡献是 0.5×2×0.5=0.5。总 g=1.5,新 θ=0+0.1×1.5=0.15。动作 A 的新概率约为 sigmoid(0.15)=0.5374。

结果应该怎样理解?

不是给概率直接加 0.15,也不是每个动作都把奖励 2 当新概率。我们改变了策略参数,概率再由 sigmoid 重新计算。一个回合提供的是噪声样本,多次采样后的平均方向才联系期望目标。

为什么要从每个时间点重新算回报?

第零步动作会影响之后两笔奖励,第一步动作发生时,第一笔奖励已经成为过去。因此第一步的学习权重只使用从第一步之后开始的回报,不把早已发生的奖励再次算作该动作的后果。这不是丢数据,而是利用因果时序:当前动作不能改变已经收到的奖励。把所有时间点都乘同一个起点回报虽然可以讨论其他估计形式,却不是本节使用的 reward-to-go 算法。

自己试一下

沿用上述两步、两次 score=0.5 的例子,但 γ=1。g 和新 θ 分别是多少?

我想好了,展开答案与理由

G₁=2,G₀=1+2=3;外部时间因子都为 1。g=3×0.5+2×0.5=2.5,θ 从 0 更新为 0.25。不要把 γ=0.5 时的 G₀=2 保留下来。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL11 · PDF 第 50–53 页照片重点相关从问题讲起 · 逐步算清

基线:为什么减去一个数不改变平均梯度?

Baseline; Variance reduction

本节一步步会讲什么

拿到 3 分究竟好不好?

如果这个状态通常只拿 1 分,3 分值得鼓励;如果通常能拿 8 分,3 分反而较差。单看回报的绝对大小没有参照。基线 b(s) 给当前状态一个参考水平,让梯度由“得到多少”转为“比预期好多少”。

Gₜ 是样本完整回报,b(Sₜ) 是在选动作前由状态给出的参考,score 是增加该已选动作概率的局部方向。正差距沿这个方向走,负差距沿反方向走。

先算单个样本的变化

动作 A 的概率为 sigmoid(θ),θ=0 时概率 0.5,选中 A 的 score=0.5。若回报 G=3、基线 b=1、α=0.1,更新量为 0.1×(3-1)×0.5=0.1;θ 变成 0.1,概率约为 0.525。若基线改成 5,同样 3 分的权重为 -2,θ 会变成 -0.1,A 概率下降。

这不矛盾:两个基线给同一次结果不同参照。我们还要说明为什么合适的动作无关基线不会改变平均梯度,而可以改变样本波动。

这里已学过的单样本更新就是一般公式中某一步的贡献。对一整条轨迹,把各步贡献相加;若目标是从起点计算折扣回报,第 t 步还乘 γᵗ。

g=\sum_t\gamma^t[G_t-b(S_t)]\nabla_\theta\log\pi_\theta(A_t\mid S_t)

用两个动作把“期望为零”算出来

仍有 π(A)=π(B)=0.5,两个 score 分别为 0.5、-0.5。给定状态,固定基线为 2。基线附加项的期望是 0.5×2×0.5+0.5×2×(-0.5)=0。因此在总体平均中,减去这部分并不改变方向。

\sum_a\pi_\theta(a\mid s)b(s)\nabla_\theta\log\pi_\theta(a\mid s)=b(s)\nabla_\theta\sum_a\pi_\theta(a\mid s)=0

第一步把与动作无关的 b(s) 提出;第二步利用 π∇logπ=∇π;最后所有动作概率和为 1,常数导数为零。这是每一步成立的原因,不是因为基线数值恰好为零。

哪些限定条件不能漏?

给定状态后,基线不应依赖这次被抽中的动作,否则一般不能提出并消去。在 actor 求导时把基线作为固定权重,不沿它再求导;基线可以有自己的训练过程。与同一样本数据耦合的复杂基线估计也需要检查相应无偏条件。

基线不是从奖励记录里扣钱

环境原本给了三分,经验记录仍然是三分;基线只在策略梯度的权重中提供参照。后续如果用这条轨迹计算原任务回报,仍应使用原始奖励,不能永久把它改成三减一。这个区别很重要:降低梯度方差与改变环境奖励、从而改变任务目标,是两件不同的事。基线可以随状态不同而不同,因为每个状态本来就可能有不同的通常表现。

自己试一下

两动作各 0.5,score 分别 0.5、-0.5。若错误地设动作相关基线 b(A)=2、b(B)=0,基线项期望还是零吗?

我想好了,展开答案与理由

不是。期望为 0.5×2×0.5+0.5×0×(-0.5)=0.5。直接减去它会改变期望梯度;这解释了简单基线证明为何要求动作无关。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL11 · PDF 第 50–56 页照片重点相关从问题讲起 · 逐步算清

优势函数与 TD error 的关系

Advantage; Conditional expectation

本节一步步会讲什么

同样拿 6 分,为什么一个动作值得鼓励,另一个未必?

要判断动作好坏,需要和“这个状态通常怎样”比较。优势函数 Advantage 表示:固定第一步选这个动作,比按原策略在该状态随机选动作的平均长期回报多多少。它不是即时奖励,也不是比最差动作好多少。

A_\pi(s,a)=q_\pi(s,a)-v_\pi(s)

qπ 固定第一步动作,之后跟随 π;vπ 在第一步也按 π 平均。这里下标 π 很重要,因为换策略,平均参照和后续行为都可能改变。

把两个动作的优势全部算出来

假设 π(A)=0.25、π(B)=0.75,qπ(s,A)=8、qπ(s,B)=4。先算状态平均 vπ=0.25×8+0.75×4=5。于是优势分别为 8-5=3、4-5=-1。

检查策略加权平均:0.25×3+0.75×(-1)=0。不是两个优势的普通算术平均为零,而是按 π 的权重平均为零。

\sum_a\pi(a\mid s)A_\pi(s,a)=0

TD error 为什么能提供优势信号?

我们往往不知道精确 qπ,却能观察一次奖励和下一状态,并已有一个 V 估计。于是用“一步奖励加下一状态价值”近似这次动作的长期表现,再减当前状态平均。

\delta_t=R_{t+1}+\gamma V(S_{t+1})-V(S_t)

若 V 恰好等于真实 vπ,固定当前 (s,a) 后,对可能后继取期望,前两项就是 qπ(s,a),减去 vπ(s) 就得到优势。这是在正确价值条件下,对环境结果求平均的关系,不是每一个样本都相等。

一条有随机后继的具体计算

设 V(s)=4、γ=0.5,动作 a 即时奖励总为 1,一半到价值 8 的状态,一半到价值 2 的状态。两个样本 TD error 分别为 1+0.5×8-4=1,以及 1+0.5×2-4=-2。平均误差为 -0.5。

该动作的真实 Q=1+0.5(0.5×8+0.5×2)=3.5,因此优势 Q-V=3.5-4=-0.5,与平均误差一致。一次抽到好后继得到正误差,并不能单独证明动作优势为正。

先判断比较对象,再判断正负号

如果两个动作的 Q 都是负数,例如 -8 与 -2,而策略各选一半,V 为 -5,优势为 -3 与 3。第二动作虽然仍预计亏分,却比当前策略平均少亏三分,优势可以为正。相反,一个动作即使立即得到正奖励,若它让后续机会明显变差,长期优势仍可能为负。优势的正负是相对原策略平均而言,不能只盯着奖励符号或 Q 的正负。

自己试一下

qπ=(2,6),策略概率 (0.5,0.5)。求 vπ、两个优势及其策略平均。

我想好了,展开答案与理由

vπ=4,优势为 (-2,2),策略平均 0.5×(-2)+0.5×2=0。第二动作优于该策略的平均水平,不代表它的优势等于 Q 值 6。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL11 · PDF 第 45–49、53–59 页照片重点相关从问题讲起 · 逐步算清

Actor-critic:一个负责选,一个负责评

Actor–critic; Semi-gradient critic

本节一步步会讲什么

能否不等整个回合结束就改进策略?

REINFORCE 等到完整回报才评价动作,长任务可能反馈太慢。Actor–critic 增加一个学习到的评价者:critic 估计未来价值,actor 利用这份评价更早调整动作概率。就像执行者决定下一步怎么做,评价者不断修正“从这里继续通常会怎样”的预测。

两套参数别写混

Actor 参数 θ 决定策略 πθ(a|s);critic 参数 w 决定价值 Vw(s)。αₐ、αc 分别是两者学习率,不必相同。先从一次真实转移计算同一个 TD error,再分别用于价值学习和策略改进。

\delta_t=R_{t+1}+\gamma V_w(S_{t+1})-V_w(S_t)
w\leftarrow w+\alpha_c\delta_t\nabla_wV_w(S_t)
\theta\leftarrow\theta+\alpha_a\gamma^t\delta_t\nabla_\theta\log\pi_\theta(A_t\mid S_t)

第二式让当前价值向一步目标靠近;第三式把 δ 当近似优势,调整已选动作概率。这里沿用折扣起点目标,其他状态占用分布约定可把 γᵗ 吸收进去。critic 的半梯度更新把目标暂时固定,不对其自举项继续求导。

两个人各更新什么:完整数值例子

在 t=0,当前 V(s)=4、下一 V(s′)=5,奖励 1、γ=0.9,未终止。先算目标 1+0.9×5=5.5,误差 δ=5.5-4=1.5。

Critic 若用独立表格值、αc=0.2,当前值变为 4+0.2×1.5=4.3,下一状态值本次不直接改。Actor 若动作 A 概率为 sigmoid(θ),旧 θ=0,选中 A 的 score=0.5,αₐ=0.1,则 θ 增加 0.1×1×1.5×0.5=0.075,A 概率约变为 0.5187。

注意两次更新都使用刚才按旧值算出的同一个 δ。若先改 critic,再重算 δ 给 actor,就成了另一种具体更新约定,考试要按题目指示。

与“REINFORCE 加基线”哪里不同?

后者即使训练一个 V 作基线,actor 的评价仍可以是完整 G-V。这里 actor 用 r+γV(s′)-V(s),引入自举,能更及时更新,却依赖 critic 的准确性。critic 错得多时,策略信号也可能偏。

为什么两套学习率可以不同?

价值预测和策略概率是不同的估计问题,更新尺度也未必相同。critic 需要及时跟上当前策略所产生的回报,actor 则根据这个尚不完美的评价调整行为;若策略改变太快,评价者可能一直追不上。这里并不是要求某个固定学习率比例,而是提醒你别把同一 α 自动塞进所有公式。题目分别给出 actor 与 critic 步长时,应该逐个代入各自更新。

自己试一下

若同一状态当前 V=4,转移终止且奖励 3,αc=0.2,actor score=0.5、αₐ=0.1、t=0。两者怎么变?

我想好了,展开答案与理由

δ=3-4=-1。critic 变为 4+0.2×(-1)=3.8;actor 参数改变 -0.05,倾向降低这次动作的概率。正的即时奖励 3 仍可能低于原先预期。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL12 · PDF 第 3–16 页从问题讲起 · 逐步算清

基于模型的学习:从经验走向规划

Model-based RL; Direct and indirect learning

本节一步步会讲什么

真实试错太贵时,能不能先在脑中试?

机器人撞一次墙可能损坏设备,开车尝试一条错误路线可能浪费时间。如果已经知道“从这里向右会去哪、会得到什么奖励”,就能先在内部推演,再决定真实动作。这需要环境模型 model。模型回答“一步之后会发生什么”,价值函数回答“长期来看好不好”,二者不是同一张表。

用同一次经验说明两条路线

你在路口 A 选择 Right,得到奖励 -1,到达 B。直接学习可以立即用这条记录更新 Q(A,Right)。间接学习则先记住 A+Right→B、奖励 -1,再利用这个模型推演未来,更新价值或策略。Dyna 会把两条路线结合起来,而不是必须二选一。

模型里的符号代表什么?

p(s′|s,a) 表示在 s 做 a 后到 s′ 的概率,r(s,a) 表示这一步的期望奖励。已知模型时,给定后继价值 V,可以对所有结果做 Bellman 备份;未知模型时,用带帽子的 p̂、r̂ 表示从有限经验估计的版本。

\hat q(s,a)=\hat r(s,a)+\gamma\sum_{s'}\hat p(s'\mid s,a)V(s')

帽子提醒我们这不一定是真实环境规律。这个公式需要模型提供下一步结果,再用 V 把下一状态接到长期回报。

把模型备份算出来

假设模型认为从 A 向右有 0.8 到 B、0.2 到 C,期望即时奖励 -1;当前 V(B)=5、V(C)=0,γ=0.5。先平均未来值:0.8×5+0.2×0=4;再折扣为 2;最后加即时奖励 -1,得到模型估计的动作值 1。

这一步没有让真实机器人再走一次,而是在已有模型上计算。若真实到 B 的概率只有 0.4,同样后继 V 下的真实期望备份则是 -1+0.5×(0.4×5)=0。模型错误会让规划过于乐观,即使内部计算完全正确。

为什么模型既有收益也有风险?

它可以用大量内部计算替代昂贵真实交互,还可用于规划、预测和搜索;但有限数据会造成模型误差,函数近似又可能使它难以表示真实规律。模拟更多次只会更精确地理解当前模型,不一定更接近真实世界。

自己试一下

一个网络输入 (s,a),输出下一状态概率;另一个输入 (s,a),输出预计累计奖励。这两个网络分别是哪类对象?

我想好了,展开答案与理由

前者是环境转移模型,可以生成或平均下一步结果;后者是动作价值函数 Q。判断依据是预测内容,不是它们都使用神经网络。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL12 · PDF 第 17–27 页从问题讲起 · 逐步算清

如何从数据估计环境模型?

Tabular model; Maximum likelihood; Joint dynamics

本节一步步会讲什么

不知道真实转移概率,先数发生次数

同一状态动作多次尝试后,下一状态可能不同。最简单的表格模型就是用相对频率估计概率,用实际奖励平均估计期望奖励。它把“经验记录”变成可重复使用的一步规则,并不需要先学出完整最优策略。

符号逐个认清

N(s,a) 是状态 s 下动作 a 被尝试的总次数;N(s,a,s′) 是其中下一状态为 s′ 的次数。分母是“有多少次尝试机会”,分子是“其中目标结果发生几次”,因此比值是条件概率估计。

\hat p(s'\mid s,a)=\frac{N(s,a,s')}{N(s,a)}
\hat r(s,a)=\frac{\sum_{i:(S_i,A_i)=(s,a)}R_{i+1}}{N(s,a)}

求奖励平均时只统计该状态动作下发生的奖励,不把其他动作的记录混进来。若从未尝试,分母为零,需要初始化或先验,不能直接相除。

四条记录完整建一次模型

同一 (A,Right) 观察四次:三次到 B 且奖励 2,一次到 C 且奖励 -2。总次数 4;到 B 次数 3,到 C 次数 1。因此 p̂(B|A,Right)=3/4,p̂(C|A,Right)=1/4。期望奖励估计 (2+2+2-2)/4=1。

若当前 V(B)=4、V(C)=0、γ=0.5,模型备份为 1+0.5[(3/4)×4+(1/4)×0]=2.5。你也可以按四条结果各自计算 r+γV(s′),得到 4、4、4、-2,平均仍为 2.5。

为什么不能随便独立抽奖励和下一状态?

在这四条记录里,到 B 总伴随奖励 2,到 C 总伴随 -2。如果分别学奖励分布与下一状态分布,再独立抽样,就可能生成“到 B 但奖励 -2”这种原数据未出现的组合。边际分布正确,不代表联合分布正确。

只计算一步期望 Bellman 备份时,E[r]+γE[V(s′)] 的线性结构通常使期望奖励和转移边际足够;但若模拟完整联合结果或关心风险分布,就需要保留这种依赖关系。

分布模型和样本模型有什么区别?

分布模型列出各结果概率,适合直接求期望;样本模型每调用一次生成一个随机结果,适合 rollout。表格、树、线性函数和神经网络都可以用于学习这些模型,关键仍是预测对象与数据条件。

新经验来了,模型也要更新

若上述五次后又观察一次到 B,计数变成总六次、到 B 三次、到 C 三次,新的转移概率就是各二分之一。模型不是写完就永远不变的地图,它会随数据积累修正。如果环境本身改变,简单累计所有历史还可能反应迟缓,需要考虑遗忘旧信息等办法;这与后面变化环境中的探索问题相联系。

自己试一下

同一状态动作观察 5 次,下一状态 2 次 B、3 次 C;奖励依次 1、1、0、0、3。转移概率与期望奖励估计是多少?

我想好了,展开答案与理由

p̂(B)=2/5=0.4,p̂(C)=3/5=0.6;奖励平均 (1+1+0+0+3)/5=1。奖励平均不需要知道 B、C 的价值,后继价值是后续规划时才加入的。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL12 · PDF 第 28–31 页从问题讲起 · 逐步算清

用学到的模型做规划与模拟评估

Sample-based planning

本节一步步会讲什么

学到地图之后,要把它用起来

上一节得到“在某处做某动作会怎样”的模型,但模型本身没有直接告诉我们长期走法好不好。规划 planning 就是在这个模型上继续计算:可以枚举所有结果做 DP,也可以让模型生成模拟轨迹,再用熟悉的 MC 或 TD 更新价值。学习公式可能相同,数据来源却变了。

模型模拟一次,与真实走一次哪里不同?

真实交互由环境返回 r、s′;模拟交互由已学模型返回 r、s′。模拟策略负责决定接下来选什么动作,模型负责给出动作后果。之后仍可计算 G 或 r+γV,不能因为用了 MC 公式就把整个过程称为 model-free。

一个两步模型的数值例子

假设模型知道 A 一定以奖励 0 到 B;从 B 一定终止,终止奖励以 3/4 概率为 1、1/4 为 0。γ=1。模型中 v(B)=0.75×1+0.25×0=0.75,v(A)=0+1×0.75=0.75。

现在不直接求期望,而从 A 模拟四个回合。若碰巧得到终止奖励 [1,0,1,1],A 的四个回报也是 [1,0,1,1],均值 0.75;若只模拟两次恰好都是 0,均值会是 0。有限模拟存在抽样误差,不代表模型方程变了。

用一步 TD 同样能规划

假设初始 V(A)=V(B)=0,学习率 0.5。先模拟 B→终点得到奖励 1,B 更新为 0+0.5(1-0)=0.5。再模拟 A→B、奖励 0,A 用当前 B 的值更新为 0+0.5(0+0.5-0)=0.25。

第二次更新用了上一条模拟得到的新价值。这里既没有新的真实交互,也没有等待很多真实回合,价值信息已经通过模型往前传播。

模拟多了是否一定正确?

若模型本身的奖励概率错了,例如实际只有 1/4 得 1,而模型以为 3/4,更多模拟会更稳定地趋近模型的 0.75,而非真实的 0.25。应区分模拟抽样误差、模型误差和价值近似误差:增加模拟次数主要减少第一类,不能自动修正后两类。

规划能补什么,不能补什么?

如果数据已经揭示终点附近有高奖励,而起点价值尚未更新,规划能把已有消息传播回去。如果模型从来没有见过某条路,它不能凭空保证那条路的真实后果正确。区分“已知信息尚未充分计算”与“环境信息本来就缺失”,能帮助判断应该增加内部规划预算,还是需要更多真实探索。

自己试一下

若上述模型 γ 改为 0.5,A→B 奖励仍为 0,B 终止奖励均值仍为 0.75,模型的 V(A)、V(B) 各是多少?

我想好了,展开答案与理由

B 从下一步直接收到终止奖励,V(B)=0.75。A 的这笔奖励要晚一步,V(A)=0+0.5×0.75=0.375。第一笔即时奖励不折扣,但从 A 看 B 以后的回报需要折扣。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL12 · PDF 第 32–41 页从问题讲起 · 逐步算清

Dyna-Q:真实经验与模拟经验一起更新

Dyna architecture; Dyna-Q

本节一步步会讲什么

真实走一步,能否多学几步?

一条迷宫路径很长,终点奖励刚被发现时,信息还没传回起点。如果每次都等智能体真实走完整条路,传播会很慢。Dyna-Q 用真实经验做直接学习,同时学模型,再从模型抽取旧状态动作进行额外更新,让同一段环境经验支持更多价值传播。

三个环节必须分开

① 观察真实 (s,a,r,s′),做一次 Q-learning。② 将这条经验写入或用于更新环境模型。③ 进行 n 次规划:选以前经历过的状态动作,用模型生成 r、s′,再做相同的 Q-learning 备份。

Q(s,a)\leftarrow Q(s,a)+\alpha[r+\gamma\max_bQ(s',b)-Q(s,a)]

s、a 是本次要更新的条目,b 遍历下一状态动作;α 控制更新幅度,γ 是折扣。这里的 r、s′ 既可以来自真实环境,也可以来自模型,公式本身不会告诉你来源。

一条两步路径演示信息如何往前走

路径 A --0→ B --2→ T,γ=0.5,α=1,各状态只有一个动作,初始 Q 全零。真实第一次 A→B 时,目标 0+0.5×0=0,所以 A 暂时仍为 0;随后真实 B→T,目标 2,所以 B 变成 2。模型记录了 A→B 奖励 0,以及 B→T 奖励 2。

现在进行一次规划,选中模型里的 A 动作。虽然机器人没有再次回 A,但模型告诉我们后继是 B,目标变成 0+0.5×2=1,因此 A 更新为 1。奖励消息借助内部模拟向前传播了一步。

若没有规划,普通 Q-learning 通常需要以后再次真实经历 A→B,才利用新 B 值改变 A。规划不创造额外真实信息,却能更充分地使用已有信息。

n 与模型假设意味着什么?

n=0 时没有模型产生的额外备份,退回直接 Q-learning;n 增加意味着每个真实步后做更多内部计算。简单确定性 Dyna-Q 可存某状态动作最近的一次结果;随机环境若只保留最后结果,可能不能表示完整规律,应采用适合随机性的模型。

规划步为什么还要选择状态动作?

模型中可能存着很多经验,不是每次都从真实智能体当前所在的位置开始。简单 Dyna-Q 可随机抽取以前经历过的状态动作进行模拟更新。这样即使智能体现在在终点附近,也能在内部更新起点附近的旧条目;它节省的是为了再次获得同一转移而实际走回去的成本。具体抽样规则可以改进,但不能省略“本次究竟更新哪条经验”这一步。

自己试一下

仍有模型 A→B 奖励 0、Q(B)=2、γ=0.5,但 Q(A)=0、α=0.25。一次规划后 A 是多少?

我想好了,展开答案与理由

目标 y=0+0.5×2=1,Q(A)=0+0.25(1-0)=0.25。α 决定向目标走多远,不能因为模型知道后继就直接把 Q 设成 1,除非 α=1。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL12 · PDF 第 42–43 页从问题讲起 · 逐步算清

环境改变与 Dyna-Q+ 的探索思想

Non-stationarity; Model uncertainty; Dyna-Q+

本节一步步会讲什么

一堵墙被移走,你为什么可能永远不知道?

以前向右总撞墙,智能体于是学会绕远路;后来右侧通道打开,如果它再也不尝试向右,新的捷径就不会进入模型。即使在旧模型里规划一百万次,也只会重复“右侧撞墙”这一旧结论。环境变化时,不仅需要更快算旧信息,还需要主动验证可能过时的信息。

Dyna-Q+ 给“很久没试”一个理由

常见 Dyna-Q+ 思路是在规划奖励中加入与“距上次真实尝试经过多久”有关的 bonus,鼓励重新检查长期未验证的动作。τ(s,a) 表示距离上次真实执行该状态动作的时间,κ 是奖励激励系数,一种常见形式为:

r_{plan}=r_{model}+\kappa\sqrt{\tau(s,a)}

这是算法内部用于规划的探索奖励,不是环境真的突然多给了分。τ 根据真实尝试时间更新,不能把一次纯模拟访问误当成真实重新验证。

把加成算出来

旧模型认为某动作奖励 -1。设 κ=0.1。若距上次真实尝试只过 1 步,bonus=0.1×√1=0.1,规划奖励为 -0.9;若已过 100 步,bonus=0.1×10=1,规划奖励为 0。

假设两次都未终止,γ=0.5,模型后继最大 Q=2,则目标分别是 -0.9+0.5×2=0.1,以及 0+0.5×2=1。后者在内部规划中更有吸引力,可能促使行为策略最终真实去试。真实尝试若发现通路打开,新经验才能纠正模型;若仍撞墙,时间计数也被重置。

为什么不是简单地越久不用就越好?

bonus 表示的是“值得重新确认”的激励,不是该动作真实长期回报的保证。κ 太大可能浪费大量交互在不好的动作上;太小又可能难以发现变化。不同 Dyna-Q+ 版本还会处理已访问状态下尚未尝试的动作,具体初始化规则应以课件或题目为准。

怎样读变化迷宫实验?

原路变坏时,继续沿旧路的真实失败可能较快暴露变化;出现更好但未使用的新路时,若没有主动探索就更难察觉。这解释为什么长期未尝试动作的激励有时很重要,而不仅是一般“误差大就多学”。

自己试一下

κ=0.2,τ=25,模型奖励为 -2。规划奖励是多少?真实环境奖励会自动变成这个数吗?

我想好了,展开答案与理由

bonus=0.2×√25=1,规划奖励=-1。真实奖励仍由环境决定,并不会因为内部探索激励而自动改变。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL12 · PDF 第 49–67 页从问题讲起 · 逐步算清

蒙特卡洛树搜索:边模拟边改进树内选择

Monte Carlo tree search; MCTS

本节一步步会讲什么

所有首动作一直平均分配模拟次数,是否浪费?

简单 MC 搜索可以对每个动作固定模拟 K 次。但有些分支明显差,有些看起来有希望却样本不足。MCTS 一边保存已经探索的树,一边利用统计量决定下一次模拟该走哪里,把更多预算用于值得进一步研究的分支。树只覆盖一部分未来,不必一开始完整展开。

一轮模拟的四个阶段,各在干什么?

Selection:在已有树里按树策略选边,兼顾已知回报与探索。Expansion:遇到尚未展开的可行后继时,添加新节点或边。Simulation:在树外按默认策略继续 rollout,或按约定使用叶子评价。Backup:把此次结果沿经过的路径回传,更新次数和价值统计。

统计量含义一次回传怎么改
N(s,a)这条边被模拟经过几次加 1
W(s,a)累计回报总和加上本次从此处起的回报
Q(s,a)平均模拟回报W/N

把一次回传算清楚

某边原来访问 4 次,总回报 W=3,因此 Q=3/4=0.75。此次又经过这条边,得到从该边起的回报 0。新 N=5,W仍为3,Q=3/5=0.6。不是因为最后一次输了就把过去四次经验全部删除,也不是在所有深度不加区分地累加同一折扣回报;需要按各节点的回报定义回传。

树内为什么不永远选当前平均最高?

只选最高会忽视样本很少的动作。课件以可改善的树策略说明这一点,例如 ε-greedy。常见 UCT 还使用“平均价值加探索奖励”的选择分数,下面作为帮助理解的补充形式:

U(s,a)=Q(s,a)+c\sqrt{\frac{\ln N(s)}{N(s,a)}}

N(s) 是父节点访问次数,N(s,a) 是边访问次数,c>0 控制探索。分数是用于分配模拟的指标,不是新的真实回报。未访问边不能除以零,通常先尝试它们。

例如父节点 N=10,c=0.5;A 的 Q=0.8、访问8次,B 的 Q=0.5、访问2次。A 分数约 0.8+0.5√(ln10/8)=1.068;B 约 0.5+0.5√(ln10/2)=1.036,选 A。若 c 增到1,则 A≈1.336、B≈1.573,预算更偏向少访问的 B。

模拟结束后的真实行动与模拟探索不同

搜索期间可为了收集信息选择不确定分支;最后真实执行什么应看题目规则,常见做法按根节点访问次数或平均值选动作,不能把某一种当所有 MCTS 唯一规定。对抗游戏还要说明价值是哪个玩家视角,不能双方都不加处理地最大化同一方收益。

自己试一下

某边 N=3、W=2。新一次模拟回报为1,更新后的 N、W、Q 各是多少?

我想好了,展开答案与理由

N=4,W=3,Q=3/4=0.75。更新的是整条统计记录;不能只把 Q 改成最后一次的1,也不能忘记访问次数增加。

读到一半卡住时,先补这里:
仅保存在当前浏览器
RL12 · PDF 第 68–72 页从问题讲起 · 逐步算清

TD 搜索与 Dyna-2:长期经验加当前推演

Temporal-difference search; Dyna-2

本节一步步会讲什么

模拟很长时,也必须等到终局才学习吗?

前面的 MC 搜索用模拟回报更新统计量。若一次模拟很长,可以像真实经验的 TD 一样,在模拟中每一步就利用后继估值更新当前状态动作。这样更早传播信息,但也把后继估计的误差带进来了。变化的是从模拟中学习的方法,不是模型突然变成真实环境。

把熟悉的 SARSA 公式放进搜索

s、a 是模拟中的当前状态动作,r 是模型产生的奖励,s′、a′ 是模拟下一状态与实际按模拟策略选出的下一动作。α 是搜索更新步长,γ 是折扣。

\Delta Q(s,a)=\alpha[r+\gamma Q(s',a')-Q(s,a)]

使用真实选出的 a′,这是 SARSA 目标;如果改为 maxₐ′Q,则是另一种目标。不要因为处于“搜索”章节就忽略 on-policy 与 off-policy 的区别。

一次模拟 TD 更新完整计算

当前搜索估计 Q(s,a)=2,模拟奖励 r=1,γ=0.5,已选模拟下一动作的值为4,α=0.25。目标 y=1+0.5×4=3,误差=3-2=1,变化量=0.25,当前估计变为2.25。我们不需要先知道这条模拟最后赢还是输,但这个更新依赖后继值4是否可信。

Dyna-2 为什么区分长期与短期?

长期记忆从真实经验学习可反复使用的一般价值知识;短期工作记忆围绕当前真实状态进行模拟搜索,提供当前局面的局部修正。整体估计可以理解为两部分相加:

Q(s,a)=Q_{long}(s,a)+Q_{short}(s,a)

这个表达式说明信息分工,不规定所有实现都使用独立表格。长期部分保留跨实际经验的学习;短期部分在新的局部搜索开始时按算法约定初始化或重置,避免把旧局面临时修正无条件当永久事实。

用两动作看局部修正如何改变选择

长期值对 Left、Right 为 (3,2.5),原来偏好 Left。当前搜索短期修正为 (-1,0.2),组合后变成 (2,2.7),现在偏好 Right。改变决策的是当前推演补充的信息;没有必要因此把长期存储立刻全部覆盖成 (2,2.7)。

把本章接回整门课

模型决定能模拟什么;策略决定模拟中如何行动;MC 或 TD 决定如何把结果变成价值更新;搜索方法决定把有限计算花在哪些未来分支。学习与规划可以使用同一个更新式,最重要的区分之一是经验来自真实环境还是模型。

自己试一下

长期 Q 为 (1,4),短期修正为 (2,-1)。组合 Q 是什么?贪心动作是否唯一?

我想好了,展开答案与理由

组合为 (3,3),两动作并列。不能只看长期值4就断言第二动作仍唯一最好;最终选择还要按并列处理规则。

读到一半卡住时,先补这里:
仅保存在当前浏览器
跨章节符号统一从问题讲起 · 逐步算清

先认符号,再读公式

Notation; Conditional expectation; Gradient

本节一步步会讲什么

先看一个不需要公式的故事

你在一个两格房间里,当前位置叫 X。你决定向右走;地板有点滑,可能走到 Y,也可能停在 X。这一步收到 2 分。接下来还要继续选动作、走动、收分。强化学习中的符号,就是给这个过程的各个部分起短名字,并没有凭空增加一套东西。

状态是“我在哪里以及其他有用信息”;动作是“我决定怎么走”;奖励是“这一步拿了几分”;策略是“在每个状态怎么选动作”;价值是“从这里接着走,长期大概拿多少分”。先分开这五个角色,再看符号。

沿一条时间线认识下标

设现在是第 0 步。S₀=X 表示当前位置;A₀=right 表示选择向右。执行后才看到 R₁=2 和 S₁=Y。奖励下标多一个 1,只是因为它是执行第 0 步动作之后收到的结果。随后在 Y 选择 A₁,再收到 R₂。

时间线上的项目本例是什么读法
S₀X第 0 步状态
A₀right第 0 步选出的动作
R₁2刚执行 A₀ 后收到的奖励
S₁Y执行 A₀ 后到达的下一状态

大写 Sₜ、Aₜ、Rₜ 常表示随轨迹变化的量;小写 s、a、r 常表示某个具体取值。s′ 读作“下一状态”,撇号不是求导。刚开始读公式时,可以先把 s 看成 X、a 看成 right、r 看成 2。

为什么同一页有两个概率?

π(right∣X)=0.6 说的是“我在 X 时有 60% 概率选择向右”,属于决策规则。p(Y∣X,right)=0.8 说的是“已经决定向右之后,有 80% 概率真的到 Y”,属于环境规律。

从还没选动作的 X 出发,沿“选 right,然后成功到 Y”这条路径的概率是 0.6×0.8=0.48。竖线 ∣ 左边是所问结果,右边是已知条件。若题目已经说“选择了 right”,再问到 Y 的概率,答案就是 0.8,不再乘 0.6。

Σ、期望、max、argmax 分别在做什么?

设 Left、Right 的价值为 2、6,策略以 0.25、0.75 的概率选择它们。Σ 只是“逐项相加”的简写;期望 E 是“按发生概率加权后相加”。本例期望为 0.25×2+0.75×6=5。它不是最好结果 6,也不是简单平均 4。

\sum_a\pi(a\mid s)q(s,a)=0.25\times2+0.75\times6=5

max 返回最大数,本例为 6;argmax 返回使数最大的位置或动作,本例为 Right。求策略需要知道做什么,用 argmax;求最好能拿多少,用 max。若两个动作都是 6,它们都属于 argmax 的结果集合。

三种“分数”不要混起来

即时奖励 R 是一次转移的分数;回报 G 是从某次访问开始,把后续奖励折扣相加的样本总分;价值 vπ 或 qπ 是按策略 π 重复这个未来过程的期望回报。一次轨迹的 G 可以高于或低于期望价值,就像一次成绩不等于长期平均。

V、Q 常写当前存储的估计;vπ、qπ 常写理论真值。这种大小写约定并非所有教材都完全一致,还要看题目定义。θ、w 是待学习参数;θ⁻ 常标记延迟更新的目标网络参数,不是在执行减法。

γ、α、ε 看起来都在 0 到 1,却负责不同事情

γ 是未来奖励每延迟一步的折扣;α 是估计朝目标移动多少;ε 是随机探索分支的概率。例如旧值 2、目标 6、α=0.25,新估计为 2+0.25×(6−2)=3;这一步没有用 ε,也不该再用 γ 打一次折。

λ 在多步学习里控制不同长度目标的混合或资格迹衰减。t 通常是环境时间;k 在价值迭代里是计算轮数;n 可能是备份步数或样本次数。下标含义必须结合算法。

梯度也先用一个数理解

若 f(w)=2w,w 增加 0.1,f 增加 0.2,所以变化率 df/dw=2。多个参数时,把各参数的变化率排成向量,叫梯度 ∇f。想局部增大 f 通常沿梯度移动;想减小损失则沿负梯度移动。它描述方向和局部敏感程度,不是概率。

自己试一下

动作 A、B 的 Q 值为 1、5,策略分别以 0.75、0.25 选它们。期望动作价值、最大价值、贪心动作分别是什么?

我想好了,展开答案与理由

期望为 0.75×1+0.25×5=2;max 为 5;argmax 对应 B。三个答案分别是“按当前策略平均会怎样”“最好有多少”“该选择谁”,并不矛盾。

仅保存在当前浏览器
RL5–RL12 联合复习从问题讲起 · 逐步算清

算法总对照:对象、数据、目标、作用

Algorithm comparison

本节一步步会讲什么

先问:这些算法在做同一件事吗?

玩迷宫时,你可能只想知道“现有走法平均得多少分”,也可能想学会“每个位置怎样走更好”;你可能知道地图规则,也可能只能亲自尝试。算法的区别首先来自这些问题,不是来自公式长得像不像。

按三个问题拆开整门课:评价固定策略,还是改进动作?知道环境规则,还是只有样本?价值表放得下,还是需要参数函数?深度 RL 是在状态空间与数据条件变化时,继续学习价值或策略。

同一个转移,比较四种目标来源

一次非终止转移:在 S 做动作,得到奖励 1,到 U;γ=0.5。V(U)=4;U 的两个 Q 值为 2、6,真实下一动作是第一个。假设回合后来还收到 2、4 后结束。

MC 等完整回合结束,目标 G=1+0.5×2+0.5²×4=3。TD(0) 不等结束,用一步奖励加当前对 U 的整体估计,目标 1+0.5×4=3。这里碰巧相等,但来源不同:前者来自实际后续奖励,后者来自当前估计。

SARSA 更新 Q(S,A) 时,用真实下一动作 Q=2,目标 1+0.5×2=2。Q-learning 更新同一个位置,但用下一状态最大 Q=6,目标 1+0.5×6=4。前者把实际后续行为放进目标,后者按后续贪心行动构造目标。

目标算完,才考虑怎么改旧估计

假设待更新的旧估计为 1、α=0.5。若目标为 3,新值是 1+0.5×(3−1)=2;若目标为 2,新值为 1.5;若目标为 4,新值为 2.5。目标是想靠近的参考值,新值是只走了一部分后的结果。

\mathrm{new}=\mathrm{old}+\alpha(\mathrm{target}-\mathrm{old})

很多算法都有这个形式。辨认方法时,要追问 target 放了谁,不能只看外面都是“旧值加误差”。

DP 为什么单独一类?

前面使用一条采样转移;DP 掌握转移和奖励模型,可以列出所有后继结果,按概率求完整期望。固定 π 时评估策略;对动作取最大时进行价值迭代。DP 不必等一次真实回合结束,但需要模型信息。

方法主要回答什么目标来源
DP 策略评估固定走法的 V 有多好对动作与环境结果求模型期望
价值迭代最优 V 有多好模型期望之后,对动作取最大
MC从完整经历评价 V 或 Q从本次访问开始的完整样本回报
TD(0)不等回合结束评价 V一步奖励加后继 V 估计
SARSA评价并改进实际行为策略 Q一步奖励加实际下一动作 Q
Q-learning从探索数据学习贪心最优 Q一步奖励加后继最大 Q

DQN 的几个名字改变不同环节

状态太多时,DQN 用网络输出 Q,配经验回放和目标网络稳定训练。若目标网络在 U 输出 (7,3),普通 DQN 目标为 1+0.5×7=4.5。若在线网络仍输出 (2,6),Double 先用在线网络选第二动作,再读目标网络第二动作 3,目标为 1+0.5×3=2.5。

优先经验回放 PER 改“从经验池抽哪条数据”;Dueling 改“网络怎样把状态价值与动作差异组合成 Q”。它们不是互斥三选一。看到组合方法时,分开找数据选择、网络表示、目标构造这三处。

策略梯度和规划放在哪里?

REINFORCE 直接改策略参数,让表现好于基准的采样动作更可能再出现。Actor–critic 同时学策略与价值,critic 提供评价信号。这时更新的不只是一个 Q 表格数字,而是一组动作概率的生成规则。

Dyna 先用真实转移学习,再用模型生成模拟转移继续学。MCTS 为当前决定在模拟树中探索并比较动作。前者强调真实与模拟经验的结合,后者强调当前决策的搜索。

自己试一下

某方法存一个 Q 网络,行为为 ε-greedy,训练时在线网络选动作、目标网络评价,数据按 TD error 大小非均匀抽样。分别用了哪些思想?能确定用了 Dueling 吗?

我想好了,展开答案与理由

Q 网络是函数近似;ε-greedy 是行为选动作规则;在线选、目标评价是 Double DQN;误差优先抽样是 PER。不能确定 Dueling,因为尚未描述网络是否具有价值与优势两个分支。不同名字修饰不同环节,可以同时出现。

读到一半卡住时,先补这里:
仅保存在当前浏览器
跨章节计算方法从问题讲起 · 逐步算清

做计算前的六个检查

Calculation checklist; Terminal handling

本节一步步会讲什么

先把计算题翻译成要做的事情

题目说:Q(S,A)=2,做动作得到奖励 1,到 U,γ=0.5,α=0.25,U 的两个 Q 值为 4、8,真实下一动作是第一个,求 SARSA 更新。它不是让你把所有数字乘起来,而是修改表格里的一个位置 Q(S,A)。

先写四格草稿:“更新谁、旧值多少、目标是什么、走差距的多少”。下面六步把这些信息填完整。

第一步:确认更新位置和旧值

更新的是出发前状态动作对 (S,A),旧值 2。虽然目标出现 U 的值,这一步并不是修改 Q(U,第一个动作)。把“被更新的格子”和“提供参考的格子”分开,能避免取错数。

第二步:先判断是否真正终止

U 非终止,所以还有未来回报。若改成真正终点 T,未来价值为零,但刚收到的奖励 1 仍保留,目标是 1 而不是 0。进入终点这一步的奖励不能删掉。

第三步:根据算法选择未来项

SARSA 用真实下一动作,题目说第一个,所以读 4,而不是较大的 8。若问 Q-learning,才用 max(4,8)=8;若问固定随机策略的期望备份,则按动作概率平均。这一步决定算法,不应等算完才看题名。

第四步:单独写目标,再写误差

y=1+0.5\times4=3,\qquad\delta=y-2=1

奖励 1 刚刚发生;0.5 折扣下一状态的未来价值;4 是第一个动作的价值估计。目标 3 减旧值 2,才得到误差 1。δ 不是目标,目标也不是最后的新值。

第五步:学习率决定移动多远

Q_{new}(S,A)=2+0.25(3-2)=2.25

从 2 向目标 3 移动差距的四分之一,即移动 0.25,得到 2.25。写成 3 是忽略步长;写成 0.25 则只写了改变量。学习率 α 与探索概率 ε、折扣 γ 负责不同事。

第六步:判断读旧表还是新表

在线学习处理完此转移,下一条转移能读新值 2.25。同步 DP 一轮中所有状态则读上一轮完整表。若题目要求分别比较 SARSA 与 Q-learning,两者都从原始 Q=2 重启,不让后者接着 2.25 算。

本例独立计算 Q-learning:目标 1+0.5×8=5,误差 5−2=3,新值 2+0.25×3=2.75。同一份转移因为选用的目标不同,会得到不同更新。

MDP 方程题怎样用这套思路?

方程题可能不给 α,因为要求的是真实价值,不是一次学习。固定策略后,对每个动作列出“概率、即时奖励、下一状态”,再写“当前价值=一步奖励期望+折扣后的未来价值期望”。几个关联的非终止未知值,就列几个方程。

例如 X 每步奖励 1,0.5 回 X、0.5 终止,γ=0.5。真实值满足 v=1+0.25v,解得 4/3;若只问从 V₀=0 做一轮迭代,则 V₁=1。求固定点与更新一次的答案不同,是因为问题不同。

三条数值自检

概率加权平均应落在被平均数的最小值和最大值之间;α 在 0 到 1 的标量更新,新值应落在旧值与目标之间;每行转移概率应加到 1。本例新值 2.25 在 2 与 3 之间,方向正确。它们能发现算术问题,但不能代替正确选算法。

自己试一下

把开头的转移改为真正终止,保留旧 Q=2、奖励 1、α=0.25。目标、误差、新值各是多少?还用看 U 的 Q 值吗?

我想好了,展开答案与理由

目标 y=1,误差 δ=1−2=−1,新值 Q=2+0.25×(−1)=1.75。不需要后继 Q。1.75 介于旧值 2 与目标 1;它不直接等于 1,因为学习率不是 1。

读到一半卡住时,先补这里:
仅保存在当前浏览器