概率图模型课堂笔记 3.5 不完整数据学习
第一节 概述
1. 预备知识:我们前面讨论的贝叶斯网的似然值,是基于所有的数据都已经被观察到的情况下。
考虑一个简单的图$X\to Y$,其中XY都是二项分布。
$L(D:\theta)=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:\theta)=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:\theta)$将有多个极大值。求最大值会相当麻烦。
另外,每项中加式的存在,使得采用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 (O\perp H|d)$
3. 参数相关性
回到图$X\to Y$,我们可以发现在Y给定,X未给定的情况下,$\theta_X$于$\theta_{Y|X}$之间存在一条有效迹,说明它们是互相影响的。
例如,在给定Y=0的情况下,如果$\theta_{y_0|x_0}$越大,则意味着$\theta_{x_0}$很大。
第二节 似然优化方法
1. 梯度上升算法。对似然函数,我们有:
$\frac{\partial\log P(D|\Theta)}{\partial\theta_{x_i|\boldsymbol u_i}}=\frac{1}{\theta_{x_i|\boldsymbol u_i}}\sum_m P(x_i,\boldsymbol u_i|d[m],\Theta)$
(1)这里是对数似然对每个参数的偏导数
(2)针对每个参数,需要对1~M每个实例,在当前的参数取值下,做一次inference。
这个因为$(X,\boldsymbol 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:根据目前的参数$\theta^{(t)}$计算期望充分统计量(ESS)
a. 对每组数据$d[m]$,所有的变量$x$,以及所有可能的$(x,\boldsymbol u)$取值,计算$P(x,\boldsymbol u|d[m],\theta^{(t)})$,这个涉及一次inference。
对于如果(x,u)与d[m]中相应的变量值相等,则值为1,不相等,则值为0,若未观测到,将为一个概率。
b. 计算期望充分统计量(ESS),这个就是把在不同数据实例下的$P(x,\boldsymbol u)$加起来:$\overline{M_{\theta^{(t)}}}[x,\boldsymbol u]=\sum_m P(x,\boldsymbol u|d[m],\theta^{(t)})$
(2)M-step:计算下一次迭代的参数值。
把ESS当做实际充分统计量,更新迭代参数值:
$\theta_{x|\boldsymbol u}^{(t+1)}=\frac{\overline{M_{\theta^{(t)}}}[x,\boldsymbol u]}{\overline{M_{\theta^{(t)}}}[\boldsymbol u]}$
优点:(1)实现简单(2)一开始收敛很快 缺点:后期收敛很慢,因此这时候可以改用梯度下降。
3. EM实例:朴素贝叶斯,这里假设$c$为隐变量,其余变量$x_i$均观察到。那么变成了一个聚类问题
(1)E-step
a. 统计每个类别c有多少个实例
$\overline{M_{\theta^{(t)}}}[c]=\sum_m P(c|x_1[m],\cdots,x_n[m],\theta^{(t)})$
其中$P(c|x_1[m],\cdots,x_n[m],\theta^{(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_{\theta^{(t)}}}[x_i,c]=\sum_m P(c,x_i|x_1[m],\cdots,x_n[m],\theta^{(t)})=\sum_{m:x_i[m]=x_i}P(c|x_1[m],\cdots,x_n[m],\theta^{(t)})$
其中$P(c,x_i|x_1[m],\cdots,x_n[m],\theta^{(t)})=\begin{cases}0&x_i\ne x_i[m]\\P(c|x_1[m],\cdots,x_n[m],\theta^{(t)})&x_i=x_i[m]\end{cases}$
(2)M-step
a. 计算每个类别c的概率
$\theta_c^{(t+1)}=\frac{\overline{M_{\theta^{(t)}}}[c]}{M}$
b. 计算每个类别c里,每个feature各个取值的概率
$\theta_{x_i|c}^{(t+1)}=\frac{\overline{M_{\theta^{(t)}}}[x_i,c]}{\overline{M_{\theta^{(t)}}}[c]}$
第三节 EM算法分析
1. 定义几个变量:
$d$:某实例中观察到的变量值。
$H$: 某实例中的隐藏变量。
$Q(H)$:隐藏变量的分布率,通常指当前优化出来的$\theta^{(t)}$
2. 首先,我们假设H已经观察到了取值h,在这种情况下计算$\langle d,h\rangle$取值在$\theta$下发生的似然(单个数据实例的似然):
$L(\theta,\langle d,h\rangle)=P(d,h|\theta)=\prod_i\prod_{(x_i,\boldsymbol u_i)\in Val(Xi,Pa_{X_i})}\theta_{x_i|\boldsymbol u_i}^{1_{\langle d,h\rangle}[x_i,\boldsymbol u_i]}$
其中$1_{\langle d,h\rangle}[x_i,\boldsymbol u_i]$代表$(x_i,\boldsymbol u_i)$是否和$(d,h)$中对应的变量值相等。可以看出,对于和d中一致的$(x_i,\boldsymbol u_i)$,就乘上了对应的概率,否则乘1,不影响乘积。
而对数似然为:
$l(\theta,\langle d,h\rangle)=\prod_i\prod_{(x_i,\boldsymbol u_i)\in Val(Xi,Pa_{X_i})}1_{\langle d,h\rangle}[x_i,\boldsymbol u_i]\log\theta_{x_i|\boldsymbol u_i}$
3. 但是H并没有观察到,所以去掉假设,用$H$的分布$Q(H)$,对上述函数求期望值,得出期望对数似然(ELL):
$E_{Q(H)}[l(\theta:\langle d,H\rangle)]=$
$=\sum_{h'}Q(h')\sum_i\sum_{(x_i,\boldsymbol u_i)\in Val(X_i,Pa_{X_i})}1_{\langle d,h'\rangle}[x_i,\boldsymbol u_i]\log\theta_{x_i|\boldsymbol u_i}$
$=\sum_i\sum_{(x_i,\boldsymbol u_i)\in Val(X_i,Pa_{X_i})}(\sum_{h'}Q(h')1_{\langle d,h'\rangle}[x_i,\boldsymbol u_i]\log\theta_{x_i|\boldsymbol u_i})$
$=\sum_i\sum_{(x_i,\boldsymbol u_i)\in Val(X_i,Pa_{X_i})}Q(x_i,\boldsymbol u_i)\log\theta_{x_i|\boldsymbol u_i}$
注意,无法方便地求likelihood的期望值,因为求和要转换为乘积,无法得出有效表达式。所以这里改求log likelihood的期望值
4. 我们定义$Q_m^{(t)}(H[m])=P(H[m]|d[m],\theta^{(t)})$,带入上式Q,并对m个数据实例求和:
$\sum_m E_{Q_m^{(t)}(H[m])}[l(\theta:\langle d,H\rangle)]=\sum_i\sum_{(x_i,u_i)}\sum_m P(x_i,u_i|d[m],\theta^{(t)})\log\theta_{x_i|u_i}$
$=\sum_i\sum_{(x_i,u_i)}\overline{M_{\theta^{(t)}}}[x,\boldsymbol u]\log\theta_{x_i|u_i}$
可以看出,本节定义的ELL(期望对数似然)刚好就是用前一节定义的ESS(期望充分统计量)在参数$\theta^{(t)}$计算出来的对数似然。
个人理解:期望对数似然(ELL)是在概率取对数后做期望(加权平均),巧妙地避开了加法和乘法混在一起导致多个局部最优解的问题。而观察第一节原表达式$l(D:\theta)$,是概率做期望后取对数,两者并不相同。可以认为在用ELL逼近真实的$l(D:\theta)$,而且从图上看,可以看出两者在$\theta^{(t)}$处的取值和斜率都一样。
5. EM可以保证:
(1) $L(D:\theta^{(t+1)})\ge L(D:\theta^{(t)})$
(2) 如果$L(D:\theta^{(t+1)}=L(D:\theta^{(t)})$,则达到局部最大值。局部最小值几乎不可能,因为每次迭代都是增大的,除非一开始就选中了局部最小值。
第四节 EM在实际中的表现
1. 收敛
(1)前面(10步)往往收敛很快
(2)后面收敛变得很慢,但是参数的变化却很大
(3)过多次数可能过度拟合,导致测试集的乘积开始缓慢下降
2. 局部最优
(1)数据较少时,发现的局部最优点很多,随着M增大,开始减少
(2)缺失数据较少,局部最优减少得快
(3)如果一个变量完全未观察到,即使缺失数据所占比例不大,局部最优解也一直很多,哪怕数据再多。
(4)局部最优解的值差异也很大,不能忽略,随着发现的局部最优点增多,最终解会不断优化。
3. 因为局部最优解差异很大大,所以初始化很重要
(1)采用多个随机初始点
(2)使用先验知识
(3)使用简单的聚类算法来填充部分缺失值
第五节 隐藏节点的学习
1. 聚类:朴素贝叶斯,C变量为latent,实现自动聚类
2.