EM算法和变分自编码器(VAE)的联系

两种常用的推断方法:期望最大化算法(Expectation Maximaization, EM)和变分自编码器(Variational autoencoders, VAE),都是可以通过近似逼近来优化目标函数。直观上来说,在优化目标函数上,EM是在可能的模型中交替寻找最大化,而VAE是根据梯度的采样估计进行梯度下降。那么他们之间是否有一些联系呢?今天我们来探索下。

EM算法简介

EM算法是一种含有隐变量的模型中搜索参数的最大似然估计或最大后验估计的算法。也就是说,它可以用来估计含有隐变量的概率分布中的未知参数。

给定观察数据集 X X X,隐变量数据或缺失值 Z Z Z,和未知的参数 θ \theta θ,EM算法迭代更替下面两步:
E步(Expectation):计算期望,给定 X X X和当前参数 θ ( t ) \theta^(t) θ(t)的估计值,计算关于当前 Z Z Z的条件分布的对数似然函数:
Q ( θ ∣ θ ( t ) ) = E Z ∣ X , θ ( t ) [ l o g L ( θ ; X , Z ) ] Q(\theta \mid \theta^{(t)}) = E_{Z \mid X,\theta^(t)}[log \mathcal{L}(\theta; X, Z)] Q(θθ(t))=EZX,θ(t)[logL(θ;X,Z)]
M步(Maximaization):寻找使得似然函数最大化的参数:
θ ( t + 1 ) = arg ⁡ max ⁡ θ Q ( θ ∣ θ ( t ) ) \theta^{(t+1)} =\mathop{\arg\max}_{\theta} Q(\theta \mid \theta^{(t)}) θ(t+1)=argmaxθQ(θθ(t))
M步学习到的参数估计值又被用于下一个E步的估计,这个过程不断地交替着,直到收敛为止。

VAE算法简介

VAE是2014年由Kingma和Welling在深度学习的背景下提出的。自编码器跟压缩(compression)相关。如下图所示,JPEG将图像压缩为编码形式,这样可以使用较少的内存,我们可以解压缩来恢复图像,但会丢失一些分辨率。
A toy example
从信息论上来说,压缩比较贴近于对分布的建模。香农的源编码定理(Shannon’s source coding theorem)阐释了对于任意的概率分布,例如,在“自然”图像上的分布,可以使用每个元素的多个比特(bits)来对元素进行编码,这等价于信息理论中分布的熵。在上图中,中间压缩形式的平均比特数应该等于图像上概率分布的熵。

但是变分自编码器并没有直接解决压缩问题,而是侧重于拟合分布 P Θ ( z , x ) P_{\Theta}(z,x) PΘ(z,x)中的参数 Θ \Theta Θ,从而最大化给定样本集 x x x(比如一些点的集合或者一组图像集合)的边缘概率 P Θ ( x ) P_{\Theta}(x) PΘ(x)。编码仅仅是一个工具来更有效地拟合这些参数。

EM和VAE的联系

从上面的介绍,我们可以直到,VAE解决的问题跟EM解决的问题是一样的:都是在给定含有隐变量的模型对应的数据下,拟合概率分布的参数。具体来说,EM和VAE都是根据 P Ψ ( z ∣ y ) P_{\Psi}(z\mid y) PΨ(zy)(编码)和 P Θ ( y , z ) P_{\Theta}(y,z) PΘ(y,z)(定义了P(z)和P(y\mid z)的模型)这两个分布的目标函数而制订的:
Ψ ∗ , Θ ∗ = arg ⁡ max ⁡ Ψ , θ ∑ y L ( Ψ , Θ , y ) , L ( Ψ , Θ , y ) = E z ∼ P Ψ ( z ∣ y ) ln ⁡ P Θ ( z , y ) + H ( P Ψ ( z ∣ y ) ) ( 1 ) = ln ⁡ P Θ ( y ) − K L ( P Ψ ( z ∣ y ) , P Θ ( z ∣ y ) ) 。 ( 2 ) \Psi^{*}, \Theta^{*} =\mathop{\arg\max}_{\Psi,\theta}\sum_{y} \mathcal{L}(\Psi,\Theta,y),\\ \mathcal{L}(\Psi,\Theta,y) = E_{z\sim P_{\Psi}(z\mid y)} \mathop{\ln} P_{\Theta}(z,y)+H(P_{\Psi}(z\mid y)) (1)\\ =\mathop{\ln} P_{\Theta}(y)-KL(P_{\Psi}(z\mid y),P_{\Theta}(z\mid y))。 (2) Ψ,Θ=argmaxΨ,θyL(Ψ,Θ,y)L(Ψ,Θ,y)=EzPΨ(zy)lnPΘ(z,y)+H(PΨ(zy))(1)=lnPΘ(y)KL(PΨ(zy),PΘ(zy))(2)
其中, y y y表示训练数据。公式(1)和(2)的等价性提供了目标函数的不同形式。这个等价性隐含在下面的式子中:
在这里插入图片描述

从EM角度

