贝叶斯网络的参数学习
1 导语
hello hello,大家好
在之前的推文中,我们见过完整的贝叶斯网络;也展示了在有一定证据的情况下,如何使用贝叶斯网络进行推断
但在手头没有贝叶斯网络的时候,如何通过手头的数据构建一个贝叶斯网络呢?
1.2 相关概念
1.2.1 贝叶斯网络参数学习问题分类
回想:贝叶斯网络 = 有向图 + 概率
关于贝叶斯网络的学习,主要分为以下5种情况[1]:
-
已知:有向图 + 完整数据 待求:概率
-
已知:完整数据 待求:有向图 + 概率
-
已知:有向图 + 不完整数据 待求:概率
-
已知:不完整数据 待求:有向图 + 概率
-
已知:不完整数据 待求:含隐变量的有向图 + 概率
1.2.2 不完整数据
不完整数据指的是数据有特征缺失
例如在测试问卷中女生可能不填年龄,男生可能不填身高,这类行为会给参数学习带来难度
1.2.3 隐变量
隐变量与观测变量相对,指的是不可观测的随机变量。隐变量可以通过使用数学模型依据观测得的数据被推断出来
例如张三想用贝叶斯网络研究橘子,记录的属性有“表面是否光滑”、“果皮厚度”、“重量”和“是否甘甜多汁”,吭哧吭哧吃了很多橘子收集了一笔数据。在学习网络参数之前他忽然想起那句“橘生淮南则为橘,生于淮北则为枳”,于是想要多加个变量表示这棵橘子来自淮南或淮北,因为数据中没有统计这个属性,而这个属性又决定了部分记录属性的取值,这个变量就是模型里的隐变量
1.3 本期涉及
以上的术语没看懂也没有关系,因为这期不会涉及关于它们的详细内容 :)
这一期只考虑最简单的第一种情况——已知:有向图 + 完整数据 待求:概率
以下会聊到三种参数学习方法,频率学派的MLE,贝叶斯学派的MAP、EAP
也会提到了两个比较重要的知识点:充分统计量和共轭先验
让我们开始吧~
2 频率学派的做法:MLE
2.1 概念
最大似然估计(MLE)指的是利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值θ,即能使似然函数取到最大值的θ
在统计学中,似然函数是一种关于统计模型中的参数的函数,表示模型参数中的似然性[1]
“似然性”与“或然性”或“概率”意思相近,都是指某种事件发生的可能性
但是在统计学中,“似然性”和“概率”(或然性)又有明确的区分:
概率,用于在已知一些参数的情况下,预测接下来在观测上所得到的结果;
似然性,则是用于在已知某些观测所得到的结果时,对有关事物之性质的参数进行估值。
2.2 小例子
考虑掷一枚有偏差的硬币,θ为正面的概率:
进行二项试验,投M次后我们得到M笔数据:
我们知道θ的取值决定了X变量的取值,于是在概率图中我们有θ指向每个Xi的边:
考察变量之间的条件独立性:在选定某个硬币的时候θ的值就固定了下来,θ和数据间形成的是分叉结构,在中间节点确定的情况下,所有的数据相互独立
在给定θ的情况下,生成一个正样本X[i]的概率是θ,条件概率分布如下:
写出相应的似然函数L,L将θ映射为似然值,代表了这个θ生成这个数据集的可能性:
接下来的任务就是找到使得似然函数L取得最大值的θ,令一阶导数为0,得到θ_hat:
在这个情景设定下,我们得到最好的θ其实就是训练数据中掷出正面硬币所占的比例
2.3 充分统计量
以上属于高中知识,现在来点新鲜的概念,例如充分统计量
观察以下似然函数,MH表示掷出正面,MT表示掷出反面:
可以看出在构建似然函数L来估计参数θ的时候,统计指标MH和MT就已经够用了,并不需要用到整个数据集
充分统计量将整个数据集的信息压缩在几个指标上,这些指标唯一确定了似然函数L
如果我们认为数据集是由二项试验生成(如上例),估计θ我们只需要M0和M1
类似的,对于多项式试验,如掷M次骰子,估计θ我们只需要
对于高斯分布,估计θ我们只需要
因为充分统计量唯一确定了似然函数L,反过来看似然函数L的解就是充分统计量的函数,那么只要知道似然函数的解析解,按照这个解需要的充分统计量在原数据集做一些计数就可以啦,是不是很方便
2.4 结合PGM
有同学会说:哇!什么乱七八糟的,跟概率图有啥关系
不急,这就来了
考虑以下基础情况:
它的似然函数可以进行以下分解:
其中第二个等号用的是贝叶斯网络链式分解(只取决于它的父母节点)
在前面几期我们知道贝叶斯网络可以进行因子分解,根据条件独立性假设可以将完整的贝叶斯网络分解为三种基础结构
同样的,利用条件独立性假设,我们也可以将贝叶斯网络的似然函数L分解成多个局部似然函数Li,如下:
第二个等号依然是贝叶斯网络链式分解,其中Ui表示节点xi的父母节点
这就意味着我们可以在局部对θ进行估计
特殊地,如果局部的条件概率分布是离散的,还能进行更细致的分解
对于变量X,计算不同取值出现的次数直接得到估计,而对于X|U条件概率分布的估计如下:
看起来是不是很眼熟?这不就是多项式分布的似然函数吗?
类似的,θ的估计也就等于不同情况下的计数值除以全部情况的计数值:
注:以上讲的是条件概率分布相互独立的情况,有些概率图中条件概率分布是共享的,例如马尔可夫链和HMM,基于不同的假设,似然函数L的分解方式不同,最后需要的统计指标也会不同,下面贴出两张图供有兴趣的同学自己分析,PGMs课程里PPT有答案
2.5 小结[2]
-
极大似然估计提供了一种简单而高效的参数估计方法,在大多数参数化分布下有解析解
-
充分统计量S(D)吃一个数据集就吐出来对应的统计指标,这些统计指标能唯一确定一个似然函数L
-
在贝叶斯网络中,可以将似然函数中相互独立的条件概率分布分解为局部似然函数的连乘,然后在局部进行参数估计
-
对于离散型的条件概率分布,局部似然函数还能更进一步分解为多项式分布似然函数的乘积
3 贝叶斯学派的做法:MAP、EAP
上面提到的MLE是频率派常用的做法,贝叶斯派表示不屑并抛出了迪利克雷分布作为先验
慢着!迪利克雷分布是个啥
多项式分布的共轭先验
呃……共轭先验又是个啥
登登登登 (* ̄0 ̄)ノ
3.1 共轭先验
具体说来,在给定贝叶斯公式:
假定似然函数p(x|θ)是已知的,问题就是选取什么样的先验分布p(θ)使得后验分布与先验分布具有相同的数学形式
共轭先验主要的好处在于计算方便,每次更新可以直接给出后验分布的解析解,否则只能只能做繁复的数值运算
例如公司又拿到一把用户数据,就能立马统计出充分统计量,然后结合先验分布的参数,就能直接构造出后验分布
那么如何判断A是不是B似然函数的共轭先验呢?Wikipedia有好大一张表啦[3],比较常见的有Beta分布是二项分布似然函数的共轭先验,以及迪利克雷分布是多项式分布的共轭先验
3.1.1 二项分布和Beta分布
观察以下似然函数
如何做到在乘以一个似然函数之后还能跟原来形式差不多呢?最直接的想法是构造一个跟似然函数长得差不多分布函数,那么大概会长这个样子
其中a和 b是常量,θ取值范围为(0, 1)
为了它是个分布,给它前面乘上个因子k,并对它求积分使其等于1:
那么就有:
记,则
把k作为归一化因子乘上我们之前的猜想形式上,有:
这就是我们的Beta分布,容易推出Beta分布乘上一个二项分布的似然函数之后仍是Beta分布[4]:
可以看出Beta(a,b)在经过N次独立同分布的伯努利实验,并成功了z次后,参数更新为Beta(a+z,b+N-z)
直观看来,Beta先验其实就是给这次二项试验的正负样本分别提供了一定数量的sudo counts,数量之间的差异来源于你对这次试验的信念
例如有人跟你玩掷硬币,正面你赢反面他赢。你心想这个糟老头被人抓过出老千,怕是要阴我,于是你给的定了个Beta(2,8)的先验,这代表你认为这枚硬币抛出正面的概率θ应该大概率是0.2左右。跟他玩了1000次,对半输赢,于是你的先验被更新为Beta(502,508),这时候概率θ取0.5左右的可能性变得最高,你开始相信他带了一枚公平的硬币过来
但如果你固执地认为他一定会阴你,可以一开始把先验设成Beta(1,100000),这样即使是一样的经历,你的先验更新为Beta(502,105080),θ还是取得0左右的概率最高,即使新拿到的1000笔真实数据比较乐观,但基于这悬殊的“样本”比例,你会认为他带了枚欺骗性强的作弊硬币
以下Beta分布图来自统计之都靳志辉博客[5]:
可以看出Beta分布的参数a和b的相对大小决定了Beta分布尖峰的位置,而a+b的大小决定了尖峰的陡峭程度
3.1.2 多项式分布和迪利克雷分布
有了二项分布和Beta分布的介绍,多项式分布和迪利克雷分布的引入就显得很自然了
多项式分布是二项分布的推广,只不过是从掷硬币改成了掷骰子
一样的配方,我们先观察多项式分布似然函数的形式:
定义一个跟它长得差不多的函数:
计算归一化因子:
将归一化因子乘上我们之前的猜想形式上,有:
容易推出迪利克雷分布乘上一个多项式分布的似然函数之后仍是迪利克雷分布
以下迪利克雷分布来自wikipedia:
此图展示了当K=3、参数α从α=(0.3, 0.3, 0.3)变化到(2.0, 2.0, 2.0)时,密度函数取对数后的变化
迪利克雷分布是over整个θ取值范围的,那么它的定义域需要满足的条件有θ1+θ2+θ3=1以及θi大于等于0,那么这个三角形更严谨的画法应该如下图所示,平面上的每个点都满足上述约束
可能因为在三维平面上展示概率分布不太直观,所以大佬们都把这个三角形平放或者是直接画成二维热力图
回到动图,还记得我们在Beta分布里的结论吗?参数的相对大小决定了峰尖的位置,这里[α1,α2,α3]的相对大小不变,所以峰尖一直在正*,说明我们对满足多项式分布的X不同取值的概率[θ1,θ2,θ3]的估计是[1/3,1/3,1/3],当三个α的加和越大时,峰尖越陡峭,三者取值是[1/3,1/3,1/3]的可能性越高。特殊地,当α1=α2=α3时,迪利克雷分布是在这个三角形上的均匀分布
再如下图,来自Yee Whye Teh的Dirichlet Processes。图中越红代表概率密度值越大,三角形中每一个点代表了[θ1,θ2,θ3]的一种取值方案:
我们先看右图,当α1占比较大时,迪利克雷的尖峰偏向于端点A,表示θ1取得较大值的概率比较高
左图表示在α3给得比较小的情况下,尖峰会远离C端点,即会偏向它的对边,在这种设定下说明我们认为X不太可能取到x3(θ3应该是一个较小的值)
注:此处“三角形”更严谨的说法是单纯形,anyway
3.2 Maximum a Posteriori (MAP)
3.2.1 概念
MLE在缺乏数据可能产生严重的偏差。例如,对于一枚均匀硬币(θ=0.5)抛掷5次,当出现5次正面的情况下,频率学派会直接估计这枚硬币θ=1
贝叶斯派从另一个角度出发,不武断地说θ等于多少,而是说θ取值在某个区间内的概率为多少,也就是说我们需要求出在数据集X的条件下θ的分布
而MAP将分布中概率密度取得最大值的θ作为结果返回,即:
回归贝叶斯公式,因为分母联合概率与θ无关看作常数项去掉,于是MAP在形式上就是比MLE多乘了一个先验P(x)
先验分布是怎么选的呢?-为了方便计算,一般选用似然函数的共轭分布
也就是说如果假定数据是从二项分布里采样出来的,我们就用Beta分布作为先验分布
如果假定数据是从多项式分布里采样出来的,我们就用迪利克雷分布
3.2.2 结合PGM
在MLE小结提到:对于离散型的条件概率分布,局部似然函数还能更进一步分解为多项式分布似然函数的乘积
那么在这种情况下,我们使用的先验就是迪利克雷分布,结合概率图的上下文,先验分布如下
参数解释:
-
αijk是迪利克雷分布对参数θijk的系数
-
n表示网络中变量个数
-
qi是该变量的父节点不同的赋值个数,
-
ri表示该变量所有可取值的个数,
-
θijk表示当前状态下,
-
该变量为第k个值的概率
解析解如下
注意到当α都等于1的时候称作拉普拉斯估计
3.3 expectation a posteriori(EAP)
MAP求解的是后验概率的最大值,这是否合理呢?让我们考虑以下情况[7]
此时MAP会选择左边的尖峰
但它并不能良好地反映变量的分布情况,也就是说某些情况下只关注单个取值可能是具有误导性的
在这种情况下我们返回条件期望或许是更好的选择,直观看来,EAP返回的是分布与轴形成闭合图像重心所对应的θ
EAP从这个观点出发,将MAP
改为条件期望:
相应的解析解如下:
3.4 小结
-
贝叶斯理论思考的话,我们往往需要先引入参数的先验分布,然后使用贝叶斯定理和给定的观测数据计算关于这些参数的后验估计
-
这些先验分布的选取非常的关键,直接影响到参数的准确度和计算的难易程度。常见的做法是选择可能分布的共轭先验
-
介绍了如何用MAP和EAP来解决贝叶斯网络参数学习
4 两个小例子
这里有两个只涉及算个数的例子帮你理解MLE和EAP,动手试一试吧(虽然答案就在题上面
4.1 MLE
4.2 EAP
跟MLE不同的是EAP我们需要给每一个θijk一个α,即sudo count
例如计算最后一行,M=m2的条件下F=BAD在数据中其实是没有的
但是我们在对应情况给了迪利克雷先验:
表示在无论M取什么值的条件下,在训练数据以外,F=OK和F=BAD都各自发生了9和1次,以此来避免训练数据里没有就否定了这种可能性的情况
(0 + 1) 表示数据集中没有M=m2的条件下F=BAD的数据,1表示假样本有1笔
(1 + 10) 表示数据集中有一笔M=m2的数据,10表示相应的假样本有10笔
5 不完整数据情况下
以上的内容介绍了在完整数据下如何学习参数,方法包括但不限于:
-
MLE
-
MAP
-
EAP
为了知识结构完整性,这里再提一下不完整数据下应该要怎么学习参数
数据不完整可以分为以下三种情况:
-
MCAR : Missing Completely At Random,完全随机的情况,方法有
-
把不完整的数据删除
-
利用分解原理,当前节点只条件于它的父母,所以在估计它的条件概率分布的时候只需要少部分变量
-
MAR : Missing At Random,随机丢失,但丢失的属性有可能取决于某些已知的变量,我们要尽力修复数据,这里用到了EM算法,边填充数据边学习参数,非常有趣,具体说来分两个步骤:
-
E step:基于当前的模型,将已有的属性作为证据,使用相关算法进行概率推断(例如上一节”打猫“推文里的message passing算法)得到我们对缺失属性的估计
-
M step:基于填充好的”完整数据“,使用基于完整数据学习参数的算法(例如上面提到的MLE、MAP和EAP等)学出更可靠的模型
E-M 迭代直到收敛
-
NMAR : Not Missing At Random:丢失的数据取决于某些外部不知名变量(无法靠推断补全),此时我们需要通过添加这些不知名的变量来提升模型
6 结语
这一期细碎的知识点比较多,讲法也比较通俗,难免逻辑上会有遗漏,如果想要严谨的解释请研读下列的reference。下一期是结构学习,相比之下会比参数学习难上一些,也会更加有趣
感谢阅读
[1] 似然函数
[2] PGMs
[3] Conjugate prior
[4] 深入理解Beta分布:从定义到公式推导
[5] LDA-math - 认识 Beta/Dirichlet 分布
[6]MIT 6.041SC Lecture 21