人工智能基础复习4——不确定知识与推理

来源:互联网 发布:淘宝的真实订单倍虚假 编辑:程序博客网 时间:2024/05/28 23:20

13 Uncertainty

Outline
不确定性(Uncertainty)
概率(Probability)
语法和语义
推理
独立性及贝叶斯法则

不确定性
一个Agent从不可能完全地确定一个世界或一个领域的状态,因为其中包含太多含糊性和不确定性
可能/概率推理
我已经得到这个证据,这个结论是正确的概率有多少?
我脖子僵硬,那么我得脑膜炎的概率有多大?
假设我们有一个规则:如果牙痛那么问题来源于牙洞
但是不是所有病人的牙痛都是因为有牙洞,所以我们可以像这样设置规则:如果牙痛并且没有牙龈疾病并且没有补牙,并且...,那么问题来源于牙洞
这会让问题更复杂,更好的方法是:如果牙痛,那么问题来源于牙洞的概率是0.8或者P(cavity | toothache) = 0.8
假设行动At为在航班起飞前t分钟前往机场,At能够让我准时到达么?
问题:部分可观察性(路况、其他司机的计划等)、嘈杂的传感器(交通报道)、不确定的行动结果(车轮漏气等)、极复杂的交通建模和预测
逻辑方法:
错误风险:A25可以让我按时到达=>A25可以让我按时到达,前提是没有交通事故、不下雨、轮胎不出问题等(这对于做决策没有太大帮助)
A1440显然可以让我按时到达但是我必须在机场过夜……

真实世界的不确定性和建模
真实不确定性:规则在本质上是有概率性的,如掷骰子、抛硬币
惰性:为了确保得到一个没有任何意外的规则,需要列出前提和结论的完整集合,这个工作量太大,这样的规则也难以使用
理论的无知:没有完整的结论,问题领域并不完整,持续性理论,如医学诊断
实践的无知:即使知道所有的规则,也不可能收集关于一个特定病例的所有相关信息

解决不确定性的方法
概率理论作为一个形式化手段,利用不确定性知识进行表示和推理,在一个命题中(事件、结论、诊断)提供信念度,如A25使我按时到达机场的概率为0.04
概率是不确定性的语言——现代AI的重要核心

概率
概率理论提供了一种方法以概括来自我们的惰性和无知的不确定性
概率断言总结了:
惰性:难以列举例外、条件等;无知:缺少相关事实、初始条件等
主观概率:agent自身知识状态的命题概率,如P(A25 | no reported accidents) = 0.06
没有关于世界的断言
命题因为新条件而改变的概率,如P(A25 | no reported accidents, 5 a.m.) = 0.15

在不确定性情况下做决策
假设我知道:
P(A25能按时到达 | ...) = 0.04;P(A90能按时到达 | ...) = 0.70;P(A120能按时到达 | ... ) = 0.95;P(A1440能按时到达 | ...) = 0.9999
我应该选择什么行动呢?取决于我关于错过航班和等待时间消耗上的偏好
效用理论(Utility theory):对偏好进行表示和推理
决策理论 = 概率理论 + 效用理论

语法
基本元素:随机变量
现实世界中具有不确定性的事件的随机变量,通常以大写开头,如Cavity,Weather,Temperature
与命题逻辑相似:对随机变量赋值来定义可能的世界
布尔随机变量,如Cavity(牙洞)(do I have a cavity?)
离散随机变量,如Weather is one of <sunny, rainy, cloudy, snow>
定义域值必须是穷尽的和互斥的
连续随机变量,如Temp=21.6,同样如 Temp<22.0
基本命题由对一个随机变量赋值构成,如Weather=sunny,Cavity=false(简写为¬ cavity)
复杂命题由基本命题和标准逻辑连接词构成,如Weather=sunny Cavity=false
原子事件:对智能体无法确定的世界状态的一个完整的详细描述
如,若世界只由两个布尔变量Cavity和Toothache构成,那么存在4种不同的原子事件:
Cavity=false Toothache=false;Cavity=false Toothache=true;Cavity=true Toothache=false;Cavity=true Toothache=true
原子事件是互斥和详尽的

