1.Q-learning
Q-Learning 是一种无模型(model-free)强化学习算法,用于学习在马尔可夫决策过程(MDP)中的最优策略。它通过迭代更新 Q 值(动作价值函数) 来估计在某个状态下采取某个动作的长期回报,最终找到最优策略 π∗。
1. Q-Learning 核心概念
**(1) Q 函数(动作价值函数)**
Q 函数 Q(s,a) 表示在状态 s 下采取动作 a 后,未来能获得的期望累积奖励(考虑折扣因子 γ)。
贝尔曼方程(Bellman Equation) 描述了 Q 函数的更新规则:
其中:
- r(s,a):立即奖励
- s′=δ(s,a):执行动作 a 后的新状态
- γ:折扣因子(0 ≤ γ < 1),控制未来奖励的重要性
- maxbQ(s′,b):从新状态 s' 开始走的最大潜力
🌟 定义:
Q(s, a) 表示:
在状态 s 下执行动作 a,之后一直使用最优策略 π*,最终总共能拿到多少奖励(期望值)?它评估的是:
“我现在做这个动作,值不值?”Q 值是怎么来的?
通过反复“试错 + 更新”训练出来的。
比如:
Q(S1,a1)←1+0.7⋅max(Q(S1,a1)
初始 Q 全为 0
一次执行:从 S1 做 a1,拿到奖励 +1,仍在 S1
更新:
4.重复训练,Q 值越来越准确
**(2) 最优策略 π∗**
最优策略选择在每个状态下使 Q 值最大的动作:
π∗(s)=arg maxQ(s,a)
🌟 定义:
最优策略 π* 是指:在每一个状态下,采取能够获得最大长期收益的那个动作。
换句话说,就是告诉你:
在这个状态下做什么,是最聪明的选择?
✅ π* 是一个函数:
![]()
意思是:
输入一个状态 s,输出一个动作 a。
✅ 怎么求 π*?
很简单!
在每个状态 s,我们已经通过 Q-learning 算出了所有动作的 Q 值(即每个动作未来的期望收益),我们只要挑 Q 值最大的动作就行了:
🧠 举个例子:
假设你有这样的 Q 表(已经训练好了):
状态 a1 a2 S1 1.0 -2.0 S2 7.7 8.9 对 S1:
两个动作的 Q 值分别是 1 和 -2,哪个大?
→ 1 大,对应 a1 → 所以:π*(S1) = a1对 S2:
Q 值分别是 7.7 和 8.9,哪个大?
→ 8.9 最大,对应 a2 → 所以:π*(S2) = a2
✅ π* 最终结果:
π∗(S1)=a1,π∗(S2)=a2意思是:
在 S1 状态下最优是执行 a1
在 S2 状态下最优是执行 a2
**(3) 最优价值函数 V∗**
最优价值函数表示在最优策略下的状态价值:
🌟 定义:
最优价值函数 V∗(s)V^*(s)V∗(s) 表示:从状态 s 出发,如果之后始终按最优策略 π* 走,最多能拿到多少期望总奖励(也叫回报)?
简单来说,它衡量的是:
站在当前状态,未来的“潜力价值”有多大。🧠 举个例子(接上面的 Q 表):
状态 a1 a2 S1 1.0 -2.0 S2 7.7 8.9 则:
V∗(S1)=max(1.0,−2.0)=1.0
V∗(S2)=max(7.7,8.9)=8.9
通俗版 Q-Learning 讲解
1. 什么是 Q-Learning?
Q-Learning 就像教一个机器人玩游戏:
- 状态(State):机器人当前的位置(比如在迷宫的第几个格子)。
- 动作(Action):机器人能做的选择(比如上下左右移动)。
- 奖励(Reward):机器人做某个动作后得到的分数(比如吃到金币+1,碰到陷阱-2)。
- Q 值(Q-Value):机器人“记住”在某个位置做某个动作能得多少分。
目标:让机器人学会在每个位置选最赚钱的动作,最终拿到最高总分!
例题
解析:
原版解析:
🧠 题目回顾:
我们有两个状态 S={S1,S2},两个动作 A={a1,a2},奖励如下:
状态 动作 下一个状态 奖励 S1 a1 S1 +1 S1 a2 S2 -2 S2 a1 S1 +7 S2 a2 S2 +3 设定:
折扣因子 γ=0.7
学习率 α = 1(即完全相信当前反馈)
初始所有 Q 值为 0
使用 Q-learning 更新公式(简化版):
📌 Step-by-step 更新过程(假设从状态 S1 开始):
🔁 Step 1
当前状态:S1
所有 Q 值为 0
随机选择动作(例如):选择 a1
查找信息:
δ(S1,a1)=S1
r(S1,a1)=+1
更新公式:
Q(S1,a1)←1+0.7⋅maxbQ(S1,b)由于 Q(S1,b)=0,所以:
Q(S1,a1)←1+0.7⋅0=1✅ 更新完之后:
Q a1 a2 S1 1 0 S2 0 0
🔁 Step 2
还在 S1,再次随机选择动作,例如这次:选择 a2
查找信息:
δ(S1,a2)=S2
r(S1,a2)=−2
更新公式:
Q(S1,a2)←−2+0.7⋅maxbQ(S2,b)
Q(S2, a1) = 0 → max = 0
所以:
Q(S1,a2)←−2+0.7⋅0=−2✅ 更新后:
Q a1 a2 S1 1 -2 S2 0 0
🔁 Step 3
我们刚从 S1 执行 a2 到达了 S2
现在在 S2,选择一个动作(假设选 a1)
查找信息:
δ(S2,a1)=S1
r(S2,a1)=+7
更新公式:
Q(S2,a1)←7+0.7⋅maxbQ(S1,b)
Q(S1, a1) = 1,Q(S1, a2) = -2 → max = 1
所以:
Q(S2,a1)←7+0.7⋅1=7.7✅ 更新后:
Q a1 a2 S1 1 -2 S2 7.7 0
🔁 Step 4
现在还在 S2,继续选择动作(假设选择 a2)
查找信息:
δ(S2,a2)=S2
r(S2,a2)=+3r
更新公式:
Q(S2,a2)←3+0.7⋅maxbQ(S2,b)Q(S2,a2)←3+0.7⋅7.7=3+5.39=8.39
Q(S2, a1) = 7.7,Q(S2, a2) = 0 → max = 7.7
✅ 更新后:
Q a1 a2 S1 1 -2 S2 7.7 8.39
🔁 Step 5
Q(S2,a2)←3+0.7⋅maxbQ(S2,b)Q(S2, a2)
从 S2 执行 a2,仍然在 S2
继续执行 a2,再更新一次:
这次:
max(Q(S2)) = max(7.7, 8.39) = 8.39
所以:
Q(S2,a2)←3+0.7⋅8.39=3+5.873=8.873✅ 更新后:
Q a1 a2 S1 1 -2 S2 7.7 8.873
Q值收敛后的理论最优值(解析解)
我们也可以从理论上计算出 Q 值、V 值 和 策略 π*:
V(S1)=max(1+0.7V(S1),−2+0.7V(S2)) V(S2)=max(7+0.7V(S1),3+0.7V(S2))
用等式联立解:
尝试假设:
π*(S₁) = a₂ → 即选 -2 + 0.7 V(S₂)
π*(S₂) = a₁ → 即选 7 + 0.7 V(S₁)
代入联立可得:
V(S₁) = –2 + 0.7 × V(S₂)
V(S₂) = 7 + 0.7 × V(S₁)
解得:
V(S2)=10.98,V(S1)=5.69最终 Q 表为:
Q(s, a) a₁ a₂ S₁ 4.98 5.69 S₂ 10.98 10.09
最优策略 π*
π*(S₁) = a₂,因为 Q(S₁, a₂) = 5.69 > Q(S₁, a₁) = 4.98
π*(S₂) = a₁,因为 Q(S₂, a₁) = 10.98 > Q(S₂, a₂) = 10.09所以最优策略是:
π(S₁) = a₂*
π(S₂) = a₁*
🧠 为什么要“假设”π*
在求最优值函数 V* 和最优策略 π* 时,我们不能一下子就知道哪个动作最好。我们必须先做一个合理的假设,再检验这个假设是否成立。
在这个题中:
我们有两个状态:S₁ 和 S₂
每个状态下有两个动作:a₁ 和 a₂
我们不能直接知道在每个状态下哪个动作最优(因为涉及到未来的回报)
因此,我们采取如下方法:
✅ 第一步:假设一个策略 π*
比如假设:
π*(S₁) = a₂
π*(S₂) = a₁
也就是说:我们假设在 S₁ 应该选 a₂,在 S₂ 应该选 a₁。这个假设只是一个开始。
✅ 第二步:基于这个策略,写出 V 值的方程
我们使用贝尔曼最优性方程:
![]()
所以根据上面这个假设(π(S₁) = a₂, π(S₂) = a₁)可以写出:
V(S₁) = r(S₁, a₂) + γ × V(S₂) = –2 + 0.7 × V(S₂)
V(S₂) = r(S₂, a₁) + γ × V(S₁) = +7 + 0.7 × V(S₁)
联立求解即可得出:
V(S1)=5.69,V(S2)=10.98
✅ 第三步:验证这个假设是否成立
我们来看看,如果我们真的在 S₁ 选 a₂,S₂ 选 a₁,是否真的比另外的动作更好?
对比:
Q(S₁, a₁) = 1 + 0.7 × V(S₁) = 1 + 0.7 × 5.69 = 4.98
Q(S₁, a₂) = –2 + 0.7 × V(S₂) = –2 + 0.7 × 10.98 = 5.69 ✅
Q(S₂, a₁) = 7 + 0.7 × V(S₁) = 10.98 ✅
Q(S₂, a₂) = 3 + 0.7 × V(S₂) = 10.09
可以看到,在 V(S₁)=5.69, V(S₂)=10.98 情况下:
在 S₁:a₂ 的 Q 值更高(5.69 > 4.98)✅
在 S₂:a₁ 的 Q 值更高(10.98 > 10.09)✅
✅ 所以:这个假设是正确的
如果发现假设不成立,就要换一个策略再试,直到找到“自洽”的最优策略。
✅ 总结一句话:
我们不是随便假设 π*(S₁)=a₂,而是通过试探性的策略来建立联立方程解 V,然后再回头验证这个策略是否最优。
这个过程也叫做:
策略评估 + 策略改进(Policy Iteration)
无强制探索
👣 初始状态
所有 Q 值为 0:
Q a₁ a₂ S₁ 0 0 S₂ 0 0
▶️ Step 1: 初始状态为 S₁
由于 Q(S₁, a₁) = Q(S₁, a₂) = 0,动作相同,随机选择一个动作。
假设此时选择了 a₁
→
S₁ + a₁ → S₁, reward = +1
更新:
Q(S1,a1)=1+0.7×max(Q(S1,a1),Q(S1,a2))=1+0.7×max(0,0)=1
Q a₁ a₂ S₁ 1 0 S₂ 0 0
▶️ Step 2: 回到 S₁(因为 a₁ 不会离开 S₁)
这时:
Q(S₁, a₁) = 1
Q(S₁, a₂) = 0
→ 贪婪策略会选择 a₁,因为 Q 更高
→
S₁ + a₁ → S₁, reward = +1
更新:
Q(S1,a1)=1+0.7×max(Q(S1,a1),Q(S1,a2))=1+0.7×1=1.7
Q a₁ a₂ S₁ 1.7 0 S₂ 0 0
▶️ 后续继续在 S₁ 中反复执行 a₁
每次回报都是 1,Q(S₁, a₁) 逐渐变大,但 Q(S₁, a₂) 永远不会更新,因为我们再也不会尝试 a₂。
2.Conditional Probability(条件概率)
1. 定义(Definition)
条件概率是指在已知某一事件 B 发生的前提下,另一事件 A 发生的概率,记作 P(A∣B)。
数学表达式:
- P(A∩B):A 和 B 同时发生的概率(联合概率)。
- P(B):事件 B 发生的边缘概率。
2. 关键概念(Key Concepts)
(1) 样本空间缩减(Reduction of Sample Space)
- 条件概率的本质是将样本空间限制在 B 已发生的范围内,再计算 A 的概率。
- 即:从 Ω(全集)缩小到 B,再考察 A 的占比。
(2) 独立性(Independence)
- 若 P(A∣B)=P(A),则称 A 与 B 独立(事件 B 不影响 A 的概率)。
- 独立时:P(A∩B)=P(A)⋅P(B)。
(3) 贝叶斯定理(Bayes' Theorem)
- 条件概率的逆向计算:
- 用于从结果反推原因(如医学诊断、垃圾邮件过滤)。
3. 经典案例(Example)
问题:某疾病发病率为 1%(P(D)=0.01),检测的准确率为:
- 真阳性率(患病且检测阳性)P(T+∣D)=99%;
- 假阳性率(未患病但检测阳性)P(T+∣¬D)=5%。
求:检测阳性时实际患病的概率 P(D∣T+)。
解:
- 计算联合概率:
- P(T+∩D)=P(T+∣D)⋅P(D)=0.99×0.01=0.0099;
- P(T+∩¬D)=P(T+∣¬D)⋅P(¬D)=0.05×0.99=0.0495。
- 边缘概率 P(T+):P(T+)=P(T+∩D)+P(T+∩¬D)=0.0099+0.0495=0.0594
- 应用贝叶斯定理:P(D∣T+)=0.05940.0099≈16.7%
结论:即使检测阳性,实际患病概率仅 16.7%(因发病率低且假阳性率高)。
4. 与其他概念的关系
- 联合概率(Joint Probability):P(A∩B)(无条件的“同时发生”)。
- 边缘概率(Marginal Probability):P(A)(忽略其他变量的概率)。
- 链式法则(Chain Rule):P(A∩B)=P(A∣B)⋅P(B)
5. 应用领域(Applications)
- 统计学:回归分析、假设检验。
- 机器学习:朴素贝叶斯分类器、隐马尔可夫模型。
- 医学:疾病诊断、生存率分析。
- 金融:风险评估、信用评分。
6. 数学性质(Properties)
- 非负性:P(A∣B)≥0。
- 归一性:P(Ω∣B)=1。
- 可列可加性:若 A1,A2,… 互斥,则:
总结:条件概率是概率论中量化事件间依赖关系的核心工具,贯穿统计学、人工智能与决策科学。
通俗版条件概率解释
1. 什么是条件概率?
条件概率就是“在某个条件下,某件事发生的概率”。
举个栗子🌰:
- 你班上 40% 是男生,60% 是女生。
- 男生里 10% 戴眼镜,女生里 20% 戴眼镜。
问题:随机抽一个戴眼镜的人,TA 是男生的概率是多少?
这就是条件概率!
- 条件:已经知道这个人戴眼镜。
- 求:TA 是男生的概率。
2. 怎么算?
步骤 1:先算“戴眼镜的总人数”。
- 男生戴眼镜人数 = 40% × 10% = 4%
- 女生戴眼镜人数 = 60% × 20% = 12%
- 总戴眼镜人数 = 4% + 12% = 16%
步骤 2:在戴眼镜的人里,男生占多少?
![]()
答案:戴眼镜的人里,25% 是男生。
例题
解析
这个问题考察的是 条件概率(Conditional Probability),我们要找出的是:
在所有色盲的人中,有多少比例是男性?
🧠 Step 1:定义已知信息
我们可以引入一些变量来帮助我们清晰思考:
设总人口为 100 人(方便计算百分比)
设男性在总体中所占比例为 P(Male)P(\text{Male})P(Male)
P(Male)=0.5,P(Female)=0.5若未给出男女比例,默认一半一半,即:
色盲总人数占总人口的 4%,即:
P(Color Blind)=0.04男性中有 7% 是色盲,即:
P(Color Blind∣Male)=0.07
🧮 Step 2:求出男性色盲人数
使用乘法规则(Multiplication Rule):
P(Male∩Color Blind)=P(Male)×P(Color Blind∣Male)=0.5×0.07=0.035这表示:3.5% 的总人口是色盲男性。
🧮 Step 3:使用贝叶斯公式求条件概率
我们要找的是:
P(Male∣Color Blind)意思是:“在色盲人群中,有多大比例是男性”。
套用 贝叶斯公式:
![]()
✅ 最终答案
87.5%也就是说,在所有色盲人群中,87.5% 是男性。
3.Enumerating Probabilities(枚举概率)
1. 专业术语定义
枚举概率(Enumerative Probability)是指通过穷举所有可能的基本事件,计算目标事件发生的概率。其核心思想是:
- 样本空间(Sample Space):明确所有可能的互斥且完备的基本事件集合 Ω。
- 目标事件(Event):定义感兴趣的事件 A⊆Ω。
- 概率计算:P(A)=样本空间的基本事件总数事件 A 包含的基本事件数要求所有基本事件等可能(即均匀分布)。
2. 通俗易懂解释
枚举概率就是“数数法”:
- 列出所有可能的结果(比如掷骰子有 6 种结果)。
- 数出你关心的情况有多少种(比如掷出偶数:2、4、6 → 3 种)。
- 概率 = 关心的情况数 ÷ 总情况数(3/6 = 50%)。
举个栗子🌰:
- 问题:从扑克牌中随机抽一张,是红桃的概率是多少?
- 枚举法:
- 总牌数:52 张(样本空间)。
- 红桃数量:13 张(目标事件)。
- 概率 = 13/52 = 25%。
3. 关键特点
- 适用条件:
- 样本空间有限且可明确列举(如骰子、扑克牌)。
- 每个基本事件概率均等(如公平骰子)。
- 局限性:
- 样本空间过大时(如密码组合)枚举不现实,需借助组合数学。
4. 与联合概率的区别
- 枚举概率:直接计数计算单一事件的概率(如 P(红桃))。
- 联合概率:计数计算多个事件同时发生的概率(如 P(红桃∩A))。
5. 实际应用
- 游戏设计:计算装备掉落率(如 10 种道具中稀有道具占 1 种 → 10%)。
- 质量控制:抽检 100 件产品中有 5 件次品 → 次品率 5%。
- 密码学:枚举所有可能的密钥组合计算破解概率。
6. 数学严谨性
- 拉普拉斯概率:古典概型中,枚举概率是拉普拉斯“等可能”定义的体现。
- 概率公理化:柯尔莫哥洛夫公理体系下,枚举概率是离散均匀分布的特例。
7. 一句话总结
枚举概率 = 数出有利情况 ÷ 所有可能情况,适用于结果明确且等可能的场景,是概率论最直观的基础方法!
类比:就像数一袋子里红球和蓝球的比例,简单直接!
8.例子
标答
解析:
🧠 问题背景简介
我们研究的是一个和牙齿健康相关的问题,有三个可能的因素:
Cavity(蛀牙):有没有蛀牙?
Toothache(牙疼):病人有没有感到牙疼?
Catch(医生检查是否能探测出问题):医生用器械检查能不能“catch”到蛀牙。
每个变量都是布尔值(True 或 False),总共有 23=82^3 = 823=8 种可能的组合情况。
给出的表格是一个完全联合概率分布(Full Joint Probability Distribution),列出了每种组合的概率。
📊 原始表格展开如下:
蛀牙(Cavity) 牙疼(Toothache) 检测到问题(Catch) 概率(P) 是 是 是 0.108 是 是 否 0.012 是 否 是 0.072 是 否 否 0.008 否 是 是 0.016 否 是 否 0.064 否 否 是 0.144 否 否 否 0.576
❓ Q1. P(牙疼 且 没检测到问题) = ?
我们想知道:病人牙疼,但医生检查却没发现问题,这种情况有多大概率?
查找符合「toothache = True 且 catch = False」的行:
第2行:Cavity=T, Toothache=T, Catch=F → 概率 0.012
第6行:Cavity=F, Toothache=T, Catch=F → 概率 0.064
相加得到:
P(toothache∧¬catch)=0.012+0.064=0.076🧠 解释:在所有可能的情况下,7.6% 的病人牙疼,但医生却没有查出来。
❓ Q2. P(检测到问题) = ?
我们只看「catch = True」的所有情况:
P(catch)=0.108+0.072+0.016+0.144=0.34
0.108 (C=T, T=T, C=T)
0.072 (C=T, T=F, C=T)
0.016 (C=F, T=T, C=T)
0.144 (C=F, T=F, C=T)
🧠 解释:在所有情况下,医生有 34% 的概率能检查出问题。
❓ Q3. P(有蛀牙 | 检测到问题) = ?
这就是条件概率:
![]()
上一步我们知道 P(catch)=0.34
现在看
cavity = T 且 catch = T
的行:P(cavity∧catch)=0.108+0.072=0.18
0.108
0.072
加起来是:所以:
P(cavity∣catch)=0.18/0.34=0.529🧠 解释:如果医生检查发现了问题,那么有 52.9% 的概率是真的有蛀牙。
❓ Q4. P(蛀牙 | 牙疼 或 检查出问题) = ?
我们要算的是:
P(cavity∣toothache∨catch)第一步:列出满足「toothache = True 或 catch = True」的所有行:
0.108
0.012
0.072
0.016
0.064
0.144
总和是:
P(toothache∨catch)=0.416第二步:在这些行中,挑出
cavity = True
的行:
0.108
0.012
0.072
加起来:
P(cavity∧(toothache∨catch))=0.192第三步:代入公式:
P(cavity∣toothache∨catch)=0.192/0.416=0.4615🧠 解释:如果病人牙疼或者医生检查出了问题,那他有 46.15% 的概率是真的有蛀牙。
❓ Q5. 条件独立性验证
我们要验证:
P(catch∣toothache,cavity)=P(catch∣cavity)如果两边相等,说明在知道 cavity 的前提下,toothache 不再影响 catch 的概率(就是条件独立性)。
计算左边:P(catch | toothache=T, cavity=T)
匹配的行:
0.108/0.12=0.9
0.108 (
catch=T
)0.012 (
catch=F
)
总和 = 0.12,catch = T 的概率是:
计算右边:P(catch | cavity=T)
所有 cavity=T 的行:
0.108
0.012
0.072
0.008
总和 = 0.2,catch=T 的是 0.108 + 0.072 = 0.18:
0.18/0.2=0.9
4.Wumpus World with Three Pits
标答
🧠 问题复述:
我们有一个 4x4 的 Wumpus World,其中有 3 个坑(Pits),现在我们要根据已知的信息(微风 B 和 OK)计算两个黄色格子:
P(1,3 是坑 | 已知)
P(2,2 是坑 | 已知)
也就是说,我们想知道这些黄色格子中,有多大概率是坑?
✅ 解题思路核心:枚举兼容布局
这个问题其实是一个组合 + 条件概率问题,它的关键点在于:
在“所有可能的 3 坑布局”中,有多少种是兼容“已知信息”的?
然后在这些布局中,有多少个包含 (1,3) 是坑?有多少个包含 (2,2) 是坑?
🍥 Step 1:定义术语
Fringe:黄色格子,即“可疑”区域,既不在 OK 中、也不是未知中完全没有影响。
Other:剩下的未知格子,没直接接触微风。
Known:就是图中 B 和 OK 的已知信息(感知信息)。
📚 Step 2:使用公式的逻辑
这个公式来自课程讲义的贝叶斯公式变种:
![]()
但因为所有的坑分布被均等对待,所以我们可以直接按“配置兼容数量”来算概率。
🎯 Step 3:兼容配置数量解释(核心!)
你图中列出的几种配置都是符合以下条件的:
在黄色格子中(fringe)放置了 1 个或 2 个坑
剩下的坑放在其他格子(其他)中
最终总坑数是 3,并且微风信息是正确的
这些配置一共是 5 种:
配置编号 在 fringe 中的坑数量 other 中坑数量 other 可放位置数 兼容总数 1 1 个(在 1,3) 2 个 10 个位置中选 2 45 种 2 1 个(在 2,2) 2 个 10 个中选 2 45 种 3 2 个(1,3 和 2,2) 1 个 10 个位置 10 种 4 1 个(在 2,3) 2 个 10 中选 2 45 种 5 1 个(在 3,2) 2 个 10 中选 2 45 种 ⚠️ 实际题目中只使用了 5 个互斥配置:分别是只有一个坑在 fringe 的 3 个情况 + 两个坑在 fringe 的 2 个组合。
兼容布局总数:1 + 10 + 10 + 10 + 45 = 76 种兼容布局
📐 Step 4:概率计算
1. P(Pit at 1,3 | known)
有 1 个布局只有 1,3 是坑(配置 1)
有 10 个布局包含 1,3 + 另一个坑在 fringe(配置 3)
原来还包含了第三个 fringe 配置中 1,3 是坑的情况(比如同时 1,3 和 2,3 是坑那类),即 fringe 内两个坑组合可能仍包含 1,3,所以都要算进去!
2. P(Pit at 2,2 | known)
包含 2,2 是坑的布局:
只有 2,2:1 种
2,2 和 其他一个:10 种(例如 2,2 和 1,3)
两个坑(包含 2,2):10 种
所以:
![]()
说明 2,2 很可能是个坑!
✅ 总结(通俗版)
你可以把这类问题理解为“从所有可能的放坑方式里数数,看符合线索的有哪些”。
然后问:在这些符合条件的布局里,某个格子是坑的比例有多大?
这个比例就是该格子是坑的概率。
✅ 一、什么是 B 和 OK
在 Wumpus World 中,每个方格都有可能:
有坑(Pit)
有 Wumpus
有金子
什么都没有
但 智能体(Agent)不能直接看到这些东西,它只能感受到邻近格子的一些“感知”(percepts):
B = Breeze(微风):表示当前格子周围有坑
OK = Safe(安全):表示当前格子没有危险,也没有邻近坑
在你提供的图中:
每个标有 “B” 的格子,说明它 四周至少有一个坑。
每个标有 “OK” 的格子,说明它 自己周围肯定没有坑。
这些信息就是我们要用来推理其他格子是否是坑的依据。
✅ 二、公式解释(来自讲义)
我们要计算的是:
![]()
也就是:在已知的感知(B/OK)情况下,某个格子 (i,j) 是坑的概率。
这时候,使用了一个变种的 贝叶斯定理:
📌 核心公式
![]()
这个公式可以这样理解:
公式部分 中文解释 Pit1,3 表示“格子 (1,3) 是坑” known 表示我们当前知道的信息(比如图上的 B 和 OK) fringe 表示周围“可疑”的黄色格子集合(图中黄色部分) P(known fringe) P(fringe) 黄色格子中布置坑的先验概率(每种布置方式等概率) 简化理解:
“在所有可能的坑布局中,有多少是同时:
(1)符合 known 信息,
(2)而且其中 (1,3) 是坑?”拿这个数量 / 全部符合 known 的坑布局数,就是我们要的概率。
✅ 三、什么叫“兼容配置数量”
这才是这个题目的 核心技巧 和计算重点!
我们知道:
一共有 16 个格子,其中有 3 个坑,所以:![]()
(13 是未知格子的数量:16 - 3(因为我们知道 3 个格子 OK))
但我们不想遍历 286 个,我们想只找出那些:
“符合 known 信息(B 和 OK)”的布局
这些就叫做:兼容配置!
🧠 什么是“兼容”?
一个坑布局是兼容的,指的是:
每个有 B 的格子周围至少有一个坑
每个 OK 的格子周围一个坑都不能有
举个例子:
假设黄色 fringe 区有 (1,3), (2,2), (2,3), (3,2)
我们可以:
只在 (1,3) 放一个坑,其他两个坑放在其他未知格子中
在 (1,3) 和 (2,2) 同时放坑,剩下一个坑放其他地方
只在 (2,2) 放一个坑,其他两个在其他地方
只在 (2,3) 放一个坑……
这些组合只要满足 B 和 OK 要求,我们就认为它是一个兼容布局。
📊 表格(兼容配置数量)
配置编号 在 fringe(黄色) 中的坑情况 满足 B/OK 吗? 剩下坑的摆法数 总方案数 A 只有 (1,3) 是坑 ✅ 是 剩下两个坑在 10 个格子里选 2 → C(10,2) = 45 45 B (1,3) 和 (2,2) 是坑 ✅ 是 剩下一个坑放 10 个格子 → 10 种 10 C 只有 (2,2) 是坑 ✅ 是 剩下两个坑在 10 个格子里选 2 → 45 45 D (2,2) 和 (3,2) 是坑 ✅ 是 剩下一个坑放 10 个格子 → 10 种 10 E (2,3) 是坑 ✅ 是 剩下两个坑在 10 个格子里选 2 → 45 45 把这些符合的全部相加 = 45 + 10 + 45 + 10 + 45 = 共 155 个兼容布局
为什么只有76种,是因为这155种有重复布局
✅ 四、如何计算概率?
现在我们知道:
有多少个兼容布局(比如 76 个)
其中多少个布局包含 (1,3) 是坑(比如 21 个)