变分自编码Variational Auto-Encoders

自编码Auto-Encoders

自编码(Auto-Encoders)是非监督学习领域中的一种, 可以自动从无标注的数据中学习特征, 是一种以重构输入信号为目标的神经网络, 它可以给出比原始数据更好的特征描述, 具有较强的特征学习能力, 在深度学习中常用自编码网络生成的特征来取代原始数据, 以得到更好的结果。长被用于生成类模型。
如下图所示:

ae.png

输入一张图片,通过一个 Encoder 网络,输出一个压缩后的特征。之后将这个压缩特征通过一个 Decoder 网络,又将这张图片还原回去了。
我们知道,PCA是可以做降维的,不过PCA降维依赖线性性,本质仍然是线性变换,而自编码是通过神经网络降维,由于激活函数所以自编码有非线性性,理论上可以有更好的降维效果,事实也是如此。下图展示了二者重建图像的区别:

pca.PNG

自编码器原理

让我们来考虑有监督学习的神经网络的功能:
𝒐 = 𝑓_𝜃(𝒙), 𝒙 ∈ 𝑅^{𝑑_{𝑖𝑛}}, 𝒐 ∈ 𝑅^{𝑑_{𝑜𝑢𝑡}}

𝑑_{𝑖𝑛} 是输入的向量长度, 𝑑_{𝑜𝑢𝑡} 是网络输出的向量长度。对于分类问题,网络模型通过把长度为𝑑_{𝑖𝑛} 输入特征向量 𝒙 变换到长度为 𝑑_{𝑜𝑢𝑡} 的输出向量 𝒐,这个过程可以看成是特征降维的过程,把原始的高维输入向量𝒙变换到低维的变量𝒐。特征降维(Dimensionality reduction)在机器学习中有广泛的应用, 比如文件压缩(Compression),数据预处理(Preprocessing)等。
自编码网络利用数据 𝒙 本身作为监督信号来指导网络的训练,即希望神经网络能够学习到映射𝑓_𝜃: 𝒙 → 𝒙,我们把网络 𝑓_𝜃 切分为 2 个部分,前面的子网络尝试学习映射关系: 𝑔_{𝜃_1}: 𝒙 → 𝒛 ,后面的子网络尝试学习映射关系 ℎ_{𝜃_2}: 𝒛 → 𝒙,我们把 𝑔_{𝜃_1} 看成一个数据编码(Encode)的过程,把高维度的输入 𝒙 编码成低维度的隐变量 𝒛 (Latent variable,或隐藏变量),称为 Encoder 网络(编码器); ℎ_{𝜃_2} 看成数据解码(Decode)的过程,把编码过后的输入 𝒛 解码为高维度的 𝒙, 称为 Decoder 网络(解码器)。

2.PNG

编码器和解码器共同完成了输入数据𝒙的编码和解码过程,我们把整个网络模型 𝑓_𝜃 叫做自动编码器(Auto-Encoder),简称自编码器。 如果都使用深层神经网络来参数化 𝑔_{𝜃_1}ℎ_{𝜃_2} 函数,则称为深度自编码器(Deep auto-encoder),如下图所示。

深度自编码器

自编码器能够将输入变换到隐藏向量 𝒛,并通过解码器重建(Reconstruct,或恢复)出 \overline{𝒙}。我们希望解码器的输出能够完美地或者近似恢复出原来的输入,即 \overline{𝒙} ≈ 𝒙 ,那么,自编码器的优化目标:
\begin{array}{l} \text { Minimize } \mathcal{L}=\operatorname{dist}(\boldsymbol{x}, \overline{\boldsymbol{x}}) ,\quad \overline{\boldsymbol{x}}=h_{\theta_{2}}\left(g_{\theta_{1}}(\boldsymbol{x})\right) \end{array}

其中𝑑𝑖𝑠𝑡(𝒙, \overline{𝒙})表示 𝒙\overline{𝒙} 的距离度量(Distance metric)。
自编码器网络和普通的神经网络并没有本质的区别, 只不过训练的监督信号由标签 y 变成了自身 𝒙

去噪自编码Denoising Auto-Encoders

要想取得好的特征只靠重构输入数据是不够的, 在实际应用中, 还需要让这些特征具有抗干扰的能力, 即当输入数据发生一定程度的扰动时, 生成的特征仍然保持不变在这种情况下训练出来的模型才会有更好的鲁棒性。
Denoising Auto-Encoders 给输入数据添加随机的噪声扰动,如给输入x添加采样自高斯分布的噪声\epsilon
\overline{x}=x+\epsilon,\quad \epsilon \sim N(0,1)