概率公理
对任意命题A,B,有
0 ≤ P(A) ≤ 1
P(true) = 1 and P(false) = 0
P(A B) = P(A) + P(B) - P(AB)

先验概率
命题的先验或无条件概率:在没有任何其它信息存在的情况下关于命题的信度
概率分布给出一个随机变量所有可能取值的概率,P(Weather) = <0.72,0.1,0.08,0.1> (normalized(归一化的), i.e., sums to 1)
联合概率分布给出一个随机变量集的值的全部组合的概率,P(Weather,Cavity)=a, 4×2 matrix of values

连续变量的概率
将分布表示为值的参数化函数:P(X=x)=U[18,26](x) = 18和26之间的均匀密度分布
高斯函数...

边缘概率分布
边缘概率分布是消除变量后的子表
边缘化(求值消元):联合相同行的加和值:P(X1=x1)=∑P(X1=x1,X2=x2)

条件概率
条件概率或后验概率:P(a | b)
如P(cavity | toothache) = 0.8
条件概率分布:
P(cavity | toothache) = a single number
P(Cavity,Toothache) = 2×2 table summing to 1
P(Cavity | Toothache) = 2-element vector of 2-element vectors
如果我们知道更多条件,如牙洞已知,则有P(cavity | toothache,cavity) = 1
新条件可能不相关,可以简化,如P(cavity | toothache,sunny) = P(cavity | toothache) = 0.8,这种推理和领域知识有关
条件概率的定义:
P(a | b) = P(a b) / P(b) if P(b) > 0
乘法规则给出一个替代的公式:P(a b) = P(a | b) P(b) = P(b | a) P(a)
链式法则由乘法规则推导得出:P(X1,...,Xn)=...=∏i=1~n P(Xi | X1,...,Xi-1)
条件概率和标准概率类似,如
0 <= P(a | e) <= 1
P(a1 | e) + P(a2 | e) + ... + P(ak | e) = 1 
P(¬a | e) = 1 - P(a | e) 

通过枚举推理
全联合概率分布
一个命题的概率等于所有当它为真时的原子事件的概率和
P(Φ) =∑ω:ω|=Φ P)
P(toothache) = 0.108+0.012+0.016+0.064 = 0.2
P(cavity ∨ toothache) = 0.108+0.012+0.072+0.008+0.016+0.064=0.28
P(¬ cavity | toothache) = P(¬cavity  toothache) / P(toothache) = (0.016+0.064) / (0.108+0.012+0.016+0.064) = 0.4

归一化(Normalization)
分母可以视为归一化常数α
P(Cavity| toothache) =α P(Cavity, toothache)
= α [P(Cavity, toothache, catch) +P(Cavity, toothache,¬ catch)]
= α [<0.108,0.016> + <0.012,0.064>]
= α <0.12,0.08> = <0.6,0.4>
通常的策略是:通过固定证据变量并对未观测变量进行相加来计算查询变量的分布
P(Y| E =e) = αP(Y,E= e) =αΣhP(Y,E=e, H= h)
Y,E, H构成了域中所有变量的完整集合)
问题:最坏时间复杂度O(d^n);空间复杂度为O(d^n)来存储整个联合分布;如何寻找O(d^n)个条目的数量

独立性
A和B是独立的,假如有
P(A|B) =P(A)or P(B|A) =P(B)or P(A, B) =P(A)P(B)
P(Toothache, Catch, Cavity, Weather) =P(Toothache, Catch, Cavity)P(Weather)
32 entries reduced to 12; for nindependent biased coins, O(2n)O(n)
绝对的独立性很强大但很少有
牙医领域是一个拥有上百个变量的大的领域,都不是相互独立的,该咋办?

Independence misused
一个数学笑话:
有个著名的统计员从来不坐飞机,因为他研究了飞机并且发现在飞机上有人携带炸弹的概率为百万分之一,他无法接受这个概率。有一天,他的一个同事问他怎么回家,坐火车么?他说不是,坐飞机。同事问他,你不知道飞机上有炸弹的概率么?他回答说,是啊,我知道飞机上有炸弹的概率是百万分之一,那么飞机上有两个炸弹的概率是(1/1,000,000)×(1/1,000,000),这个概率对我来说太小了,我可以接受,所以我决定自己带一个炸弹上飞机。

