本节一步步会讲什么 从一个需要连续做决定的问题开始 把故事里的四个角色认清楚 用数字看“长期”为什么重要 这和“学习识别图片”有什么不同? 自己试一下 从一个需要连续做决定的问题开始 你让机器人从家里去充电站。它在门口有两条路:右路看起来很近,但走进去才发现后面被堵住;左路第一步离充电站更远,却能绕过去。如果只问“这一步有没有靠近目标”,右路似乎更好;如果问“最后能不能到、总共花多久”,左路可能更好。强化学习要处理的正是这种问题:眼前动作会改变后面还能遇到什么、还能做什么。
机器人并没有一份标着“每个路口正确方向”的答案。它要走、观察后果、修正判断,然后逐渐找到更好的走法。这里先理解这个过程,再认识名称。
把故事里的四个角色认清楚 术语 在这个例子里是什么 它不是什么 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,差别存在于后续,因此只比较即时奖励无法区分。这里比较的是整段回报,而不是把负号当成“越负越好”。
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 先看“现在得分高”为什么可能不是好选择 同一故事中的三个量 折扣先作直观认识 信用分配到底在分配什么? 奖励设计也必须对准目的 自己试一下 先看“现在得分高”为什么可能不是好选择 一个游戏有两条路线。路线 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。
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 你还不知道哪家店最好时,怎么选? 用一次估计错误说明为什么不能永远贪心 一个可计算的探索规则 另外两组分类不要混在一起 自己试一下 你还不知道哪家店最好时,怎么选? 熟悉的餐厅每次约 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。
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 先想象一张越来越大的记分表 从“每个状态一个数”变成“共享一条规则” 共享为什么既有好处,也会出错? “深度”改变哪一部分? 为什么 RL 数据不像固定题库? 自己试一下 先想象一张越来越大的记分表 如果迷宫只有 10 个格子,你可以给每个格子单独记录“从这里出发平均能得到多少分”。但如果机器人看到的是相机图像,光线略变、位置移动一点就可能产生一张新图。给所有可能图像逐一建表、每张都尝试很多次,几乎做不到。
我们希望在几个路口学到的经验,也能帮助判断没见过但相似的路口。这种把已有经验用于新情况的能力叫泛化 generalization。这一节解释为何后来要引入函数近似和神经网络,而不是要求你先会搭网络。
从“每个状态一个数”变成“共享一条规则” 假设我们用到出口的距离 d 来概括状态。距离 2 的地方学到价值约 -2,距离 4 的地方约 -4。一个简单近似规则可以是“价值约等于距离的负数”。于是没单独训练过的距离 3,也能估成 -3。
这里 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。若距离不是充分特征或参数没学好,预测可能偏差很大。
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 把一次移动慢放,先别背下标 每个记号放在哪个时刻? 策略的随机与环境的随机分两步 环境概率怎样写? 观测与历史为什么也会出现? 自己试一下 把一次移动慢放,先别背下标 机器人现在站在路口。先看清自己在哪,再选向右;动作执行后,地面可能让它成功到隔壁,也可能打滑留在原地,同时这次移动扣 1 分。先有当前信息和动作,后有这次动作的结果。强化学习的下标就是为了把这个先后顺序写清楚。
每个记号放在哪个时刻? 记号 含义 本次移动的例子 t 当前决策时刻的编号 例如 t=0,刚准备出发 St 做这次决定前的状态 当前在路口 A At 此刻选出的动作 向右 Rt+1 这个动作执行后收到的奖励 移动扣 1,所以为 -1 St+1 这个动作执行后到达的状态 成功到 B,或打滑仍在 A
箭头是时间顺序,不是某个求值公式。奖励写 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 相加,因为同一路径要连续满足两件事。
环境概率怎样写? 竖线“|”读作“已知……条件下”。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 的概率。
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 为什么“我站在哪”有时还不够? 它要求“信息够用”,不是“所有过去都无关” 一个数字例子帮助区分“随机”与“缺信息” 怎样判断自己的状态有没有漏信息? 自己试一下 为什么“我站在哪”有时还不够? 两次你都站在同一扇门前,做同样的“开门”动作。第一次以前捡过钥匙,门开了;第二次没有钥匙,门打不开。如果状态只写“门口”,就把影响结果的两种情况混在一起。你必须回头查历史有没有拿钥匙,才能更准确预测结果。
把状态改为“当前位置 + 是否持有钥匙”后,过去绕过多少圈、在哪个时刻捡到钥匙,一般不再重要。当前状态已经保留了预测下一步所需的那部分信息。这就是理解 Markov property 的入口。
它要求“信息够用”,不是“所有过去都无关” 马尔可夫性说:已知当前状态及动作以后,更多的过去信息不会再改变对下一状态、奖励的条件预测。历史仍可能影响当前状态;只是这种影响已经被当前状态总结了。
左边知道完整历史 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 假设决策所需状态能被观察,下一节会处理看不完整的情况。
自己试一下 一辆车的下一位置取决于当前速度。若状态只记录位置,而不知道它向左还是向右运动,这个表示为什么可能不满足马尔可夫性?
我想好了,展开答案与理由 同一位置、同一控制动作下,不同速度会导致不同下一位置。如果过去的画面能告诉我们速度,那么加入历史会改变预测,说明“位置”不够。把相关速度加入状态可以补上这个缺口;是否完全充分仍要看实际动力学还有没有其他隐藏变量。
读到一半卡住时,先补这里: 智能体、环境与交互时序
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 只给你一张截图,你知道车正在往哪走吗? 状态、观测和信念不是同一个东西 用一条新观测更新判断 记住历史的几种办法 自己试一下 只给你一张截图,你知道车正在往哪走吗? 汽车在画面中央,同一张位置图可能来自向左运动,也可能来自向右运动。你能看到当前画面,却看不到速度;但速度会影响下一步结果。另一例是两个走廊长得一样,只看现在这张照片无法判断自己在哪一个。环境仍在演化,只是智能体看到的信息不完整。
上一节要求状态足以预测未来;这一节讨论当单次观测做不到时,怎样表达“我对真实情况还不确定”。这类问题称部分可观测决策问题 POMDP。
状态、观测和信念不是同一个东西 术语 在走廊例子里的含义 隐藏状态 St 实际上位于走廊 A 还是 B 观测 Ot 相机看到的画面 历史 Ht 之前看过什么、做过什么、收到什么反馈 信念 bt 利用这些记录,估计位于各隐藏状态的概率
括号里的 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。
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 在一个路口,你其实会问三个不同的问题 先看输出是什么,再认名字 把同一份信息按三个用途算一遍 确定性与随机策略怎样写? 后面算法怎样使用这些组件? 自己试一下 在一个路口,你其实会问三个不同的问题 机器人走到 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,但它们本身不是同一种对象。
确定性与随机策略怎样写? 左式把策略写成直接输出一个动作的函数,例如 π(S)=左;右式输出动作分布,例如 π(左|S)=0.7。竖线表示已经知道当前状态。随机策略并不表示每次都均匀乱选,它可以有很明确的不均匀偏好。
后面算法怎样使用这些组件? 价值方法先学 V 或 Q,再据此选动作;策略方法直接调整动作分布;actor–critic 同时学策略和价值。Model-based 方法显式利用环境转移与奖励模型;model-free 方法不需要先提供这种模型。
自己试一下 一个网络输入状态,输出 (2,6)。仅知道它是 DQN 的输出,能否说动作概率是 0.25 和 0.75?
我想好了,展开答案与理由 不能。DQN 输出的是动作价值 2 和 6,而不是概率。若采用贪心策略,会选第二动作;若采用 ε-greedy,还需要给定 ε 才能得到动作概率。直接把两个 Q 除以总和,没有得到任何已指定算法的必然规则。
读到一半卡住时,先补这里: 智能体、环境与交互时序 强化学习究竟在解决什么问题?
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 同一张地图,可以提出两类任务 固定什么、求什么? 一个最小数值例子 学习与规划又是另一组区别 读题时的判断顺序 自己试一下 同一张地图,可以提出两类任务 你已经规定机器人“每个方向各以 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。第一个问题必须使用给定概率;第二个问题允许改变动作规则,因此取最优动作。
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 从“天气会怎样变”到“我该做什么” 按增加的要素整理 转移矩阵到底是一张什么表? 怎样用表求下一状态价值的平均? 自己试一下 从“天气会怎样变”到“我该做什么” 假设我们只观察晴、雨两种天气,知道今天晴时明天晴的概率 0.8、雨的概率 0.2。这只描述状态如何变化,没有好坏分数,也没有可选动作,称马尔可夫过程 MP 或马尔可夫链。
若再规定晴天每天得到 2 分、雨天扣 1 分,并说明未来怎样折扣,就能问“从晴天起的长期平均分数是多少”,这变成马尔可夫奖励过程 MRP。如果还能选择是否撑伞,而动作会影响奖励或状态变化,就进入马尔可夫决策过程 MDP。三个缩写的差别在于增加了什么信息,而不是三个完全无关的新公式。
按增加的要素整理 对象 已经描述什么 能提出什么问题 MP / Markov chain 状态和转移概率 下一状态有多大概率出现? MRP 再加奖励和折扣 从这里继续演化,预期累计奖励多少? MDP 再加动作及动作条件下的规律 应该选什么动作才能改善长期结果?
转移矩阵到底是一张什么表? 令状态顺序为 (晴,雨)。设雨天明天晴的概率为 0.4、雨为 0.6。把“从哪里出发”放在行,“到哪里去”放在列:
当前 → 下一状态 晴 雨 晴 0.8 0.2 雨 0.4 0.6
P 的一个元素 Pij 就是从 i 到 j 的概率。每行必须非负且和为 1,因为从一个当前状态出发,所有可能下一结果的总概率为 1。列和不必为 1,这里晴这一列和为 1.2,也没有问题。
怎样用表求下一状态价值的平均? 假设晴、雨的未来价值暂给为 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 出发”。这只是后继价值平均,还没加即时奖励或乘折扣。
读到一半卡住时,先补这里: 马尔可夫状态:当前信息是否足够?
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 先把一段经历列成时间表 每个符号现在都有对应物 换一个起点,折扣次数要重新数 终点为零究竟指什么? γ=0、γ 接近 1、γ=1 分别意味着什么? 自己试一下 先把一段经历列成时间表 你刚要出发,接下来的三个动作分别带来奖励 2、-1、4,然后结束。现在问“从出发时看,这段经历一共值多少?”如果晚一步的分数只按前一步的一半计算,就设折扣因子 γ=0.5。第一笔奖励已经是接下来立刻收到的奖励,不需要先打折。
从出发时看 奖励 权重 贡献 第一次收到 2 1 2 第二次收到 -1 0.5 -0.5 第三次收到 4 0.5²=0.25 1
把三项相加,起点回报为 2-0.5+1=2.5。折扣的是“距离所问起点有多远”,不是奖励数值的大小。
每个符号现在都有对应物 Gt 表示从时刻 t 开始往后看的回报;Rt+1 是此刻动作之后收到的第一笔奖励;γ 是每往后延迟一步多乘一次的系数;T 表示回合结束的时刻。求和里的 j=0 表示第一笔,所以权重是 γ⁰=1。
这条式子只是把表格压成一行。Σ 读“把所有这些项加起来”,并不是另外需要求解的参数。
换一个起点,折扣次数要重新数 刚收到第一笔 2 分后,未来只剩 -1 和 4。此时 G₁=-1+0.5×4=1;再往后 G₂=4。由此可以从终点往前倒推:
先 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 仍计入。
读到一半卡住时,先补这里: 奖励、长期目标与信用分配
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 未来有很多步,难道要把每条无限路径全写出来? 把一句人话写成一个方程 联立时每一步怎样做? 一般形式只是同一件事的缩写 自己试一下 未来有很多步,难道要把每条无限路径全写出来? 一个过程有状态 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。
从 B 开始,第一笔是 2;后面只有 0.25 的分支继续到 A,另 0.75 的终点分支价值为 0。
同一未知数在等号两边出现,是因为过程可能回到同一状态,之后又面临相同的长期问题。这是自洽关系,不是把奖励重复加错了。
联立时每一步怎样做? 第一式移项得 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。
代回检查:A 的右侧为 1+0.4×(45+35)/13=45/13;B 为 2+9/13=35/13。两式同时满足才算解对。
一般形式只是同一件事的缩写 r(s) 是从 s 出发的一步奖励期望,p 是后继概率,Σ 遍历所有可能 s′,v(s′) 是后继的长期价值。先平均下一步,再把后面的长期价值当作整体接上。
矩阵 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,而不是认为循环一定导致无限值。
读到一半卡住时,先补这里: 马尔可夫过程、MRP 与 MDP 回报与折扣:从哪一步开始乘 γ?
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 先弄明白:为什么突然要把 MDP 变成 MRP? 先把状态、动作和奖励定义完整 第一步:列出所有完整路径 第二步:不再关心通过哪个动作,只按终点归类 第三步:把一步奖励也平均进去 现在再看通用公式,每个符号都有来源 最后才用五元组把 MDP 的资料打包 自己试一下 先弄明白:为什么突然要把 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 出发的一步规律,未来折扣 γ 先不参与这一步概率合并。
当前状态 可选动作 选该动作的概率 执行动作后的环境结果 这一步奖励 Y retry 再试一次 0.25 0.5 到 X,0.5 到 T 0 Y finish 结束 0.75 1 到 T 4 X exit 离开 1 1 到 T 0
注意“0.25 选 retry”是策略的随机性;“选了 retry 后,0.5 到 X”是环境的随机性。它们位于一条路径的不同阶段,不能任选一个作为最终概率。
第一步:列出所有完整路径 一条完整路径 路径概率怎么算 结果 Y → 选 retry → X 0.25×0.5=0.125 到 X,奖励 0 Y → 选 retry → T 0.25×0.5=0.125 到 T,奖励 0 Y → 选 finish → T 0.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 从 Y 0 0.125 0.875 从 X 0 0 1 从 T 0 0 1
终点写成吸收状态,即以 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。
现在再看通用公式,每个符号都有来源 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(s,a) 表示已经选定动作 a 后,一步奖励的期望。若动作本身还会产生随机奖励,这个期望要先对其环境结果算好;之后再乘动作概率。r^π(Y)=3 正是固定策略的一步平均奖励,不是从 Y 开始的总回报。
最后才用五元组把 MDP 的资料打包 S 是有哪些状态,A 是有哪些动作,p 是每个动作怎样引起转移,r 是一步奖励规律的相应表示,γ 是未来折扣。这个括号不是计算式,只是一张“构建问题要交哪些资料”的清单。固定 π 后,得到状态、P^π、r^π、γ 描述的 MRP,再用上一节 Bellman 方程评价它。
易错点与理解关键 平稳 stationary 表示同一状态的动作概率规则不随时间改变,不表示每次选同一动作。本例始终按 0.25/0.75 抽动作,是平稳随机策略。固定策略也不会消除环境随机性;即使一定 retry,结果仍可各一半到 X 或 T。
自己试一下 其他规律不变,把 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 的概率,环境规则保持题给数值。
选择 retry 的概率:0.25
展开第 1 步:先选动作 从头看
读到一半卡住时,先补这里: 策略、价值函数、模型:三者各管什么? 马尔可夫过程、MRP 与 MDP
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 在路口问问题,第一步到底有没有被指定? 先用两个已知长期结果算 V Q 又怎样从后继 V 得到? 把定义与条件读成人话 什么时候用哪个? 自己试一下 在路口问问题,第一步到底有没有被指定? 你走到 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。
π 是后续采用的策略,π(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(S,右) 里不再乘“平时只有 0.75 概率选右”,因为题目已经固定先选右。但右动作产生的两个环境结果仍要平均。当前动作固定与下一结果随机可以同时成立。
把定义与条件读成人话 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 是它对随机策略状态价值的加权贡献,不是该动作自己的条件价值。
读到一半卡住时,先补这里: 回报与折扣:从哪一步开始乘 γ? MDP 与固定策略诱导的 MRP
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 先说这四条式子究竟想解决什么 例子中的所有规则先给全 第一步:从离终点最近的 X、Y 算起 第二步:假设 S 的第一动作已指定,分别算两个 Q 第三步:回到 S,连第一动作也按策略平均 先认公式里的每个符号 写法 1:V 用 Q 表示——只展开选动作这一层 写法 2:Q 用 V 表示——固定当前动作,展开环境这一层 写法 3:V 用后继 V 表示——把前两式接起来 写法 4:Q 用后继 Q 表示——再展开下一状态选动作这一层 四种写法在做题时怎样选? 为什么还会看到 Vₖ、Vₖ₊₁? 自己试一下 先说这四条式子究竟想解决什么 你已经固定一套选动作的规则 π,现在想评价它。从起点开始,可能选不同动作,动作又可能造成不同结果,以后还会继续选动作。若把每条未来路线写到底,表达会很长。Bellman 关系把长期回报拆成“眼前一笔奖励 + 下一状态起的剩余价值”,并对不确定的分支取平均。
四种写法不是四个不同算法,而是同一张决策树的四种展开程度:当前层可以用 V 或 Q 表示,下一层也可以用 V 或 Q 表示。先跟着一个完整小例子把每个数算出来,再把它们放回公式。
例子中的所有规则先给全 有四个状态 S、X、Y、T;S 是起点,T 是终点,γ=0.5。到达 T 后没有未来奖励,vπ(T)=0。
位置 策略怎样选动作 动作的即时奖励 动作之后去哪 S a 概率 0.25 1 一半到 X,一半到 T S b 概率 0.75 2 确定到 Y X L、R 各 0.5 L 得 2;R 得 6 两者都随后终止 Y L、R 各 0.5 L 得 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 表示——只展开选动作这一层 什么时候用:题目已经给各动作的 Q,且给策略概率。里面的环境转移与未来行为已经包含在 Q 中,不必再重复算一遍。这一式的随机性平均对象是“第一步选哪个动作”。
写法 2:Q 用 V 表示——固定当前动作,展开环境这一层 已知 s=S、动作=a,可能的 (s′,r) 只有 (X,1) 与 (T,1),各概率 0.5。因此求和里看起来复杂的两个下标,实际只对应这两条分支。b 动作只有一条结果,故 qπ(S,b)=1×[2+0.5×6]=5。
写法 3:V 用后继 V 表示——把前两式接起来 先算内层: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 表示——再展开下一状态选动作这一层 这里当前动作 a 已经固定,所以最外面没有当前动作的 π(a|s)。但到达 X 后仍要按 π 选择 L 或 R,因此后继 V 要展开成 0.5qπ(X,L)+0.5qπ(X,R)。
内层 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 也可能改变;本例不变有其结构原因。
读到一半卡住时,先补这里: 先认符号,再读公式 MDP 与固定策略诱导的 MRP 状态价值 V 与动作价值 Q
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 “能得多少分”和“应该选哪个”是两个答案 两个运算都写给你看 最优里的星号又比普通价值多了什么? 一个“策略不同、价值相同”的例子 自己试一下 “能得多少分”和“应该选哪个”是两个答案 一个状态有三个动作:左、右、等待。它们的动作价值依次是 -3、-1、-1。你问“最好能达到多少”,答案是数字 -1;你问“哪个动作达到这个最好结果”,答案是右或等待。max 和 argmax 就分别用来表达这两个问题。
最大值不是绝对值最大:-1 大于 -3。若表示损失,少损失 1 比损失 3 好。所以看到一组负 Q 也照常比较数值大小。
两个运算都写给你看 L、R、W 分别代表左、右、等待;arg 是 argument 的缩写,这里指“使函数达到最大值的输入动作”。数学上 argmax 可以是一个集合;算法若只需输出一个动作,还要规定如何处理并列,例如选较小编号或随机选一个最大动作。
最优里的星号又比普通价值多了什么? vπ(s) 是按某个已经给定的策略 π 继续的平均回报。v*(s) 是在允许的所有策略中,能达到的最高平均回报。q*(s,a) 仍然先固定这一步做 a,只是之后允许采取最佳后续行为。
这里 max 的下标是 π,表示在策略之间比较;从 q* 导出最优动作时,才是在动作 a 之间比较。它们都叫最大化,但比较的对象不同。
一个“策略不同、价值相同”的例子 在 S 选左立即得 4 并终止,选右也立即得 4 并终止。总选左与总选右是两套不同的确定性策略,却都得到最优价值 4;任何混合它们的随机策略在这个状态也得到 4。因此最优价值唯一,不代表最优策略一定唯一。
若动作值只是当前估计 Q,而不是 q*,用 argmax Q 得到的只是当前贪心动作,不一定已经真实最优。后面需要学习或规划,把估计逐步变准确。
∈ 读作“属于”,提示最优策略可以从并列最大动作中选一个。标准有限、完全可观测、折扣 MDP 存在确定性的平稳最优策略;这里是说存在,不是说所有最优策略都必须唯一或确定。
自己试一下 动作 a、b、c 的值为 (2,7,7)。max 是什么?argmax 是什么?若要求选择单个动作,还缺哪项约定?
我想好了,展开答案与理由 max=7,是数值;argmax={b,c},是达到这个数值的动作集合。要输出一个动作,需要并列处理规则,例如取 b 或在 b、c 间随机。写“argmax=7”把动作与价值混淆了。
读到一半卡住时,先补这里: 状态价值 V 与动作价值 Q
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 你能选动作,但不能挑运气 先用即时奖励和后继值做一次完整比较 状态价值的最优方程 动作价值的最优方程 为什么不能总像上一节那样解一个线性系统? 自己试一下 你能选动作,但不能挑运气 有两个动作。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 是两个不同的输出。
状态价值的最优方程 s 是当前状态,a 是你可选择的动作;p 是该动作之后环境各结果的概率;r 是这次实际奖励;s′ 是下一状态;v*(s′) 假设到了那里以后继续采取最优行为。内层 Σ 算每个动作的平均长期评价,外层 max 才决定最优动作值。
不要把 max 移到环境结果上。刚才 a 的最好分支评价为 5,但它只有一半概率发生;用 5 代替 a 的平均 3,会错误地选择 a。
动作价值的最优方程 左侧已经指定当前动作 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,那样漏掉了随机分支概率。
读到一半卡住时,先补这里: Bellman 期望方程:四种写法如何对应? 最优价值、最优策略、max 与 argmax
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 方程知道了,但状态太多,怎样一步步算出答案? 一个两状态任务,先列清规则 把前三轮完整写出来 一般策略评估更新怎样读? 怎样知道方向是否对? DP 使用的资料从哪里来? 自己试一下 方程知道了,但状态太多,怎样一步步算出答案? 上一章 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=1 1+0.5×0=1 2+0.5×0=2 (1,2) k=2 1+0.5×2=2 2+0.5×1=2.5 (2,2.5) k=3 1+0.5×2.5=2.25 2+0.5×2=3 (2.25,3)
第二轮 B 使用的是第一轮 A=1,而不是刚算出的第二轮 A=2。原因是本例采用同步更新:先完整读旧表,再统一得到新表。若你在第二轮 B 写 2+0.5×2=3,计算的就变成另一个更新约定。
一般策略评估更新怎样读? 先取某动作 a 的各环境结果,用旧表 Vₖ(s′) 估计后面的未来;把结果按环境概率 p 平均;再按策略概率 π 平均各动作。k+1 是这次新表的轮数,不是奖励发生在未来 k+1 步,也不是智能体走了几步。
怎样知道方向是否对? 本例精确解为 vA=8/3≈2.6667、vB=10/3≈3.3333。随着重复更新,表会向这两个数靠近。实际可记录最大单轮变化 Δ=maxs |Vₖ₊₁(s)-Vₖ(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。
读到一半卡住时,先补这里: Bellman 期望方程:四种写法如何对应?
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 这张表记录的不是位置,而是每个位置的预计剩余代价 先固定同一个格子,别整张表一起硬背 k=0 和 k=1:先有初值,再做第一轮 k=2:右侧全部查 V₁ 先准备 k=3 需要的 V₂ 数字 为什么整张表每一轮都更负? 自己试一下 这张表记录的不是位置,而是每个位置的预计剩余代价 机器人在 4×4 格子里随机走,四个方向各 1/4;左上角 (1,1)、右下角 (4,4) 是终点。每从非终点做一次动作就扣 1 分,包括走入终点,也包括撞墙留在原地。γ=1,所以不折扣。我们要评价这套随机走法,而不是指挥它每次朝最近终点走。
表中一个格子的数越负,表示预计还要扣的分越多。所有格子初始设为 0,只是算法的起始猜测;不是说从这些格子真实出发都不需要付代价。
先固定同一个格子,别整张表一起硬背 看终点右侧的格子 s=(1,2)。四个动作的去向:上会撞墙留在 (1,2),下到 (2,2),左进终点 (1,1),右到 (1,3)。先把后继位置列对,再查上一轮表。
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
这不是只选最好方向,仍是四个方向都按 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
先求和 -5.75,再除以 4 得 -1.4375,最后加本次 -1,得到 -2.4375。课件一位小数显示约 -2.4;算题时应保留未提前四舍五入的数字。
为什么整张表每一轮都更负? 初值 0 忽略了所有未来代价;第一轮补进一层步数代价,第二轮再把后继的代价接进来,第三轮继续传播。它是在修正对剩余长期结果的估计,不是机器人这一轮真的在四个方向都走了一遍。
易错点与理解关键 格子大小、终点位置不同,后继值也不同。3×3 中心的第三轮是 -2.75,4×4 的 (2,2) 是 -2.875,不能跨图套数。撞墙仍扣分;多个动作到同一位置也要各自占一份概率。
自己试一下 在同一个 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) 的右侧后继旧值。
读到一半卡住时,先补这里: 动态规划与迭代策略评估 回报与折扣:从哪一步开始乘 γ?
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 已经知道旧走法怎样,下一步怎样改? 用一个完整小任务分清旧价值与新价值 第一轮改进:每个动作都用旧表 (0,0) 改完策略后必须重新评估 公式只是这个比较过程的简写 为什么这样做通常不会比旧策略差? 自己试一下 已经知道旧走法怎样,下一步怎样改? 策略评估得到的是“照旧方法继续,平均有多好”。现在假设在当前状态只把第一动作换一下,之后仍照旧方法继续:算算每个候选第一动作能得到多少,再选最好的。这一步叫策略改进。
它不是凭直觉猜一条全新路线,而是利用已经评估出的旧价值,比较每个动作的一步后果。
用一个完整小任务分清旧价值与新价值 γ=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, stay 0+0.5×0 0 S, go 1+0.5×0 1 U, rest 0+0.5×0 0 U, cash 4+0.5×0 4
因此新策略 π′ 在 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。新策略精确评估后仍然贪心,才说明它在这个任务中已稳定。
公式只是这个比较过程的简写 π′ 是新策略;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 得到所有新状态价值。
读到一半卡住时,先补这里: 状态价值 V 与动作价值 Q 动态规划与迭代策略评估
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 为什么一次“找更好的动作”之后还要继续? 任务规则与初始策略 步骤一:评估 π₀,动作先别变 步骤二:用 (2,2) 比较全部候选动作 步骤三:重新评估 π₁ 步骤四:检查能否再改善 标准过程与两个扩展名词 自己试一下 为什么一次“找更好的动作”之后还要继续? 你改进了下游路口的走法,上游路口到那里的价值就可能改变。上游以前不值得走的路,现在也许值得了。因此不能只评估一次、改动作一次就假定全局完成。策略迭代就是把“评估当前规则”和“根据评价换更好规则”交替重复,直到得到稳定的选择。
本节把前两节的评估与改进连起来,用一个完整例子显示每轮读的是哪一套策略的价值。
任务规则与初始策略 γ=0.5,终点 T 价值为 0。S 有动作 a:得 1 回 S;动作 b:得 0 到 U。U 有动作 c:得 3 并终止;动作 d:得 1 到 S。初始策略 π₀=(a,d),表示 S 选 a、U 选 d,不是两个动作的概率各一半。
步骤一:评估 π₀,动作先别变 第一式移项得 0.5v₀(S)=1,所以 S=2;再放进第二式,U=1+0.5×2=2。这里写 v₀ 仅标记第 0 套策略的精确价值,不是“从零表做零轮备份”。
步骤二:用 (2,2) 比较全部候选动作 状态 第一个动作候选值 第二个动作候选值 新动作 S a:1+0.5×2=2 b:0+0.5×2=1 a U c:3 d:1+0.5×2=2 c
因此 π₁=(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 一定更好,还要把当前奖励与折扣一起算进去。
读到一半卡住时,先补这里: 策略改进:先试一个动作,再比较
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 先看经理每天究竟在决定什么 哪些是你能控制的,哪些不是? 一个单日玩具例子,把每一步算清 为什么有了 10 和 13 还不能马上宣布长期最优? 自己试一下 先看经理每天究竟在决定什么 有两个租车点 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;加上明天及以后车辆分布的价值,却可能不搬更好。这里未来价值是为了展示计算方式而给出的估计,并非已经求出的完整任务最优解。
公式里的每一项就是“某一需求与归还组合发生的概率 × 该结果的即时净收益和后续价值”。实际租出数量是 min(可用车辆,请求数量),不能把所有请求都算作已经成交。
自己试一下 仍用当前 (2,0) 的玩具例子,若 γ=0、只关心今天收益,选不搬还是搬一辆?若 B 有需求概率改为 0.2,搬一辆的平均即时净收益又是多少?
我想好了,展开答案与理由 γ=0 时未来价值不计,原例搬一辆平均收益 13>10,选搬。若 B 有需求概率为 0.2,则无需求概率 0.8,搬车平均收益为 0.8×8+0.2×18=10,与不搬的 10 并列。两种情况下都先算各需求结果,再按概率平均。
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 不等一套策略评完,能否边算边选更好的? 沿用可以自己重算的两状态任务 第一轮:先用零表比较 第二轮:两个候选恰好并列 第三轮:之前的并列被后续信息打破 一般公式怎样对应到这几轮? 怎样检查最终值? 自己试一下 不等一套策略评完,能否边算边选更好的? 策略迭代往往先把某个策略评价到足够准确,再比较动作。价值迭代选择更紧凑的做法:每次更新一个状态时,直接用当前后继价值算各动作候选值,把最大值写进新表。重复这个最优性备份,让价值表逼近 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)。每轮均读上一张完整表。
第一轮:先用零表比较 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。
一般公式怎样对应到这几轮? 对一个动作先算“奖励加折扣后的旧后继值”的期望;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 两个动作按一半平均。
读到一半卡住时,先补这里: Bellman 最优性方程:动作取最大,环境仍取平均
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 同一个方程,为什么别人一轮算出的数字和你不同? 同步与原地,完整算一轮 为何还要决定“优先算哪个状态”? 完整备份与样本备份再分一层 自己试一下 同一个方程,为什么别人一轮算出的数字和你不同? 假设旧价值表为 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。
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 一直反复更新,凭什么相信不会越算越离谱? 两张表的误差怎样量化? 为什么一次期望备份不会放大最大差异? 把这个过程写成压缩关系 怎样从“两张表靠近”得到“逼近真值”? 停止阈值与实际误差怎样联系? 自己试一下 一直反复更新,凭什么相信不会越算越离谱? 前几节从零开始,一轮轮更新,数值似乎越来越接近某个答案。但“几个例子看起来接近”不是一般证明。我们想知道:如果两张初始猜测表不一样,做同样的 Bellman 更新后,它们之间的差异会不会缩小?若每次都按固定比例缩小,就很难永远停在两个不同答案上。
在有限 MDP、0≤γ<1 的常见设置下,Bellman 算子具有这种压缩性质。先把“表之间差多远”定义清楚,再理解为什么会压缩。
两张表的误差怎样量化? 假设 V=(1,4)、W=(3,3),两个位置的差分别为 -2、1,绝对差为 2、1。我们只取其中最大的 2,表示最坏位置有多大差异,称无穷范数。
双竖线表示一种长度/误差度量,下面的 ∞ 是这种“取最大绝对差”的约定,不表示误差本身无限大;max 的对象是各状态误差。
为什么一次期望备份不会放大最大差异? 设所有状态上两张表的差都不超过 2。某动作后继以 0.25、0.75 到两个状态,那么加权平均的差最多为 0.25×2+0.75×2=2。即使各项误差方向不同,也只可能抵消,不能使绝对平均超过最大绝对误差。
两张表做同一个备份时,即时奖励完全相同,在相减时消掉;剩下的后继差异还要乘 γ。如果 γ=0.5,最大差异于是至多从 2 缩到 1。
把这个过程写成压缩关系 T 不是本节里的终点状态,而是“对整张价值表做一次 Bellman 更新”的操作符。Tπ 表示固定策略期望备份,T* 表示最优性备份。后者也满足相同界,因为两组候选值的最大值之差,不会超过对应候选之间的最大差异。
怎样从“两张表靠近”得到“逼近真值”? 真实价值 v 是不动点:Tv=v,意思是已经正确的价值再备份一次不会改变。把 W 选成这个不动点,上式说明每轮估计到真值的最坏误差至多乘一次 γ;重复 k 次得到:
例如初始最坏误差不超过 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 完全符合这个保证;上界用于控制最坏可能情况。
读到一半卡住时,先补这里: 价值迭代:每轮都直接取最大
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 先想一个实际问题:不知道迷宫规则,怎样评价一个位置? 先把奖励和回报分开 完整算一局,先从最后一步倒回来 首次访问和每次访问,只是在决定收哪些样本 多局数据怎样合在一起? 自己试一下 先想一个实际问题:不知道迷宫规则,怎样评价一个位置? 上一章的 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。
同一个 A 出现两次,对应回报不一样。这并不矛盾:一次距离终点较远,一次已接近结束;我们观察到的是不同随机经历中的样本,而不是每次都相同的真值。
首次访问和每次访问,只是在决定收哪些样本 版本 这一局给 A 收集的回报 若目前只有这一局,用样本均值估计 A First-visit MC 第一次出现后的 5.23 5.23 Every-visit MC 两次出现后的 5.23 和 3 (5.23+3)/2=4.115
“首次”每个回合重新计算,不是整个训练只更新 A 一次。B 在这局只出现一次,两种规则都使用 4.7。
多局数据怎样合在一起? s 是要评价的状态;G⁽ⁱ⁾(s) 是第 i 个被采用的回报样本;N(s) 是采用了多少个样本;Σ 表示把它们逐个加起来,再除以数量。比如 A 两局的首次回报为 5.23 和 2,均值为 3.615。后面会学“不保存全部样本”的增量写法。
易错点与理解关键 访问规则与平均方式是两个选择。First/every-visit 决定用哪些回报;sample mean 或固定 α 决定怎样吸收回报。标准完整回合 MC 要等后续奖励已知,不能在第一步就声称知道 G。目标里没有下一状态的当前估值,因此不自举。
自己试一下 一局 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。这里没有指定固定学习率,所以不能额外乘一个 α。
读到一半卡住时,先补这里: 回报与折扣:从哪一步开始乘 γ? 状态价值 V 与动作价值 Q
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 上节已经会求平均,但数据越来越多怎么办? 把“旧平均”拆回“旧总和”,公式就出来了 用三个数字检查它真的在求平均 强化学习把这个结构推广为“旧值向目标移动” 为什么固定步长更重视新样本? 收敛条件在限制什么? 自己试一下 上节已经会求平均,但数据越来越多怎么办? MC 每次收集一个回报后都能重新算平均。然而保存一百万个旧回报、每次全部相加很麻烦。我们希望只记住两个数:目前的平均值和样本个数。新数据来了,用这两个数就能得到新的平均值。
把“旧平均”拆回“旧总和”,公式就出来了 假设前 n−1 个样本的平均值是 Mₙ₋₁,那么它们的总和是 (n−1)Mₙ₋₁。第 n 个样本记为 Xₙ。新总和加上 Xₙ,再除以 n,整理后得到下面两种完全相同的写法。
这里 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) 是更新前的估计,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 时,上一轮里的每个旧样本权重又减半。因此它适合跟踪变化的均值,但在随机环境中也可能一直有小幅波动。
不必先背这个展开式:看 n=2 就够了,V₂=(1−α)²V₀+α(1−α)G₁+αG₂,能直接看到新回报 G₂ 的权重大于旧回报 G₁。
收敛条件在限制什么? 第一条希望累积学习能力不太早耗尽;第二条希望随机噪声的影响能逐渐被平均掉。1/n 满足这组常见条件,固定正 α 不满足第二条。它们是一些收敛定理的条件之一,还需任务和覆盖等假设,不是任何网络的万能保证。
自己试一下 旧估计为 6,目标为 2。分别用 α=0.25 和 α=1 计算新值;哪一个等于目标?
我想好了,展开答案与理由 误差为 2−6=−4。α=0.25 时,新值 6+0.25×(−4)=5;α=1 时,新值 6−4=2,直接到达本次目标。负误差意味着向下修正,不意味着算法出错。
读到一半卡住时,先补这里: 蒙特卡洛预测:等回合结束,用真实回报估值
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 为什么不总等一整局结束? 先把一条经历写清楚,再读公式 第一步:A 到 B,逐个数字来自哪里? 第二步:B 又回到 A,要读哪一个 A? 最后一步到终点怎么办? 自己试一下 为什么不总等一整局结束? 想象你估计“从当前位置走到终点还要多久”。走完第一段路后,你已经知道这一段花了多少时间,也到了一个新的位置。即使整条路还没走完,也可以把“刚花的时间”和“从新位置预计还要的时间”拼起来,修正原来的估计。TD,Temporal Difference,时间差分学习,就是这种逐步修正思路。
MC 等到结局才用完整回报;TD 只看一步真实结果,后面的部分先借用已有价值估计。因此它能更早更新,但目标也会受已有估计错误的影响。
先把一条经历写清楚,再读公式 在时刻 t,位于状态 Sₜ;动作发生后收到奖励 Rₜ₊₁,并到达 Sₜ₊₁。V(Sₜ) 是当前状态的旧估计,V(Sₜ₊₁) 是下一状态目前的估计。γ 给未来部分打折;α 控制更新幅度。不要因为奖励有 t+1 下标,就额外给第一笔奖励乘 γ。
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。
注意 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。
这与 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”避免混淆。
读到一半卡住时,先补这里: 增量均值、固定步长与学习率 Bellman 期望方程:四种写法如何对应?
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 一个方法看完整结局,另一个只看一步,哪个更可靠? 在一个真实小问题里比较 MC 和 TD 如果后继估计是对的呢? 为什么 TD 目标暂时有偏,最后仍可能学对? 自己试一下 一个方法看完整结局,另一个只看一步,哪个更可靠? 假设要估计从 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。它用较稳定的后继预测,换取了对该预测准确性的依赖。
如果后继估计是对的呢? 同一例子里,若 V(B)=10,TD 目标为 10:既没有末尾采样波动,也没有该估值导致的偏差。一般而言,把真实 vπ 代入下一状态,Bellman 期望关系保证 TD 目标有正确期望;实际训练中我们只有近似 V,才会出现自举误差。
要比较的问题 完整回合 MC 一步 TD 本次目标的信息 此后实际收到的全部奖励 一步实际奖励与后继估计 能否提前更新 一般要等完整回报已知 走一步后即可 目标中的额外不确定性 较长轨迹的随机性 后继价值估计不准 是否自举 否 是
为什么 TD 目标暂时有偏,最后仍可能学对? 上面的 B 自己也会从 0 和 20 的经历中学习。随着 B 的估计接近 10,A 的目标也随之改进。表格、覆盖、步长等条件合适时,TD 能收敛到正确固定策略价值。不能因为早期用了一次 8,就说它永远只能学到 8。
易错点与理解关键 MC 目标无偏不代表有限样本的 V 恰好等于真值。TD 通常能减小目标波动,也不是对任意任务、任意估计的绝对方差大小定理。考试回答“MC 常高方差、TD 可能有自举偏差”时,要能说出偏差从哪个估计而来。
自己试一下 把上例当前 V(B) 改为 12,其他条件不变。A 的 TD 目标和相对真值的偏差是多少?MC 目标是否改变?
我想好了,展开答案与理由 TD 目标为 0+12=12,相对 v(A)=10 偏高 2。MC 仍等实际结局,目标为 0 或 20,分布不因你在表里把 B 写成 12 而改变。这正说明 MC 不把当前 V(B) 放进目标。
读到一半卡住时,先补这里: 蒙特卡洛预测:等回合结束,用真实回报估值 TD(0):走一步,就修正一次预测
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 只有一本旧记录,反复学到稳定,会得到什么? 把课件的八局记录列清楚 MC 问的是:这些访问之后实际发生了什么? TD 多用了一条结构信息:A 总是先到 B 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→终点,两步奖励均 0 1 0 0 B→终点,奖励 1 6 未访问 A 每局 1 B→终点,奖励 0 1 未访问 A 0
MC 问的是:这些访问之后实际发生了什么? A 的唯一一次访问后,确实得到 0+0=0,所以基于这些实际回报的样本均值是 VMC (A)=0。B 的八个回报为 0、六个 1、再一个 0,合计 6,因此 VMC (B)=6/8=0.75。
TD 多用了一条结构信息:A 总是先到 B A 的数据告诉我们,先得 0,再到 B;而其他回合提供了 B 以后通常怎样的更多证据。B 的终止转移平均目标仍是 0.75,所以稳定时 VTD (B)=0.75。A 的 TD 目标为 0+V(B),因而最后 A 也被推向 0.75。
直觉是:虽然 A 那一次碰巧赶上 B 得 0,其他从 B 开始的经历显示 B 通常更好。只要 B 的状态表示满足 Markov 性,到了 B 之后如何继续不应再取决于你是否从 A 来,因此可以共享这些 B 的经验。
Certainty equivalence 是什么意思? 它指把数据估出的环境规律当成确定采用的模型,再求该模型中的价值。例如本例估出 A→B 的概率为 1、奖励为 0,B→终点的平均奖励为 0.75;解这份经验模型的 Bellman 方程,就得到上面的 TD 稳定解。它不是说真实环境已经确定,也不是说有限数据模型一定正确。
易错点与理解关键 两个答案不同不代表谁算错:MC 贴合本批实际回报;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 漏计,否则分母会错。
读到一半卡住时,先补这里: TD(0):走一步,就修正一次预测
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 同样要给 A 估值,三种方法到底各看了什么? DP:查已知模型,把所有分支平均 TD:只看实际发生的一步,再接估计 MC:沿实际经历走到底,不再借 V(B) 两个判断问题,足以把三种方法分开 备份图上的“宽”和“深”如何理解? 自己试一下 同样要给 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。
这里 B、C 的值仍是当前估计,因此有 bootstrapping 自举。完整期望备份本身不靠抽一条分支代替平均,因此这里说它“不采样”。
TD:只看实际发生的一步,再接估计 这次实际发生 A→B,得到 1。TD 不拿没发生的 C 来平均,而是用后继 B 的当前估计 4 接上:目标 1+0.5×4=3。它用实际抽到的转移,所以采样;又用了尚在学习的 V(B),所以自举。
MC:沿实际经历走到底,不再借 V(B) 这次完整经历的奖励为 1、2,之后终止。MC 目标为 1+0.5×2=2。数字 2 来自真正观察到的最后奖励,不是表格里的 V(B)=4。它沿采样轨迹,因此采样;目标只由完整实际奖励组成,因此不自举。
两个判断问题,足以把三种方法分开 方法 这次目标 有没有用抽中的经历代替全部分支? 有没有借用价值估计? 完整期望 DP 4 没有 有 一步 TD 3 有 有 完整回合 MC 2 有 没有
若旧 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。三个目标不同反映了使用的信息不同。
读到一半卡住时,先补这里: 动态规划与迭代策略评估 蒙特卡洛预测:等回合结束,用真实回报估值 TD(0):走一步,就修正一次预测
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 一步 TD 太早相信估计,完整 MC 又等得太久,能否折中? 先读两步版本,再读一般形式 同一条轨迹,分别看一步和两步 目标算好后,再单独做更新 到终点时,两步方法怎样变成 MC? 自己试一下 一步 TD 太早相信估计,完整 MC 又等得太久,能否折中? 可以。先真正观察两步或三步,把这几步的实际奖励记下来,剩下未知未来再用价值估计补上。这叫 n-step TD,n 步时间差分。n 控制观察真实经历的长度,不是反复更新同一张表的轮数 k。
理解它时,只需把时间线画出来:当前 Sₜ → 第一奖励 Rₜ₊₁ → 第二奖励 Rₜ₊₂ → … → n 步后 Sₜ₊ₙ。前 n 步已经发生,后面还没发生;这条分界线前用真实奖励,后用估计。
先读两步版本,再读一般形式 第一笔奖励不折扣;第二笔晚一步,乘 γ;从第二步后的状态继续出发的价值,整体晚两步,乘 γ²。G 的上标 (2) 表示两步目标,不是把 G 平方。
Σ 表示把 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。
两步目标不再使用 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。末尾估计整体乘 γ³,而不是乘 γ²,因为它从三步后开始。
读到一半卡住时,先补这里: TD(0):走一步,就修正一次预测
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 如果不知道该看一步、两步还是整局,怎么办? λ 管的是目标长度的权重,不是奖励折扣 把每个目标从同一个例子算出来 一般回合公式,逐个符号读 看两个端点,帮助记忆 自己试一下 如果不知道该看一步、两步还是整局,怎么办? 上一节每次挑定一个 n。另一种办法是:把一步目标、两步目标、三步目标等都算出来,再做加权平均。短目标更依赖当前估计,长目标包含更多实际奖励;λ 回报把这些信息按一种规则混合。它首先是一种“构造训练目标”的方式,不是新的环境奖励。
这里先讨论回合结束后计算的前向视角 forward view,并用同一张价值表评价各个自举尾项,避免把不同更新时间的估计混在一个例子里。
λ 管的是目标长度的权重,不是奖励折扣 γ 决定同一条回报里,晚来的奖励打多少折;λ 决定不同步数目标在混合中占多少份。两者都常在 0 到 1 之间,但工作不同。α 仍然是目标构造完成后,更新参数时移动多少的学习率。
若从当前到终点还剩三步,混合方式是:一步目标占 1−λ;两步目标占 (1−λ)λ;完整三步回报拿剩下的 λ²。三个权重相加恰好为 1。
把每个目标从同一个例子算出来 设奖励依次是 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,而是用来更新当前价值的混合目标。
若旧 V=2、α=0.2,则更新为 2+0.2(4.75−2)=2.55。先混合目标,再乘学习率,顺序要清楚。
一般回合公式,逐个符号读 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。
读到一半卡住时,先补这里: n 步 TD:真实看 n 步,再接上估计
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 奖励很晚才出现,怎样让前面走过的位置也学到东西? 先认识两个表:价值表 V 和痕迹表 e 一步里按什么顺序做? 完整走两步,看见信用怎样传回 A λ=0 会发生什么? 自己试一下 奖励很晚才出现,怎样让前面走过的位置也学到东西? 假设 A→B→终点,前面没奖励,最后突然得 10。如果只做一步 TD,首先直接受影响的是 B,A 可能要等下次经历才从 B 变化中学到。资格迹 eligibility trace 给最近访问过的状态留一个逐渐淡去的“记号”,新误差到来时,带记号的状态都能分到更新。
这个记号不是价值,不表示剩余奖励;它表示当前误差应该给这个状态分配多少更新份额。它是后向视角 backward view:每来一个新误差,就向过去访问过的状态传播。
先认识两个表:价值表 V 和痕迹表 e V(s) 估计状态好不好;e(s) 记录它最近、频繁被访问的程度。每回合开始把所有 e 清零。γ 是奖励折扣,λ 控制迹保留程度,它们的乘积 γλ 决定旧迹每步缩小多少;α 仍是学习率。
大括号里的指示量只会是 0 或 1:若 s 就是当前状态 Sₜ,加 1;其他状态不加。这个版本叫累积迹 accumulating traces,同一状态再次访问会在衰减后的旧迹上再加 1。
一步里按什么顺序做? 先读取当前价值表,计算这次 TD error:δ=r+γV(下一状态)−V(当前状态)。把全部旧迹乘 γλ,再给当前状态的迹加 1。最后对所有有迹的状态,用同一个已经算好的 δ 更新。不要更新了一个状态后又重算 δ,否则就变成另一套操作。
完整走两步,看见信用怎样传回 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。
第二步结束后 e V 的增量 新 V A 0.72 0.144 0.144 B 1 0.2 0.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”的限制。
读到一半卡住时,先补这里: λ 回报:把不同长度的目标混起来
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 前面两节看起来做了两件事,它们为什么会联系起来? 用两步轨迹把相消过程看清楚 一般形式里,每一项在做什么? λ 不等于 1 时,也能看见同样的对应 在线更新为什么要另外讨论? 自己试一下 前面两节看起来做了两件事,它们为什么会联系起来? 前向 λ 回报站在 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,恰好一样。
右边有 +γV(B),还有 −γV(B),这两项抵消;剩下 R₁+γR₂−V(A),就是完整回报减当前估计。这个“一正一负接着抵消”称 telescoping,望远镜相消。
一般形式里,每一项在做什么? 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。这是本节冻结价值、最后统一更新的约定,不是把第一步新值继续送入第二步重算误差。
读到一半卡住时,先补这里: 资格迹:让最近访问过的状态一起学习
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 之前一直评价一种走法,现在要决定换哪种走法 Q 比 V 多固定了什么? 从数据到更好的动作,完整走一轮 为什么改了策略以后还要继续学习? 为什么不能从第一局起永远只选当前最大? 自己试一下 之前一直评价一种走法,现在要决定换哪种走法 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 的完整回报来自旧的后续走法。改进策略后,不仅当前路口的第一步可能变,未来其他路口也可能改变选择,长期回报分布随之变化。因此不是“算一次 Q,改一次动作,永远结束”,而是持续交替:按探索策略收集完整回合;更新访问过的状态动作 Q;根据新 Q 调整动作选择。
这种评价和改进互相推动的结构叫 generalized policy iteration,广义策略迭代 GPI。它可以是小步交替,不要求每次把价值算到完全精确再改策略。
为什么不能从第一局起永远只选当前最大? 假设初始两动作 Q 都为 0,第一局 Left 恰好得 1,于是 Left 暂时最高。如果以后再也不试 Right,就可能永远不知道它真实平均能得 7。估计高低反映已有样本,不是全知的真相;尚未访问不代表价值差。
探索可以通过 exploring starts 实现:让起始状态动作组合有适当覆盖。但现实机器人常不能任意重置到每个状态,于是常用下一节的 ε-greedy 或 ε-soft 持续给动作试验机会。
易错点与理解关键 MC 控制是一套“采完整回合、更新 Q、改善行为”的学习流程;ε-greedy 只是其中可用的选动作规则。不能把“用了 ε-greedy”直接等同于“用了 MC”,因为 SARSA、Q-learning 也可以这样探索。
自己试一下 同一状态,Q(s,a)=−2,Q(s,b)=−5。哪个动作贪心?如果两个 Q 只各来自一次样本,是否已经证明它永远更好?
我想好了,展开答案与理由 选择 a,因为 −2 大于 −5,长期少亏也更好。但两个值只是很少数据的估计,不能证明真实期望排序必然如此;仍需要适当探索和进一步估计。贪心是“对当前估计取最大”,不是“已知道真最优”。
读到一半卡住时,先补这里: 策略迭代与广义策略迭代 蒙特卡洛预测:等回合结束,用真实回报估值
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 既想选目前看起来最好的,又怕错过没试够的动作 四动作、ε=0.2,为什么最优动作是 0.85? 如果两个动作并列最高,怎么分? ε-soft 又是什么,为什么还要一个名字? 它如何帮助策略改进? 自己试一下 既想选目前看起来最好的,又怕错过没试够的动作 在一个路口,四个动作当前 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。
π(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。
括号表示 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。
读到一半卡住时,先补这里: 探索、利用与经验来源 状态价值 V 与动作价值 Q
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 探索应该一直很多,还是尽早停止? 两个条件分别约束什么? 为什么这两句话能同时成立? 两个反例,分别看清缺了哪条 现在把 MC、ε-greedy、GLIE 放回各自位置 自己试一下 探索应该一直很多,还是尽早停止? 想象你在比较两家食堂。只去第一家,就可能永远不知道第二家更好;但如果已经有很多可靠经验,还始终一半时间去明显较差的一家,也没有充分利用所学。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ₖ(s,a) 是截至第 k 阶段访问次数;Qₖ 是当时的动作价值估计;argmax 返回当前最大动作集合。第二式要求落到集合之外的概率趋零。
自己试一下 “只要 ε 趋于零,就一定满足 GLIE”错在哪里?“GLIE 是 MC ε-greedy”又错在哪里?
我想好了,展开答案与理由 第一句话只看了极限行为,没有证明各状态动作无限访问;过快衰减、不可达状态或到达困难都可能破坏探索条件。第二句话把学习算法、选动作规则和长期性质混成一个东西。MC 可以配 ε-greedy,满足适当探索计划与覆盖时策略序列可能具有 GLIE 性质,但 GLIE 本身不是 MC。
读到一半卡住时,先补这里: ε-greedy 与 ε-soft:概率到底怎么算? 增量均值、固定步长与学习率
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 已经有 Q 表,怎样不等整局结束就改进动作选择? 先按真实时间顺序收齐五个量 为什么不能看到最大 Q 就立即拿来用? On-policy 同策略到底同在哪里? 若下一状态就是终点呢? 自己试一下 已经有 Q 表,怎样不等整局结束就改进动作选择? MC 控制要等完整回报。TD 告诉我们可以用“一步奖励+后面估计”提前更新。把同样思路用于 Q,就要多问一句:到了下一状态,到底接哪一个动作的 Q?SARSA 的回答是:接行为策略实际选出的下一动作。
因此名字由五个量组成:S 当前状态,A 当前动作,R 这一步奖励,S′ 下一状态,A′ 实际下一动作。它学习的是正在执行的策略,包括这个策略的探索行为。
先按真实时间顺序收齐五个量 ① 在 Sₜ 用当前行为规则选 Aₜ;② 执行动作,收到 Rₜ₊₁ 并到 Sₜ₊₁;③ 若未终止,在新状态用同一行为规则选 Aₜ₊₁;④ 用这个已经选定的动作构造目标;⑤ 更新旧状态动作对 Q(Sₜ,Aₜ),然后继续执行已选出的下一动作。
Q(Sₜ,Aₜ) 是这次要修改的一个条目;Q(Sₜ₊₁,Aₜ₊₁) 是读取的后继条目。α 是学习率,γ 是未来折扣。公式不要求事先知道转移概率。
为什么不能看到最大 Q 就立即拿来用? 设当前条目旧 Q=2,奖励为 1,γ=0.9,α=0.5。下一状态三个动作的 Q 为 (4,1,3)。行为策略这次实际选择了第二个动作,所以读取的下一值是 1,即使第一动作的 4 更大,也不能替换。
目标 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 的单次更新。
读到一半卡住时,先补这里: TD(0):走一步,就修正一次预测 ε-greedy 与 ε-soft:概率到底怎么算?
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 一步 SARSA 已经会了,怎样让更早的动作也快速得到反馈? 先看两步 SARSA 目标 算一遍,分清目标和被更新的条目 SARSA(λ) 的迹为什么有两个下标? 一次迟到的误差如何分配? 自己试一下 一步 SARSA 已经会了,怎样让更早的动作也快速得到反馈? 想象机器人先在 A 选 Right,到 B 再选 Up,最后到 C 才收到奖励。我们希望不仅评价 B 的 Up,也把较晚反馈传播给 A 的 Right。这可以从两个方向实现:向前多看几步奖励,或向后给曾经执行过的状态动作留迹。
这里沿用 RL6 的多步和 λ 思路,但学习对象从 V(s) 换成 Q(s,a)。因此必须记住“在哪个状态做了哪个动作”,不能只记到过哪个状态。
先看两步 SARSA 目标 前两项来自实际观察到的两次奖励。最后一项读取两步后、实际选定动作的 Q;不是该状态所有动作中的最大值。一般 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(s,a) 是这一对状态动作的迹。旧迹先衰减;当前实际执行的那一对加 1。同一个状态 A 若先后执行 Left 和 Right,会在两个不同条目留下迹。
这里 δₜ 使用 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。负误差同样沿迹传播,只是把相关估计向下修正。
读到一半卡住时,先补这里: SARSA:使用实际的下一动作 资格迹:让最近访问过的状态一起学习
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 旧数据来自另一种走法,还能拿来评价我现在关心的走法吗? 最简单的一步例子:为什么要乘概率比? 为什么覆盖条件不能省? 完整轨迹为什么把多个比值相乘? 普通 IS 与加权 IS,分母不一样 自己试一下 旧数据来自另一种走法,还能拿来评价我现在关心的走法吗? 假设过去为了多探索,左右动作各选一半。现在我们想评价一条新策略: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,正好回到目标策略。
E 表示按某分布求平均;f(A) 是动作对应的被平均数值,例如回报;比值叫 importance-sampling ratio,重要性采样比。目标更常选的动作在旧数据中要放大,目标更少选的要缩小。
为什么覆盖条件不能省? 若目标会选 Left,但行为从来不选 Left,那么分母 b(Left|s)=0,我们既没有相关数据,也不能合法计算概率比。通常要求目标策略有正概率的动作,行为策略也必须有正概率。乘权重不能创造从未收集的证据。
完整轨迹为什么把多个比值相乘? 一条经历连续执行多个动作。它在目标策略与行为策略下出现概率的比值,要比较整串动作概率,因此逐步相乘。相同环境的转移部分在比值中抵消。
Π 表示连乘;T 是终止时刻;ρ 是整段轨迹权重。例如两步比值为 2 和 0.5,整段权重就是 1;不是把它们相加成 2.5。长串乘积可能变得很大或很小,造成高方差。
普通 IS 与加权 IS,分母不一样 有两条回报 4、2,权重 2、0.5。共同分子是 2×4+0.5×2=9。普通 IS 除以样本数 2,结果 4.5;加权 IS 除以权重和 2.5,结果 3.6。加权版本需权重和非零。
易错点与理解关键 普通 IS 在相应采样条件下无偏,但可能波动很大;加权 IS 有限样本一般有偏,常更稳定。估计已固定第一动作的 q(s,a) 时,第一动作不是按目标重新抽取,轨迹比通常从下一动作开始,不能机械套状态价值的起点。
自己试一下 行为策略选某动作概率为 0.2,目标为 0.6,本次回报为 5。该一步权重与加权回报是多少?若目标概率为 0 呢?
我想好了,展开答案与理由 权重 ρ=0.6/0.2=3,加权回报为 15;这是一个加权样本,不表示真实奖励从 5 变成了 15。若目标概率为 0,则权重为 0,该动作样本对这个目标策略的估计不贡献回报。
读到一半卡住时,先补这里: SARSA:使用实际的下一动作
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 重要性采样可以修正整局,是否也能配一步 TD? 把更新分成四个小任务 完整代入一个样本 为什么课件还会出现另一种公式? 做题怎样避免混用? 自己试一下 重要性采样可以修正整局,是否也能配一步 TD? 上一节用整条轨迹的动作概率比修正 MC 回报。TD 的目标只观察一步真实奖励,然后接上下一状态价值,因此可以考虑只校正当前这一步的动作选择。目的仍是用行为策略 b 的数据,评价目标策略 π;这里学的是 Vπ,不是在做 Q-learning 的最大化控制。
先假设当前表 V 已在估计目标策略的状态价值。当前状态 s 固定后,行为策略选出的动作未必符合目标策略分布,当前一步比值就用于修正这个差别。
把更新分成四个小任务 第一,查这次实际动作的目标概率 π(Aₜ|Sₜ) 和行为概率 b(Aₜ|Sₜ)。第二,两者相除得到 ρₜ。第三,按普通 TD 算目标 Y=r+γV(s′),再算误差 δ=Y−V(s)。第四,用 α、ρ 和误差相乘更新当前状态。
ρ 是分布校正权重,不是新的学习率设定;不过在某一次样本里,它会放大或缩小实际更新。若 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。
不要把 ρ 乘在环境奖励上后就丢掉其他修正,也不要把它误解成“此动作发生了两次”。我们仍只观察了一条转移。
为什么课件还会出现另一种公式? 有一种写法把概率比放在目标上,而不是整个 TD 误差上:V←V+α[ρY−V]。同一组数值变成 2+0.1(2×5−2)=2.8,与 2.6 不同。两者单次样本并不相等。
但给定当前状态与固定估值,若覆盖成立,行为分布下 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。这个反例直观看出两种式子不是样本级别等价;不要因为它们在适当条件下期望相同,就写成每次更新相同。
读到一半卡住时,先补这里: 离策略评估与重要性采样 TD(0):走一步,就修正一次预测
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 实际下一步可能探索,能否仍学习“以后都选最好”的价值? 在公式里定位“哪里变了” 与 SARSA 用同一份数据比较 为什么它是 off-policy? 悬崖例子到底在比较什么? 终止与负数,两个计算小坑 自己试一下 实际下一步可能探索,能否仍学习“以后都选最好”的价值? SARSA 将实际下一动作放进目标,因此学习当前行为策略的后果。Q-learning 改问:这一步已经发生后,如果从下一状态开始按当前估计选择最好动作,当前状态动作应值多少?所以它读取下一行 Q 的最大值,而不是实际下一动作的值。
它仍可以用 ε-greedy 去收集经验,甚至这次真的选中了较差的下一动作。但更新目标假设的是下一步贪心选择。这就是行为策略和目标策略分开的核心。
在公式里定位“哪里变了” 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。
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。目标虽然仍为负,却比旧估计更好,所以更新向上。
读到一半卡住时,先补这里: SARSA:使用实际的下一动作 Bellman 最优性方程:动作取最大,环境仍取平均
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 看到一串公式不知道选哪个,先只问“未来那部分从哪里来” 先明确同一份数据里每个量的身份 四种目标依次构造 目标不同,会怎样影响最终更新? 考试遇到题目,按这个顺序定位 自己试一下 看到一串公式不知道选哪个,先只问“未来那部分从哪里来” 很多控制算法的最后一步都形如 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。
Σ 遍历下一状态所有动作,π(b|s′) 是各动作概率;概率乘相应动作值,再相加得到期望。这里没有对环境所有下一状态再平均,因为本步 s′ 已经由这条样本确定。
目标不同,会怎样影响最终更新? 算法 采用的目标 从旧 Q=2、α=0.5 算出的新 Q MC 完整样本回报 2.8 2+0.5×0.8=2.4 SARSA 1.9 2+0.5×(−0.1)=1.95 Q-learning 4.6 2+0.5×2.6=3.3 Expected SARSA 4.24 2+0.5×2.24=3.12
这些是各算法独立从相同初值出发的一次更新。MC 通常更晚才能得到完整目标;本表是在该局已经结束后比较,不能说第一步刚走完就知道未来奖励 2。
考试遇到题目,按这个顺序定位 先看有没有完整回合与每次回报,可能是 MC;若给了“实际下一动作”,要判断是否指定 SARSA;若公式或算法名要求 max,使用 Q-learning;若要求按下一策略概率平均,使用 Expected SARSA。最后检查终止:终止时这些一步自举目标都只剩 r。
易错点与理解关键 数值碰巧一样不意味着算法定义一样。例如 ε=0 且实际下一动作就是唯一贪心动作时,SARSA 与 Q-learning 的本次目标可以相同。Expected SARSA 是对照补充,考试范围仍以课件明确介绍的方法为准。
自己试一下 若下一动作改成第三个,其他估计与策略概率暂时固定,SARSA、Q-learning、Expected SARSA 的目标哪些会变?
我想好了,展开答案与理由 SARSA 改读第三动作值 3,目标变成 1+0.9×3=3.7。Q-learning 仍取最大 4,目标仍 4.6;Expected SARSA 仍按同一策略概率求平均,目标仍 4.24。MC 还取决于这次动作之后实际产生的完整奖励,不能仅凭动作编号确定。
读到一半卡住时,先补这里: SARSA:使用实际的下一动作 Q-learning:行为可探索,目标取贪心
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 如果每一个位置、速度都不同,价值表该有多大? 先从一个非常简单的函数想起 数字例子:一次参数改变,为什么多个状态都会变? 泛化为什么既有好处,也有风险? 与环境模型有什么区别? 自己试一下 如果每一个位置、速度都不同,价值表该有多大? 在小迷宫里,可以给每个格子存一个 V,或给每个格子每个方向存一个 Q。可是一辆车的状态包含位置和速度:位置 1.001 与 1.002 不同,速度也能连续变化。若每个组合都单独建一个表格条目,不仅存不下,也不可能让每个条目都被充分访问。
因此我们希望学一个计算规则:输入状态,输出价值估计。它用少量共享参数概括很多状态,这叫 value function approximation,价值函数近似。
先从一个非常简单的函数想起 假设一个已固定策略的导航任务中,“离终点距离”是有用信息。用 d(s) 表示状态 s 的距离,用 w₀、w₁ 两个可调整数描述价值:预测=基准值 w₀+距离系数 w₁×距离。它未必能准确表达所有复杂地形,但比为每个连续位置单独存值更紧凑。
帽子表示估计,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 必然由某条更新公式算出;下一节将讲怎样根据误差有方向地修改参数。
泛化为什么既有好处,也有风险? 好处是:两个相近状态可能有相近价值,在一个位置收集的经验可以帮助另一个没访问过的位置。风险是:如果两个距离相同的状态,一个前面有墙、一个没有,单靠距离特征会把它们混成同一个预测,无法同时拟合真实价值。
这称表示能力或特征问题。增加数据不一定能修复一个根本没有记录“是否被墙阻挡”的表示;需要更合适的特征或更有表达能力的函数。
与环境模型有什么区别? 左式预测从状态出发的长期回报;右式还指定第一动作。环境模型则预测“下一状态和即时奖励是什么”。虽然两者都可用神经网络表示,但预测对象不同。用神经网络近似 Q,仍然可以是 model-free。
常见函数类包括线性模型、树、核方法和神经网络。本课程进一步使用可微函数,是因为能用梯度说明每个参数怎么改变输出,进而通过误差学习。
自己试一下 若预测规则是 v̂=1−2d,两个状态距离分别为 2 和 5,它们的估值是多少?把系数 −2 改成 −1,哪个状态变化更大?
我想好了,展开答案与理由 原估值为 1−4=−3、1−10=−9。新估值为 1−2=−1、1−5=−4。分别增加 2、5,较远状态变化更大,因为它乘的距离特征更大。这说明同一个参数更新并不让所有状态增加相同数值。
读到一半卡住时,先补这里: 状态价值 V 与动作价值 Q
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 有了一个可调函数,怎样让它的预测靠近经验目标? 先用平方误差定义什么叫预测不好 从最简单的一参数函数亲自算梯度 为什么强化学习常写成加号? GD、SGD、小批量,到底差在哪里? 自己试一下 有了一个可调函数,怎样让它的预测靠近经验目标? 假设函数预测某状态价值为 2,而本次经验提供的目标为 5。我们知道它低估了 3,但一个复杂函数有很多参数,不能随便把每个参数都加 3。因为有些参数增加会抬高预测,有些会降低预测,有些对当前状态几乎没影响。
梯度 gradient 就是记录这些“影响方向和敏感程度”的工具。对于每个参数,它告诉我们:把该参数略微增加一点,当前预测大约会增加多少。多个参数时,梯度是一串数,也就是向量。
先用平方误差定义什么叫预测不好 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 小。
为什么强化学习常写成加号? 损失梯度里有 v̂−Y,梯度下降再减去它,于是可以改写为加上 Y−v̂。它依然是在下降损失,不是看到加号就变成梯度上升。注意目标 Y 在本次求导中被当成固定数,这个前提到 TD 目标中需要特别讨论。
GD、SGD、小批量,到底差在哪里? 如果有很多样本,可以对所有样本损失求平均,得到 mean squared error,均方误差,再算完整平均梯度,这是梯度下降 GD。SGD 每次用一个抽到的样本近似这个平均方向,计算便宜但会有波动。Mini-batch 用一小批样本的平均梯度,是二者之间的常见折中。
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。当前预测高于目标,所以参数应该下降,两个写法方向一致。
读到一半卡住时,先补这里: 先认符号,再读公式 价值函数近似:从一张大表变成一个函数
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 怎样把一个状态变成函数能使用的一串数字? 先算预测,再问每个参数怎么影响它 一次完整更新,每一步都写出来 可以直接看出预测变化为什么是 0.75 表格法原来是一个特殊情况 自己试一下 怎样把一个状态变成函数能使用的一串数字? 仍以导航为例,我们可以从状态提取“恒为 1 的基准特征”和“离终点距离”。把这串描述记为 x(s),称 feature vector,特征向量;对应的可学习系数记为 w。线性近似把对应位置相乘,再把结果加起来。
恒为 1 的特征让模型可以学习一个与距离无关的基准值。特征是怎样描述状态,权重是每个描述对价值有多大贡献,二者不能混为同一组待更新数。
上标 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。
一次完整更新,每一步都写出来 给定目标 Y=4、学习率 α=0.1。当前残差=4−2.5=1.5。共同的 α×残差=0.15,再乘特征向量,两个参数增量分别是 0.15×1=0.15、0.15×2=0.3。
把新参数重新带回原状态,预测变为 0.65×1+1.3×2=3.25。预测增加了 0.75,并不是仅增加 α×残差=0.15,因为这次改变的是两个共享参数,第二维还被特征 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。第二特征为零,当前预测对第二权重不敏感,所以这一个样本不直接更新它。
读到一半卡住时,先补这里: 平方误差、梯度下降与随机梯度
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 前面说的目标 Y,在强化学习里从哪里拿? 用同一个线性模型,先算 MC 更新 再独立从原参数计算 TD,不要接着用 MC 的结果 “半梯度”究竟省略了哪一部分? 为什么要特别关注稳定性? 自己试一下 前面说的目标 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)。
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。
把当前特征作为预测梯度,增量=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) 的梯度更新,不对目标内部那一项求导。
“半”不是把梯度除以 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 的梯度因子;那不再是题目指定的半梯度更新。
读到一半卡住时,先补这里: 线性特征:参数为什么更新不同幅度? TD(0):走一步,就修正一次预测
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 状态价值函数能评价位置,但选动作还需要区分“在这里做什么” 先看一个可手算的动作特征 为什么这次更新不只是把一个 Q 数字改掉? 真实运行时按什么顺序? 从这里怎样走到近似 Q-learning 与 DQN? 自己试一下 状态价值函数能评价位置,但选动作还需要区分“在这里做什么” 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)。
每个符号沿用 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。下一预测较大并不一定意味着当前应上升;要先折扣并加奖励后,再和当前预测比较。
读到一半卡住时,先补这里: 用 MC 或 TD 训练近似价值函数 Q-learning:行为可探索,目标取贪心
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 小车离山顶更远,为什么有时反而是好动作? 连续状态怎样转换成可以学习的特征? 瓦片编码为什么要用多个错开的网格? 把一个瓦片样本更新完整算出来 RBF 让激活程度从“是或否”变成平滑变化 三种表示最终怎样用来预测价值? 自己试一下 小车离山顶更远,为什么有时反而是好动作? 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。
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 时还需把动作区分开,例如不同动作使用不同参数块,或使用状态动作特征。
易错点与理解关键 特征对状态是非线性的,不代表对参数 w 也非线性;固定 RBF 特征配 wᵀx,仍是线性参数近似。区域过粗会混淆价值不同的状态,过细则需要更多样本;位置、速度等不同量纲也要注意尺度,否则距离计算可能被某一维主导。
自己试一下 一个状态激活 3 个瓦片,当前预测为 2,目标为 5,α=0.1,每个激活特征都是 1。各激活权重增加多少,当前预测一共增加多少?
我想好了,展开答案与理由 误差为 3,每个激活权重增加 0.1×3=0.3;三项求和使预测共增加 0.9,变成 2.9。未激活权重不变。这个结果再次说明“参数更新步长”和“最终预测变化”不总是同一个数。
读到一半卡住时,先补这里: 线性特征:参数为什么更新不同幅度?
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 先想一个问题:游戏截图怎样变成“往左还是往右”? 先认符号,再看一层网络 两个输入完整走一遍 它怎样知道自己算错了? 遇到网络图时,先找哪三件事? 自己试一下 先想一个问题:游戏截图怎样变成“往左还是往右”? 前面可以给每个状态存一个价值,但截图有成千上万个像素,球只移动一个像素也会得到另一张图片。逐张图片建表既存不完,也难把“在左边学会避障”的经验用到相似画面。我们需要一个函数:输入画面,输出动作好坏的预测。神经网络就是一种可学习的函数,不是另一个 Bellman 方程。
线性近似往往要求人先选特征,例如球的位置、速度和与球拍的距离。深度网络把部分“提取特征”的工作也交给训练:前面的层将原始输入变成中间表示,后面的层再利用它作预测。“深”指多层变换,不表示网络天然懂任务。
先认符号,再看一层网络 x 是输入数字向量,W 是混合输入的权重矩阵,b 是偏置,h 是输出。ReLU 把负数截为零、正数保留,逐个分量运算。
两个输入完整走一遍 设 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。非线性让多层网络不再只是可合并的一串线性变换。
读到一半卡住时,先补这里: 线性特征:参数为什么更新不同幅度? 平方误差、梯度下降与随机梯度
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 为什么要在图像上滑动一个小窗口? 先做一个一维例子 二维尺寸怎么数? 输出多,不代表参数同样多 为什么共享参数有实际帮助? 自己试一下 为什么要在图像上滑动一个小窗口? 边缘可以出现在屏幕左边,也可以在右边。若每个位置都单独学习一套边缘检测器,既浪费参数,也难共享经验。卷积网络 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 是步幅;这里不使用扩张卷积。可放下完整核的起点数就是输出边长,向下取整表示最后不完整的窗口不算。
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 套参数。
读到一半卡住时,先补这里: 从人工特征到神经网络表示
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 先接回 Q-learning:究竟想学什么? 读懂输出的符号 从画面到学习,走完一次 为什么还要回放与目标网络? 为什么训练时必须记住实际动作? 自己试一下 先接回 Q-learning:究竟想学什么? Q-learning 问:“现在在 s,第一步做 a,之后尽量做得好,预计得到多少累计奖励?”小问题可把答案放进 Q 表。游戏截图状态太多,DQN 用神经网络代替这张表,但仍学习动作价值,不是直接输出动作概率。
把当前画面或适当组合的连续画面输入网络,最后为每个离散动作输出一个数字。连续画面有时用于区分运动方向:只看一张图片可能不知道球速。状态信息是否充分是输入设计问题,不是把网络变大就一定解决。
读懂输出的符号 s 是状态,a₁…aₘ 是 m 个候选动作,θ 是在线网络全部可训练权重。Q(s,a;θ) 表示这组权重下的价值估计,分号用于区分输入和参数。
动作依次为 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”的核心目的。
易错点与理解关键 表格更新 Q←Q+α(y-Q) 能帮助理解方向,但网络实际更新的是 θ。除非假设输出就是一个独立标量参数,不能把表格新值当作网络一次梯度更新后的精确输出。统一 DQN 框架也不表示一个未重新训练的策略能直接玩所有游戏。
为什么训练时必须记住实际动作? 一次交互只告诉我们真正做出的动作发生了什么,并没有同时观察另外两个动作的真实后果。记录中的 a 决定哪一个当前输出与该样本目标比较。网络可能通过共享参数影响未执行动作,但那是泛化与参数耦合的结果,不能假装这一条经验同时给出了全部动作的监督答案。
自己试一下 网络输出 Left=-3、Stay=-1、Right=-5。贪心时选哪个?Stay 的选择概率是否等于 -1?
我想好了,展开答案与理由 选 Stay,因为 -1 最大,意味着预计亏得最少。Q 是价值而非概率。贪心规则可以给 Stay 概率 1;ε-greedy 的概率要另按探索规则计算。
读到一半卡住时,先补这里: Q-learning:行为可探索,目标取贪心 从人工特征到神经网络表示
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 先想象连续练十道几乎相同的题 里面存的是发生过什么,不是永远正确的标签 四条记录怎样组成批次? 为什么旧行为产生的经验还能用? 自己试一下 先想象连续练十道几乎相同的题 智能体连续十帧可能只看到同一条走廊,紧邻样本很相似。如果每次只用刚收到的那一帧训练,模型会连续往同一方向调整,其他场景很久得不到复习。另一方面,机器人交互昂贵,每条经验只用一次又浪费。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,不应改写。改变的是对未来的估计,这解释了回放时为什么重新计算目标。
读到一半卡住时,先补这里: DQN:网络输出动作价值
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 为什么训练目标也会移动? 两套参数放在不同位置 先拆开一个样本的所有符号 完整算一条经验 一轮训练的顺序 “固定目标”固定到什么时候? 自己试一下 为什么训练目标也会移动? 普通图像分类可以把“猫”的标签视为固定答案。Q 学习的目标却含有“下一状态预计还能得多少”,这个数也是自己估出来的。如果当前预测改变,目标也由同一参数立即改变,训练像在追一个移动终点。目标网络给未来价值提供暂时较稳定的参考。
两套参数放在不同位置 在线参数 θ 计算当前 Q,持续接受梯度更新;目标参数 θ⁻ 通常隔一段时间从 θ 复制,负责下一状态的参考。减号不是“负参数”,只是表示延迟副本。两者结构可以相同,但两次同步之间参数不同。
先拆开一个样本的所有符号 i 是批内经验编号;rᵢ 是即时奖励;sᵢ、aᵢ 是真实起点与执行动作;s′ᵢ 是后继;dᵢ=1 表示真正终止,0 表示未终止;γ 是折扣;b 遍历后继状态的候选动作。
先找目标网络下一行最大值,再乘折扣和终止掩码,最后加奖励。终止时未来部分整体乘零,进入终点得到的奖励仍保留。
完整算一条经验 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。目标、误差、损失不是同一个量。
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。终止表示目标没有未来项,不表示在线预测已经等于零。
读到一半卡住时,先补这里: DQN:网络输出动作价值 TD(0):走一步,就修正一次预测
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 “加了组件后分高”,足以证明组件有用吗? 先区分因素、控制条件与指标 读一张小表 样本效率与计算效率要分别看 回到课件实验应该怎样读? 自己试一下 “加了组件后分高”,足以证明组件有用吗? 一套 DQN 使用回放、目标网络和深度表示,另一套去掉回放却训练两倍时间。分数不同可能来自回放,也可能来自训练预算。消融实验 ablation 尽量保持其他条件相同,只移除或改变一个组件,用来判断它在指定实验条件下的贡献。
先区分因素、控制条件与指标 因素是你打算比较的机制,例如是否有目标网络。控制条件包括环境、真实交互次数、网络规模、更新次数和评估方式。指标可能是平均回报、成功率,或达到某分数所需的真实样本。随机种子影响采样和训练,所以通常需要多次独立运行,而不是只报最好一次。
读一张小表 以下是教学数字,不是课件报告的成绩;三次运行采用相同预算与评估规则。
设置 运行 1 运行 2 运行 3 平均分 完整方法 8 10 12 10 只去掉目标网络 3 10 8 7
完整方法平均 (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 的真实样本效率更好,但更新计算更多。没有单次更新成本和总用时,无法判断计算效率;应分别报告真实交互和内部计算预算。
读到一半卡住时,先补这里: 经验回放:重用样本,减弱连续相关性 目标网络、损失函数与 DQN 训练步骤
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 两个动作一样好,为什么取最大会高估? 解决思路:选择与评价分工 将两张表上下对齐 遇到并列怎么做? 为何“另一个评价者”能帮忙,却不是万能? 自己试一下 两个动作一样好,为什么取最大会高估? 两个动作真实价值都为 5,但估计有误差。一次估成 (4,6),另一次估成 (6,4),两种情况各一半。单看任一动作,估计平均都是 5,没有偏差;但每次取最大都得到 6。因此最大估计的平均为 6,比真实最大值 5 高。
问题不只是估计会错,而是 max 更容易挑中碰巧向上错的那个。这个偏高数字再通过自举传给前一状态,就可能继续传播。
Xᵢ 表示第 i 个随机估计,E 表示重复后的平均。先取最大再平均,与先平均再取最大,是不同操作。
解决思路:选择与评价分工 Double Q-learning 学两组估计,用一组决定动作,再用另一组评价这个动作,按算法交替学习两组值。Double DQN 利用在线网络 θ 和目标网络 θ⁻:在线网络选动作编号,目标网络给同一动作打分。
a* 是动作,不是最大数值;d 是终止标记。标准 DQN 本来也有在线与目标网络,所以只看网络数量无法区分。
将两张表上下对齐 网络/动作 a₁ a₂ a₃ 在线网络 4 1 3 目标网络 2 5 3
设 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 当成评价值。
读到一半卡住时,先补这里: 目标网络、损失函数与 DQN 训练步骤
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 题库里的题,是否应该每道练一样多? 分清误差、优先级、概率 从三个误差一步步到采样概率 κ 到底控制什么? 把它与做错题联系起来,但不要过度类比 自己试一下 题库里的题,是否应该每道练一样多? 有些经验已经预测得很准,反复练的收益可能小;另一些目标与预测差距大,说明当前网络尚未解释好。优先经验回放 PER 让后者更常被抽中,同时保留其他经验的机会。改变的是“从池里抽哪条经验”,不是“真实环境选哪个动作”。
分清误差、优先级、概率 δᵢ=目标−预测,是第 i 条经验的 TD error,可以正也可以负。pᵢ 是用于加权的正优先级;P(i) 才是抽到记录 i 的概率。η>0 是偏移,避免零误差记录完全失去机会;κ 控制偏向高优先级的程度。
绝对值关注“差得多大”,不是只偏爱低估或高估。分母把所有权重相加,让概率总和为 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)。优先级、采样概率和参数更新量不能混写。
读到一半卡住时,先补这里: TD(0):走一步,就修正一次预测 经验回放:重用样本,减弱连续相关性
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 抽得更多,为什么单次反而要算轻一些? 公式来自两个概率的比值 继续两条经验的例子 归一化与损失的细节 β 从零逐渐增大,在改变什么? 自己试一下 抽得更多,为什么单次反而要算轻一些? 池中两条经验的梯度贡献为 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。
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,它现在被抽到的机会是两倍,所以单次贡献减半以补偿过度代表。
读到一半卡住时,先补这里: 优先经验回放:哪些样本应该多练? 离策略评估与重要性采样
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 一个好位置,为什么要每个动作都重新学一次“这里很好”? 分清分支数值与最终 Q 为什么不直接 Q=V+A? 一步一步算一个状态 与 Double 怎样区分? 再看一个极端情况以确认理解 自己试一下 一个好位置,为什么要每个动作都重新学一次“这里很好”? 赛车在宽阔直道时,暂时向左或向右一点的差别可能小,但“当前比较安全”是动作共享的信息。Dueling 用一条分支表达状态共享的成分,另一条分支表达动作之间的相对差异,再组合成 Q。最终仍预测动作价值,没有把任务换成策略概率学习。
分清分支数值与最终 Q V(s) 是价值分支输出的一个数;A(s,a) 是优势分支对各动作输出的原始数;Q(s,a) 是聚合结果。m 为动作数,b 遍历动作。分支叫 V、A,不表示它们自动等于任意策略下的精确 vπ、Aπ。
计算顺序是:求原始 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。
读到一半卡住时,先补这里: 状态价值 V 与动作价值 Q 从人工特征到神经网络表示
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 先画工作流程,再记名字 让同一条经验经过整条流程 把原问题和方法对应起来 简答题怎样写才完整? 自己试一下 先画工作流程,再记名字 看到状态 → 网络估计各动作 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 DQN max 容易选中估计偏高的动作 在线选动作、目标网络评价 优先回放 不同记录当前学习需求不同 改变采样概率并考虑权重校正 Dueling 共享状态好坏与动作差异可分开表达 V 与原始 A 分支中心化组合
简答题怎样写才完整? 问 Double 的作用,先说“带噪估计取最大可能高估”,再说“分离动作选择与评价”,最后说“希望减轻最大化偏差”。只写“更稳定、更准确”太笼统,因为没解释改在哪里。问回放要谈样本使用,不能搬用冻结目标参数的答案。
它们针对不同问题,所以可以组合。但组合越多不代表任何任务都更好:模型容量、超参数、数据覆盖和预算都会影响效果。比较组合时仍需控制其他条件并进行消融。
自己试一下 某方法有回放池和两个网络,但目标仍是目标网络自己取最大。能否断言它采用 Double DQN?
我想好了,展开答案与理由 不能。这属于标准 DQN 的常见结构。只有在线网络负责选下一动作、目标网络负责评价同一动作,才符合这里的 Double 目标。Replay 与网络数量不足以判断。
读到一半卡住时,先补这里: 最大化偏差、Double Q 与 Double DQN 优先经验回放:哪些样本应该多练? Dueling 网络:状态值与动作优势分开表示
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 前面先学“多好”,现在直接学“怎样选” 把目标函数翻译成人话 用一个两动作任务算出方向 为什么值得学这条路线? 策略参数不是动作本身 自己试一下 前面先学“多好”,现在直接学“怎样选” Q-learning 先估每个动作的长期价值,再用 argmax 或 ε-greedy 导出行为。另一条路线是直接写一个能输出动作概率的函数,让学习改变这些概率。例如在一个状态下,原来向左概率 0.5、向右 0.5;从经验发现向右更好,就让参数逐渐提高向右的概率。这就是策略方法的入口。
策略不是完全不需要评价好坏,而是最终被直接优化的对象变成了行为规则。Actor–critic 会同时学习策略与价值;只有“输出策略”并不意味着训练时拒绝使用价值信息。
把目标函数翻译成人话 πθ(a|s) 是参数 θ 下,在 s 选择 a 的概率。G₀ 是一回合开始处的折扣回报。J(θ) 是按当前策略反复运行时 G₀ 的期望;它问的是“如果一直使用这组参数,平均表现怎样”。α 是参数步长。
梯度 ∇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 是期望,不是每次执行的固定回报;策略优化希望改善平均表现。
读到一半卡住时,先补这里: MDP 与固定策略诱导的 MRP
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 先区分两种“随机选” 先看石头剪刀布 再看观测混淆:同一画面未必是同一状态 这和 MDP 的结论冲突吗? 自己试一下 先区分两种“随机选” ε-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 都必须随机”的证明。
易错点与理解关键 Stationary 平稳表示同一状态的动作概率规则不随时间改变,不表示概率必须为 0 或 1。一直采用 (0.5,0.5) 可以同时是平稳策略和随机策略。
自己试一下 混淆位置例子中,每次从 R 退出的概率改为 1/4,失败后仍留在 R。期望还要几步?
我想好了,展开答案与理由 E=1+(3/4)E,所以 E=4。概率变小使平均等待更长,但只要独立重复且成功概率保持正值,这个例子仍会以概率 1 最终退出。
读到一半卡住时,先补这里: 策略方法:直接优化动作分布
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 环境不会给你“奖励对网络参数的导数”,怎么办? score function 不是考试分数 先用一次选择验证它 多步任务为什么还需要 Q? 为什么一次梯度可能看起来“不合理”? 自己试一下 环境不会给你“奖励对网络参数的导数”,怎么办? 假设做动作后环境只告诉你成功还是失败,并不会告诉你参数 θ 增加 0.01 会怎样。我们仍知道自己如何产生动作:πθ(a|s) 是可微的概率函数。因此可以对“这个动作被选择的概率”求导,再用它得到的长期回报作为权重。这是策略梯度的关键转变。
score function 不是考试分数 这里 score 指 ∇θlogπθ(a|s),是一组导数,描述参数如何变化才能提高当前选中动作的对数概率。log 是自然对数;∇ 是对参数向量求导。概率本身和概率的导数是不同对象。
为什么成立?因为 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₀],一种完整轨迹形式为:
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 仍更好,参数仍应增加,但优势小于原来,因此推动较弱。
读到一半卡住时,先补这里: 策略方法:直接优化动作分布 平方误差、梯度下降与随机梯度
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 我们需要的是能调节、又合法的动作分布 Softmax 每个符号是什么? 选中一个动作时,梯度怎样算? 连续动作:高斯均值怎么移动? 为什么 softmax 的其他动作也会改变? 自己试一下 我们需要的是能调节、又合法的动作分布 离散动作概率必须非负且总和为 1。如果随便给每个概率加一个数,容易破坏这两个条件。Softmax 先让网络输出任意实数分数 logits,再把这些分数转换成合法概率。连续动作则不能为每个实数存一个概率,常用高斯分布的均值与方差来描述如何采样。
Softmax 每个符号是什么? x(s,a) 是状态动作特征;θ 是参数;θᵀx 是点积得到的 logit,记作 zₐ。e 的幂保证结果为正,再除以所有动作的指数和保证总和为 1。
若两个 logits 为 (0,ln3),指数为 (1,3),概率为 (1/4,3/4)。分数本身不是概率,不能直接把 0 和 ln3 归一化就得到正确结果。对所有 logits 同时减同一常数不改变概率,常减最大 logit 来避免数值溢出。
选中一个动作时,梯度怎样算? 读法是“选中动作的特征,减去策略平均特征”。假设两个动作的特征为 (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 为:
若 μ=θ=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)。乘正的优势会提高第一动作相对于第二动作的偏好;乘负优势则方向反转。
读到一半卡住时,先补这里: 策略方法:直接优化动作分布 策略梯度定理与 score function
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 策略梯度定理用了未知 Q,实际怎么做? 一个回合先固定什么? 用两步回合完整计算 结果应该怎样理解? 为什么要从每个时间点重新算回报? 自己试一下 策略梯度定理用了未知 Q,实际怎么做? 上一节的长期动作价值 qπ 通常不知道。最直接的方法是按当前策略完成一个回合,看看从每一步开始实际得到多少回报 Gₜ,用这个样本代替期望价值。这就是 REINFORCE 的 Monte Carlo 思路:用真实整段结果评价先前的动作,再调整选择概率。
一个回合先固定什么? 在这里的严格轨迹估计约定中,先固定用于采样的参数 θ,记录状态、动作、奖励和动作概率信息;完整回合结束后,从后向前算各 Gₜ,再在生成轨迹的参数处计算各 score,最后汇总一次更新。若课件算法逐步改参数,数值实现可能不同,计算题必须照其明确约定。
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 保留下来。
读到一半卡住时,先补这里: 策略梯度定理与 score function 蒙特卡洛预测:等回合结束,用真实回报估值
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 拿到 3 分究竟好不好? 先算单个样本的变化 用两个动作把“期望为零”算出来 哪些限定条件不能漏? 基线不是从奖励记录里扣钱 自己试一下 拿到 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 步还乘 γᵗ。
用两个动作把“期望为零”算出来 仍有 π(A)=π(B)=0.5,两个 score 分别为 0.5、-0.5。给定状态,固定基线为 2。基线附加项的期望是 0.5×2×0.5+0.5×2×(-0.5)=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。直接减去它会改变期望梯度;这解释了简单基线证明为何要求动作无关。
读到一半卡住时,先补这里: REINFORCE:用完整回报估计策略梯度
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 同样拿 6 分,为什么一个动作值得鼓励,另一个未必? 把两个动作的优势全部算出来 TD error 为什么能提供优势信号? 一条有随机后继的具体计算 先判断比较对象,再判断正负号 自己试一下 同样拿 6 分,为什么一个动作值得鼓励,另一个未必? 要判断动作好坏,需要和“这个状态通常怎样”比较。优势函数 Advantage 表示:固定第一步选这个动作,比按原策略在该状态随机选动作的平均长期回报多多少。它不是即时奖励,也不是比最差动作好多少。
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。不是两个优势的普通算术平均为零,而是按 π 的权重平均为零。
TD error 为什么能提供优势信号? 我们往往不知道精确 qπ,却能观察一次奖励和下一状态,并已有一个 V 估计。于是用“一步奖励加下一状态价值”近似这次动作的长期表现,再减当前状态平均。
若 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。
读到一半卡住时,先补这里: 状态价值 V 与动作价值 Q 基线:为什么减去一个数不改变平均梯度?
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 能否不等整个回合结束就改进策略? 两套参数别写混 两个人各更新什么:完整数值例子 与“REINFORCE 加基线”哪里不同? 为什么两套学习率可以不同? 自己试一下 能否不等整个回合结束就改进策略? REINFORCE 等到完整回报才评价动作,长任务可能反馈太慢。Actor–critic 增加一个学习到的评价者:critic 估计未来价值,actor 利用这份评价更早调整动作概率。就像执行者决定下一步怎么做,评价者不断修正“从这里继续通常会怎样”的预测。
两套参数别写混 Actor 参数 θ 决定策略 πθ(a|s);critic 参数 w 决定价值 Vw(s)。αₐ、αc 分别是两者学习率,不必相同。先从一次真实转移计算同一个 TD error,再分别用于价值学习和策略改进。
第二式让当前价值向一步目标靠近;第三式把 δ 当近似优势,调整已选动作概率。这里沿用折扣起点目标,其他状态占用分布约定可把 γᵗ 吸收进去。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 仍可能低于原先预期。
读到一半卡住时,先补这里: 优势函数与 TD error 的关系 TD(0):走一步,就修正一次预测
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 真实试错太贵时,能不能先在脑中试? 用同一次经验说明两条路线 模型里的符号代表什么? 把模型备份算出来 为什么模型既有收益也有风险? 自己试一下 真实试错太贵时,能不能先在脑中试? 机器人撞一次墙可能损坏设备,开车尝试一条错误路线可能浪费时间。如果已经知道“从这里向右会去哪、会得到什么奖励”,就能先在内部推演,再决定真实动作。这需要环境模型 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̂ 表示从有限经验估计的版本。
帽子提醒我们这不一定是真实环境规律。这个公式需要模型提供下一步结果,再用 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。模型错误会让规划过于乐观,即使内部计算完全正确。
为什么模型既有收益也有风险? 它可以用大量内部计算替代昂贵真实交互,还可用于规划、预测和搜索;但有限数据会造成模型误差,函数近似又可能使它难以表示真实规律。模拟更多次只会更精确地理解当前模型,不一定更接近真实世界。
易错点与理解关键 Model-based 不要求一开始就拥有正确模型,“先从经验学模型,再规划”也属于 model-based。反过来,神经网络本身不等于环境模型:DQN 的网络预测 Q,所以通常仍归为 model-free 价值学习。
自己试一下 一个网络输入 (s,a),输出下一状态概率;另一个输入 (s,a),输出预计累计奖励。这两个网络分别是哪类对象?
我想好了,展开答案与理由 前者是环境转移模型,可以生成或平均下一步结果;后者是动作价值函数 Q。判断依据是预测内容,不是它们都使用神经网络。
读到一半卡住时,先补这里: 策略、价值函数、模型:三者各管什么?
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 不知道真实转移概率,先数发生次数 符号逐个认清 四条记录完整建一次模型 为什么不能随便独立抽奖励和下一状态? 分布模型和样本模型有什么区别? 新经验来了,模型也要更新 自己试一下 不知道真实转移概率,先数发生次数 同一状态动作多次尝试后,下一状态可能不同。最简单的表格模型就是用相对频率估计概率,用实际奖励平均估计期望奖励。它把“经验记录”变成可重复使用的一步规则,并不需要先学出完整最优策略。
符号逐个认清 N(s,a) 是状态 s 下动作 a 被尝试的总次数;N(s,a,s′) 是其中下一状态为 s′ 的次数。分母是“有多少次尝试机会”,分子是“其中目标结果发生几次”,因此比值是条件概率估计。
求奖励平均时只统计该状态动作下发生的奖励,不把其他动作的记录混进来。若从未尝试,分母为零,需要初始化或先验,不能直接相除。
四条记录完整建一次模型 同一 (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 的价值,后继价值是后续规划时才加入的。
读到一半卡住时,先补这里: 基于模型的学习:从经验走向规划
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 学到地图之后,要把它用起来 模型模拟一次,与真实走一次哪里不同? 一个两步模型的数值例子 用一步 TD 同样能规划 模拟多了是否一定正确? 规划能补什么,不能补什么? 自己试一下 学到地图之后,要把它用起来 上一节得到“在某处做某动作会怎样”的模型,但模型本身没有直接告诉我们长期走法好不好。规划 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 以后的回报需要折扣。
读到一半卡住时,先补这里: 基于模型的学习:从经验走向规划 动态规划与迭代策略评估
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 真实走一步,能否多学几步? 三个环节必须分开 一条两步路径演示信息如何往前走 n 与模型假设意味着什么? 规划步为什么还要选择状态动作? 自己试一下 真实走一步,能否多学几步? 一条迷宫路径很长,终点奖励刚被发现时,信息还没传回起点。如果每次都等智能体真实走完整条路,传播会很慢。Dyna-Q 用真实经验做直接学习,同时学模型,再从模型抽取旧状态动作进行额外更新,让同一段环境经验支持更多价值传播。
三个环节必须分开 ① 观察真实 (s,a,r,s′),做一次 Q-learning。② 将这条经验写入或用于更新环境模型。③ 进行 n 次规划:选以前经历过的状态动作,用模型生成 r、s′,再做相同的 Q-learning 备份。
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 可存某状态动作最近的一次结果;随机环境若只保留最后结果,可能不能表示完整规律,应采用适合随机性的模型。
易错点与理解关键 “用更少真实交互学会”不等于“总计算更少”。模型若错误,重复规划还可能反复传播错误。Replay 是抽已经发生的记录,Dyna planning 是调用模型生成结果,简单确定性模型下看似相似也应分清定义。
规划步为什么还要选择状态动作? 模型中可能存着很多经验,不是每次都从真实智能体当前所在的位置开始。简单 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。
读到一半卡住时,先补这里: 用学到的模型做规划与模拟评估 Q-learning:行为可探索,目标取贪心
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 一堵墙被移走,你为什么可能永远不知道? Dyna-Q+ 给“很久没试”一个理由 把加成算出来 为什么不是简单地越久不用就越好? 怎样读变化迷宫实验? 自己试一下 一堵墙被移走,你为什么可能永远不知道? 以前向右总撞墙,智能体于是学会绕远路;后来右侧通道打开,如果它再也不尝试向右,新的捷径就不会进入模型。即使在旧模型里规划一百万次,也只会重复“右侧撞墙”这一旧结论。环境变化时,不仅需要更快算旧信息,还需要主动验证可能过时的信息。
Dyna-Q+ 给“很久没试”一个理由 常见 Dyna-Q+ 思路是在规划奖励中加入与“距上次真实尝试经过多久”有关的 bonus,鼓励重新检查长期未验证的动作。τ(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+ 版本还会处理已访问状态下尚未尝试的动作,具体初始化规则应以课件或题目为准。
怎样读变化迷宫实验? 原路变坏时,继续沿旧路的真实失败可能较快暴露变化;出现更好但未使用的新路时,若没有主动探索就更难察觉。这解释为什么长期未尝试动作的激励有时很重要,而不仅是一般“误差大就多学”。
易错点与理解关键 不要将 Dyna-Q+ 的时间探索 bonus 与 PER 的 TD error 优先级混为一谈:一个鼓励重新获取真实信息,另一个调整已有记录的抽样。课件实验不意味着 Dyna-Q+ 在所有固定或变化任务中都严格最优。
自己试一下 κ=0.2,τ=25,模型奖励为 -2。规划奖励是多少?真实环境奖励会自动变成这个数吗?
我想好了,展开答案与理由 bonus=0.2×√25=1,规划奖励=-1。真实奖励仍由环境决定,并不会因为内部探索激励而自动改变。
读到一半卡住时,先补这里: Dyna-Q:真实经验与模拟经验一起更新
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 不必先解整张地图,也能决定眼前这一步 把第一步与后面的走法分开 先算每次回报,再求平均 为什么它不自动等于最优 Q? 自己试一下 不必先解整张地图,也能决定眼前这一步 全局 DP 尝试为很多状态求出价值;前向搜索只从当前真实状态出发,推演现在可能到达的未来。下棋时你不必先解决所有可能棋盘,只需给当前几个候选落子分配推演预算。这里必须有能产生后果的模型,例如已知规则或学到的环境模型。
把第一步与后面的走法分开 为了评价动作 a,先强制第一步做 a;之后按某个 rollout policy 继续模拟,直到终止或规定深度。一次模拟得到一个回报 G。对同一个首动作重复 K 次,取平均作为估计。第一步指定动作,后面跟随默认策略,这正对应某种后续策略下的动作价值。
K 是这次对动作 a 的模拟次数;i 是模拟编号,不是环境时间;G⁽ⁱ⁾ 是第 i 次完整或指定截断处理后的折扣回报。帽子表示有限模拟估计,不是真值。
先算每次回报,再求平均 当前有 Left、Right 两动作,γ=0.5。Left 的两次模拟奖励分别为 [1,2]、[0,2],回报分别 1+0.5×2=2、0+0.5×2=1,均值 1.5。Right 的两次奖励分别 [0,4]、[1,4],回报为 2、3,均值 2.5。因此按这批模拟结果,当前选择 Right。
若直接把所有奖励平均,会忽略每笔奖励在轨迹中的时序,也改变要估计的对象。要先给每条轨迹算 G,再对轨迹平均。
为什么它不自动等于最优 Q? 如果 Right 后面需要非常精确的操作才能得到大奖,而默认 rollout 总是乱走,它的估计可能偏低。这里估的是“首动作固定、之后按该 rollout 继续”的表现,不是证明所有未来都会最优。更多模拟减少当前模型与 rollout 下的抽样误差,不自动让默认策略变得聪明。
实际搜索预算有限,可以使用价值函数给截断叶子估值,或像下一节 MCTS 那样逐步改进树内决策;这些选择都会改变估计目标与偏差来源。
自己试一下 某动作三次模拟的折扣回报是 4、-1、3。估计 Q 是多少?如果下一次模拟得到 6,新的均值是多少?
我想好了,展开答案与理由 前三次均值 (4-1+3)/3=2;加入第四次后为 (4-1+3+6)/4=3。要用新的总次数 4,不能简单把旧均值 2 与新样本 6 各一半平均成 4。
读到一半卡住时,先补这里: 用学到的模型做规划与模拟评估
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 所有首动作一直平均分配模拟次数,是否浪费? 一轮模拟的四个阶段,各在干什么? 把一次回传算清楚 树内为什么不永远选当前平均最高? 模拟结束后的真实行动与模拟探索不同 自己试一下 所有首动作一直平均分配模拟次数,是否浪费? 简单 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 还使用“平均价值加探索奖励”的选择分数,下面作为帮助理解的补充形式:
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,也不能忘记访问次数增加。
读到一半卡住时,先补这里: 前向搜索与简单蒙特卡洛搜索
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 模拟很长时,也必须等到终局才学习吗? 把熟悉的 SARSA 公式放进搜索 一次模拟 TD 更新完整计算 Dyna-2 为什么区分长期与短期? 用两动作看局部修正如何改变选择 把本章接回整门课 自己试一下 模拟很长时,也必须等到终局才学习吗? 前面的 MC 搜索用模拟回报更新统计量。若一次模拟很长,可以像真实经验的 TD 一样,在模拟中每一步就利用后继估值更新当前状态动作。这样更早传播信息,但也把后继估计的误差带进来了。变化的是从模拟中学习的方法,不是模型突然变成真实环境。
把熟悉的 SARSA 公式放进搜索 s、a 是模拟中的当前状态动作,r 是模型产生的奖励,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 为什么区分长期与短期? 长期记忆从真实经验学习可反复使用的一般价值知识;短期工作记忆围绕当前真实状态进行模拟搜索,提供当前局面的局部修正。整体估计可以理解为两部分相加:
这个表达式说明信息分工,不规定所有实现都使用独立表格。长期部分保留跨实际经验的学习;短期部分在新的局部搜索开始时按算法约定初始化或重置,避免把旧局面临时修正无条件当永久事实。
用两动作看局部修正如何改变选择 长期值对 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就断言第二动作仍唯一最好;最终选择还要按并列处理规则。
读到一半卡住时,先补这里: 蒙特卡洛树搜索:边模拟边改进树内选择 TD(0):走一步,就修正一次预测
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 先看一个不需要公式的故事 沿一条时间线认识下标 为什么同一页有两个概率? Σ、期望、max、argmax 分别在做什么? 三种“分数”不要混起来 γ、α、ε 看起来都在 0 到 1,却负责不同事情 梯度也先用一个数理解 自己试一下 先看一个不需要公式的故事 你在一个两格房间里,当前位置叫 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。
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。三个答案分别是“按当前策略平均会怎样”“最好有多少”“该选择谁”,并不矛盾。
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 先问:这些算法在做同一件事吗? 同一个转移,比较四种目标来源 目标算完,才考虑怎么改旧估计 DP 为什么单独一类? DQN 的几个名字改变不同环节 策略梯度和规划放在哪里? 自己试一下 先问:这些算法在做同一件事吗? 玩迷宫时,你可能只想知道“现有走法平均得多少分”,也可能想学会“每个位置怎样走更好”;你可能知道地图规则,也可能只能亲自尝试。算法的区别首先来自这些问题,不是来自公式长得像不像。
按三个问题拆开整门课:评价固定策略,还是改进动作?知道环境规则,还是只有样本?价值表放得下,还是需要参数函数?深度 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。目标是想靠近的参考值,新值是只走了一部分后的结果。
很多算法都有这个形式。辨认方法时,要追问 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,因为尚未描述网络是否具有价值与优势两个分支。不同名字修饰不同环节,可以同时出现。
读到一半卡住时,先补这里: 做计算前的六个检查
我能自己解释,并完成本节自测仅保存在当前浏览器
本节一步步会讲什么 先把计算题翻译成要做的事情 第一步:确认更新位置和旧值 第二步:先判断是否真正终止 第三步:根据算法选择未来项 第四步:单独写目标,再写误差 第五步:学习率决定移动多远 第六步:判断读旧表还是新表 MDP 方程题怎样用这套思路? 三条数值自检 自己试一下 先把计算题翻译成要做的事情 题目说: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;若问固定随机策略的期望备份,则按动作概率平均。这一步决定算法,不应等算完才看题名。
第四步:单独写目标,再写误差 奖励 1 刚刚发生;0.5 折扣下一状态的未来价值;4 是第一个动作的价值估计。目标 3 减旧值 2,才得到误差 1。δ 不是目标,目标也不是最后的新值。
第五步:学习率决定移动多远 从 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。
读到一半卡住时,先补这里: 先认符号,再读公式
我能自己解释,并完成本节自测仅保存在当前浏览器