百科问答小站 logo
百科问答小站 font logo



请解释下variational inference? 第1页

  

user avatar   yoursister123 网友的相关建议: 
      

一般的problem setting是,我们想计算posterior (这在做inference和prediction的时候会用到),根据Bayes' formula,我们需要计算 ,但这往往是intractable的。那么一个很自然的想法是,我们可以直接引入一族parameterized distributions (称为variational distributions,其中 称为variational parameters),通过在 里面寻找与 最“相似”的distribution来估计真实的posterior。这就可以写成下面的优化问题:

, (1)

其中KL就是大家熟知的Kullback-Leibler divergence。直接优化问题(1)还是intractable,因为里面包含了我们的目标估计函数 ,但可以很容易证明,minimize (1)等价于maximize所谓的ELBO(evidence lower bound),即

. (2)

其中 就是我们的model,所以是tractable的。

至此,整个variational inference (VI)的框架就结束了,而算法的发展就是围绕这个框架的每一个环节,每做一步改进(变化),就可以生成一个新的算法(paper)。最古典的VI假设mean-field,即assume ,这样我们可以通过下面的式子update variational distributions in coordinates,

. (3)

进一步地,如果assume conjugate prior,我们可以解析地求出式(3),继而写成update parameters的形式,具体细节大家可以参考David Blei的综述 [1] 以及PRML第10章(私以为第8、10章是该书的精髓)。

下面简单列一下VI这几年的研究热点,仅限于我个人所了解的内容,不全面的地方还望大家补充。主要来自于Blei组的工作,Blei可以说是如今北美VI领头羊,当然Ryan Adams和Max Welling也做了不少这方面的工作,但相对较杂。

(i) 如果(3)能解析地处理,我们自然可以方便地使用coordinate ascent。但为了更准确地fit真实数据,让posterior更加flexible,真实情况往往更复杂,所以我们必须求助于gradient ascent这种generic algorithm。同时为了scalable to large data,就得使用stochastic gradient descent (SGD)。这篇文章 [2] 指出,直接做gradient的效果并不好,因为parameter空间和distribution空间的metric是不同的。所以作者使用了information geometry里的natural gradient改进了SGD,提出了所谓的stochastic variational inference (SVI),其技术本质就是额外用到了二阶导(Hessian)的信息。注意SVI里主要讨论的是有mean-field和conjugacy假设的model,其优点在于这些model的Hessian好计算,有explicit form,但是对于更加复杂的model,计算Hessian会极大增加算法的计算复杂度,并不是一个好的选择。这一点可以类比opt里的second order methods。

(ii) 如果(3)不好解,我们是否可以直接处理(2)呢?答案是肯定的,这方面工作是最多的,主要可以分为两大类。一类工作是用Monte Carlo estimation直接attack (2),事实上,我们有

, (4)

其中 称为score function,这就是所谓的black box variational inference (BBVI) [3]。这样粗暴做法的直接后果是variance太大,从而导致收敛极慢,现实很难work。那么研究重点就回到了如何reduce variance,接连出现了各种技术,比如Rao-Blackwellization [3],control variates [3,4],overdispersed black-box variational inference (O-BBVI) [20]等等。

(iii) 另一方面的工作就是所谓的reparameterization tricks,代表工作当然是Max Welling的variational auto-encoder (VAE) [5]。其idea非常自然,如果我们能把一个复杂的variable用一个standard variable表示,比如 ,其中 ,那么经过换元,式(2)可以写成

. (5)

这样我们就可以直接把 从积分号外面移到里面,即

. (6)

各种empirical的工作 [5,6] 证明,reparameterization trick可以很好地reduce variance,使得Monte Carlo estimate变得doable。至于理论上为什么(6)比(4)的variance小,我还没有见到严格的分析。另外,VAE里通过引入一个inference/recognition network 把local parameters转换为global parameters(即network weights),可以方便地处理unseen sample。所以简单地说,VAE=reparameteriztion+inference net。

(iv) reparameterization的一个巨大缺陷是,它无法处理discrete variable,这也是BBVI的工作经常嘲讽repar的地方。理论上讲,BBVI是universal的(见式(4)),只要variance控制得好,它可以处理任何VI问题。幸运的是,去年ICLR同时抛出了两篇文章 [7,8],都是用了Gumbel-Softmax distribution去relax discrete variables,这样我们就可以对discrete variable进行repar了。不知道以后BBVI的文章该如何继续抨击repar这一点,摊手。