添加噪声后,网络需要从\overline{x} 学习到数据的真实隐藏变量 z,并还原出原始的输入x
\theta^{*}=\operatorname{argmin}_{\theta} \operatorname{dist}\left(h_{\theta_{2}}\left(g_{\theta_{1}}(\widetilde{x})\right), x\right)

去噪自编码

变分自编码Variational Auto-Encoders

基本的自编码器本质上是学习输入𝒙,隐藏变量 𝒛 之间映射关系, 它是一个判别模型(Discriminative model),并不是严格的生成模型(Generative model)。 于是考虑将模型变为生成模型,我们可以学习到给定 x, 隐藏变量的条件概率分布 p(z|x), 在学习到这个分布后, 通过对p(z|x)进行采样可以生成不同的样本。 这就是变分自编码器(Variational Auto-Encoders,VAE)。

VAE原理

从概率的角度, 我们假设任何数据集都采样自某个分布 p(x|z)z 是隐藏的变量,代表了某种内部特征, 比如手写数字的图片 xz 可以表示字体的大小,书写风格,加粗、斜体等设定,它符合某个先验分布 p(z),在给定具体隐藏变量 z 的情况下,我们可以从学到的分布 p(x|z) 中采样一系列的生成样本,这些样本都具有 z 所表示的共性。
p(z) 已知(比如z \sim N(0,1))的条件下, 我们的目的就是希望能学会生成概率模型 p(x|z)。这里我们可以采用最大似然估计(Maximum likelihood estimation): 一个好的模型,应该拥有很大的概率产生已观测的样本。 如果我们的生成模型 p(x|z) 是用 \theta 来参数化,比如我们通过一个神经网络 Decoder 来学习 p(x|z),那么 \theta 就是此 decoder 的权值 w, b 等,那么我们的神经网络的优化目标是:
\underset{\theta}{\operatorname{max}}p(x)=\int_z{p(x|z)p(z)}dz

注意上式的含义,p(x|z)p(z)=p(x,z) 是联合概率密度,对联合概率密度积分可得到边缘概率密度。
很遗憾的是,由于 z 是连续变量,上述积分没法转换为离散形式,所以直接优化上式几乎是不可能的。

vae

换一个思路,利用 变分推断(Variational Inference) 的思想,我们通过分布 q_{\phi}(z|x) 来逼近真实的后验概率 p(z|x),即需要优化 q_{\phi}(z|x)p(z|x) 之间的距离:
\min _{\phi} \mathbb{D}_{K L}\left(q_{\phi}(z \mid x)|p(z \mid x))\right.

其中KL散度定义为:
\begin{array}{l} \mathbb{D}_{KL}(P | Q)=\sum P(x) \log \frac{P(x)}{Q(x)} \quad 离散分布律\\ \mathbb{D}_{KL}(P | Q)=\int P(x) \log \frac{P(x)}{Q(x)} d x \quad 连续概率密度 \end{array}

严格来说距离应该是对称的,但是KL散度并不对称。
将min式的KL散度展开:
\mathbb{D}_{K L}\left(q_{\phi}(z \mid x)|p(z \mid x)\right)=\int_{z} q_{\phi}(z \mid x) \log \frac{q_{\phi}(z \mid x)}{p(z \mid x)} d z.

进一步由 p(z|x)p(x)=p(x,z)
\begin{array}{l} \mathbb{D}_{K L} \left (q_{\phi}(z \mid x)|p(z \mid x) \right)=\int_{z} q_{\phi}(z \mid x) \log \frac{q_{\phi}(z \mid x) p(x)}{p(x, z)} d z. \\ =\int_{z} q_{\phi}(z \mid x) \log \frac{q_{\phi}(z \mid x)}{p(x, z)} d z+\int_{z} q_{\phi}(z \mid x) \log p(x) d z \\ =-\underbrace{\left(-\int_{z} q_{\phi}(z \mid x) \log \frac{q_{\phi}(z \mid x)}{p(x, z)} d z\right)}_{\mathcal{L}(\phi, \theta)}+\log p(x) \end{array}

上式中 \int_{z} q_{\phi}(z \mid x) \log p(x) d z 部分,\log p(x) 相对于积分变量 z 是常数,剩余部分由概率密度定义,积分为 \int_{z} q_{\phi}(z \mid x) d z=1
我们将 -\int_{z} q_{\phi}(z \mid x) \log \frac{q_{\phi}(z \mid x)}{p(x, z)} d z 项定义为 {\mathcal{L}(\phi, \theta)},上式即为:
\mathbb{D}_{K L} \left (q_{\phi}(z \mid x)|p(z \mid x) \right)=-{\mathcal{L}(\phi, \theta)}+\log p(x)

