概率图模型课堂笔记:3.1&3.2 贝叶斯网的参数估计

1.1 概论

1. 根据目标概率分布P*(或对应的概率图M*)的数据样本,以及专家给出的预设,学习出一个概率图网络

2. 几种不同的情况:

(1)已知结构,数据完整

(2)未知结构,数据完整

(3)已知结构,数据不完整

(4)未知结构,数据不完整(有可能需要增加隐藏结点)

3. PGM学习的几个任务:

(1)回答Query,如P(X), P(X|Y)。一个简单的指标是训练集似然$P(D:M)$,但是更好的是用测试集似然$P(D':M)$来评价。

(2)根据一些已知变量x推测未知变量y的值。虽然预测准确率是第一要务,但是从数学表示上,似然是最方便的。如$\prod_mP(y[m]|x[m]:M)$

(3)直接关于结构的研究:例如发现变量之间直接和间接的依赖关系,发现依赖方向(箭头方向),发现隐藏变量。通常也用最大似然来学习,虽然不一定是最好,但是数学上方便。评价的话,一般看看学习出的结构和我们已知的有限结构是否符合。

4. 避免过度拟合,过度拟合有两种

(1)参数的过度拟合:参数过度拟合训练数据中的噪声,一般用regularzation/param priors来处理,后者将详细介绍。

(2)结构的过度拟合:一般来说,结构越复杂,似然值越高,一般用结构复杂度惩罚来处理

5. 过渡拟合一般通过上述的超参数来处理。超参的选择一般要引入第三个数据集:cross validation数据集。回顾机器学习中关于多项式次数的选择。

6. PGM学习(相对其他机器学习方法)的优势:

(1)预测结构化的数据(例如序列,整个图,树)。因为通常能发现不同目标变量之间的关系。

(2)可以将先验知识用于结构中

(3)一个模型处理多个任务(?大概是结构相同但是参数不同)

(4)知识发现框架(?)

 

1.2 最大似然估计

1. 考虑丢非均匀硬币实验(伯努利模型),$P(X=1)=\theta,P(X=0)=1-\theta$

(1) M次抛掷,对每次结果定义变量$X[1],X[2],\cdots,X[M]$,在概率图上表示是$P(X[m]=1|\theta)=\theta,P(X[m]=0|\theta)=1-\theta,且X[m]\perp X[j]|\theta$

(2) 我们有$P(x[1],x[2],\cdots,x[M]|\theta)=\prod_{m=1}^MP(x[m]|\theta)=L(\theta:D)$,即似然值。

(3) 例如,对$X=[1,1,1,0,0]$我们有$L(\theta:D)=\theta^3\cdot (1-\theta)^2$,在$\theta=0.6$取到最值。

2. 充分统计量

(1) 对单个采样$X[m]$,我们定义一个从采样空间到$\mathbf R^k$的函数$s(X[m])$。对数据集$D$,则定义$s(D)$为每个$s(X[m])$的和。若对数据集$D$,其似然值只和$s(D)$相关,我们称$s$为充分统计量。

(2) 对于有$k$个取值的随机变量X,数据集$D$的似然值只和每个值出现的次数$M_i$有关,即$s[x]=[0,0,\cdots\,1,\cdots,0,0]$。

似然值$L(\theta:D)=\prod_{i=1}^k\theta_i^{M_i}$,当$\theta_i=M_i/k$时,L获得最大值

(3) 对高斯分布来说,$P(X=x|\mu,\sigma)=\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{1}{2\sigma^2}x^2+\frac{\mu}{\sigma^2}x-\frac{\mu^2}{\sigma^2})$,那么对数据集:

 $L(\theta:D)=P(x_1,x_2,\cdots,x_M|\mu,\sigma)=\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{1}{2\sigma^2}\sum_mx_m^2+\frac{\mu}{\sigma^2}\sum_mx-\frac{M\mu^2}{\sigma^2})$

令$s(x)=(x^2,x,1)$,则$s(D)=(\sum_mx[m]^2,\sum_mx[m],1)$

当$\mu=\frac 1 M\sum_mx[m],\sigma=\sqrt{\frac 1 M\sum(x[m]-\mu)^2}$时,L取得最大值。

 

1.3 贝叶斯网的最大似然估计

1. 对于贝叶斯网的图来说,其实参数可以认为就是变量本身的分布率,只是因为多个采样共用相同的分布率形成了一个Plate Model,所以把共有的分布率提取为参数变量放在Plate外面。

2. 以$X\to Y$这个model为例,

$L(\Theta:D)$

$\displaystyle =\prod_{m=1}^MP(x[m],y[m]:\theta)$ // 每个样本x[m],y[m]的联合概率,全都乘起来,就是整个数据集的似然值。

$\displaystyle =\prod_{m=1}^MP(x[m]:\theta)P(y[m]|x[m]:\theta)$ // 条件概率的定义

$\displaystyle =\prod_{m=1}^MP(x[m]:\theta)\prod_{m=1}^MP(y[m]|x[m]:\theta)$ //乘法交换律

