🌞欢迎来到图解强化学习的世界
🌈博客主页:卿云阁💌欢迎关注🎉点赞👍收藏⭐️留言📝
📆首发时间:🌹2026年3月14日🌹
✉️希望可以和大家一起完成进阶之路!
🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!
目录
强化学习要素
📝走迷宫获取宝藏
💡 总结一下
马尔可夫决策过程
马尔可夫性
全观测/部分可观测
状态转移矩阵
回报 (Return)和价值函数 (Value Function)
贝尔曼方程
矩阵形式的贝尔曼方程
求解贝尔曼方程
马尔可夫决策过程(MDP)
策略
价值
强化学习要素
📝走迷宫获取宝藏
Agent 主角 / 玩家小机器人
Environment 游戏世界 / 规则迷宫地图
State 处境 / 样子坐标 (2,3)
Action 反应 / 动作向上走一步
Reward 评价 / 反馈金币(+10) / 坑(-100)
吃到金币:+10分(开心!)
掉进陷阱:-50分(好疼!)
漫无目的地走:-1分(为了让它快点走,每浪费一秒都要扣微量分)
Policy 脑筋(大脑) / 攻略见金币就上的本能看到的情况(状态 S)应该做的反应(动作 A)
(1)左边有墙,右边是路往右走前面有金币
(2)脚下没陷阱往前冲
(3)三面都是墙,只有后路往后退

💡 总结一下
你可以把强化学习看作是一个不断循环的“互动游戏”:
小机器人(Agent)睁开眼睛,看到了自己当前的处境(State),然后翻开脑子里的通关秘籍
(Policy),决定往右边走一步(Action)。结果这一步刚好踩中了宝藏,迷宫
(Environment)立刻丢给它一个大大的笑脸加分(Reward),并且小机器人来到了一个新的位
置(新 State)。吃到了甜头的小机器人赶紧在秘籍上记下一笔:“在刚才那个处境下,往右走是大
神操作!”(更新策略)
马尔可夫决策过程
马尔可夫性
智能体未来状态的条件概率分布 仅依赖于当前状态

想象机器人来到了 位置,左边死胡同,右边是金币。 无论它是千辛万苦走过来的,还
是原地“空降”的,它面临的局势都一模一样。它只需做一件事:向右走,吃金币。
全观测/部分可观测
前面我们聊的迷宫,其实默认了一个非常理想的设定:小机器人知道自己在哪,也清楚整个迷
宫的构造。但在强化学习的真实世界里,环境给不给你透底,那是两码事!
模式一:“全观测” (Fully Observable)
迷宫开了“全图视野”。小机器人不仅确切知道自己的坐标位置,还清楚金币和陷阱在哪里,所
有死胡同和通道都尽收眼底。观测 (Observation) = 状态 (State)。小机器人拿到的信息就是迷宫
的真实全貌,没有任何秘密。
模式二:“部分可观测” (Partially Observable)
迷宫停电了,小机器人手里只有一把手电筒,只能照亮眼前半米:“前面是墙,左边是路”。至于
自己到底在整个地图的哪里?不知道。观测 ≠ 状态。迷宫的真实全貌(状态)被隐藏了,小机器人
只能拿到有限的局部信息(观测)。

状态转移矩阵
s 是「迷宫坐标 (2,3)」,
s ′ 是「坐标 (2,4)」,
Pss ′ 就代表你站在 (2,3) 时,下一步走到 (2,4) 的概率。
P这是状态转移矩阵,把所有状态之间的转移概率都打包成一张表。比如第1行就是从状态
s1出发,到所有其他状态的概率。

🍃马尔可夫过程(MP)
“我们可以把马尔可夫过程理解为,只要你设定好了这个人的状态空间(他能干啥)和转移概率
(他有多大可能去干啥),这个过程就会源源不断地产生出一本又一本的‘状态序列日记’。
而每一本这样的日记,我们都叫它一条马尔可夫链。”
状态 State
C1:上第一节课(痛苦面具)
C2:上第二节课(昏昏欲睡)
C3:上第三节课(极限拉扯)
Pass:通过考试(上岸!)
Pub:去酒吧(放纵)
FB:刷 Facebook / 刷朋友圈(摸鱼)
Sleep:睡觉(终止态,到了这儿,美好的一天就结束了)

