文章目录
如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~
花书+吴恩达深度学习(二三)结构化概率模型(贝叶斯网络、马尔可夫网络)
花书+吴恩达深度学习(二四)蒙特卡罗方法(重要采样,MCMC)
花书+吴恩达深度学习(二五)直面配分函数(CD, SML, SM, RM, NCE)
花书+吴恩达深度学习(二六)近似推断(EM, 变分推断)
0. 前言
在基于概率的模型中,都需要计算如下概率分布:
p ( x ; θ ) = 1 Z ( θ ) p ~ ( x ; θ ) p(x;\theta)=\frac{1}{Z(\theta)}\tilde{p}(x;\theta) p(x;θ)=Z(θ)1p~(x;θ)
对于一些不得不计算 p ( x ) p(x) p(x)的模型,本章将介绍一些方法。
1. 对数似然梯度
通过最大似然学习无向模型的困难在于配分函数依赖于参数:
∇ θ log p ( x ; θ ) = ∇ θ log p ~ ( x ; θ ) − ∇ θ log Z ( θ ) \nabla_\theta \log p(x;\theta)=\nabla_\theta \log \tilde{p}(x;\theta)-\nabla_\theta \log Z(\theta) ∇θlogp(x;θ)=∇θlogp~(x;θ)−∇θlogZ(θ)
当满足一些特定条件时,有:
∇ θ log Z = E x ∼ p ( x ) ∇ θ log p ~ ( x ) \nabla_\theta \log Z=\mathbb{E}_{x\sim p(x)}\nabla_\theta \log \tilde{p}(x) ∇θlogZ=Ex∼p(x)∇θlogp~(x)
这将问题分为了正相和负相。在正相中,我们增大从数据中采样得到的 log p ~ ( x ) \log \tilde{p}(x) logp~(x)。在负相中,我们降低从模型分布中采样的 log p ~ ( x ) \log \tilde{p}(x) logp~(x)。
1.1 朴素 MCMC 算法
算法如下图所示(图源:深度学习):
内循环中磨合马尔可夫链的计算代价过高,导致这个过程在实际中是不可行的。
1.2 对比散度算法 CD
算法如下图所示(图源:深度学习):
初始时,数据分布并不接近模型分布,因此负相并不是非常准确,但是正相可以准确的增加数据的模型概率,经过一段时间后,模型分布会接近数据分布,负相开始变得准确。
CD未能定性的实现真实负相的原因是,它不能抑制远离真实训练样本的高概率区域,这些区域在模型上具有高概率,但是在数据生成上具有低概率,称为虚假模态。
基本上,除非 k k k非常大,模型分布中远离数据分布的峰值不会被使用训练数据初始化的马尔可夫链访问到。
1.3 随机最大似然 SML
又称为持续性对比散度 PCD,算法如下图所示(图源:深度学习):
基本思想是,只要随机梯度算法得到的步长很小,那么前一步骤的模型将类似于当前步骤的模型。因此,来自先前模型分布的样本将非常接近来自当前模型分布的客观样本,用这些样本初始化的马尔可夫链将不需要花费很多时间来完成混合。
2. 伪似然
蒙特卡罗近似配分函数及其梯度需要直接处理配分函数。而无向模型中很容易计算概率的比率:
p ( x ) p ( y ) = 1 Z p ~ ( x ) 1 Z p ~ ( y ) = p ~ ( x ) p ~ ( y ) \frac{p(x)}{p(y)}=\frac{\frac{1}{Z}\tilde{p}(x)}{\frac{1}{Z}\tilde{p}(y)}=\frac{\tilde{p}(x)}{\tilde{p}(y)} p(y)p(x)=Z1p~(y)Z1