贝叶斯推断祭

note

比CSDN的公式编写好多了。

Introduction

去年暑假的时候开始了贝叶斯推断方面的工作,当时主要是针对deblurring,国庆节后,种种原因不了了之。前几天看到一个研究方向统计中,Bayes Inference名列decrease榜前列,再想想更早前惊讶地发现一篇GAN展望的冠名作者的名字与当时买的某本Graphic Model巨著译本主持人的名字是一致的(此处,并没有专家速成的意思,虽然当时也闪过这念头)。没有什么足够评论的,整理了之前关于这方面的一些想法,缅怀衰退中的统计推断和当时狂热的少年。

Variational Inference

了解到VI始于这篇经典之作,当时感到很神奇,靠一些简单的假定就可以把结果输出来。只是当时拿到后立即按照公式去走,发现走不通,后面才延伸到VI方面的内容,之后发现这是VMP出现前的方式,所以带有些trick的成分。

VI是种思路,VMP提供了种求解范式。关于这两者,可以通过文末的Reference有个粗略的了解(我掌握的主要来自于这几篇),顺便提一下当时还找到一些关于Ensemble Learning(见参考文,Harri 2000)的线索(主要是在Rob Fergus,2006 中见到的)。但这个 ensemble learning 和后面的周公的集成学习感觉不是一个事情,当时发现检索出来的文档说的不是自己想要的。这里更多地在强调积分。

VMP VS. EM

这部分的内容来自当时做完一些程序测试后的文档的。做关于和EM方法的比较是因为,在参考的相关文献中,几乎都是拿混合高斯来作范例的。先是EM和GMM的内容,然后介绍对比的内容。

(EM) of (Guassian~Mixture)

(EM)放在这里是因为,引导我去走走(EM)的原因是经常看到稀疏先验。我发现(在我的理解范围内),很多关于此的文字总会将(Mixture of Guassian)(Guassian Mixture)扯在一起,其关键处是引入一个(c_i=[0 cdots1~0cdots0])的指引变量,至此之后翻天覆地,我也陷入云里雾里:这两个到底什么关系啊,怎么说着说着就去解另一个了?怎么证明这两个是等价的?

这次我关注的不是这两名称是谁山寨谁,而是怎么用(EM)求解
(Guassian Mixture)。为什么用(Guassian~Mixture)是因为我最先做毕业设计时看到的文献是这样称呼的,而我也认为它能暗示拟合任意分布。

我先来做出定义(Guassian~Mixture:)
egin{eqnarray}label{eq:guassianMixture}
p(x)=sum_{k=1}{M}pi_kmathcal{N}(x;u_k,sigma_k2)
end{eqnarray}

本文讨论一维变量,就我在这一过程中的感受,维数不是本文涉及的问题,所以这是足够的。于是,我开始进行数学描述,而在这之前,我要声明一些记号,使用这样的记号,我也是经历了从最开始不理解和ignore到突然地醒悟,但我发现关于该问题的讨论中,作者们并不强调这一点,这是我不理解的,或许我此刻的理解仍是荒谬的。
记号(P_x(x))表示对变量(x)的概率,看起来有些弱;我再来引出一个:
egin{equation}label{def:PVar}
P_{xi}(xi)
end{equation}
表示对变量(x^i)的概率。这是第一个小结点。

于是,可以开始了。
对第(i)个观测(x^i),
egin{equation}
P_{xi}(xi;pi, heta)=sum_{k=1}^{M}pi_kmathcal{N}
(x^i;u_k,sigma_k)
end{equation}

引入(Hidden~Variable~c):

[egin{equation} P_{x^i,~c^i}(x^i,c^i; heta)= P_{x^i}(x^i|c^i; heta)P_{c^i}(c^i; heta) end{equation} ]

其中,(c^iin{1cdots M})

与我看到的介绍不同,此处我没有使用通常的(c^i=(0cdots1cdots0)^T)定义。因为我发现这种定义从理论和实际上,都能够将问题求解,并且解释起来没有后者痛苦(说实话,后者至少对我而言,难以从直观上解释

[egin{equation} P_{x^i,~c^i}(x^i,c^i; heta)= prod_{k=1}^{M}mathcal{N}^{c^i_k} (x^i; heta) end{equation} ]

这样的式子。)

