百科问答小站 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




  

相关话题

  ICLR 2019 有什么值得关注的亮点? 
  机器学习算法工程师如何自己接项目单干、并赚取比上班多得多的收入? 
  如何评价论文「Stochastic Training is Not Necessary ...」? 
  写深度学习代码是先写model还是dataset还是train呢,有个一般化的顺序吗? 
  神经网络为什么可以(理论上)拟合任何函数? 
  如何看待 TI7 上与 Dendi solo 的 OpenAI? 
  大家用resnet50在imagenet上面top1最高能到多少? 
  在哪里能找到各行业的分析研究报告? 
  在与 AlphaGo(包括 Master) 的对局中是否出现了一些人类历史上从未想到过的着法、技巧? 
  深度学习底层开发对数学有哪些要求? 

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





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