(v) reparameterization的另一个问题是可以做repar的distribution非常有限,想对Gamma做都没那么容易,[5] 给了一些suggestions,但似乎后来大家用到的并不多。automatic differentiation variational inference (ADVI) [9] 通过统一把variational distribution映射到 ,然后assume映射后的variable服从Normal distribution,继而使用repar。但这时如何较好地transform variables就很重要了,比如对于一个简单的Gamma distribution,不同的transform结果会不同,这也增加了如何选择transformation的工作量。另外,Blei等人最新的工作 [22] 使用了acceptance-rejection sampling来扩大可以repar的distributions,非常smart,比如此时Gamma就可以很自然的处理了。但有没有一个更加flexible的方法进行variable transformation呢?这就是normalizing flows (NFs) [6] 的用武之地了。简单地说,NFs就是generalization of reparameterization tricks:以前我们用一个函数做变换( ,相当于一层NN),现在我们可以用多层函数做变换( ,deep learning!),只要复合函数的Jacobian容易求解,而做inference就转变成了学习 的parameter的过程。此时的关键问题是寻找有足够representation power,同时Jacobian又比较好求的一族函数。这方面已经有了不少工作,[6] 给了一个简单的linear-time变换做demo,也提到了可以用infinite flows,比如Langevin Flow和Hamiltonian Flow,Welling等人又提出了inverse autoregressive flows (IAFs) [10],此外还有MADE、NICE等等,我就不再赘述了,有兴趣的可以去参考相关文献。

(vi) 再回到BBVI相关的工作,当我们计算(4)的时候,并没有考虑model本身的结构。而事实上,当我们involve越多的结构信息,越有可能设计新的算法reduce variance。比如local expectation gradients [11],其思想很简单,即观察到Bayesian net的hierarchical structure,在计算 的导数的时候,可以只关注包含 的Markov blanket的项。[11] 大概证明了在某些特殊情况下,比如mean-field以及repar,这么做localization确实可以得到较小的variance。类似的考察local structure的思想也被用在了reparameterization tricks上面,这就是Welling等人提出的local reparameterization tricks [12]。事实上,在实际的计算中,(6)里面的variance由两部分贡献,一部分是mini-batch,另一部分是Monte Carlo,这也被称为doubly stochasticity [13]。mini-batch带来的variance不太好处理,[12] 选择针对第二部分。这里面有一个“牵一发而动全身“的思想,我们一般通过sample 来估计(6)(一个mini-batch),而 小的noise可以传播到所有 上面,从而使 和 之间产生了dependence(而事实上绝大部分情况下 是conditionally independent的),造成较大的variance。但如果我们disentangle这个sampling过程,直接sample ,那么这部分variance就会消失 [13]。另外,[13] 还把这个技术和dropout联系了起来。

(vii) 虽然mean-field assumption会带来很多计算上的便利,但很显然这样做会削弱inference performance,因为一旦引入了mean-field,这就在true posterior和approximated posterior之间造成了不可逾越的鸿沟。不少工作试图减小这部分gap,增加variational distribution的flexibility,比如structured stochastic variational inference (SSVI) [14] (但还是有较多的assumption),auxiliary variables [15],copula variational inference (CVI) [16],variational Gaussian process (VGP) [17] (可以证明在一定条件下是universal的),hierarchical variational models (HVMs) [18]。其基本思想大致都是引入auxiliary variables,从而enrich variational distributions。这里我仅以HVM为例,简单介绍一下思想。HVM还是先假设mean-field,但把variational parameters 看成variables,在之上加上新的prior ,称为variational prior,其中 是variational hyperparameter。这是很直接的Bayesian思想,可见Blei把Bayesian贯彻到底的决心。那么,虽然 是independent,但是 在 之间引入了更多的结构,这依赖于我们选择什么样的variational prior。[18] 选用的NFs作为 ,把最新的技术融合到了自己的工作中,挺有趣的。这也像我们展示了另一个perspective,我们可以把传统的variational distributions看成一个与main model相对应的另一个model,且称为variational model。我们可以根据main model“任意地“设计新的variational model,那么剩下的就是如何进行VI,不同的variational model往往需要设计不同的VI算法,比如HVM里就为variational model引入了新的variational posterior 。

(viii) 我们可以发现,给定一个main model,我们需要设计优化目标(比如KL divergence/ELBO),variational model以及相应的优化算法。至此,我们只提到了其中的两个部分,比如(vii)是variational model,(ii)-(vi)是优化算法。对于优化目标,我们真的只能做ELBO么?显然不是,比如经典的expectation propagation就用到 。而通过generalize ELBO,importance weighted auto-encoders (IWAE) [21] 使用了比ELBO更好(tighter)的lower bound。进一步地,operator variational inference (OPVI) [19] 则重新审视了这个优化目标的设计问题,提出了一个更加general的框架,把KL纳入其中。总的来说,相比前两类问题,这个问题的工作较少,毕竟我们总可以设计“更好”的优化算法来弥补优化目标的“缺陷”。但系统地研究优化目标会使我们更加触及问题的本质,更有科研上的意义。