$\displaystyle =\prod_{m=1}^MP(x[m]:\theta_X)\prod_{m=1}^MP(y[m]|x[m]:\theta_{Y|X})$

$=L_x(\Theta_x:D)L_y(\Theta_{Y|X}:D)$

可以看出,其实就是每个变量在每个样本中的值发生的条件概率乘起来。这里要注意,虽然不同的变量被分开累乘了,但是因为$Y[m]$依赖$X[m]$,所以计算$L_y(D:\Theta_{Y|X})$的时候还是要从对应的$X[m]$查各个$P(Y[m]|X[m])$

3. 对表格(factor)形式的CPD来说,$\displaystyle L(\theta_{X|U}:D)=\prod_{m=1}^MP(x[m]|u[m]:\theta_{X|U})$,将所有因子按$x,u$的取值聚类,得$\prod_{x,u}\theta_{x,u}^{M_{x,u}}$

所以最大似然估计是$\hat{\theta}_{X|U}=M[x,u]/M[u]$,即数据集中(x,u)同时出现的次数除以u出现的次数。

4. 对于状态机来说,如果$S_i\to S_j$的转移概率有一张表,给定一个状态转移序列$S_0,S_1,\cdots,S_T$,则

$L(\theta:S^{(0,T)})$

$\displaystyle =\prod_{t=1}^TP(S^{(t)}|S{(t-1)}:\theta)$

