概率图模型课堂笔记 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.

posted on 2017-02-01 00:00  米老虎M  阅读(278)  评论(0编辑  收藏  举报

导航