于是独立重复抽样:

[egin{equation} P(X)=prod_{i=1}^{N}P_{x^i}(x^i; heta)=prod_{i=1}^{N} sum_{c^i=1}^{M}P_{x^i,~c^i}(x^i,c^i; heta) end{equation} ]

这样,就开始走上(EM)的体系了,

[egin{eqnarray} l( heta)&=&ln P(X)=sum_{i=1}^{N} ln P_{x^i}(x^i; heta) onumber\ &=&sum_{i=1}^{N}ln sum_{c^i=1}^{M} P_{x^i,~c^i}(x^i,c^i; heta) onumber\ &=&sum_{i=1}^{N}lnsum_{c^i}^{M}frac{P_{x^i,~c^i} (x^i,c^i; heta)} {Q(c^i)}Q(c^i) end{eqnarray} ]

现在马上要进行(E)步,而原因就是希望:

[egin{eqnarray}label{eq:E} frac{P_{x^i,~c^i}(x^i,c^i; heta)}{Q(c^i)}equiv const. end{eqnarray} ]

来看( ef{eq:E})的意义。为什么呢?(EM)不是很清楚的写明了是为了进行不等式推进吗?这里有个问题:为什么没有用(Q(x^i)) replaces (Q(c^i))?原因在于( ef{eq:E})的成立是 with respect to (c^i),而这又是因为要针对的,是(sum_{c^i=1}^{M})继续,
egin{equation}
Q(ci)=P_{ci}(ci|xi; heta)
end{equation}

这样后,
egin{equation}label{eq:EM}
l( heta)=sum_{i=1}{N}sum_{ci=1}{M}Q(ci)ln
frac{P_{xi}(xi|ci; heta)P_{ci}(ci)}{Q(ci)}
end{equation}

此处已经完全进入预期路线了,但我还想表达,(eqref{def:PVar})的
定义使演算过程清晰,也减少了对最终表达式进行分析可能出现的困惑。
比如,
(eqref{eq:EM})中(P_{c^i}(c^i))的标记对比(P(c^i))这样的记号,使人明白这是一个关于“种类”的先验,而不是一个关于抽样样本的分类。于是,可以明白,它只能取(M)个值中的一个,而不是(N)个中的一个。这对整个问题的理解以及最终的求解都是关键的。

VMP VS. EM

前面将(VMP)(EM)的方法在(julia) coding 和 run 了下,结果和预期一致。(VMP)是我很关注的方法,它提供了一个整合先验信息与观测信息的框架 (我是不是应该说是(Graphic~Model)...,呃,那么求解方法吧,总之你明白我的意思) ,这被我认为是一种普遍性的方法。自然,如果还有(Sampling~Method)辅助,更加Powerful。

(EM)被我理解为求解先验信息的方法。呃,我想的话,(VMP)也是可以用来计算先验信息的(你可以将先验信息设置为0,等价于盲估计),具体地来说,就是,你要对先验信息设置它的先验信息((Parent~Nodes))通俗地讲,对人来说,我就是想要你求先验,你还要我给出先验的先验,扯淡~于是我就随意(胡扯地)给你些来糊弄你。

(EM)不需要输入先验(用的是似然)。两者给我的感觉是,(EM)适合对某一类的现象(你觉得它应该有规律)求解,输出关于这一类的现象的规律;(VMP)利用求出的规律信息(作为先验),对某一具体问题求解(具体问题具体分析)。这一观点只是些感性认识,我没有理论的联系,说实话,对这两的理论联系,我也浑浑噩噩;只是觉得(VMP)更精确,因为它利用了观测数据。唉,我也搞烦了,拿起笔来舞两下:

(EM:)
egin{equation}label{eq:EMdef}
heta^*=argmax_{ heta}P(x| heta)
end{equation}

(VMP:)

[egin{eqnarray} heta^*&=&int zeta Q^*( heta=zeta|x) ag{6}label{eq:VMPdef1}\ Q^*( heta)&=&argmin_{q( heta)}KL(q( heta)|| P( heta|x) )label{eq:VMPdef2} end{eqnarray} ]

我也觉得上面的式子不利于聊天,一种简单的理解方式(没发现bookmarks郁闷了会儿,我们继续):

(VMP-Alternative:)