马尔可夫过程(MP):就是从早上醒来到晚上睡觉,一整天串起来的真实状态序列。

马尔可夫奖励过程(MRP)
一个马尔可夫奖励过程是一个马尔可夫链加上奖励
假设你现在的状态 是 “去酒吧 (Pub)”。 你在酒吧待了一小时,下一秒你会去哪?根据我们之前的
状态转移图,有三种可能:
20% 的概率:你会良心发现,回到 C1 上课。如果你去了 C1:环境给你奖励 -2 分(因为第一节课
太痛苦了)。
40% 的概率:你会稍微清醒点,去上 C2。如果你去了 C2:环境给你奖励 -2 分(还是很枯燥)。
40% 的概率:你会彻底放飞,去上 C3。如果你去了 C3:环境给你奖励 -2 分(同理)。


这是折扣因子。意思是未来的奖励在你眼里是会“缩水”的。这一步的奖励值 100%,下一步就只值
50%,再下一步就只值 25%。
回报 (Return)和价值函数 (Value Function)

回报
轨迹:C1 C2 C3 Pass Sleep

价值
计算 C_1状态下的价值(Value),实际上就是在问:“如果一个学生现在处于 C_1 状态,按照图
中的概率‘混’下去,他这辈子平均能赚多少分?”就是把你刚才算出的所有可能轨迹的回报
C_1的价值其实就是未来所有可能收益的“折现平均值”。
(Return)进行加权平均。

那么轨迹1的概率怎么得到呐?
轨迹:C_1 C_2 C_3 Pass Sleep
第一步:从 C_1 走到 C_2 的概率是 0.5。
第二步:从 C_2 走到 C_3 的概率是 0.8。
第三步:从 C_3 走到 Pass 的概率是 0.6。
第四步:从 Pass 走到 Sleep 的概率是 1.0。
这条轨迹发生的总概率:
手动加权一万条轨迹是不现实的,这就需要贝尔曼方程(Bellman Equation)直接求解
奖励函数 (Reward) VS 回报 (Return)
最直观的方法就是把它们看作是“月薪”与“退休金总额”的区别。
奖励函数关注的是当下。当你从一个格子跳到另一个格子时,环境会立刻给你一个反馈。
回报关注的是全局。它是把从这一刻开始,直到游戏结束(比如睡着了 Sleep)所拿到的所有奖励
全部加起来的总分。
奖励 (Reward) 是你每走一步环境给你的“小费”; 回报 (Return) 是你走完一整条路后,手里攥着
的“所有小费的总和(还得考虑通货膨胀)”。
在强化学习里,小机器人的目标不是为了追求某一瞬间的奖励最大,而是为了让这一辈子最终拿到
的“回报”最大!
贝尔曼方程
“一个状态的价值,等于你现在能拿到的奖励,加上你下一步所在状态价值的折现。”


假设折扣因子等于1,C3的价值就等于,C3的奖励值,加上折扣因子(每个状态选择的概率成语*
所选择状态的价值)。

矩阵形式的贝尔曼方程

求解贝尔曼方程
贝尔曼方程是线性方程 ,可以直接求解:

这种方法只适合“小世界”。如果你的迷宫有几百万个格子,算这个矩阵逆的开销会大到让电脑爆
炸。
对于大规模的 MRPs 问题, 可以使用迭代或基于数据的方法,
例如
(1)动态规划
(2)蒙特卡洛估计
(3)时间差分学习
马尔可夫决策过程(MDP)
A 是有限动作集 (Action Space),就是智能体在每个状态下,主观上能做出的选择,在“第一节课
(C1)”这个状态,他的动作集 A 可能是:{认真听讲, 掏出手机, 直接翘课}。
状态转移概率你在状态 s,做出了动作 a,有多大的概率滑到下一个状态 s’。你在 C1,按下了“认
真听讲”这个键。理想情况下,你 100% 会进入 C2(下一节课)。但现实里可能地板太滑,或者老
师讲得太催眠,你可能有 10% 的概率即便想听讲还是睡着了进入了 Sleep 状态。
奖励函数你在状态 s,执行了动作a之后,环境立刻给你的反馈。状态 s = C1,动作 a = “认真听
讲”:老师给你一个赞许的眼神,奖励 +1。
🤖 扫地机器人:
状态空间S(机器人在哪?):这个世界只有 7 个格子。机器人的处境(状态)就是它此时踩在哪
个格子上。
奖励函数 (金币和废纸在哪?)S_1 是充电站(奖励 +1),S_7 是废纸(奖励 +10),其余为
0。
动作空间 A(“手柄怎么操作?”):可以选择“向左”或“向右”。
状态转移概率(理想与现实的打滑”):你的指令(动作a)并不能 100% 决定结果。智能体必须把
“意外”考虑进去。
如果你按了“向右”,因为机器精度(比如地砖太滑):
80% 的概率:成功向右走(执行正确)。
10% 的概率:原地打转(保持不动)。
10% 的概率:居然向左滑了(反方向移动)。
边界处理 (“撞墙了怎么办?”)如果你在 S_1 还要向左,或者在 S_7 还要向右:
90% 的概率:撞墙后停在边界。
10% 的概率:反弹回来。