从上面式子可以看到,EM可以被定义为对 ∑ y L ( Ψ , Θ , y ) \sum_{y}\mathcal{L}(\Psi,\Theta,y) yL(Ψ,Θ,y)的迭代优化,公式(2)表示了对参数 Ψ \Psi Ψ的优化(E步),公式(1)表示对参数 Θ \Theta Θ的优化(M步)。EM适用于能精确有效地通过这两步的不断交替迭代估计得到的模型。对于估计到的模型中每个M步,EM保证提升 ∑ y ln ⁡ P Θ ( y ) \sum_{y}\mathop{\ln} P_{\Theta}(y) ylnPΘ(y)的值。对于这些模型,这种交替优化的方式通常远远优于任何形式的对 ∑ y ln ⁡ P Θ ( y ) \sum_{y}\mathop{\ln} P_{\Theta}(y) ylnPΘ(y)的梯度下降。

从VAE角度

VAE用于不能以闭集形式有效地进行交替优化的模型中。 VAE在公式(1)上进行梯度下降,其中通过从编码器采样来估计梯度。这通常涉及“重新参数化技巧(reparameterization trick)”。如果用 z = g Ψ ( y , η ) z=g_{\Psi(y,\eta)} z=gΨ(y,η)来表示 P Ψ ( z ∣ y ) P_{\Psi}(z\mid y) PΨ(zy),其中 η \eta η是固定分布的随机变量,那么,我们可以将公式(1)重写为:
L ( Ψ , Θ , y ) = E η ln ⁡ P Θ ( g Ψ ( y , η ) , y ) + H ( P Ψ ( g Ψ ( y , η ) ∣ y ) ) 。 ( 3 ) \mathcal{L}(\Psi,\Theta,y) = E_{\eta} \mathop{\ln} P_{\Theta}(g_{\Psi}(y,\eta),y)+H(P_{\Psi}(g_{\Psi}(y,\eta) \mid y)) 。 (3) L(Ψ,Θ,y)=EηlnPΘ(gΨ(y,η),y)+H(PΨ(gΨ(y,η)y))(3)

常见的做法就是,将 P ( η ) P(\eta) P(η) P Ψ ( z ∣ y ) P_{\Psi}(z\mid y) PΨ(zy) P Θ ( z ) P_{\Theta}(z) PΘ(z) P Θ ( y ∣ z ) P_{\Theta}(y\mid z) PΘ(yz)看成是所有高维的高斯分布,每个用均值和方差表示。在求 P Ψ ( z ∣ y ) P_{\Psi}(z\mid y) PΨ(zy) P Θ ( z ) P_{\Theta}(z) PΘ(z) P Θ ( y ∣ z ) P_{\Theta}(y\mid z) PΘ(yz)通过深度网络计算的均值和方差时,将噪声变量 η \eta η看成是固定的零均值各向同性高斯分布。我们就可以给定任意 η \eta η的样本下,计算公式(3)的梯度了。

学习资源

不同编程语言的VAE实现代码:
MATLAB https://github.com/peiyunh/mat-vae
Chainer https://github.com/pfnet/chainer/tree/master/examples/vae
Edward (Tensorflow) https://github.com/blei-lab/edward/blob/master/examples/vae.py
https://github.com/blei-lab/edward/blob/master/examples/vae_convolutional.py
Keras (Theano and Tensorflow) https://github.com/fchollet/keras/blob/master/examples/variational_autoencoder.py
Tensorflow https://github.com/y0ast/VAE-TensorFlow
Tensorflow https://jmetzen.github.io/2015-11-27/vae.html
Theano https://github.com/y0ast/Variational-Autoencoder
Torch https://github.com/y0ast/VAE-Torch

参考资料:

  1. Expectation–maximization algorithm
  2. Tutorial on Variational Autoencoders
  3. VAE = EM
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
循环神经网络(RNN)是一种特殊类型的神经网络,它在处理序列数据时非常有效。RNN能够保持和利用上下文信息,因此适用于处理时序数据,比如语音识别、自然语言处理、机器翻译等任务。RNN的一个主要特点是它能够在处理序列的同时保持记忆,这使得它能够处理具有长期依赖关系的数据。 变分自动编码器(VAE)是一种自动编码器的变种,它结合了生成模型和变分推断的思想。VAE的目标是学习样本的潜在表示,从而能够生成新的样本。与传统的自动编码器不同,VAE引入了一个潜在空间(latent space),其中样本被编码成潜在变量的分布。这种编码方式允许VAE生成多样的样本,并且可以在潜在空间中进行插值操作,生成介于不同样本之间的新样本。 循环神经网络和变分自动编码器在原理和应用上有一些不同。RNN主要用于处理序列数据,能够建模长期依赖关系,适用于语音识别、文本生成等任务。而VAE主要用于生成模型,通过学习潜在表示,能够生成新的样本。它在图像生成、视频生成等任务中表现出色。两者都是深度学习领域的重要研究方向,具有广泛的应用前景。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [机器学习-自编码器变分自编码器及其变种的基本原理(一)](https://blog.csdn.net/weixin_46737548/article/details/124108052)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [变分自编码器VAE)](https://blog.csdn.net/qq_41335232/article/details/125064688)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值