(ix) 从科研的角度讲,在不同问题之间建立connection是推进认识的必经之路,如果一个学科都是片段或者零散的点,那只能说明它还不够成熟。同样作为generative model,虽然二者对待distribution和优化目标不同,但有一些工作试图建立VAE和GAN (Generative adversarial network)的联系,比如adversarial variational bayes (AVB) [23]。如之前提到的,variational model的expressiveness对于inference performance至关重要,而VAE往往oversimplified。[23] 通过引入auxiliary variables 来增加flexibility,这一点思想上和HVM或NF等并没有本质区别,但技术上不同的是,这里整个问题变成了black box, 是没有explicit form的。类似于GAN,[23] 引入了一个discriminator 来判断 是来自于 还是 (ratio estimation) ,然后通过增加一个adversarial training来maximize ELBO。如果我们进一步把这种black-box modeling的观点推广到main model,再加上hierarchical structure,就产生了所谓的hierarchical implicit model (HIM) [24],其中每一层conditional distribution都有一个random noise作为input,即 。为了在该model下做VI,类似地,[24] 也引入一个discriminator 来判断 是来自于model distribution还是variational distribution,在做VI的同时优化 ,其最优值等于 。不得不说,Dustin Tran,Rajesh Ranganath和David Blei这几年构成了VI铁三角,做了很多有趣的工作。特别地,最近(ICLR‘18)Tran又把HIM用在了GWAS上面,号称比Price的PCA效果更好,具体结果我还没去看。

没想到碎碎念了这么多,写到最后已经不太想写了~ 需要强调的是,VI这块的工作还有很多很多,比如linear dynamical systems [25],Markov random fields [26],我这里只是试图抛砖引玉,实属冰山一角。特别地,VI相关的theory非常少,可能因为确实不容易做?貌似Blei一直在尝试,比如这个 [27],我还没来得及看,大家有兴趣的可以关注一下。最后的最后,再次推荐Blei的综述 [1],入门VI首选!


References

[1] Variational Inference: A Review for Statisticians

[2] [1206.7051] Stochastic Variational Inference

[3] [1401.0118] Black Box Variational Inference

[4] ([1402.0030] Neural Variational Inference and Learning in Belief Networks)

[5] [1312.6114] Auto-Encoding Variational Bayes

[6] [1505.05770] Variational Inference with Normalizing Flows

[7] [1611.01144] Categorical Reparameterization with Gumbel-Softmax

[8] A Continuous Relaxation of Discrete Random Variables

[9] [1603.00788] Automatic Differentiation Variational Inference

[10] [1606.04934] Improving Variational Inference with Inverse Autoregressive Flow

[11] Local Expectation Gradients for Black Box Variational Inference

[12] [1506.02557] Variational Dropout and the Local Reparameterization Trick

[13] Doubly Stochastic Variational Bayes for non-Conjugate Inference

[14] [1404.4114] Structured Stochastic Variational Inference

[15] [1602.05473] Auxiliary Deep Generative Models

[16] [1506.03159] Copula variational inference

[17] [1511.06499] The Variational Gaussian Process

[18] [1511.02386] Hierarchical Variational Models

[19] [1610.09033] Operator Variational Inference

[20] [1603.01140] Overdispersed Black-Box Variational Inference

[21] [1509.00519] Importance Weighted Autoencoders

[22] [1610.05683] Reparameterization Gradients through Acceptance-Rejection Sampling Algorithms

[23] Unifying Variational Autoencoders and Generative Adversarial Networks

[24] [1702.08896] Hierarchical Implicit Models and Likelihood-Free Variational Inference

[25] [1603.06277] Composing graphical models with neural networks for structured representations and fast inference

[26] [1711.02679] Neural Variational Inference and Learning in Undirected Graphical Models

[27] Frequentist Consistency of Variational Bayes




  

相关话题

  为什么deep lab v3起,输出不再接 DenseCRF了? 
  如何评价最近火热的对比学习,会引领预训练模型新的范式嘛? 
  2021 年,深度学习方面取得了哪些关键性进展? 
  计算机视觉顶级会议论文中比较适合初学计算机视觉的人做的复现实验有哪些? 
  如何评价最新的Octave Convolution? 
  为什么梯度下降能找到最小值? 
  做底层 AI 框架和做上层 AI 应用,哪个对自己的学术水平(或综合能力)促进更大? 
  我应该从计算机视觉回到做FPGA 吗? 
  2021年了,如何评价微软亚研提出的对偶学习(Dual Learning)? 
  你遇见过什么当时很有潜力但是最终没有流行的深度学习算法? 

前一个讨论
深度学习的多个loss如何平衡?
下一个讨论
你有哪些deep learning(rnn、cnn)调参的经验?





© 2024-11-09 - tinynew.org. All Rights Reserved.
© 2024-11-09 - tinynew.org. 保留所有权利