机器人应用

42 – 贝叶斯滤波到卡尔曼滤波

1、 正态分布
3、 模型假设
4、 模型方程
5、 模型参数
6、 算法伪代码
7、 贝叶斯推导
8、 结束
————-

把前面的离散贝叶斯滤波器:
BEL(xn) = K*p(yn|xn) * ∑[ p(xn|tn, xn-1) BEL(xn-1) ]
应用在连续系统就是:
BEL(xt) = K*p(yt|xt) * ∫[ p(xt|ut, xt-1)*BEL(xt-1) ]d(xt-1)
即:
求和为积分、离散n为连续t,动作t用u代替避免时间序列符号t。

为了实用和计算效率, 需要对BEL(x)进行分布假设。

例如:
假设BEL(x)服从正态分布,则不再需要逐点采样并计算xt,只要随时掌握均值和方差两个参数,就可以获得BEL(x)的全部信息了,这样把对xt逐点的迭代计算变为两个参数的迭代计算。这样就成为了“卡尔曼滤波器”。

1、 正态分布

一元正态分布:
p(x) ∼ N(μ,σ 2 ), 即:
p(x) = 1/[sqrt(2π)*σ] * exp[ −1/2*(x−μ)^2/σ^2 ]

正态分布的特点:
分布的形态完全由一阶矩即均值和二阶矩即方差完全决定。
正态分布的线性组合仍为正态分布。

3、 模型假设

卡尔曼滤波解决的是动态系统的状态追踪问题,基本假设是:
状态方程是线性的。
观测方程是线性的。
过程噪声符合零均值高斯分布。
观测噪声符合零均值高斯分布。
这样保证了一直在线性空间中操作高斯分布,状态的概率密度符合高斯分布。

4、 模型方程