条件独立性
有些随机变量可能是独立的,但只是条件独立
例如,你的房间有个闹钟,当你的邻居John听到闹铃时会叫你,你的邻居Mary听到闹铃时也会叫你,假设John和Mary不和彼此交谈,那么John叫你和Mary叫你这两个事件是否独立?
不独立——如果John叫了我,很有可能闹铃就会被关掉,这会增加了Mary叫我的可能性,所以P(MaryCall | JohnCall) ≠ P(MaryCall)
但是,如果我们知道闹钟的状态,则John叫我不会影响到Mary叫我,即P(MaryCall | Alarm, JohnCall) = P(MaryCall | Alarm) ,我们把John叫我和Mary叫我称为在给定闹钟的条件下的条件独立
通常,A and B are conditionally independent given C” 意味着
P(A | B, C) = P(A | C)
P(B | A, C) = P(B | C)
P(A, B | C) = P(A | C) P(B | C)
 

P(Toothache, Cavity, Catch 有2^3-1=7个独立条目
(1) P(catch| toothache, cavity) =P(catch| cavity)
(2) P(catch| toothache, ¬cavity) =P(catch| ¬cavity)
条件独立性:P(Catch| Toothache, Cavity) =P(Catch| Cavity)
同理可得
P(Toothache| Catch, Cavity) =P(Toothache| Cavity)
P(Toothache, Catch| Cavity) =P(Toothache| Cavity)P(Catch| Cavity)
利用链式法则写出全联合概率分布:
P(Toothache, Catch, Cavity)
= P(Toothache| Catch, Cavity)P(Catch, Cavity)
= P(Toothache| Catch, Cavity)P(Catch| Cavity)P(Cavity)
= P(Toothache| Cavity)P(Catch| Cavity)P(Cavity)
即2+2+1=5个独立数
在大多数情况下,使用条件独立性能将全联合概率的表示由n的指数关系减为n的线性关系

贝叶斯法则
乘法规则:P(a^ b) =P(a | b)P(b) = P(b | a)P(a)
=> 贝叶斯法则:P(a | b) =P(b | a)P(a) / P(b)
或者用分布形式表示:
P(Y | X) = P(X | Y)P(Y) / P(X) = αP(X | Y)P(Y)

为什么有用?
让我们可以从相反的条件推导出概率;有时候一个条件概率很难求,但它的相反条件概率则比较容易 ;是其他系统(ASR,MT)的基础
可以从因果概率得到诊断概率:
P(Cause | Effect) = P(Effect | Cause)P(Cause) / P(Effect)
例如,假设M是脑膜炎,S是脖子僵硬,则
P(m | s) = P(s | m)P(m) / P(s) = 0.8*0.0001/0.1 = 0.0008

利用贝叶斯法则进行概率推导
例子1:
H = 头疼,F = 患了流感
P(H) = 1/10, P(F) = 1/40, P(H/F) = 1/2
有一天早上,你醒过来发现自己头疼,你可能会这样想,既然50%的流感都和头疼有关,那么我一定有一半的概率是患了流感,这个推理正确么?
P(F | H) = P(H | F)P(F) / P(H) = 1/8 ≠ P(H | F)
例子2:
在一个袋子中有两个信封,其中一个有一个红球(价值$100)和一个黑球,而另一个有两个黑球,黑球不值钱,你随机抓取一个信封,随机拿出一个球,它是黑色的,这个时候,你有一个可更换信封的选择,换?还是不换?
E: envelope, 1=(R,B), 2=(B,B) 
B: 抓到黑球的事件
P(E|B) = P(B|E)*P(E) / P(B) 
我们希望计算出P(E=1|B) vs. P(E=2|B)
P(B|E=1) = 0.5, P(B|E=2) = 1
P(E=1) = P(E=2) = 0.5
P(B) = P(B|E=1)P(E=1) + P(B|E=2)P(E=2) = (.5)(.5) + (1)(.5) = .75
P(E=1|B) = P(B|E=1)P(E=1)/P(B) = (.5)(.5)/(.75) = 1/3
P(E=2|B) = P(B|E=2)P(E=2)/P(B) = (1)(.5)/(.75) = 2/3

在看到一个黑球之后,这个信封是1(价值$100)的后验概率比是2的可能性要小,所以你应该换信封

Quiz
一个医生有99%的概率能诊断出一个病人有病,有99%的概率能诊断出一个健康的人没病,医生估计,人群中有病的人的概率大约是1%,问题是一个病人诊断出有病,那么他真正有病的概率是多少?0-25%,25-75%,75%-95%或者是95-100%?
直觉的答案是99%,但是正确的答案是50%

多证据和条件独立性的贝叶斯法则
P(Cavity | toothache ∧ catch)
= αP(toothache ∧ catch | Cavity) P(Cavity)
= αP(toothache | Cavity) P(catch | Cavity) P(Cavity)

这是朴素贝叶斯模型的一个例子
P(Cause, Effect1,..., Effectn) = P(Cause) ∏i P(Effecti | Cause)
总参数的数目与n成线性

链式法则
P(Toothache, Catch, Cavity)
= P(Toothache | Catch, Cavity) P(Catch, Cavity)
= P(Toothache | Catch, Cavity) P(Catch | Cavity) P(Cavity)
= P(Toothache | Cavity) P(Catch | Cavity) P(Cavity)

图模型表示法
每个变量是一个节点,父节点是由其他变量通过联合条件分解得到……

概率分布从何而来
1.人类,领域专家
2.更简单的一些概率事实和一些代数,利用链式法则和独立性假设来计算联合分布
3.从数据中学习获得

评价
如何对一个随机变量X的分布进行评价?
最大似然:
从真实世界中收集观察值
P(x)=count(x) / total samples
这个评价使数据的最大似然值最大化

总结
概率是对不确定知识一种严密的形式化方法 
全联合概率分布指定了对随机变量的每种完全赋值,即每个原子事件的概率
可以通过把对应于查询命题的原子事件的条目相加的方式来回答查询
对于不复杂的领域,我们必须找到一种方法来减少联合的数目
独立性和条件独立性提供了工具

14 Bayesian networks

Frequentist vs. Bayesian
客观 vs. 主观
频率主义者:概率是一次长远的事件的期望频率,P(A)=n/N,n是事件A在N次机会中发生的次数
“某事发生的概率是0.1”意味着0.1是在无穷多样本的极限条件下能够被观察到的比例
在许多情景下不可能进行重复试验,如发生第三次世界大战的概率是多少?
贝叶斯:可信度,它是对于一个事件在未给定完整知识情况下的似然性的衡量

概率理论
概率理论由两个等式表示:
加法规则:
一个变量的概率可以对其他变量进行边缘化或者求和消元得到,p(a) = ∑p(a,b)
乘法规则:
联合概率和条件有关,p(a,b) = p(b | a)p(a)
所有的概率推导都是重复加法和乘法规则得到的

Outline
概率图模型
贝叶斯网络
    语法
    语义
贝叶斯网络中的推导

什么是概率图模型?
表示概率分布的图表
是概率理论和图理论的联系
增强了只用纯代数的分析

什么是图?
在概率图模型中,每个节点表示一个随机变量(或随机变量组),边表示变量之间的概率关系

CS中的概率图模型
解决不确定性和复杂性的自然工具,使用数学和工程的方法
模块性的表示是概率图模型的基础,一个复杂的系统由更简单的部分构成

概率图模型:联合框架
视传统的多变量概率系统为普通深层形式的实例
    混合模型、因子分析、隐马尔科夫模型、卡尔曼滤波器等
    系统工程、信息理论、模式识别和统计机制

概率图模型在机器学习中的角色
1.对概率模型框架进行形象化的简单方法
2.模型性质的见解,检查图来保证条件独立性
3.复杂计算,在图像操作中需要推理和学习

图的方向
有向图模型:贝叶斯网络,随机变量之间的因果关系,AI和统计中比较常用
无向图模型:马尔科夫随机场,视觉和物理中比较常用

贝叶斯网络
一种简单的,图形化的数据结构,用于表示变量之间的依赖关系(条件独立性),为任何全联合概率分布提供了一种简明的规范。
语法:
一系列节点,每个表示一个变量,一个有向无环图,一个条件分布量化其父节点对该节点的影响,P(Xi | Parents(Xi))
在最简单的例子中,条件分布表示为条件概率表(CPT)
例如:
网络拓扑结构,对条件独立断言编码,Weather和其他三个变量是相互独立的,而给定Cavity后Toothache和Catch是条件独立的
例如:
我在工作,邻居John打电话给我说家里的警报响了,但邻居Mary没有打电话。有时候可能是因为小的地震导致的,请问我家是否进了贼?
变量:入室行窃,地震,警报,John叫我,Mary叫我
网络拓扑结构反映了因果知识:夜贼可以让警报响;地震可以让警报响;警报会导致Mary打电话给我;警报会导致John打电话给我
图见课本P428

紧致性
一个具有k个布尔父节点的布尔变量的条件概率表中有2^k个独立的可指定概率
每一行对于Xi=true需要一个概率p
如果每个变量不超过k个父节点,则整个网络需要O(n*2^k)个数,即与n成线性增长,vs. O(2^n)对于全联合分布
For burglary net,1+1+4+2+2=10 numbers (vs. 2^5-1=31)

全局定义
全联合概率分布可以表示为贝叶斯网络中的条件概率分布的乘积,P(x1,...,xn) = ∏i=1~n P(xi | parents(Xi))
如 P(j ^ m ^ a ^ ¬b ^ ¬e) = P(j | a)P(m | a)P(a | ¬b,¬e)P(¬b)P(¬e) = 0.9*0.7*0.001*0.999*0.998 = 0.00063

局部语义
给定父节点,一个节点与它的非后代节点是条件独立的
定理:Local semantics <=> global semantics
    
因果链
一个基本布局:X→Y→Z
X: Low pressure  Y:Rain  Z:Traffic
P(x,y,z) = P(x)P(y | x)P(z | y)
给定Y,X是否独立于Z?
P(z | x,y) = P(x,y,z) / P(x,y) = P(x)P(y | x)P(z | y) / P(x)P(y | x) = P(z | y)
是的

简单因果
另一个基本的布局:两个结果,一个相同的原因,Y→X,Y→Z
Y:Project due  X:Newsgroup busy  Z:Lab full
给定Y,X和Z相互独立么?
P(z | x,y) = P(x,y,z) / P(x,y) = P(y)P(x | y)P(z | y) / P(y)P(x | y) = P(z | y)
是的

两个原因,一个结果(v-结构),X→Y,Z→Y
X:Raining  Z:Ballgame  Y:Traffic
X和Z相互独立么?是的,球赛和下雨导致交通拥堵,这两件事没关系吧
给定Y,X和Z相互独立么?不是

构造贝叶斯网络
需要一种方法使得局部的条件独立关系能够保证全局语义得以成立
1.Choose an ordering of variables X1,...,Xn
2.For i = 1 to n
    add Xi to the network
    select parents from X1,...,Xi-1 such that 
        P(Xi | Parents(Xi)) = P(Xi | X1,...,Xi-1)
保证了全局语义:
P(X1,...,Xn) = ∏i=1~n P(Xi | X1,...,Xi-1) (链式法则)
= ∏i=1~n P(Xi | Parents(Xi)) (构建)
要求网络的拓扑结构确实反映了合适的父节点集对每个变量的那些直接影响
添加节点的正确次序是首先添加“根本原因”节点,然后加入受它们直接影响的变量,以此类推

例子:假如选择的顺序为M, J, A, B, E
P(J | M) = P(J)? No
P(A | J,M) = P(A | J)? P(A | J,M) = P(A) ? No
P(B | A,J,M) = P(B | A)? Yes
P(B | A,J,M) = P(B)? No
P(E | B,A,J,M) = P(E | A)? No
P(E | B,A,J,M) = P(E | A,B)? Yes

非因果方向中决定条件独立性是困难的
1+2+4+2+4=13个数字

贝叶斯网络中的推导
推导任务
简单查询:计算后验概率 P(Xi | E=e),如P(NoGas | Gauge油表=empty, Lights=on, Starts=false)
联合查询:P(Xi,Xj | E=e) = P(Xi | E=e)P(Xj | Xi,E=e)
最优决策:决策网络包括效用信息,概率推导需要P(outcome | action,evidence)

通过枚举进行推理
任何条件概率都可以通过将完全联合概率分布中的某些项相加而计算得到,P(X | e) = αP(X,e) = α∑y P(X,e,y),在贝叶斯网络中可以将全联合分布写成条件概率乘积的形式:
P(X1,...,Xn) = ∏i=1~n P(Xi | Parents(Xi))
在贝叶斯网络中可以通过计算条件概率的乘积并求和来回答查询。
P(B | j,m)公式见课本P437
递归深度优先枚举:O(n)空间,O(d^n)时间
评价树:见课本P438图14.8,重复计算,效率不高

变量消元推导
变量消元:按照从右到左的次序计算表达式,中间结果被保存下来,而对每个变量的求和只需要对依赖于这些变量的表达式部分进行就可以了
P(B | j,m)公式见课本P439

准确推导的复杂度
单联通网络(或多树):任意两个节点最多被一条路径相连,变量消元的时间和空间消耗为O(n*d^k),多树上的变量消元的时间和空间复杂度都于网络规模呈线性关系。
多联通网络:可以减少3SAT为准确的推导=>NP-hard;等价于计算3SAT模型 => #N-complete

举例:朴素贝叶斯模型
有一个单一父节点变量,和一系列子节点变量,给定父节点,所有子节点彼此条件独立
P(X1=x1,...,Xn=xn) = P(X1=x1)P(X2=x2 | X1=x1)...P(Xn=xn | X1=x1)
P(Cause,Effect1,...,Effectn) = P(Cause)∏iP(Effecti | Cause)
P(Cause | Effect1,...,Effectn) = P(Effects,Cause) / P(Effects) = αP(Cause,Effects) = αP(Cause)∏iP(Effecti | Cause)
总参数数目与n成线性

举例:垃圾邮件检测
一个简单的方法是只看主题,利用一些简单的可计算特征来检查,这两个简单的特征我们会考虑的是:
Caps:主题标题是否全部大写
Free:主题标题是否包含词汇"free",大写或者小写的
如: "NEW MORTGAGE RATE" "Money for Free" "FREE lunch" 均是垃圾邮件
模型基于以下3个随机变量,Caps,Free,Spam,每个变量的值为Y或者N
Caps = Y ,当且仅当主题标题不含小写字母
Free = Y,当且仅当“”free“出现在主题中(不管大小写)
Spam = Y,当且仅当信息是垃圾邮件
P(Free,Caps,Spam) = P(Spam)P(Caps | Spam)P(Free | Spam)

P(Free=Y,Caps=N,Spam=N) = P(Spam=N)P(Caps=N | Spam=N)P(Free=Y | Spam=N) = 0.53*0.9245*0.0189=0.0093

例子:通过学习对文本进行分类(13.18)
文本分类是在文档所包含的文本基础上,把给定的文档分配到固定类别集合中某一个类别的任务。这个任务中常常用到朴素贝叶斯模型。在这些模型中,查询变量是文档类别,“结果”变量则是语言中每个词是否出现。我们假设文档中的词的出现都是独立的,其出现频率由文档类别确定。
a.准确地解释当给定一组类别已经确定的文档作为“训练数据“时,这样的模型是如何构造的。
b.准确地解释如何对新文档进行分类。
c. 这里独立性假设合理吗?请讨论。

模型包括先验概率P(Category)和条件概率P(word i | Category),P(Category=c)是类别为c的所有文档,P(word i = true | Category=c)是包含词汇i的类别为c的文档
Twennty Newsgroups
朴素贝叶斯:89%分类正确
识别数字的朴素贝叶斯:
简单版本:
– One feature Fij for each grid position <i,j>
– Possible feature values are on / off, based on whether intensity is
   more or less than 0.5 in underlying image
– Each input maps to a feature vector
– Here: lots of features, each is binary
Naïve Bayes model:
P(Y | F0,0 ... F15,15) ∝ P(Y) ∏i,j P(Fi,j | Y)

总结
贝叶斯网络提供了对于因果推导的条件独立性的一种自然的表示方法
拓扑结构+CPTs=联合分布的简洁表示
通常易于领域专家构建
通过变量消元进行精确推导:多形树上是多项式时间,普通图是NP-hard;空间复杂=时间复杂,对于拓扑非常敏感
朴素贝叶斯模型