当你处于迷宫中间(不是两头)时:
0.8 (理想情况):如果你按左 (A_left) 真的到了左边 (s-1),或者按右 (A_right) 真的到了右边
(s+1)。这种情况占 80%,说明机器人大部分时间还是听话的。
0.1 (原地踏步):不管你左还是按右,机器人纹丝不动 (s’ = s)。占 10%,可能是轮子空转了。
0.1 (反向打滑):最倒霉的情况。按左反而去按了右边,按右反而去了左边。占 10%,这地砖真的很
滑!
左边界的“撞墙法则” (s = S_1)
S_1是充电站,也是最左边的墙角。
当你按“向左” (A_left):
0.9 的概率你会撞墙留原地
0.1 的概率你居然反弹回了
当你按“向右”
0.8 的概率正常去 S_2。
0.2 的概率还是没动,留在了 S_1(这对应了规则 4 里的原地不动和规则 5 的边界概率叠加)。
右边界的“捡纸法则” (s = S_7)
S_7 是废纸所在地,也是最右边的墙角。
当你按“向左” (A_left):
0.8 的概率正常回 S_6。
0.2 的概率没动,留在了 S_7。
当你按“向右” (A_right):
0.9 的概率撞墙留原地(留在 S_7)。
0.1 的概率反弹回了 S_6。

策略
概率揉合公式:在策略 下,从 s飞到 s’ 的总概率.
你在 s 选动作 a 的概率
乘上 选了 a 之后滑到 s’ 的物理概率(打滑法则 P)。
把所有可能的动作 a(左、右、停)全部加起来。
奖励揉合公式:
在策略下,站在状态 s的平均工资。把每个动作拿到的即时奖励,按照你选那个动作的概率加权平
均。:如果你 90% 的时间在学习(奖励 -2),10% 的时间在摸鱼(奖励 -1),那你在“学生”这个
状态的平均日薪就是 -2 * 0.9 + (-1) * 0.1 = -1.9。
价值
状态价值函数
它在问:如果你现在处于状态 s,并且一直遵守策略混下去,你这辈子平均能拿多少总分?
假设机器人在 S_6(废纸旁边)。如果它的策略pi是“永远向右”,那么 V_pi(S_6) 就会非常高,因
为它马上就能拿到 +10 分。
动作价值函数
先强行执行动作 a(不管策略pi 怎么说,就先任性这一步),
从下一步开
你现在站在状态 s,然后完全听从你既定的策略(攻略)pi,第一步动作 a_t 是根据策略 pi 随机按
比例选出来的。如果你在 S_4,你的策略是“50%向左,50%向右”。那么在计算 V 的时候,你会模
拟很多次:一半次数往左走,一半次数往右走,最后算出一个平均得分。
你现在站在状态 s,但是你突然想试一试:“如果我现在强行执行动作 a,结果会怎样?”第一步动
作不是“摇骰子”选的,而是指定死必须是 a。但是,从第二步(时刻 t+1)开始,你又变回了那个
听话的好孩子,继续按照策略 pi 走。你还是在 S_4。你想计算 Q(S_4, 向右)。哪怕你的策略 pi 告
诉你应该向左,在这个公式里,你也会强行先往右走一步,看看这一步带来的即时奖励和后续身
价。




贝尔曼期望方程