[egin{eqnarray}label{eq:VMPdefAltenative} heta^*=argmax_{ heta}P( heta|x) end{eqnarray} ]

那么如何求解(P( heta|x))?

[egin{eqnarray} label{eq:sovlePosteri} P( heta|x)=frac{P(x| heta)P( heta)}{P(x)} =frac{P(x| heta)}{int_{ heta}^{}P(x| heta) P( heta)} end{eqnarray} ]

写到这了,就顺便写些:(VMP)的存在就是为了这个积分,(Sampling~Method)也是。

关于(eqref{eq:VMPdef1}),按照我的理解,Harri2000Ensemble中的几幅图解释得明了。

这几个式子抬出来,似乎能说明为什么(VMP)更为精确,它利用的是后验概率。怎么来理解呢?看起来两种方法都在描述一个过程:
寻找到一组能很好解释观测数据的参数。(eqref{eq:EMdef})与(eqref{eq:sovlePosteri})的对比,更为细致地描述了其中的区别:先验信息((P( heta)))是否被考虑。

可以看出,(EM)更像一种独立分布:将参数分布均值化;
(VMP)则认为这些参数是有规律的。

。。。写了那么长了,还没有开始讲我写本段时想写的内容,晚上还要上课,后面再补。

像前面还没写关于(VMP)(Note),我后面再记录,或者直接在这段描述,看心情了。

note

可惜后面没有再继续往下写了。另外数学公式label的时候总是预览失真,但在正是浏览版中却是对的...搞了好半天。

Experiments

这是一些在julia上做的一些测试。主要是检查一下是否理解了VMP的使用(至少达到基本),另外一直认为算法如果不能跑起来就让人感到挫败。
Graphic Model如图(刚从CSDN搬过来,回去把原图附上):
graphic Model

用两百个样本看看效果:
VMP
结果是不错的,记得当时兴奋得不行。

后记

翻看以往,仿佛又重新感受了当时感受到的Bayes Inference的强大(主要是指自认为的具有整合信息的性质)。而如今种种迹象表明贝叶斯已经步入衰败——或许应该说经典步入了衰败,在深度计算大旗肆掠的当下,如飘零的黄叶。

Appendix

附上程序:

using PyPlot# markdown 有些抽风 
sigma=20;
u0=10;
alpha=50;
beta=3;
m=8;
delta=10;
sampleSize=200
iter=10;
samples=randn(sampleSize)/sqrt(sigma)+u0;
exp_u=0f0;
exp_u2=0f0;
exp_delta=0f0;
exp_m=0f0;
exp_sigma=0f0;
exp_alpha=0f0;
exp_beta=0f0;
logg=zeros(iter,2)

for it=1:iter

	exp_beta=beta+1/2*sum(samples.^2-2*samples*exp_u+exp_u2)
	exp_alpha=alpha+1/2*sampleSize
	exp_sigma=exp_alpha/exp_beta;
	exp_delta=delta+sampleSize*exp_sigma
	exp_m=(m*delta+exp_sigma*sum(samples))/exp_delta
	exp_u=exp_m[1]
	exp_u2=exp_m^2+1/exp_delta;
	logg[it,2],logg[it,1]=exp_sigma,exp_u

end



plot(logg[:,1],color="red",label="Mean(groundTruth:$(u0))");
plot(logg[:,2],color="blue",label="Precise(groundTruth:$(sigma))
sampleSize:$(sampleSize)");
xlabel(L"iteration")
ylabel(L"estimation")

tick_params(labelsize=20)
legend(fontsize=5)

References

Rob Fergus, Barun Singh, Aaron Hertzmann, Sam T. Roweis, William T. Freeman. Removing Camera Shake from a Single Photograph, 2006.

David M. Blei. Variational Inference

David M. Blei, Alp Kucukelbir and Jon D. McAuliffe . Variational Inference: A Review for Statisticians, 2016.

一又七分之四. Variational Inference, 2012.

John Winn, Christopher M. Bishop. Variational Message Passing, 2004.

Christopher M. Bishop. Pattern Recognition and Machine Learning, 2006

Harri Lappalainen and James W. Miskin. Ensemble Learning ,(应该是)2000.

原文地址:https://www.cnblogs.com/chenyliang/p/6775691.html