我是靠谱客的博主 糊涂歌曲,最近开发中收集的这篇文章主要介绍机器学习笔记之近似推断(一)从深度学习角度认识推断引言,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

机器学习笔记之近似推断——从深度学习角度认识推断

  • 引言
    • 推断——基本介绍
    • 精确推断难的原因
      • 虽然能够表示,但计算代价太大
      • 无法直接表示

引言

本节是一篇关于推断总结的博客,侧重点在于深度学习模型中的推断任务。

推断——基本介绍

推断( Inference text{Inference} Inference)——我们并不陌生,在介绍的每一个概率模型,基本都涉及到推断问题。关于概率模型的三大核心问题分别是:表示( Representation text{Representation} Representation),推断学习( Learning text{Learning} Learning)。我们从深度模型,主要是深度生成模型所涉及的推断任务出发,对推断进行描述。

首先,是什么样的原因,导致了推断这个任务的发生?换句话说,推断的动机是什么。

  • 我们基于可观察的样本特征 X mathcal X X,构建概率图模型。如果包含隐变量 Z mathcal Z Z,而隐变量 Z mathcal Z Z绝大多数情况下没有物理意义,它只是我们建模过程中人工设置出来的随机变量。

    Z mathcal Z Z一上来就是未知的,但为了完善被构建的模型,我们有必要了解隐变量 Z mathcal Z Z的特征信息。从哪里去了解/通过什么渠道去了解 Z mathcal Z Z? 从 样本 X mathcal X X

    当样本 X mathcal X X进入到模型后, Z mathcal Z Z会产生什么样的反映,而这个反映就是隐变量 Z mathcal Z Z的特征信息,即 P ( Z ∣ X ) mathcal P(mathcal Z mid mathcal X) P(ZX)。而推断就是求解 Z mathcal Z Z特征信息 P ( Z ∣ X ) mathcal P(mathcal Z mid mathcal X) P(ZX)的手段。因此:推断的第一个动机就是推断自身。我们需要通过样本 X mathcal X X的渠道,将 Z mathcal Z Z的特征信息描述出来

  • 关于推断的另一个动机来自于模型的学习任务。也就是说,在模型参数 θ theta θ的学习过程中,可能存在 不可避免地使用推断

    一个经典例子就是受限玻尔兹曼机( Restricted Boltzmann Machine,RBM text{Restricted Boltzmann Machine,RBM} Restricted Boltzmann Machine,RBM)。在受限玻尔兹曼机基于极大似然估计来求解对数似然梯度 ∇ θ [ log ⁡ P ( v ( i ) ; θ ) ] nabla_{theta} left[log mathcal P(v^{(i)};theta)right] θ[logP(v(i);θ)]的过程中,可将对数似然梯度描述为如下形式:

    • 需要注意的是,针对某个观测样本 v ( i ) v^{(i)} v(i),我们并没有将所有参数的对数似然梯度都求出来,仅求解的是 v ( i ) v^{(i)} v(i)中某一随机变量 v j ( i ) v_j^{(i)} vj(i)与对应模型中隐变量 h ( i ) h^{(i)} h(i)的某一随机变量 h k ( i ) h_k^{(i)} hk(i)之间的模型参数 W v j ( i ) ⇔ h k ( i ) mathcal W_{v_j^{(i)} Leftrightarrow h_k^{(i)}} Wvj(i)hk(i)的对数似然梯度。
    • 关于 h j ( i ) h_j^{(i)} hj(i)是一个服从‘伯努利分布’的随机变量,完整推导过程见上述链接。
      ∇ θ [ log ⁡ P ( v ( i ) ; θ ) ] ⇒ ∂ ∂ W v j ( i ) ⇔ h k ( i ) [ log ⁡ P ( v ( i ) ; θ ) ] = P ( h k ( i ) = 1 ∣ v ( i ) ) ⋅ v j ( i ) ⏟ 第一项 − ∑ v ( i ) P ( v ( i ) ) ⋅ P ( h k ( i ) = 1 ∣ v ( i ) ) ⋅ v j ( i ) ⏟ 第二项 begin{aligned} nabla_{theta} left[log mathcal P(v^{(i)};theta)right] & Rightarrow frac{partial}{partial mathcal W_{v_j^{(i)} Leftrightarrow h_k^{(i)}}} left[log mathcal P(v^{(i)};theta)right] \ & = underbrace{mathcal P(h_k^{(i)} = 1 mid v^{(i)}) cdot v_j^{(i)}}_{第一项} - underbrace{sum_{v^{(i)}} mathcal P(v^{(i)}) cdot mathcal P(h_k^{(i)} = 1 mid v^{(i)}) cdot v_j^{(i)}}_{第二项} end{aligned} θ[logP(v(i);θ)]Wvj(i)hk(i)[logP(v(i);θ)]=第一项 P(hk(i)=1v(i))vj(i)第二项 v(i)P(v(i))P(hk(i)=1v(i))vj(i)

    关于上述的对数似然梯度结果,第一项中的 P ( h k ( i ) = 1 ∣ v ( i ) ) mathcal P(h_k^{(i)} = 1 mid v^{(i)}) P(hk(i)=1v(i))就用到了后验概率的推断结果
    推导过程详见受限玻尔兹曼机——推断任务(后验概率),这里 n n n表示 v ( i ) v^{(i)} v(i)中随机变量结点的个数。
    P ( h k ( i ) = 1 ∣ v ( i ) ) = Sigmoid ( ∑ j = 1 n W h k ( i ) ⇔ v j ( i ) ⋅ v j ( i ) + c k ( i ) ) mathcal P(h_k^{(i)} = 1 mid v^{(i)}) = text{Sigmoid}left(sum_{j=1}^n mathcal W_{h_k^{(i)}Leftrightarrow v_j^{(i)}} cdot v_j^{(i)} + c_k^{(i)}right) P(hk(i)=1v(i))=Sigmoid(j=1nWhk(i)vj(i)vj(i)+ck(i))
    这明显是一个精确推断( Precise Inference text{Precise Inference} Precise Inference)。同理,第二项同样使用推断的方式进行求解,但由于使用精确推断的代价极高,因此使用对比散度这种近似推断的方式加快采样速度。

    • 由于这里重点描述的是‘推断’与‘学习任务’之间的关联关系,这里就不展开求解了.
    • 关于第二项精确推断的计算代价,见下面的介绍。

    另一个经典例子就是 EM text{EM} EM算法( Expectation Maximization,EM text{Expectation Maximization,EM} Expectation Maximization,EM)。它的 E text{E} E步可表示为如下形式:
    log ⁡ P ( X ; θ ) = ∫ Z Q ( Z ) ⋅ log ⁡ P ( X ∣ θ ) d Z = ∫ Z Q ( Z ) log ⁡ P ( X , Z ; θ ) Q ( Z ) d Z ⏟ ELBO + { − ∫ Z Q ( Z ) log ⁡ P ( Z ∣ X ) Q ( Z ) d Z } ⏟ KL Divergence begin{aligned} log mathcal P(mathcal X ; theta) & = int_{mathcal Z} mathcal Q(mathcal Z) cdot log mathcal P(mathcal X mid theta) dmathcal Z \ & = underbrace{int_{mathcal Z} mathcal Q(mathcal Z) log frac{mathcal P(mathcal X,mathcal Z;theta)}{mathcal Q(mathcal Z)}dmathcal Z}_{text{ELBO}} + underbrace{left{- int_{mathcal Z} mathcal Q(mathcal Z) log frac{mathcal P(mathcal Z mid mathcal X)}{mathcal Q(mathcal Z)} dmathcal Zright}}_{text{KL Divergence}} end{aligned} logP(X;θ)=ZQ(Z)logP(Xθ)dZ=ELBO ZQ(Z)logQ(Z)P(X,Z;θ)dZ+KL Divergence {ZQ(Z)logQ(Z)P(ZX)dZ}
    其中 X mathcal X X是基于样本的随机变量集合; Q ( Z ) mathcal Q(mathcal Z) Q(Z)人为设定的、关于隐变量 Z mathcal Z Z的分布;如果关于 Z mathcal Z Z的后验分布 P ( Z ∣ X ) mathcal P(mathcal Z mid mathcal X) P(ZX)可求解,即 Q ( Z ) = P ( Z ∣ X ) mathcal Q(mathcal Z) = mathcal P(mathcal Z mid mathcal X) Q(Z)=P(ZX),那么此时 KL Divergence = 0 text{KL Divergence} = 0 KL Divergence=0,自然可以使用参数迭代逼近 的方式对模型参数 θ theta θ进行迭代求解:
    其中的 Q ( Z ) = P ( Z ∣ X ) mathcal Q(mathcal Z) = mathcal P(mathcal Z mid mathcal X) Q(Z)=P(ZX)明显是一种对 P ( Z ∣ X ) mathcal P(mathcal Z mid mathcal X) P(ZX)的精确推断。
    { log ⁡ P ( X ; θ ) = ELBO ( KL Divergence = 0 ) θ ( t + 1 ) = arg ⁡ max ⁡ θ [ ∫ Z P ( Z ∣ X , θ ( t ) ) log ⁡ P ( X , Z ; θ ) d Z ] begin{cases} log mathcal P(mathcal X;theta) = text{ELBO} quad (text{KL Divergence} = 0) \ theta^{(t+1)} = mathop{argmax}limits_{theta} left[int_{mathcal Z} mathcal P(mathcal Z mid mathcal X,theta^{(t)}) log mathcal P(mathcal X , mathcal Z;theta) dmathcal Zright] end{cases} logP(X;θ)=ELBO(KL Divergence=0)θ(t+1)=θargmax[ZP(ZX,θ(t))logP(X,Z;θ)dZ]
    但实际情况下,关于隐变量 Z mathcal Z Z的后验分布 P ( Z ∣ X ) mathcal P(mathcal Z mid mathcal X) P(ZX)可能无法精确求解,此时 Q ( Z ) mathcal Q(mathcal Z) Q(Z)的作用就是逼近当前迭代步骤中的 P ( Z ∣ X ) mathcal P(mathcal Z mid mathcal X) P(ZX),使得当前迭代步骤的 ELBO text{ELBO} ELBO达到最大;再将当前迭代步骤最优近似分布 Q ( Z ) mathcal Q(mathcal Z) Q(Z)带回 ELBO text{ELBO} ELBO中,从而求出当前迭代步骤的最优参数。这就是广义 EM text{EM} EM算法:

    • 相对于EM算法过程,因 P ( Z ∣ X ) mathcal P(mathcal Z mid mathcal X) P(ZX)自身无法精确求解的问题,广义EM算法使得分布 Q ( Z ) ≈ P ( Z ∣ X ) mathcal Q(mathcal Z) approx mathcal P(mathcal Z mid mathcal X) Q(Z)P(ZX)这明显是一种近似推断。
    • 下面描述给定 t t t时刻模型参数 θ ( t ) theta^{(t)} θ(t)的条件下,求解 t + 1 t+1 t+1时刻 E text{E} E步的近似分布 Q ^ ( t + 1 ) ( Z ) hat {mathcal Q}^{(t+1)}(mathcal Z) Q^(t+1)(Z) t + 1 t+1 t+1时刻 M text{M} M步最优参数 θ ( t + 1 ) theta^{(t+1)} θ(t+1)的过程。
      { Q ^ ( t + 1 ) ( Z ) = arg ⁡ max ⁡ Q ( Z ) ∫ Z Q ( Z ) log ⁡ P ( X , Z ; θ ( t ) ) Q ( Z ) d Z ⏟ ELBO ⇔ arg ⁡ min ⁡ Q ( Z ) − ∫ Z Q ( Z ) log ⁡ P ( Z ∣ X ) Q ( Z ) d Z ⏟ KL Divergence θ ( t + 1 ) = arg ⁡ max ⁡ θ ∫ Z Q ^ ( t + 1 ) ( Z ) log ⁡ P ( X , Z ; θ ) Q ^ ( t + 1 ) ( Z ) d Z ⏟ ELBO begin{cases} hat {mathcal Q}^{(t+1)}(mathcal Z) = mathop{argmax}limits_{mathcal Q(mathcal Z)} underbrace{int_{mathcal Z} mathcal Q(mathcal Z) log frac{mathcal P(mathcal X,mathcal Z;theta^{(t)})}{mathcal Q(mathcal Z)} dmathcal Z}_{text{ELBO}} Leftrightarrow mathop{argmin}limits_{mathcal Q(mathcal Z)} underbrace{- int_{mathcal Z} mathcal Q(mathcal Z) log frac{mathcal P(mathcal Z mid mathcal X)}{mathcal Q(mathcal Z)} dmathcal Z}_{text{KL Divergence}}\ theta^{(t+1)} = mathop{argmax}limits_{theta} underbrace{int_{mathcal Z} hat {mathcal Q}^{(t+1)}(mathcal Z) log frac{mathcal P(mathcal X,mathcal Z ;theta)}{hat {mathcal Q}^{(t+1)}(mathcal Z)}dmathcal Z}_{text{ELBO}} end{cases} Q^(t+1)(Z)=Q(Z)argmaxELBO ZQ(Z)logQ(Z)P(X,Z;θ(t))dZQ(Z)argminKL Divergence ZQ(Z)logQ(Z)P(ZX)dZθ(t+1)=θargmaxELBO ZQ^(t+1)(Z)logQ^(t+1)(Z)P(X,Z;θ)dZ

    这两个模型参数学习的例子(一个是学习参数梯度,一个是迭代学习参数),它们都不可避免地对隐变量的后验分布进行推断。

精确推断难的原因

虽然能够表示,但计算代价太大

为什么要近似推断?最核心的原因是:精确推断非常困难。也就是说,精确推断的代价太大了

  • 依然以上述受限玻尔兹曼机对数似然梯度求解过程中的第二项为例:
    ∑ v ( i ) P ( v ( i ) ) ⋅ P ( h k ( i ) = 1 ∣ v ( i ) ) ⋅ v j ( i ) sum_{v^{(i)}} mathcal P(v^{(i)}) cdot mathcal P(h_k^{(i)} = 1 mid v^{(i)}) cdot v_j^{(i)} v(i)P(v(i))P(hk(i)=1v(i))vj(i)
    其中, ∑ v ( i ) sum_{v^{(i)}} v(i)表示样本数量的连加项,有 N N N项;如果观测变量 V mathcal V V中包含 n n n个随机变量,即: v ( i ) = ( v 1 ( i ) , v 2 ( i ) , ⋯   , v n ( i ) ) n × 1 T v^{(i)} = (v_1^{(i)},v_2^{(i)},cdots,v_n^{(i)})_{n times 1}^T v(i)=(v1(i),v2(i),,vn(i))n×1T,并且各观测变量之间相互独立且均服从伯努利分布。那么 P ( v ( i ) ) mathcal P(v^{(i)}) P(v(i))可表示为如下形式:
    P ( v ( i ) ) = ∏ m = 1 n P ( v m ( i ) ) mathcal P(v^{(i)}) = prod_{m=1}^n mathcal P(v_m^{(i)}) P(v(i))=m=1nP(vm(i))
    仅仅 P ( v ( i ) ) mathcal P(v^{(i)}) P(v(i))一项的复杂度就是 O ( 2 n ) mathcal O(2^n) O(2n);暂时不考虑 P ( h k ( i ) = 1 ∣ v ( i ) ) mathcal P(h_k^{(i)} = 1 mid v^{(i)}) P(hk(i)=1v(i)) Sigmoid text{Sigmoid} Sigmoid函数内线性计算的复杂度,上式中的复杂度 至少是 O ( N ⋅ 2 n ) mathcal O(Ncdot 2^n) O(N2n)能算吗?能算,但样本足够多的情况下,代价可看作是无穷大
    这还仅仅是将随机变量设置成最简单的伯努利分布,如果复杂度出现‘指数级别’,就可看做是‘无法求解的’( Intractable text{Intractable} Intractable).

上述的例子可以根据受限玻尔兹曼机自身关于随机变量的约束能够将复杂的概率分布进行分解,只是分解出的结果计算量太大

无法直接表示

然而存在一些模型,模型内部随机变量关联关系复杂的同时,还十分没有章法。最终导致联合概率分布连分解都做不到

  • 例如玻尔兹曼机( Boltzmann Machine,BM text{Boltzmann Machine,BM} Boltzmann Machine,BM),它本质上就是一个由观测变量、隐变量构成的马尔可夫随机场:
    概率图结构——玻尔兹曼机
    由于隐变量 Z mathcal Z Z、观测变量 X mathcal X X内部可能存在关联关系,因此关于该模型隐变量的后验概率 P ( Z ∣ X ) mathcal P(mathcal Z mid mathcal X) P(ZX),干脆是无法用公式表达的

  • 还有一种就是以 Sigmoid text{Sigmoid} Sigmoid信念网络( Sigmoid Belief Network text{Sigmoid Belief Network} Sigmoid Belief Network)为代表的包含隐变量、观测变量的贝叶斯网络
    Sigmoid信念网络-概率图结构
    该模型同样无法对其联合概率分布 P ( X , Z ) mathcal P(mathcal X,mathcal Z) P(X,Z)进行分解,其核心原因是 指向同一观测变量的隐变量结点之间属于 V mathcal V V型结构。而 V mathcal V V型结构意味着隐变量结点之间不是相互独立的,因而无法分解。
    关于 V mathcal V V型结构 -> 贝叶斯网络的条件独立性描述详见贝叶斯网络的结构表示,也称作 Explain Away text{Explain Away} Explain Away问题.

  • 最后一种情况就是上述两种情况的混合情况。代表模型是深度信念网络( Deep Belief Network,DBN text{Deep Belief Network,DBN} Deep Belief Network,DBN),这里就不再赘述了。

由于受限玻尔兹曼机的条件约束,使得隐变量、观测变量内部均条件独立。但并不是说受限玻尔兹曼机比玻尔兹曼机性能更强大( powerful text{powerful} powerful),而是玻尔兹曼机仅是理论上的产物,太过于理想化。在真实环境中没有实际作用;

相反受限玻尔兹曼机通过增加约束,使得隐变量的后验分布 P ( Z ∣ X ) mathcal P(mathcal Z mid mathcal X) P(ZX)能够准确表示出来。相当于 放弃了模型复杂度,而去追求计算上的可行性
与之相似的还有‘隐马尔可夫模型’中的齐次马尔可夫假设与观测独立性假设,它们都是放弃复杂度、追求计算可行性的典型示例。

可以看出,无向图模型无法直接表示后验概率的主要原因在于随机变量结点之间关联关系过于复杂,从而无法实现条件独立性;而有向图模型无法直接表示后验概率的主要原因在于随机变量之间的结构关系,从而无法实现条件独立性

相关参考:
(系列二十五)近似推断1-介绍

最后

以上就是糊涂歌曲为你收集整理的机器学习笔记之近似推断(一)从深度学习角度认识推断引言的全部内容,希望文章能够帮你解决机器学习笔记之近似推断(一)从深度学习角度认识推断引言所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部