每个状态的价值 v_(s)
策略pi(a|s) = 0.5:这意味着这个学生是个“纠结怪”,在任何有选择的地方,他都有 50% 的概率选
其中一个动作。
折扣因子= 1:这是一个理想状态,意味着未来的钱和现在的钱一样值钱(不打折)。

贝尔曼期望方程的计算
Class 3 的两个选择
选择 1:去学习 (Study) —— 概率 0.5
即时奖励:R = +10。
后续价值:直接通向 Sleep 状态(身价为 0)。
这一支的贡献:0.5 * (10 + 0) = 5。
选择 2:去酒吧 (Pub) —— 概率 0.5
即时奖励:R = +1。
下一步的不确定性(那个黑点分叉):
20% 回到 Class 1(身价 -1.3) 0.2 * -1.3
40% 回到 Class 2(身价 2.7)0.4 *2.7
40% 留在 Class 3(身价 7.4) 0.4* 7.4
这一支的贡献:0.5 *(1 + [0.2 * -1.3 + 0.4 *2.7 + 0.4 * 7.4]) = 0.5 *(1 + 3.78) = 2.39
最终合体:
v(Class 3) = 5 + 2.39 = 7.39


最优价值和最优动作 – 价值
最优价值代表了智能体能获得的最大期望累加奖励/回报

最优价值
在上一张图中,Class 3 的价值是 7.4,因为学生有 50% 的概率去酒吧混日子。
而在这一张图中,所有的红色数字都变大了:
Class 3:身价变成了 10。
Class 2:身价变成了 8。
Class 1:身价变成了 6。
因为在“最优”的世界里,学生不再摇骰子。当他在 Class 3 时,他发现:
选 Study:直接拿 +10 分走人。
选 Pub:还要去酒吧冒险,平均收益肯定不如 10 分。
所以,他 100% 选 Study。既然他只选最好的那条路,那这个格子的价值就直接等于那条最好的路
带来的收益。
你可以发现,这些最优价值呈现出完美的递减规律
终点:通过考试拿到 +10。
Class 3:最优动作是 Study。拿走 +10,所以身价是 10。
Class 2:
动作 1 (Sleep):奖励 0。
动作 2 (Study):奖励 -2,加上下一步 Class 3 的身价 10。
计算:max(0, -2 + 10) = 8。所以 Class 2 身价是 8。
Class 1:
动作 1 (Facebook):奖励 -1,加上 Facebook 自己的身价。
动作 2 (Study):奖励 -2,加上下一步 Class 2 的身价 8。
计算:max(很低, -2 + 8) = 6。所以 Class 1 身价是 6。

最优动作价值
我们来看几个关键的对比:
🚩 在 Class 3 这个路口:
动作 Study:q_* = 10。
动作 Pub:q_* = 8.4。
大白话:智能体一看,10 > 8.4,所以它在 Class 3 绝对不会去酒吧,而是直接选择 Study。
🚩 在 Class 2 这个路口:
动作 Sleep:q_* = 0。
动作 Study:q_* = 8。
大白话:智能体一看,8 > 0,所以它会忍受现在的 -2 分痛苦去上课,因为这通向未来的 8 分,而不是直接睡觉拿 0 分。

q_* 是如何计算出来的
我们以最复杂的 Pub(酒吧) 这个动作为例,看看那个 8.4 是怎么算的(假设gamma=1)
即时奖励:进入 Pub 立刻拿到 R = +1。
未来的期望(对应那个黑点的三个分叉):
20% 概率回到 Class 1,那里最优身价是 v_*=6。 0.2 * 6 = 1.2
40% 概率回到 Class 2,那里最优身价是 v_*=8。 0.4 *8 = 3.2
40% 概率留在 Class 3,那里最优身价是 v_*=10。0.4 *10 = 4
求和:1 + (1.2 + 3.2 + 4) = 1 + 7.4 = 8.4
q_* 与 v_* 的终极关系
你会发现一个很有趣的现象:
一个状态的最优价值 v_*(s),永远等于它所有动作中最大的那个 q_*(s, a)
v_*(Class 3) = max(10, 8.4) = 10
v_*(Class 2) = max(0, 8) = 8
v_*(Class 1) = max(5, 6) = 6
贝尔曼最优化原理
在强化学习的眼中,‘过去’是沉默的成本,只有‘现在’才是决策的起点。 无论你之前怎么折腾,只
Agent 智能体要你现在重新启动‘最优策略’,你剩下的这一辈子依然能拿到当前处境下的最高分。”
假设你想从洛杉矶(LA)坐火车去纽约(NY),而且你想走那条耗时最短的路线(图中绿色的那
条)。既然从 LA 到纽约的最快路径经过了芝加哥,那么这条路径中“从芝加哥到纽约”的那一段
(图中红色的部分),也必须是从芝加哥出发去纽约的所有走法中最快的那一条。

