第一节 概述
1. 预备知识:我们前面讨论的贝叶斯网的似然值,是基于所有的数据都已经被观察到的情况下。
考虑一个简单的图$X o Y$,其中XY都是二项分布。
$L(D: heta)=P(x_0)^{M[x_0]}P(x_1)^{M[x_1]}P(y_0|x_0)^{M[x_0,y_0]}P(y_1|x_0)^{M[x_0,y_1]}P(y_0|x_1)^{M[x_1,y_0]}P(y_1|x_1)^{M[x_1,y_1]}$
这里有三个独立项:
(1)$P(x_0)^{M[x_0]}P(x_1)^{M[x_1]}$
(2)$P(y_0|x_0)^{M[x_0,y_0]}P(y_1|x_0)^{M[x_0,y_1]}$
(3)$P(y_0|x_1)^{M[x_1,y_0]}P(y_1|x_1)^{M[x_1,y_1]}$
都是可以独立求最大值的。
但是,如果只有Y被观察到的情况下
$L(D: heta)=P(y_0)^{M[y_0]}P(y_1)^{M[y_1]}=(P(x_0)P(y_0|x_0)+P(x_1)P(y_0|x_1))^{M[y_0]}(P(x_0)P(y_1|x_0)+P(x_1)P(y_1|x_1))^{M[y_1]}$
我们观察两项:
(1)$(P(x_0)P(y_0|x_0)+P(x_1)P(y_0|x_1))^{M[y_0]}$
(2)$(P(x_0)P(y_1|x_0)+P(x_1)P(y_1|x_1))^{M[y_1]}$
两项同时受P(x_0)的影响,那么它们的最大值就不再独立。事实上$L(D: heta)$将有多个极大值。求最大值会相当麻烦。
另外,每项中加式的存在,使得采用log likelihood也不再有任何便利性。
在实际应用中,有很多情况下,是有些实例的X值被观察到,另外的没被观察到。那么推导MLE后不难发现也符合上面的性质。
2. 缺失数据的模型
缺失数据有两种情况,一种是有意缺失,一种是随机缺失。
我们定义三组变量: $X_i$为我们关心的随机变量,$O_i$表示观测到与否(0/1),$Y_i$表示观测到的$X_i$值。$Val(Y_i)=Val(X_i)+{?}$
如果 $X$和$O$之间有边,那么属于有意缺失,否则属于随机缺失。用数学式描述随机缺失的条件是:$P_{missing}models (Operp H|d)$
3. 参数相关性
回到图$X o Y$,我们可以发现在Y给定,X未给定的情况下,$ heta_X$于$ heta_{Y|X}$之间存在一条有效迹,说明它们是互相影响的。
例如,在给定Y=0的情况下,如果$ heta_{y_0|x_0}$越大,则意味着$ heta_{x_0}$很大。
第二节 似然优化方法
1. 梯度上升算法。对似然函数,我们有:
$frac{partiallog P(D|Theta)}{partial heta_{x_i|oldsymbol u_i}}=frac{1}{ heta_{x_i|oldsymbol u_i}}sum_m P(x_i,oldsymbol u_i|d[m],Theta)$
(1)这里是对数似然对每个参数的偏导数
(2)针对每个参数,需要对1~M每个实例,在当前的参数取值下,做一次inference。
这个因为$(X,oldsymbol U)$总是在同一个clique里,因此可以用团树来做inference(问题:团树不是用于马尔科夫网的吗?)
(3)对于每个顶点,将包含M(N-1)个参数。N为顶点取值,M为所有父亲可能取值的组合
优点:灵活,可以用于非table CPD,利用导数的链式法则。
缺点:
(1)这是一个约束优化问题:对参数取值有限制,必须满足是合法的CPD(如$sum_x P(x)=1$等)
(2)需要一些高级的梯度算法来完成收敛,这样将增加计算成本
2. EM算法
这个算法的提出基于两点考虑:
(1)参数完整时,计算缺失数据的取值分布很容易(标准inference)
(2)数据完整时,计算参数很容易(用充分统计量)
因此这个算法也是一个迭代算法,每次分为两步:
(1)E-step:根据目前的参数$ heta^{(t)}$计算期望充分统计量(ESS)
a. 对每组数据$d[m]$,所有的变量$x$,以及所有可能的$(x,oldsymbol u)$取值,计算$P(x,oldsymbol u|d[m], heta^{(t)})$,这个涉及一次inference。
对于如果(x,u)与d[m]中相应的变量值相等,则值为1,不相等,则值为0,若未观测到,将为一个概率。
b. 计算期望充分统计量(ESS),这个就是把在不同数据实例下的$P(x,oldsymbol u)$加起来:$overline{M_{ heta^{(t)}}}[x,oldsymbol u]=sum_m P(x,oldsymbol u|d[m], heta^{(t)})$
(2)M-step:计算下一次迭代的参数值。
把ESS当做实际充分统计量,更新迭代参数值:
$ heta_{x|oldsymbol u}^{(t+1)}=frac{overline{M_{ heta^{(t)}}}[x,oldsymbol u]}{overline{M_{ heta^{(t)}}}[oldsymbol u]}$
优点:(1)实现简单(2)一开始收敛很快 缺点:后期收敛很慢,因此这时候可以改用梯度下降。
3. EM实例:朴素贝叶斯,这里假设$c$为隐变量,其余变量$x_i$均观察到。那么变成了一个聚类问题
(1)E-step
a. 统计每个类别c有多少个实例
$overline{M_{ heta^{(t)}}}[c]=sum_m P(c|x_1[m],cdots,x_n[m], heta^{(t)})$
其中$P(c|x_1[m],cdots,x_n[m], heta^{(t)})=frac{P(x_1[m],x_2[m],cdots,x_n[m]|c)P(c)}{P(x1[m],x2[m],cdots,x_n[m])}$
$=frac{(prod_i P(x_i[m]|c))P(c)}{sum_{c'}(prod_i P(x_i[m]|c'))P(c')}$
b. 统计每个每个类别c中特征i的值为$x_i$的实例有多少个
$overline{M_{ heta^{(t)}}}[x_i,c]=sum_m P(c,x_i|x_1[m],cdots,x_n[m], heta^{(t)})=sum_{m:x_i[m]=x_i}P(c|x_1[m],cdots,x_n[m], heta^{(t)})$
其中$P(c,x_i|x_1[m],cdots,x_n[m], heta^{(t)})=egin{cases}0&x_i e x_i[m]\P(c|x_1[m],cdots,x_n[m], heta^{(t)})&x_i=x_i[m]end{cases}$
(2)M-step
a. 计算每个类别c的概率
$ heta_c^{(t+1)}=frac{overline{M_{ heta^{(t)}}}[c]}{M}$
b. 计算每个类别c里,每个feature各个取值的概率
$ heta_{x_i|c}^{(t+1)}=frac{overline{M_{ heta^{(t)}}}[x_i,c]}{overline{M_{ heta^{(t)}}}[c]}$
第三节 EM算法分析
1. 定义几个变量:
$d$:某实例中观察到的变量值。
$H$: 某实例中的隐藏变量。
$Q(H)$:隐藏变量的分布率,通常指当前优化出来的$ heta^{(t)}$
2. 首先,我们假设H已经观察到了取值h,在这种情况下计算$langle d,h angle$取值在$ heta$下发生的似然(单个数据实例的似然):
$L( heta,langle d,h angle)=P(d,h| heta)=prod_iprod_{(x_i,oldsymbol u_i)in Val(Xi,Pa_{X_i})} heta_{x_i|oldsymbol u_i}^{1_{langle d,h angle}[x_i,oldsymbol u_i]}$
其中$1_{langle d,h angle}[x_i,oldsymbol u_i]$代表$(x_i,oldsymbol u_i)$是否和$(d,h)$中对应的变量值相等。可以看出,对于和d中一致的$(x_i,oldsymbol u_i)$,就乘上了对应的概率,否则乘1,不影响乘积。
而对数似然为:
$l( heta,langle d,h angle)=prod_iprod_{(x_i,oldsymbol u_i)in Val(Xi,Pa_{X_i})}1_{langle d,h angle}[x_i,oldsymbol u_i]log heta_{x_i|oldsymbol u_i}$
3. 但是H并没有观察到,所以去掉假设,用$H$的分布$Q(H)$,对上述函数求期望值,得出期望对数似然(ELL):
$E_{Q(H)}[l( heta:langle d,H angle)]=$
$=sum_{h'}Q(h')sum_isum_{(x_i,oldsymbol u_i)in Val(X_i,Pa_{X_i})}1_{langle d,h' angle}[x_i,oldsymbol u_i]log heta_{x_i|oldsymbol u_i}$
$=sum_isum_{(x_i,oldsymbol u_i)in Val(X_i,Pa_{X_i})}(sum_{h'}Q(h')1_{langle d,h' angle}[x_i,oldsymbol u_i]log heta_{x_i|oldsymbol u_i})$
$=sum_isum_{(x_i,oldsymbol u_i)in Val(X_i,Pa_{X_i})}Q(x_i,oldsymbol u_i)log heta_{x_i|oldsymbol u_i}$
注意,无法方便地求likelihood的期望值,因为求和要转换为乘积,无法得出有效表达式。所以这里改求log likelihood的期望值
4. 我们定义$Q_m^{(t)}(H[m])=P(H[m]|d[m], heta^{(t)})$,带入上式Q,并对m个数据实例求和:
$sum_m E_{Q_m^{(t)}(H[m])}[l( heta:langle d,H angle)]=sum_isum_{(x_i,u_i)}sum_m P(x_i,u_i|d[m], heta^{(t)})log heta_{x_i|u_i}$
$=sum_isum_{(x_i,u_i)}overline{M_{ heta^{(t)}}}[x,oldsymbol u]log heta_{x_i|u_i}$
可以看出,本节定义的ELL(期望对数似然)刚好就是用前一节定义的ESS(期望充分统计量)在参数$ heta^{(t)}$计算出来的对数似然。
个人理解:期望对数似然(ELL)是在概率取对数后做期望(加权平均),巧妙地避开了加法和乘法混在一起导致多个局部最优解的问题。而观察第一节原表达式$l(D: heta)$,是概率做期望后取对数,两者并不相同。可以认为在用ELL逼近真实的$l(D: heta)$,而且从图上看,可以看出两者在$ heta^{(t)}$处的取值和斜率都一样。
5. EM可以保证:
(1) $L(D: heta^{(t+1)})ge L(D: heta^{(t)})$
(2) 如果$L(D: heta^{(t+1)}=L(D: heta^{(t)})$,则达到局部最大值。局部最小值几乎不可能,因为每次迭代都是增大的,除非一开始就选中了局部最小值。
第四节 EM在实际中的表现
1. 收敛
(1)前面(10步)往往收敛很快
(2)后面收敛变得很慢,但是参数的变化却很大
(3)过多次数可能过度拟合,导致测试集的乘积开始缓慢下降
2. 局部最优
(1)数据较少时,发现的局部最优点很多,随着M增大,开始减少
(2)缺失数据较少,局部最优减少得快
(3)如果一个变量完全未观察到,即使缺失数据所占比例不大,局部最优解也一直很多,哪怕数据再多。
(4)局部最优解的值差异也很大,不能忽略,随着发现的局部最优点增多,最终解会不断优化。
3. 因为局部最优解差异很大大,所以初始化很重要
(1)采用多个随机初始点
(2)使用先验知识
(3)使用简单的聚类算法来填充部分缺失值
第五节 隐藏节点的学习
1. 聚类:朴素贝叶斯,C变量为latent,实现自动聚类
2.