xt = At*xt−1 + Bt*ut + εt
Pt = AtPt-1At` + Rt
yt = Ht*xt + δt

5、 模型参数

xt: n*1的向量,对应在t时刻1…n个状态量的均值,例如门1开、门2开…
yt: m*1的向量,表示在t时刻的1…m的传感器的观测值,例如测距仪1、测距仪2…
ut: l*1的向量,表示在t时刻的l…l个输入动作
εt: n*1向量,过程噪声,符合零均值高斯分布
δt: m*1观测噪声,符合零均值高斯分布
Rt: n*n矩阵,表示过程噪声εt的方差矩阵
Qt: m*m矩阵,表示观测噪声δt的方差矩阵
At: n*n矩阵,表示n个状态量从t−1到t在没有输入影响时的转移方式
Bt: n*l矩阵,表示在t时刻ut对状态xt的影响
Ht: m*n矩阵,表示状态xt如何被转换为观测yt
Pt: n*n的差矩阵,表示t时刻被观测的1…n个状态量的方差。
Kt: n*m增益矩阵,这增益矩阵式卡尔曼纳的核心

6、 算法伪代码

KALMAN_FILTER( xt-1,Pt-1, ut,yt):
prediction:
xt_bar = At*xt-1 + Bt*ut <---预测t时刻状态,基于状态转移矩阵At和输入控制ut Pt_bar = At*Pt*A`t + Rt <---预测方差矩阵, correction: Kt = Pt_bar*H`t* (Ht*Pt_bar*H`t +Qt)^-1 <---更新增益矩阵,观测噪声方差Qt越大增益Kt越小 xt = xt_bar + Kt(yt - Ht*xt_bar) <---更新状态,基于新的观测信息 Pt = (I - Kt*Ht)*Pt_bar <---更新状态的方差矩阵。 END 其中:下标_bar为计算均值,上标`为转置,^-1为逆。 倒数第二个式子:xt = xt_bar + Kt(yt - Ht*xt_bar) (yt − Ht*xt_bar)表示观测值yt与预测值Ht*xt_bar的差; 再乘子Kt,表示观测yt的噪声大的的话,就采信的比较小。然后拿这个小的修正xt_bar。 即增益和噪声相反趋势。 相反,如果观测yt的噪声比较小,预测Ht*xt_bar的误差比较大,则乘以Kt后的修正幅度比较大,因为观测的噪声小、可靠。 再如果,观测yt的噪声小、预测的Ht*xt_bar的误差也小,那么修正幅度也不大。 总结: 就是利用观测数据修正预测数据。 准确的观测的修正量大,不准确的观测的修正量小。 所以误差较大的时候能快速修正,在误差较小时能逐渐收敛。 7、 贝叶斯推导 7.0 基础是基于: 离散贝叶斯滤波: BEL(xn) = K*p(yn|xn) ∑[ p(xn|tn, xn-1) BEL(xn-1) ] 应用在连续系统: BEL(xt) = K*p(yt|xt) * ∫[ p(xt|ut, xt-1)*BEL(xt-1) ]d(xt-1) 7.1 系统初始状态是: BEL(x0) = N(miu0, P0 ) 7.2 预测过程 状态转移模型是: xt = At*xt−1 + Bt*ut + εt 由于这是个线形函数,所以从xt−1 到 xt的状态转移概率(条件概率)也高斯分布: *** p(xt|ut,xt-1) = N( At*miu_t-1 + Bt*ut, Rt) 根据连续系统的贝叶斯滤波公式: BEL(xn) = K*p(yt|xt) * ∫[ p(xt|ut, xt-1)*BEL(xt-1) ]d(xt-1) 抛开前者的更新部分,使用后者的预测部分,来预测均值: BEL(xn) = ∫[ p(xt|ut, xt-1)*BEL(xt-1) ]d(xt-1) 由于卡尔曼滤波的基本假设就是把贝叶斯滤波的BEL(x)假设为高斯分布,所以: *** BEL(xt-1) = N(miu_t-1, Pt-1) 这个***,结合前面那个高斯分布的***: p(xt|ut,xt-1) = N( At*miu_t-1 + Bt*ut, Rt) 所以预测部分的: BEL(xt)_bar = ∫[ p(xt|ut, xt-1)*BEL(xt-1) ]d(xt-1) 就是两个高斯分布***的卷积: BEL(xt)_bar = ∫[ N( At*miu_t-1 + Bt*ut, Rt) * N(miu_t-1, Pt-1) ]d(xt-1) 依然是高斯分布。 根据正态分布定义计算得,其这个高斯分布的参数为: miu_t_bar = At*miu_t-1 + Bt*ut xigema2_bar = At*Pt*At` + Rt 即: BEL(xt)_bar = N( At*miu_t-1 + Bt*ut, At*Pt*At` + Rt ) 由于是预测,是均值,有bar。 7.3 观测过程 根据卡尔曼滤波器中的观测方程: yt = Ht*xt + δt 所以p(yt|xt)这个条件概率部分是一些高斯分布的线性组合: *** p(yt|xt) = N(yt; Ht*xt, Qt) 这里多出的yt;是用来表示这个计算需要用到yt。 根据连续系统的贝叶斯滤波: BEL(xt) = K*p(yt|xt) * ∫[ p(xt|ut, xt-1)*BEL(xt-1) ]d(xt-1) 这里考虑观测过程,即根据新数据yt更新xt,而需要预测的xt-1: BEL(xt) = K*p(yt|xt) * BEL(xt)_bar 这也是俩高斯分布的乘依然是高斯分布只不过两个参数的形式复杂一些。 由7.2已经有: *** BEL(xt)_bar = N(xt; miu_t_bar, Pt_bar) 结合前步骤的: *** p(yt|xt) = N(yt; Ht*xt, Qt) 得到新高斯的两个参数: miu_t = ut_bar + Kt*(yt − Ht*miu_t_bar) xigema2 = (I - Kt*Ht)*Pt_bar 其中Kt==Pt_bar*Ht`* (Ht*Pt_bar*Ht`+Qt)^-1 即: BEL(xt) = N( ut_bar + Kt*(yt − Ht*miu_t_bar) , (I - Kt*Ht)*Pt_bar ) 由于是更新,确定值,所以没有bar。 8、 结束 6的算法, 来自7的推导。 过程噪声矩阵Rt和观测噪声矩阵Qt的影响及调节: 这两者实际上是相对的,表示更相信观测传感器还是更相信预测模型。 使用时一般先根据传感器例如激光雷达的手册确定R,然后再根据R确定Q。 如果更相信观测数据,往小处调Q;如果不放心观测传感器,往大了调Q。 这样Q越大表示越不相信观测系统状态越容易收敛,对观测数据的响应越慢。 REF: http://blog.csdn.net/heyijia0327/article/details/17487467

37 – 贝叶斯滤波

1、 全概率公式
2、 贝叶斯公式
3、 贝叶斯公式解释
4、 公式的简化
5、 多观测数据融合
6、 动作的影响
7、贝叶斯滤波
————-

1、 全概率公式

p(x) = ∑ p(x|y)p(y) OR p(x) = ∫p(x|y)p(y)dy

全概率公式的意义是:
如果直接计算p(x)困难,而存在yi恰好可以两两互斥的划分样本空间, 并且p(yi)的计算更简单,就可以利用全概率公式计算p(x)。

全概率公式的思想是:
将事件x分解成几个小事件,求这各个小事件的概率,对其相加,从而求得事件x的概率。

所以,在将事件x进行分割时,不是直接对X进行分割,而是先找到样本空间的一个划分y1,y2…yn,这样事件X就被分解成了事件xy1,xy2…xyn这样n部分,即x = xy1+xy2+…+xyn, 每一个yi的发生可能导致x发生的概率是P(x|yi)。

例如:
甲、乙、丙三台机床次品率为5%,4%,2%,这三台的产出量占总体的25%,35%,40%,在总体产品任取一个产品为次品的概率?
p(x) = 25%*5%+4%*35%+2%*40%=0.0345

2、 贝叶斯公式

由条件概率公式: p(x|y) = p(x,y) / p(y)
并结合乘法公式: p(x,y) = p(x|y)p(y) = p(y|x)p(x)
可得贝叶斯公式: p(x|y) = p(y|x)p(x) / p(y)

贝叶斯公式与全概率公式解决的问题是相反的:
它是建立在条件概率的基础上寻找事件发生的原因,即大事件y已经发生的条件下,分割中的小块事件xi的概率。

假设xi是样本空间的一个划分,这些xi通常是结果y出现的原因之一;
p(xi)表示各种原因出现的可能性大小,称先验概率;
p(xi|y)反映了在结果y出现之后,再对各种原因xi概率的新认识,称后验概率。

例如:
发报机以概率0.6和0.4发出信号+和-。由于干扰,发+时收报台以概率0.8和0.2收到信号+和-,发-时收报台以概率0.9和0.1收到信号-和+。现收报台收到+,问发报机确实发出+的概率?
p(x=+|y)= (0.6*0.8)/(0.6*0.8+0.4*0.1) = 0.923

3、 贝叶斯公式解释

贝叶斯公式:
p(x|y) = p(y|x)p(x) / p(y)

这里:
x一般是某种状态。
y一般是某种观测。
p(x)这个先验概率,是对x的先验知识,例如一扇门开着的概率为50%。
p(y|x)这个条件概率,意思是由状态x已知可以推算观测数据y的概率这种因果关系。例如已知门开状态,则测距仪读数z=0.6m;若门关的话,测距仪数据z=0.3。
p(x|y)这个后验概率,是基于观测数据获取后而对状态的推断,它是由先验概率和从因到果的条件概率而计算出来的。

例如图中示例:
机器人的测距仪读数z=0.5m,问门的状态开open或非开~open的概率?
p(door=open|z=0.5) <---这里的后验概率p(open/z)由下一行的贝叶斯公式计算 = ∑[p(z|open)p(open)] / p(z) <--- 这里的观测数据概率p(z)由下一行的全概率公式计算 = 0.6*0.5 / ∑[ p(z|door)p(door)] = 0.3 / ( p(z|door)p(door=open) + p(z|door)p(door=~open) ) = 0.3 / (0.6*0.5 + 0.3*0.5) = 2/3 这里p(z)的全概率计算,=p(z|door)p(door=open) + p(z|door)p(door=~open) = 0.6*0.5 + 0.3*0.5, 可见仅基于先验概率和条件概率,是常数项了, 所以有简化计算方法。 4、 公式的简化 贝叶斯公式: p(x|y) = p(y|x)p(x) / p(y) 式中分母p(y)常项可以归一化系数处理, 成为: p(x|y) = p(y|x)p(x) / p(y) = K p(y|x) p(x) (由全概率得此处K = 1/p(y) = 1/∑ p(y|x)p(x) ) 5、 多观测数据融合 单一传感器或单次数据y未必可靠, 有时要融合多个传感器数据或单传感器的多个读数y1,y2...来确定x的状态。 继续上面示例: 机器人又读了第二次,测距仪读数z=0.5m,问门的状态开open或非开~open的概率? 要注意此时门状态概率已经不是开50%关50%,而是由于有了第一次的观测读数,已经变为开2/3关1/3这样的概率分布了。 (前面求出来的后验概率2/3,这里就成先验概率了。) p(door=open|z=0.5) <---这里的后验概率p(open/z)由下一行的贝叶斯公式计算 = ∑[p(z|open)p(open)] / p(z) <--- 这里的观测数据概率p(z)由下一行的全概率公式计算 = 0.6*2/3 / ∑[ p(z|door)p(door)] = 0.4 / ( p(z|door)p(door=open) + p(z|door)p(door=~open) ) = 0.4 / (0.6*2/3 + 0.3*1/3) = 4/5 可见增加的第二个观测数据把门处于开状态的概率由2/3提高到4/5。 以下公式推导, 对于贝叶斯公式: p(x|y1) = p(y1|x)p(x) / p(y1) 如果增加第二个新的观测数据y2: p(x|y2,y1) <---根据条件概率公式 = p(x,y2,y1)/p(y2,y1) <---对分子第一项根据乘法公式 = p(y2|x,y1)p(x,y1)/p(y2,y1) <--- 对分子第二项根据乘法公式 = p(y2|x,y1)p(x|y1)p(y1)/p(y2,y1) <--- 对分母根据乘法公式 = p(y2|x,y1)p(x|y1)p(y1)/p(y2|y1)p(y1) <---消项 = p(y2|x,y1) p(x|y1) / p(y2|y1) 再增多观测数据的话,可把上式的y1扩展为观测数据y1,y2,...yn-1,y2为最后增加的这个观测数据yn: p(x|yn,…,y1) <--- 带入上式 = p(yn|x,yn-1,…,y1) p(x|yn-1,…y1 ) / p(yn|yn-1,…y1 ) <---yn和yn-1,...y1无关 = p(yn|x) p(x|yn-1,…y1 ) / p(yn|yn-1,…y1 ) <---移动个位置 = p(yn|x) / p(yn|yn-1,…y1 ) * p(x|yn-1,…y1 ) <---第一项的分母常数项 = Kn p(yn|x) * p(x|yn-1,…y1 ) <---最后一项就可以同型迭代了 = Kn p(yn|x) * Kn-1 p(yn-1|x) *... * p(x|y2,y1) = Kn p(yn|x) * Kn-1 p(yn-1|x) *... * K2 p(y2|x) * K1 p(x|y1) = Kn*Kn-1...K1 * p(yn|x)*p(yn-1|x)...p(y1|x) * p(x) 这里p(x)是已知的先验概率,例如门开概率4/5; p(y1|x)为已知的条件概率,例如门若开激光测距仪应读数为0.6m(y1)、门若开红外测距仪读数应为0.9m(yn)、...等。 6、 动作的影响 以上对于系统已经讨论了自身状态x, 传感器观测y,但缺少控制动作t。 在Bayes模型中的动作t的影响,也就是在x′状态下执行动作t后状态改变到x的概率: p(x|t,x′)。 动作对状态的影响, 一般用状态转移模型描述。
上图转移模型表示了关门动作对状态的影响。既:如果门处于开状态,关门动作后门有0.9的概率成功处于关状态、有0.1的概率失误仍保持为开状态;若门是关状态,执行关门动作后有1.0概率出于关闭状态、有0概率出于开状态。

那么执行动作后的状态xn的概率计算,要考虑动作t之前的所有状态xn-1,即使用权概率公式:
p(x|t)= ∑ p(t|t,xn-1)p(xt-1)

继续前例:
在经过两次传感器观测后已经计算获得门开概率为4/5,此时执行一次关门操作,动作之后门开的概率多少?

p(door=open|t,x)
= ∑ p(open|t,xn-1)p(xt-1)
= p(open|t,open)p(d=open) + p(open|t,close)p(d=close)
= 0.1*4/5 + 0*1/5
=0.08
执行一次关门动作后,门状态为开的概率是0.08。

7、贝叶斯滤波

对一个系统:
有了系统状态:p(x),这个先验概率分布。例如门开门关的概率分布
有了观测模型:p(y|x),这个条件概率。例如门若开测距仪数据0.6m若关闭数据0.3m
有了状态模型:p(x|t,x′),这个可用全概率计算的状态转换图。
还有了1…n时刻的观测和动作数据::Dn–> {t1,y1,…tn,yn}

那么,就可以计算输出的后验的状态概率:
BEL(xn) = p(xn |t1,y1,…tn,yn)
这个BEL是believe,置信的意思。

这个滤波器需要一些假设:
n时刻的观测yn,仅决定于n时刻的状态xt,与xt-1、xt-2无关。
n时刻的状态xn,决定于n−1时刻的状态xn-1和n时刻的动作tn,与xn-2、xn-3…无关。
以上即马尔科夫性,还要假设:
模型的噪声相互独立。
观测的噪声相互独立。

贝叶斯滤波的迭代形式:
BEL(xn)
= p(xn |t1,y1,…tn,yn) <--根据多观测的贝叶斯公式,置换yn = K*p(yn|xn,t1,y1,...tn) p(xn|t1,y1,...tn) <--根据马尔科夫性,yn与t1,y1,...tn无关 = K*p(yn|xn) p(xn|t1,y1,...tn) <--根据状态转移概率对xn求全概率,xn-1互斥划分样本空间 = K*p(yn|xn) ∑[ p(xn|t1,y1,...tn-1,yn,tn, xn-1) p(xn-1|t1,t1,...tn-1,yn-1,tn) ] <--根据马尔科夫性,xn仅与xn-1和tn有关 = K*p(yn|xn) ∑[ p(xn|tn, xn-1) p(xn-1|t1,t1,...tn-1,yn-1,tn) ] <--根据马尔科夫性,xn-1和tn也无关 = K*p(yn|xn) ∑[ p(xn|tn, xn-1) p(xn-1|t1,y1,...tn-1,yn-1) ] <--后面这就出现迭代形式 = K*p(yn|xn) ∑[ p(xn|tn, xn-1) BEL(xn-1) ] 可见,贝叶斯滤波器,最终表现成两部分: 对于观测数据,则更新状态,p(yn|xn) ,基于新的观测数据更新了yn|xn这个条件概率分布。 对于动作数据,则预测状态,∑[ p(xn|tn, xn-1) BEL(xn-1) ],基于转移模型xn−1、tn预测了xn的条件概率分布。 伪代码: FILTER( BEL(x), D ): K=0 IF D is sensor data then: FOR all x do: BEL_NEW(x) = p(y|x)BEL(x) K = K+BEL_NEW(x) FOR all x do: BEL_NEW(x) = BEL_NEW(x) / k ELSEIF D is action command then: FOR all x do: BEL_NEW(x) = ∑[ p(x|t,x') BEL(x') ] ENDIF return BEL_NEW(x) 从代码可见: 如果要进行状态预测,需要遍历所有可能的x′状态,计算量很大。 而且如果BEL(x)是任意分布,更需要在xn所有可能取值点上计算该取值的概率,实现很难。 所以, 在应用时一般要对BEL(x)的分布进行假设来近似,从而衍生一些实用算法: 卡尔曼滤波 KF, 信息滤波 IF, 粒子滤波 PF。 REF: http://in.ruc.edu.cn/pc2016/

35 – 贝叶斯学习

1、 贝叶斯统计
2、 贝叶斯分析
3、 贝叶斯决策
4、 朴素贝叶斯的分类算法
5、 最大似然估计和贝叶斯估计
6、 示例 – 似然函数
7、 示例 – 后验概率


1、 贝叶斯统计

案例:
驾驶员车窗结露看不清前方、仅依靠后视镜、发现后车亮起了右转向灯,问:此时本车处在右转车到(即需要右转)的概率是多少?

用A表示本车位于右转道路口,B表示后车右转向灯亮,则:
先验概率P(A) :
即没有依靠其他信息、此时在此路段碰到了右转车道的概率。这根据这个路段位于北京还是西藏区别很大。
条件概率P(B|A):
即处于右转路口,而且又主动打右转向灯的概率。 因为当然有司机在右转道要转弯、但是却不打转向灯,还有的不在右转车道,却也打着右转向灯不停,这些情况都有。
后验概率P(A|B):
即需要求解的看到了右转向灯亮、而且位于右转车道,这个后验概率。

上面的先验概率P(A)、条件概率条件概率P(B|A)、最终得到后验概率P(A|B),是贝叶斯统计的三要素。

根据P(A)、P(B|A),就可以由贝叶斯定理:
P(A|B) = P(B|A)P(A) / P(B)
计算出看到右转灯亮、且处于右转车道路口这个后验概率P(A|B)。

2、 贝叶斯分析

贝叶斯分析是根据证据的积累来推测一个事物发生的概率,当预测一个事物时,需要先根据已有的经验和知识推断一个先验概率, 然后在新证据不断积累的情况下调整这个概率,这个通过积累证据从而得到一个事件发生概率的过程,称为贝叶斯分析。

理解贝叶斯分析最好的方法是图像法, 这图里,红圈A占大圈的比例,即先验概率P(A), 小阴影AB占蓝圈B的比例,即后验概率P(A|B)。
贝叶斯分析

先验概率,即取得证据之前的概率P(A),这个通常来自之前的经验常识,带有一定的主观色彩。
注意: 先验概率在贝叶斯统计中具有重要意义,不可忽视。

例如:
发现一些没读过书的人很有钱,事实是当发现时就已经是幸存者了(对应上图中的红圈), 而死了的人(红圈外的大部分面积)都忽略了啊。
再例如:
由一个人着装雅致,推断他是大学教授还是工程师,这里也得仔细注意先验了,即:在整个人群中大学教授多、还是工程师多,也就是红圈和大圈的关系。

这个图,红圈和篮圈的比例, 很少能在开始就知道, 这是应用的难点:
回前面案例,
如果恪守先验概率,就会无视变化、墨守成规、直接忽视右转向灯亮的信号;
如果过于注重特例,完全不看先验概率,很可能把噪声当成信号,看到灯就转向。

A即位于右转车道,
B是看到后车右转向灯亮,
A|B即右转向灯亮且位于右转车道,
B|A是位于右转路口且打起右转向灯。

这个案例里:
根据路段位于北京繁华区域、结合经验、设定:
P(A)=5%,即:这条路段5%可能是右转车道,其余95%部分是直行车道、或者处在左转车道。
P(B|A)=20%,即:位于右转车道的人20%会打起右转向灯,其余的呢可能是从右转道直行走了、或从右转道左转了、或者从右转道确实右转了但是没打右转向灯。

那么如果假设P(B) = 2%, 即在整个车辆行驶过程中,有2% 的概率右转弯灯亮了。

那么复制一下贝叶斯定理:
P(A|B) = P(B|A)P(A) / P(B)
换一下;
P(A|B) = P(A) * P(B|A)/ P(B)
= 5% * 20%/2% = 50%

可见:
原来的先验概率P(A)=5%,即此时恰好位于右转车道的概率为5%,并不高;
而由于公式右侧一项的贡献、即看到右转向灯亮, 则后验概率P(A|B)提升到了50%。

即:
新信息出现之后的A的概率 = 原来A的概率 * 新信息带来的调整。

新信息出现前:
贝叶斯学习
新信息出现后:
贝叶斯学习

3、 贝叶斯决策

基于贝叶斯分析,可以引出贝叶斯决策,它主要包含四部分:
数据D、假设W、目标O、决策S。

此处:
数据,即之前讲到的证据,
假设,是要验证的事实,
目标,是最终要取得优化的量,
决策,是根据目标得到的最后行为。

一般步骤是:
理清因果:哪个是假设、哪个是证据,
给出所有可能假设、即假设空间,
给出先验概率,
根据贝叶斯公式求解后验概率,得到假设空间的后验概率分布,
利用后验概率求解条件期望,得到条件期望最大值对应的行为。

以上转化成算法就是机器学习。

4、 朴素贝叶斯的分类算法

案例:
给出某人的身高和体重,判断其性别?

首先:证据是身高和体重,假设是性别男类型,
其次:先验概率是人口中的男女比例,条件概率是男性和女性的身高和体重分布。
然后,可以根据贝叶斯公式求解后验概率。
最后,要做的决策是性别分类,目标是分类错误率最低。

贝叶斯决策是构建有监督机器学习的重要基础。
例如前述性别问题:
在训练部分,根据已有数据求出不同性别对应身高和体重的概率分布;
在测试部分,用朴素贝叶斯分类器进行决策。

5、 最大似然估计和贝叶斯估计

事实上, 贝叶斯决策很少只涉及A和B,而是内部包含非常关键的隐变量(参数),涉及对所研究事物的一些基本预设。

例如最简单的:抛硬币10次、出现9次正面1次背面,对这个问题:
频率学派,认定出正面的概率为0.5不变,否定0.5的想法是匪夷所思;
贝叶斯学派,需要把这个(隐)变量看成是未知的参数(具有一定先验概率),之后按照贝叶斯公式调整新加入证据对先验概率的影响。

要注意:
此处先验概率十分重要,它影响决策的结果,因为:
如果先验的认为出正面概率为0.5,那么需要得到大量偏离0.5的证据之后,才能逐步纠偏。

总结:
最大似然估计把参数看做是确定(非随机)而未知的,最好的估计值是在获得实际观察样本的概率为最大的条件下得到的。
贝叶斯估计是把参数当做具有某种分布的随机变量,样本的观察结果使先验分布转换为后验分布,再根据后验分布修正原先对参数的估计。
这两者在结果上通常是近似的,但概念上它们的处理方法完全不同。

6、 示例 – 似然函数

游戏规则:
押一块钱,可以抛10次硬币,出现正面的次数小于等于6次、就赢得一块钱,大于6次正面则输掉的一块钱。

定义随机变量:
Y :表示出现正面的次数
X :表示一局输赢结果
X = :
1 if Y<=6 0 if Y>6

赢了之后,一块钱就变成了两块钱;输了之后,一块钱就变成了没有钱;
定义函数f(X)表示游戏之后的结果:
f(X)= :
2 if X=1
0 if X=0

增加常识:
* 抛硬币出正面的概率,等于出现反面的概率,等于0.5。
* 第一次抛硬币的结果 不会影响 第二次抛硬币的结果,验的结果是相互独立的。
* 这是一个可重复的试验,结合上面这点就是一个独立可重复试验。

二项分布常用来对独立可重复实验进行概率建模,所以这个抛硬币服从二项分布B(N,p)。
N是进行的实验的次数10,p可以用r代替表示抛一次硬币出正面的概率在这里是r=0.5,用Y表示出现正面的次数,则:
P(Y=y) = C(N,y)* r^y * (1-r)^(N-y)

根据假设:
N=10,r=0.5,得P(y<=6) = P(y=0)+…P(y=6) =0.8281,意味着有0.8218的概率赢。 赢到的数额期望是: E{f(x)} = 2*0.8281 + 0*(1-0.8281) = 1.6562 也就是说在抛硬币出现正面和反面概率相同都为0.5的情况下,根据游戏规则最终能得到1.6562块钱。 上面,最重要的先验信息是: 抛一次硬币,出现正面和反面的概率是一样的都为0.5。 现在,换种思路: 万一硬币被做了手脚,抛出正面的概率不是0.5呢? 如果按照贝页斯分析,需要把r也视为一个随机变量,那么N次独立重复的抛硬币实验的概率分布函数,可写成条件概率的形式: P( Y=y|r,N) = C(N,y) * r^y * (1-r)^(N-y) 此时,在 r 未知的情况下,拿到了一组实验数据(样本信息),有个人他抛了10次硬币,出现了9次正面1次反面。 那么还有多少理由相信r=0.5? 由二项分布概率密度: P( Y=y|r,N) = C(N,y) * r^y * (1-r)^(N-y) 那么r为多少才能让P(Y=y|r,N)在y=9时取最大值? 去对数不影响指数函数的单调性: L = ln P(Y=y|r,N) = ln C(N,y) + y*ln(r) + (N-y)*ln(1-r) —>MAX
L可称为对数似然函数。

对r求偏导数即获得极值点:
dL/dr = y/r – (N-y)/(1-r)
这里用d表示偏导。

当y为9时,r=0.9。

此时:
得P(y<=6) = P(y=0)+…P(y=6) =0.0128,意味着游戏有0.0128的概率赢。

此时的期望:
E{f(x)} = 2*0.0128+ 0*(1-0.0128) = 0.0256
也就是说在抛硬币出现正面概率为0.9的情况下,根据游戏规则最终能得到0.0256块钱。

以上过程是:
首先,先验分布设定为0.5,
然后,确定模型为二项分布,
以及,模型参数为r,
最后,似然求解得参数为0.9。

7、 示例 – 后验概率

REF:
http://www.woshipm.com/pmd/421033.html
http://www.cnblogs.com/hapjin/p/6653920.html
https://www.zhihu.com/question/19725590/answer/217025594

33 – 贝叶斯估计

一、 概率、条件概率以及先验概率、后验概率
二、 似然、概率
三、 似然函数、最大似然估计
四、 参数估计、最优化


一、 概率、条件概率以及先验概率、后验概率

用P(A)表示A事件发生的概率,更精确的称为边缘概率;
用P(A|B)表示B事件已经发生的情况下、A事件发生的条件概率。

先验概率, 是指根据以往经验和分析得到的概率,例如全概率公式、以及一些条件概率的计算,先验概率往往是由因求果问题。
后验概率, 是根据结果推算最有可能是哪种原因发生,例如贝叶斯公式,后验概率往往是执果求因问题。
从原因到结果的论证称为先验,而从结果到原因的论证称为后验。
因此:
* 结果还没有发生,要求结果发生的可能性的大小,是先验概率。
例如某原因1可能导致出现结果2、结果3和结果4这三种结果,现在原因1出现了,要估计结果2出现的概率,这是先验概率,在这里也是条件概率。
* 结果已经出现了,要求可能导致此结果出现的某个原因的可能性的大小,是后验概率。
例如某结果5可能由原因6、原因7和原因8这三个原因导致的,现在结果5已经出现了,要估计来自于原因6的概率,这是后验概率。

简单的例子:
出门上班,路上可能堵车, 造成堵车的原因有两个,一个是车太多了,一个是事故太多了。
那么1, 直接问堵车的概率P(堵车),这个就是概率的,也是先验概率,这里也是全概率。
那么2, 交通事故这个原因已经发生,问有多大概率会堵车, 这个P(堵车|交通事故)是由因求果的条件概率。
那么3, 出门堵车这个结果已经发生,问这个结果是多大概率由于交通事故引起的,这个P(交通事故|堵车)是由果求因的条件概率,更富有内涵的是称为后验概率。

一般的,先验概率是在缺乏某个事实的情况下的描述,而后验概率是在考虑了事实之后的条件概率。
例如:
某甲弹弓打鸟, 可能打中也可能打不中, 根据以往经验,主观估计某甲打中的概率是65%,这个就是先验概率。
同时还有个某乙也在用弹弓打鸟,根据以往经验,专家主观估计某乙大众的水平是95%,这个也是先验概率。
结果,鸟被打中落地,问多大可能是被某甲打中的, 这个就是后验概率。
也就是打中这个结果已经出现,获取到了新的额外的信息,需要修正某甲的65%这个先验概率。
根据需要, 后验概率, 也可能成为其他场景里面的先验概率, 可以持续转化。

《蒙特霍尔问题:转不过来弯的概率》
http://blog.csdn.net/zmazon/article/details/8485118
https://wenku.baidu.com/view/8ca2bd637cd184254a353526.html

二、 似然、概率

似然,接近于概率的意思,都是指某种事件发生的可能性。
但是:
概率,是用于已知一些参数信息的情况下,对随后的观测结果的做出预测;
似然,则用于已经得到某些观测结果,要对有关事物性质的参数进行估计。
所以:
概率和似然,是概率论和统计学的区分,例如对于某个正态分布:
P(data; miu, theta),意思是基于模型参数miu和theta观测到数据的概率;
L(miu, theta; data),意思是已经观测到一组数据后参数miu和theta取特定值的似然。

例如:
一枚硬币,由于制造工艺 ———— 可能是材料密度、质心分布等因素,扔出正面的可能性是不确定的,不一定等于0.5。
那么,这枚硬币扔出正面的可能性,以theta标记,就是该模型的参数。

2.1 概率 probability

如果扔硬币出现正面的概率,theta,这个硬币的参数已经知道,由此去推测扔硬币的各种情况的可能性,就是概率。
例如:已知硬币均匀完美,也就是说已知硬币的参数theta为0.5。
要求:扔10次硬币、出现5次正面的概率是多少?
就是求概率。

解1:
10排10币,共有排列数2^10=1024;
正面朝上10个的排列:1种C10(10)
正面朝上9个的排列:10种C10(9)
正面朝上8个的排列:45种C10(8)
正面朝上7个的排列:120种C10(7)
正面朝上6个的排列:210种C10(6)
正面朝上5个的排列:252种C10(5)
则5个朝上的概率有:
252/1024 = 25.2%
解2:
抛硬币遵循的二项分布:
C10(5)*0.5^5*(1-0.5)^5=0.252

2.2 似然 likelihood

如果扔硬币出现正面的可能性,theta,这个模型的参数不知道,要通过抛硬币的实验去推测硬币的参数,就是似然。
例如:有三种型号硬币,扔起来出正面的概率分别是1/3,1/2,2/3,现在进行试验,扔了80次,出现49次正面。
要求:扔的最可能是哪种型号的硬币?
这就是求似然。

这里theta的定义域是{1/3,1/2,2/3},则似然函数L:
L=P(H=49|th=1/3) = C80(49)*1/3^49*(1-1/3)^31=0.0000
L=P(H=49|th=1/2) = C80(49)*1/2^49*(1-1/2)^31=0.0012
L=P(H=49|th=2/3) = C80(49)*2/3^49*(1-2/3)^31=0.0054

可见,
当th=2/3时,似然函数L取得最大值。
因此,扔的这个硬币,极可能是2/3那种。

三、 似然函数、最大似然估计MLE

最大似然估计(MLE – maximum likelihood estimation ),就是利用已知的样本结果,反推最有可能的最大概率的会导致出现这种结果的参数值(模型已知而参数未知),或者说,最大似然估计,就是利用已知的样本,在使用某个模型的基础上,反推出最有可能导致这样结果的模型的参数值。

最大似然的原理非常朴素:
一个随机试验,有若干个可能的结果A,B,C,…。如果仅仅作一次试验,结果A出现,则认为试验条件对A出现有利,也即A出现的概率很大。一般的,事件A发生的概率与参数theta相关,A发生的概率记为P(A|theta),则theta的估计应当使上述概率达到最大,这样的theta,顾名思义称为最大似然估计。

一个极端例子:
获得某市样本,显示男女比例为3:2,现在要估计全国人口男女比例。那么肯定不会估计男女比例为1:0, 因为如果是1:0不可能得到3:2的样本。所以,很容易估计全国男女比例3:2。

3.1 单次试验,参数=1样本=1

抛硬币实验,抛10次硬币,出现6次正面, 那么这个模型的似然函数L为:
L(theta) = C10(6)*(theta)^6*(1-theta)^4
选择怎样的theta才会使得结果最大呢?(即出现试验结果:抛10次出现6次正面)?

解1
试验:
theta=0.4, C10(6)*0.4^6*(1-0.4)^4 = 0.1115
theta=0.5, C10(6)*0.5^6*(1-0.5)^4 = 0.2051
theta=0.6, C10(6)*0.6^6*(1-0.6)^4 = 0.2508 <—MAX
theta=0.7, C10(6)*0.7^6*(1-0.7)^4 = 0.2001 …

解2
以theta为横轴、L为竖轴画曲线, 显然theta=0.6时取得极大值。 又例如: 这次试验抛了更多次,100次出现60次正面, 画出曲线后表明L(theta)在theta=0.6取得极值0.0812。

3.2 多次试验,参数=1样本>1

最大似然估计,其真正的用途,是针对多次实验的。
例如:
对二项分布的抛硬币模型,如果把抛10枚硬币出现几次正面称为进行了一次实验,就是每次试验抛10次硬币,同时用X表示正面朝上的次数,Xi(i=1 … 5),那么现在进行5次实验,则试验结果为得到数字朝上次数Xi是{7,5,4,3,7}。就是说,第一轮试验10次正面向上出现了7次;第二轮试验10次正面向上出现了5次,……,第5轮试验了10次正面向上出现了7次。
则:
这个二项分布的样本容量表示为N=10,试验次数表示为n=5,模型参数theta用p表示。

单次实验出正面的概率为:
P(X=xi) = C(N,xi)*p^xi*(1-p)^(N-xi)

每次实验都独立同分布的:
f(x1,x2……xn|p) = f(x1|p)f(x2|p)…f(xn|p),
其中的f是模型,具体到这里是二项分布模型,每个f(xn|p)表示在同一个参数p下的实验结果,这是个条件概率。

极大似然函数为:
L(p|x1,x2……xn) = f(x1,x2……xn|p) = = f(x1|p)f(x2|p)…f(xn|p)
= C(N,x1)*C(N,x2)……*C(N,xn) * p^(∑xi) * (1-p)^(Nn-∑xi)

由于乘法不好处理,而且估计函数f是指数型的,取对数并不影响其单调性:
ln L(p) = ln( C(N,x1)*C(N,x2)……*C(N,xn) ) + (∑xi)ln(p) + (Nn-∑xi)ln(1-p)

此时对p求偏导:
d(ln L)/dp = (∑xi)/p – (Nn-∑xi)/(1-p)

在d(lnL)/dp=0 时,L将取得极大值:
即p = (∑xi)/Nn

本例中:
p = (∑xi)/Nn=26/50=0.52。
也就是出现的正面序列{7,5,4,3,7}表明这个硬币出正面的概率0.52,一枚接近正常的硬币。

所以:
最大似然估计基本思想是,当从模型总体随机抽取n组样本观测值后,最合理的参数估计量应该使得从模型中抽取该n组样本观测值的概率最大。
也就是,在已经得到试验结果的情况下,应该寻找使这个结果出现的可能性最大的那个theta作为真theta的估计。

* 再例如抽球实验
假设一个袋子装有比例未知的白球与红球,有放回的抽取了10次进行实验,结果是抽到了7次白球和3次红球。
在此数据样本条件下,可以采用最大似然估计法求解袋子中白球的比例。(当然,很明显,这种数据情况下,白球比例是70%)
但是了解方法很重要:

极大似然函数:
L(theta|x1…xn) = f(x1…x10|theta) = P(x1|theta)…P(x10|theta)
= theta^7 * (1-theta)^3
这里f是模型,theta是参数。
取对数、求导、使导数为零, 得theta=0.7。

* 再例如正态分布
假如一组采样值(x1,…,xn),已经知道x服从正态分布,且标准差是已知。
那么当这个分布的期望为多少时,产生这个采样样本数据的概率为最大?

极大似然函数:
L(theta|x1…xn) = f(x1…xn|theta) = P(x1|theta)…P(xn|theta)
= ( 1 / (sqrt(2*pi).th) )^n * exp( -1/2sqr(th) * (x1-miu)^2…(xn-miu)^2 )
这里f是模型(正态分布),miu是参数(期望)。
得miu = (x1+x2…xn)/n 。

注意:
最大似然函数,不一定唯一,也可能不存在。

3.3 连续型

以上是离散型总体的, 如果是连续型总体,常用密度函数(PDF:probability density function),来描述一个随机变量,输出在某个取值点附近的可能性的值。 也就是对于随机变量X,如果存在一个非负函数f(x), 使得对任意实数a,b(a<b)有P(a<X<=b)=∫f(x)dx,则f(x)为该随机变量X的概率密度函数PDF。

如果多次的x1…xn是相互独立同分布,则联合概率密度f=f(x1)..f(xn)。

3.4 多参数

以上是单参数的,仅一个参数theta。对于多参数p1,p2…pi,只不过从对一个参数求导数,变为对多个参数求偏导的方程组。

例如,前面正态分布例子中, 存在期望miu和方差th2两个参数待估计的就是两参数的。

3.5 连续型多参数

四、 参数估计、最优化

参数估计, 就是已知某个随机样本满足某种概率分布、但是其分布的具体的参数不清楚,然后通过若干次试验观察其结果,通过结果推出参数的大概值;参数估计属于统计学的经典问题。

最大似然估计,是参数估计的方法之一,是概率论在统计学的应用。它建立在这样的思想上:
已知某个参数能使这个样本出现的概率最大,那么当然不会再去选择其他小概率的样本,所以干脆就把这个参数作为估计的真实值。

要注意:
应用最大似然估计方法要结合特定的环境,因为它需要提供样本的已知模型,才能估算参数,例如在模式识别中,就可以设定目标符合高斯模型。

4.1 最大似然估计、贝叶斯估计

最大似然估计方法:
最大似然估计,是把参数看做是确定(非随机)但是未知的,最好的估计值是在获得实际观察样本的概率为最大的条件下得到的。

贝叶斯估计方法:
贝叶斯估计是把参数当做具有某种分布的随机变量,样本的观察结果使先验分布转换为后验分布,再根据后验分布修正原先对参数的估计。

注意:
虽然这两者在结果上通常是近似的,
但概念上处理方法是完全不同的。

4.2 最大似然估计、最小二乘

最大似然估计:
当从模型总体随机抽取n组样本观测值后,最合理的参数估计量应该使得从模型中抽取该n组样本观测值的概率最大,这是从概率角度考虑问题。直观理解,似然函数在给定参数的条件下观测到一组数据realization的概率密度。最大似然函数的思想就是什么样的参数才能使观测到目前这组数据的概率是最大。
类似这种从概率角度考量的估计量还有矩估计(moment )之类。

最小二乘:
当从模型总体随机抽取n组样本观测值后,最合理的参数估计量应该使得模型能最好地拟合样本数据,也就是估计值和观测值之差的平方和最小。最小二乘法模型就是让loss function最小,当然loss function不仅限于欧氏距离。

可见:
最小二乘法以估计值与观测值的差的平方和作为损失函数,极大似然法则是以最大化目标值的似然概率函数为目标函数, 相同之处是两者都把估计问题变成了最优化问题,但显然是从不同原理出发的两种参数估计方法。

而且:
最大似然估计是需要有分布假设,如果不知道分布函数就不可能列出似然函数,这在实务中是很困难的。最小二乘法则不需要这种假设。

另外:
如果分布恰好是正态分布函数的话,那么最大似然估计和最小二乘估计就相同了。

4.3 联系

后验概率在实际中一般是很难直接计算出来的,相反,先验概率的计算就容易。
因此,一般是通过先验概率来计算后验概率。
在这种意义上,似然函数是可以理解为条件概率的逆反。

例如:
在已经知道某个参数p时,要求事件A发生的条件概率,P(A|p) = P(Ap) / P(p) ,这是先验概率;
利用贝叶斯定理得:
P(p|A) = P(Ap) / P(A) = P(A|p)P(p) / P(A)
这就是已经知道事件A发生了来求取参数p的条件概率P(p|A)了。

因此可以反过来构造表示似然性的方法:
已知有事件A发生,运用似然函数L(p|A), 来估计参数p的可能性。

上面的贝叶斯公式又称为后验概率公式, 或者逆概率公式:
按照乘法法则,可以导出 P(A∩B) = P(A)*P(B|A) = P(B)*P(A|B)。
上式可变形为 P(p|A) = P(A|p)*P(p) / P(A)。

这个贝叶斯公式对应的贝叶斯法则的原理很简单:
当不能确定一个事物的本质时,可以依靠与事物特定本质相关的事件出现的多少、来判断其本质属性的概率。
例如:不知道一个人的品质,可是如果看到这个人总是做好事这一事件,可以推断这人是好人的概率就大。