站在第 1 层,看着手柄上的几个键,你不需要往后想 100 步,你只需要对每个键做个简单的算术
题:按下这个键的价值 = 【这一秒屏幕弹出的得分 R】+ 【掉入下一关的平均潜能最高分V_*(打个
折 gamma)】
你把所有键都算一遍,哪个键算出来的数字最大,你就按哪个键!






寻找最优策略
只要我们已经算出了每个未来的最优价值 V_*,智能体在当下这一步根本不需要长远规划,它只需
要做个极其短视的“贪婪者”:把所有动作挨个看一遍,谁能让我这一步的预期收益刚好碰到那个
“最高天花板(V_*)”,我就选谁。argmax关心的不是分数本身,而是谁拿到了最高分”。它选择
的是一个动作。



MDPs 扩展

系统模型的不同类型
连续 vs 离散 (Continuous vs Discrete) —— 世界的“分辨率”是多少?
离散(Discrete):可以一个一个数出来的。
状态:比如棋盘上的局面、马里奥在屏幕上的坐标格子、或者是之前机器人的 7 个位置。
动作:比如游戏手柄的“上下左右”,或者下棋时指定下在天元。
连续(Continuous):包含了无限个小数,是一个区间。
状态:比如真实的物理量。一个污水处理厂曝气池里的溶解氧浓度。
动作 :比如你踩油门的深度、或者调节阀门的开度(可以开到 45.2%)。
确定模型 vs 随机模型 (Deterministic vs Stochastic) —— 现实会不会“出幺蛾子”?
确定模型(Deterministic):在完美的理想世界里,你调节水泵转速到 50 Hz,水流量就一定会
精准停在设定值。
随机模型(Stochastic):但由于网络延迟或丢包,对面收到的结果是未知的。在工程中,这通常表现为传感器噪声、水质水量的突变波动等。
连续时间 vs 离散时间 (Continuous Time vs Discrete Time) —— 时间是一把尺,还是一段流水?
离散时间模型:比如每隔 15 分钟采样一次水质数据,这 15 分钟就是一个步长。
连续时间模型:真实世界的物理和生化反应。比如活性污泥模型(ASM1)里的微生物降解过程,
它是一个时刻都在发生变化的微分方程。
奖励和惩罚,只是在业务定义上的不同叫法。
假设你正在用强化学习(比如结合了 LSTM 的动态控制框架)来优化一个污水处理厂的曝气过程
(ASM1):如果你用“惩罚/成本 (Cost)”思维:
你的目标非常明确——最小化曝气能耗,同时最小化出水污染物的超标量。如果你用“奖励
(Reward)”思维:你只需要给能耗前面加个负号!把“消耗了 100 度电”变成“获得了 -100 的奖励”。
算法的目标依然是maxEr,因为让负数最大化(比如从 -100 努力变成 -20),本质
上就是在让成本最小化。
回报
有限时域 (Finite Horizon) —— “7天试运行看效果”
累加奖励:这 7 天里,每天省下的电费和药剂费直接加起来。比如每天省 100 块,总奖励就是
700 块。这就叫“固定时长的累加”。
平均奖励:把这 7 天省下的总钱数除以 7,算出平均每天省了多少钱。
无限时域的累加奖励 (Infinite Horizon Cumulative) —— “永久运行,但更看重当下”你的算法在
当下立刻把出水水质控制达标,比承诺“一年后能控制达标”的奖励要高得多。通过 gamma打折,
未来的奖励对现在的影响越来越小,最后算出来的总账就是一个有限的数字。
无限时域的平均奖励 (Infinite Horizon Average) —— “永久运行,只看重长期稳态”对应第二张
图。同样是永久运行的水厂,但你现在不在乎短期的波动了,你不打折,你只看长期的平均日均成
本。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/283537.html原文链接:https://javaforall.net