其中:
{\mathcal{L}(\phi, \theta)}=-\int_{z} q_{\phi}(z \mid x) \log \frac{q_{\phi}(z \mid x)}{p(x, z)} d z=\int_{z} q_{\phi}(z \mid x) \log \frac{p_{\theta}(x, z)}{q_{\phi}(z \mid x)}dz

考虑到 \mathbb{D}_{K L}\left(q_{\phi}(z \mid x)|p(z \mid x)\right) \geq 0,故有 \mathcal{L}(\phi, \theta) \leq \log p(x)
也就是说,\mathcal{L}(\phi, \theta)\log p(x) 的下界(Lower bound),优化目标 \mathcal{L}(\phi, \theta) 称为Evidence Lower Bound Objective(ELBO),为了最大化似然 \max p(x)\max \log p(x),可以通过 \max \mathcal{L}(\phi, \theta) 实现。
现在我们分析如何最大化 \mathcal{L}(\phi, \theta),将其展开可得:
\begin{aligned} \mathcal{L}(\theta, \phi)&=\int_{z} q_{\phi}(z \mid x) \log \frac{p_{\theta}(x, z)}{q_{\phi}(z \mid x)}dz \\ &=\int_{z} q_{\phi}(z \mid x) \log \frac{p(z) p_{\theta}(x \mid z)}{q_{\phi}(z \mid x)}dz \\ &=\int_{z} q_{\phi}(z \mid x) \log \frac{p(z)}{q_{\phi}(z \mid x)}dz+\int_{z} q_{\phi}(z \mid x) \log p_{\theta}(x \mid z)dz \\ &=-\int_{z} q_{\phi}(z \mid x) \log \frac{q_{\phi}(z \mid x)}{p(z)}dz+\mathbb{E}_{z \sim q}\left[\log p_{\theta}(x \mid z)\right] \\ &=-\mathbb{D}_{K L}\left(q_{\phi}(z \mid x) \mid p(z)\right)+\mathbb{E}_{z \sim q}\left[\log p_{\theta}(x \mid z)\right] \end{aligned}

因此:
\mathcal{L}(\theta, \phi)=-\mathbb{D}_{K L}\left(q_{\phi}(z \mid x) \mid p(z)\right)+\mathbb{E}_{z \sim q}\left[\log p_{\theta}(x \mid z)\right]

因此可以用编码器网络参数化 q_{\phi}(z|x) 函数,解码器网络参数化 p_{\theta}(x|z) 函数,通过计算解码器的输出分布 q_{\phi}(z|x) 与先验分布 p(z) 之间的 KL 散度,以及解码器的似然概率 \log p_{\theta}(x|z) 构成的损失函数,即可优化 \mathcal{L}(\theta, \phi) 目标。
q_{\phi}(z|x) \sim N(\mu_1,\sigma_1^2)p(z) \sim N(\mu_2,\sigma_2^2) 都假设为正态分布时:
\mathbb{D}_{K L}\left(q_{\phi}(z \mid x) \mid p(z)\right)=\log \frac{\sigma_{2}}{\sigma_{1}}+\frac{\sigma_{1}^{2}+\left(\mu_{1}-\mu_{2}\right)^{2}}{2 \sigma_{2}^{2}}-\frac{1}{2}

Reparameterization Trick

隐变量采样自编码器的输出 q_{\phi}(z|x),如下图左所示,编码器输出正态分布的均值 \mu 和方差 \sigma^2,解码器的输入采样自 N(\mu,\sigma^2)。由于采样操作的存在,导致梯度传播是不连续的,无法通过梯度下降算法训练 VAE 网络。原VAE论文中提供了一种连续可导的解决方案,称为 Reparameterization Trick, 它通过 z = 𝜇 + 𝜎 ⊙ 𝜀方式采样隐变量 z,从而将梯度传播连接起来。如下图右所示,𝜀 变量采样自标准正态分布 N(0, 1)𝜇𝜎 由编码器网络产生,通过 z= 𝜇 + 𝜎 ⊙ 𝜀 即可获得采样后的隐变量。

Reparameterization Trick

VAE 网络模型如下图所示,输入x 通过编码器网络 q_{\phi}(z|x) 计算得到隐变量 z 的均
值与方差,通过 Reparameterization trick 方式采样后送入解码器网络,获得分布 p_{\theta}(x|z)
并通过损失函数 \mathcal{L}(\theta,\phi) 计算误差优化参数。

参考资料

KL divergence

VAE原论文

https://zhuanlan.zhihu.com/p/25401928

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,482评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,377评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,762评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,273评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,289评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,046评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,351评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,988评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,476评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,948评论 2 324
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,064评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,712评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,261评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,264评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,486评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,511评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,802评论 2 345