文献阅读·1-VAE

简介

  文献Auto-encoding variational bayes的理解。截至本文,\color{red}{\small \bf谷歌学术引用 7646}。相关开源:https://github.com/L1aoXingyu/pytorch-beginner/blob/master/08-AutoEncoder/README.md

关键字

  变分自编码,VAE,生成模型,深度学习,机器学习

正文

1. 理解VAE的思路

  1)VAE有两个损失项(KL,重构损失),为什么是这两个损失?
  2)这两个损失项怎么表达和近似?
  3)为什么使用AE的结构来实现?
  4)怎么训练,即怎么反向传播损失?

2. 学习目标和变分下界

  假设X为观测数据,Z为不可观测的隐变量,VAE要学习的目标是ZX下的后验概率:p(z\mid x)

  实际真实的p(z\mid x)难以直接学习,VAE使用q(z\mid x)来近似p(z\mid x),此时目标为:\arg \min_q KL(p(z\mid x) \mid\mid q(z\mid x))

  由于KL(p(z\mid x) \mid\mid q(z\mid x))=\log p(x)-\Delta
  这里的\log p(x)为常数,其中:
\Delta=E_{q(z\mid x)}[\log p(x\mid z) ]-KL(q(z\mid x)\mid\mid p(z))
  上面的\Delta一般称为变分下界ELOB,问题转换为:\arg \max_{q(z\mid x),p(x\mid z)}\Delta

  现在问题可以分为两部分来看待:

  a. 最大化E_{q(z\mid x)}[\log p(x\mid z) ]
  b. 最小化KL(q(z\mid x)\mid\mid p(z))

3. 借用AE结构求解

  首先解决最大化E_{q(z\mid x)}[\log p(x\mid z) ],其中q(z\mid x)可以视作由观测变量x得到隐变量z的过程:z=f_\phi(x),其中\phi是函数f的参数;p(x\mid z)可以视作由隐变量z得到生成样本x的过程:x=g_\theta(z),其中\theta是函数g的参数,整个过程恰好就是x\rightarrow z\rightarrow x的过程,可以看成是由观测变量x生成一个z的分布,然后这个z的分布生成大量的样本x再求均值的过程。

  这个过程可以通过AE的结构来实现,AE即自编码器,包含编码器(encoder)和解码器(decoder),encoder把x压缩成z,decoder把z解压成x,不同的是AE编码的是一个固定的z,而VAE是一个z的分布。回到上面问题,把z=f_\phi(x)当做encoder,把x=g_\theta(z)当作decoder,就可以使用AE结构计算出E_{q_\phi(z\mid x)}[\log_\theta p(x\mid z) ],其中\phi,\theta分别为encoder、decoder的网络参数。那怎么最大化,就是x\rightarrow z\rightarrow x这个过程中前后的x越接近越好,参考资料[1]中使用了AE常用的重构损失。

  其次是最小化KL(q(z\mid x)\mid\mid p(z)),这边给了个先验p(z)为标准正态分布,参考资料[2]解释为正态分布具备通过函数可以变换为其他分布,所以使用正态分布就够了。那么q_\phi(z\mid x)需要拟合这个先验,即标准正态分布。q_\phi(z\mid x)是由x生成z分布的过程,由于是正态分布,故只要使用参数(\mu,\Sigma)来表示就行了,为了简化运算,参考资料[1]假设\Sigma是各向同性的,各个维度的值为\sigma

  此时最小化的目标如下,其中j是维度:\begin{align}KL(q(z\mid x)\mid\mid p(z))&=KL(N(z\mid \mu,\sigma)\mid\mid N(z\mid 0,1))\\ &= \frac 12 \sum_{j=1}^J(1+\log \sigma_j^2-\mu^2_j-\sigma_j^2)\end{align}

4. 重参数技巧

  在p_\theta(x\mid z)的过程中,需要在z的分布中采样多个z_i,再由z_i生成的x求平均得到,由于采样这个操作不可导,所以,这里从标准正态分布中采样一个\epsilon,再由这个\epsilon来计算z=\mu+\epsilon\times \sigma,这样由这个可导的计算过程代替采样就可以求导了。具体过程可以看下图,图片来源于参考资料[2]。

重参技巧.png

5. 实验效果

  最后放点实验效果,图片来自参考资料[1]。


流形效果.png

不同维度的效果.png

参考资料

[1] Kingma, Diederik P., and Max Welling. "Auto-encoding variational bayes." arXiv preprint arXiv:1312.6114 (2013).
[2] Doersch, Carl. "Tutorial on variational autoencoders." arXiv preprint arXiv:1606.05908 (2016).
[3] https://spaces.ac.cn/archives/5253

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

推荐阅读更多精彩内容