$\displaystyle =\prod_{i,j}\prod_{t:S^{(t)}=i,S{(t+1)}=j}P(S^{(t+1)}|S{(t)}:\theta_{S'|S})$ // 根据不同的转移对来聚类

$\displaystyle =\prod_{i,j}\prod_{t:S^{(t)}=i,S{(t+1)}=j}\theta_{s^i\to s^j}=\prod_{i,j}\theta_{s^i\to s^j}^M[s^i\to s^j]$。 // 即每次转移的转移概率乘起来

那么$\theta_{s^i\to s^j}=M[s^i\to s^j]/M[s^i]$

5. 空间爆炸问题。考虑$\theta_{X|U}=M[x,u]/M[u]$,u的取值数量和所含变量成指数增长,那么取样空间也会非常巨大。而样本往往十分有限,这种情况估算出来的值很可能非常不准。解决方法是尽量采用简单的结构和少的边。哪怕因此引入了错误的独立假设,也通常比正确但过于复杂的结构要好。

 

1.4 贝叶斯估计

1. 最大似然估计的局限性:无法区分5:5和5000:5000,后者对0.5概率的置信度更高

2. 贝叶斯估计将参数视为随机变量,并假定一个分布律。通过$P(\theta|x[1],x[2],\cdots,x[M])=\frac{P(x[1],x[2],\cdots,x[M]|\theta)P(\theta)}{\sum_{\theta'}P(x[1],x[2],\cdots,x[M]|\theta')P(\theta')}$来估算$\theta$的取值。分母是常量,与$\theta$取值无关,这点教程有误。

3. 对多项分布的参数可采用Dirichlet分布:$P(\theta_1,\theta_2,\cdots,\theta_k)=\frac 1Z\prod_{i=1}^k\theta_i^{\alpha_i-1}$。其中$\alpha_i$表示每个值出现的次数。Z代表归一分母,和参数值无关,这里从略。

对二项分布而言,$P(\theta)=\frac 1Z\theta^{\alpha_1-1}(1-\theta)^{\alpha_2-1}$。$\alpha_i$的值越大,$P(\theta)$的函数值越上凸。

4. $P(\theta|D)=P(D|\theta)P(\theta)/P(D)\propto P(D|\theta)P(\theta)\propto\prod_{i=1}^k\theta_i^{M_i}\prod_{i=1}^k\theta_i^{\alpha_i-1}=\prod_{i=1}^k\theta_i^{M_i+\alpha_i-1}$

从这个式子可以看出,如果$\theta$的先验分布是$Dir(\alpha_1,\cdots,\alpha_k)$,新增了样本之后,后验概率依然是Dirichilet分布,只是参数变了:$Dir(\alpha_1+M_1,\cdots,\alpha_k+M_k)$。这是个非常好的属性,因为一堆额外的样本出现后,可以很简单地计算后验概率。而不需要重新去考虑原来的样本。

5 使用贝叶斯估计,可以将参数的确定变成一个推理问题。

 

1.5 贝叶斯预测

1. 问题描述:根据已有样本$X[1],X[2],\cdots,X[M]$,推测新样本$X[M+1]$的分布。

2. 对基本BN单元$\mathbf{\theta}\to X$(注意$\mathbf{\theta}$是向量型随机变量)。已知$\mathbf{\theta}\sim Dir(\mathbf{\alpha})$,则

$P(X)=\int_{\mathbf{\theta}}P(X|\mathbf{\theta})P(\mathbf{\theta})$

$P(X=x^i)$   (教程写成P(X=x^i|\theta)有误)

$=\int_{\mathbf{\theta}}P(X=x^i|\mathbf{\theta})P(\mathbf{\theta})d\mathbf{\theta}$

$=\int_{\mathbf{\theta}}(\theta_i\cdot \frac 1Z\prod_j\theta_j^{\alpha_j-1} d\mathbf{\theta})$

$=\frac{\alpha_i}{\sum_j\alpha_j}$

3. 预备知识:对图$A\to B\to C, P(C|A)=\frac{P(C,A)}{P(A)}=\frac{\sum_BP(C,B,A)}{P(A)}=\frac{\sum_BP(C|B,A)P(B,A)}{P(A)}=\sum_BP(C|B)P(B|A)$

对于$A\leftarrow B\leftarrow C$,结果也一样。只要不是V字型,箭头方向不影响结果。

4. 对于1中提出的问题,我们有$P(x[M+1]|x[1],x[2],\cdots,x[M])=\int_\mathbf{\theta}P(x[M+1]|\mathbf{\theta})P(\mathbf{\theta}|x[1],x[2],\cdots,x[M])d\mathbf{\theta}=\frac{\alpha_i+M_i}{\sum_{j=1}^M\alpha_j+M_j}$

可以看出,$x[1],x[2],\cdots,x[M]$作为evidence增强了$\theta$对分布的信心。

5. 已二项分布为例,令$\theta$的先验分布为Dir(1,1),当有0个例子的时候,$\theta$取每个值的概率是相等的,但是真正投掷的时候,发现正反面是按4:1的概率出现,随着实例的增多,后验概率$P(\theta|x[1],x[2],...x[M])$在4:1的值越来越大,冲淡了先验的假设。

当$\theta$的先验分布为Dir(10,10),这个冲淡的速度要慢的多。

当$\theta$的先验分布为Dir(0,0),可以认为退化成了MLE。MLE对噪音要敏感很多。尤其是初期。而$\alpha$的值某种程度上缓和了这种影响。

6. 贝叶斯预测组合了假想的Dirichlet分布和实际数据的分布。随着数据增多,最后渐近到实际数据的分布。一般来说,对于数据较少的情况,贝叶斯预测往往要更加健壮一些。

 

1.6 贝叶斯网预测

1. 独立性:通过分析图的有效迹,我们知道:

(1)任意两个实例在给定所有参数的情况下独立

(2)任意隶属不同变量的参数之间独立

(3)在给定完整数据的状态之下,任何两个参数变量独立。即$P(\theta_X,\theta_{Y|X}|D)=P(\theta_X|D)P(\theta_{Y|X}|D)$。

因此,每个参数都可以单独统计

(4)在给定完整数据的状态之下,对条件参数$\theta_{X|U}$,以及任意的$u_1\ne u_2$,我们有$\theta_{X|u_1}\perp \theta_{X|u_2}$。

因此,如果先验分布为$P(\theta_{X|u})\sim Dirichlet(\alpha_{{x^{(1)}}|u},\alpha_{{x^{(2)}}|u},\cdots,\alpha_{{x^{(k)}}|u})$,

则后验分布为$P(\theta_{X|u}|D)\sim Dirichlet(\alpha_{{x^{(1)}}|u}+M[x^{(1)},u],\alpha_{{x^{(2)}}|u}+M[x^{(2)},u],\cdots,\alpha_{{x^{(k)}}|u}+M[x^{(k)},u])$

上面是条件参数,对非条件参数,去掉上面式子中的“|u”即可

2. 先验分布的选择。

(1)先设定一个初始分布$\Theta_0$,一般是均匀分布。

(2)制定一个全局统一的先验分布的强度值$\alpha$

(3)$\alpha_{x|u}=\alpha\cdot P(x,u|\Theta_0)$,例如,如果x和u都是01变量,那么$(x,u)$共有4个取值组合,则$P(x,u|\Theta_0)=1/4$,$\theta_{X|u=0}\sim Dir(\alpha/4,\alpha/4),\theta_{X|u=1}\sim Dir(\alpha/4,\alpha/4)$

我们可以发现,$\alpha_{x|u}$中取值组合越多(如变量越多,或单个变量的取值范围越多),对应的$\alpha_{x|u}$越小,这个是正确的,因为数据集落在每个取值上的概率要变少,那么先验分布的强度就应该相应降低。

3. 在医疗BN中发现,采用贝叶斯方法比MLE的收敛程度更快,接近真实值程度也越高。当$\alpha$取值很高,效果会差一点,但是还是比MLE要好。

4. 总结:MLE和贝叶斯都是用的充分统计量。

MLE: $\hat{\theta}_{x|u}=M[x,u]/M[u]$

Dir: $P(x|u,D)=\frac{\alpha_{x|u}+M[x,u]}{\alpha_u+M[u]}$

形式很相似,只是后者多了一个先验分布,这个需要预先设计。

posted on 2017-01-24 16:05  米老虎M  阅读(410)  评论(0编辑  收藏  举报

导航