CS231N-13-Generative Models

2017.12.3 更新 VAE loss function
————————————————————————————————
深度学习给机器学习带来的变革,不仅是supervised learning监督学习,最近两年将烽火指向无监督学习unsupervised learning,本讲会介绍三个主流算法。

Generative models

这里写图片描述

特点:

  • training data is cheap! 不需要标注label,解放了多少劳动力(想想object detection),大量原始未加工数据可以用
  • understand hidden structure of data. 没有label,只有一个目标,挖掘数据结构规律

这里写图片描述
这里写图片描述

Generative Model生成模型是无监督学习中有趣的一部分:给你训练数据,生成和训练数据相同分布的新数据。 这里引入重要概念:distribution,density distribution. 这是数据的重要特征。有两种分类:explicit显式分布,即求出 pmodel(x) implicit隐式分布
Taxonomy:生成模型的分类学,主要分为explicit & implicit density,本讲介绍3个热门的模型。

PixelRNN/CNN

概率问题。我需要理解…
这是机器学习的基本问题,比较数学的眼光,但很重要。
知乎问题:机器学习“判定模型”和“生成模型‘有什么区别?

首先,生成模型分为train和generate两部分(没有test)。
其次,监督学习(判别模型)最大化 p(y|x) ,条件概率,即给你输入x,你输出正确的label y的概率越大越好?而生成模型最大化 p(x) ,得到x的分布与原始分布越接近越好?
PixelRNN/CNN基于显式概率分布,极大似然估计 p(x) ,用链式法则展开成条件概率累积。那么从第一个像素(随机初始化),条件概率到第二个像素,这里的路径是右下,形成RNN的序列模型。CNN则是邻近区域… 真的没看懂…

因为generating time太慢,好像不太好。但因为显式表达概率

这里写图片描述
这里写图片描述
这里写图片描述

VAE Variational Autoencoders

Autoencoders

这里写图片描述

首先介绍Autoencoder自动编码器?输入x,经过encoder CNN,得出feature,再经过decoder upCNN(反卷积),得到输出的x’。这种先降后升的神经网络,像FCN语义分割。然后loss显然是x-x’的距离。
花式解释AutoEncoder与VAE
这篇专栏讲的还挺清楚的。其实就是FCN,先编码,得到中间的码code,然后反卷积解码,得到生成图像。(套路:想输出什么,就学习什么标签,输出维度任意,反正有各种卷积反卷积操作)
但是auto encoder致命的弱点是无法自动生成的新的图像,它一定要有输入的图片,才能得到隐含code,我们不能自己随便写个code就能生成合理的图像。

VAE 变分自动解码器

需要挺多的概率知识,啊我概统学的太差了…Stanford课程看不懂qvq。
啊啊啊啊数学!

只知道GAN你就OUT了——VAE背后的哲学思想及数学原理
这是一篇比较官方的文章。
【Learning Notes】变分自编码器(Variational Auto-Encoder,VAE)
这篇文章挺有意思的,如开头:

近年,随着有监督学习的低枝果实被采摘的所剩无几,无监督学习成为了研究热点。VAE(Variational Auto-Encoder,变分自编码器)和 GAN(Generative Adversarial Networks) 等模型,受到越来越多的关注。
笔者最近也在学习 VAE 的知识(从深度学习角度)。首先,作为工程师,我想要正确的实现 VAE 算法,以及了解 VAE 能够帮助我们解决什么实际问题;作为人工智能从业者,我同时希望在一定程度上了解背后的原理。
作为学习笔记,本文按照由简到繁的顺序,首先介绍 VAE 的具体算法实现;然后,再从直观上解释 VAE 的原理;最后,对 VAE 的数学原理进行回顾。我们会在适当的地方,对变分、自编码、无监督、生成模型等概念进行介绍。
我们会看到,同许多机器算法一样,VAE 背后的数学比较复杂,然而,工程实现上却非常简单。

我就简单介绍VAE的框架,具体数学推导以后看论文再说,以及代码实现也能帮助理解。
如图,输入n维图片,进入encoder,和autoencoder一样。我们的隐含变量z是m维的,为了得到随机化(满足高斯分布)的z,即 N(δ,σ) ,我们需要输出两个m维的向量z_mean和z_log_var,通过采样 ϵ from N(0,1) ,乘以标准差再加上均值,满足了任意的高斯分布。将m维z输入decoder,得到n维 x̂ 
loss function是x与 x̂  的cross entropy或mean square 加上 z_mean和z_log_var的KL divergence. 随后SGD学习。
(事实上cross entropy 和 kl divergence 的定义就差个常数)

其实原理特别简单,只需要在编码过程给它增加一些限制,迫使其生成的隐含向量能够粗略的遵循一个标准正态分布,这就是其与一般的自动编码器最大的不同。

感觉当时没真正搞懂,VAE区别于AE的,是高斯分布。两者的Loss function都有原始图片与生成图片的差异,但VAE希望生成图片有随机性,而且是有正态分布的随机性,而不是AE那种死的(fixed)输出。生成图片的正态分布,要求我们encoder输出的latent variable(mean&var)满足标准正态分布(这里我们用了reparameter的技巧),故转为希望 mean>0,var>1 . 这就是latent loss= 0.5(1+logσ2δ2σ2) . 显然在 σ=1,δ=0 时取最小值0.
最终的loss是两个loss之和,trade-off.
至于为啥要求正态分布,我也不是很明白…

这里写图片描述

这样我们生成一张新图片就很简单了,我们只需要给它一个标准正态分布的随机隐含向量,这样通过解码器就能够生成我们想要的图片,而不需要给它一张原始图片先编码。

引入随机性,才能多样性。生成时就不需要图片了,直接运行decoder即可。因为VAE的特点就是把生成模型的概率分布参数都学习出来了,生成时只需加常规的noise,故称为显式的表达概率分布。同时,这也有局限,即和输入数据比较吻合,创新泛化能力一般。

GAN 生成对抗网络

用Stanford课件的话说

GANs don’t work with any explicit density function. Instead, take game-theoretic approach: learn to generate from training distribution through 2-player game.

用Yann LeCun的话说

生成对抗网络(GAN)是”过去十年机器学习界最有趣的idea

用知乎问题的描述的话说

Ian Goodfellow在GAN开创论文中也提到,GAN相比传统方法,生成器(G)的参数更新不是直接来自数据样本,而是来自鉴别器(D)的反向传播,训练不需要马尔科夫链.也有论文提出它可以提高泛化精度,可是,它也有很多缺点,比如生成模型的分布没有显示的表达,比较难训练.

大体框架:

这里写图片描述

GAN是隐式的表达概率分布,采用二人博弈的场景。Generator生成器的输入是random noise,负责生成fake images,G的目的就是以假乱真,让Discriminator判别器无法辨别fake or real images,real images 是训练集。而D的目的显然就是辨别正确率越高越好。很明显,G和D的目的是冲突的。

用数学表达:

这里写图片描述

博弈论minimax问题。min(max()). 规定1为real,0为fake。D希望自己的参数能使正确的期望越高越好,即real data期望大,1-fake data期望大。G希望在D基础上自己的参数使期望越低越好。

这里写图片描述

这里写图片描述

实际训练时:先对D梯度上升,更新D的参数,再对G梯度上升(这里变化了下),更新G的参数。这算完成一次参数更新。

这里写图片描述

GAN目前是state-of-the-art,最佳的,比VAE好,但难以解释。

知乎上铺天盖地的GAN报道,基本是GAN的应用,很少是学术性的。这里有个好问题:生成对抗网络(GAN)相比传统训练方法有什么优势?

优点
模型只用到了反向传播,而不需要马尔科夫链
训练时不需要对隐变量做推断
理论上,只要是可微函数都可以用于构建D和G,因为能够与深度神经网络结合做深度生成式模型
G的参数更新不是直接来自数据样本,而是使用来自D的反向传播(这也是与传统方法相比差别最大的一条吧) (注意先更新D再更新G)
相比于变分自编码器,,GANs没有引入任何决定性偏置( deterministic bias),变分方法引入决定性偏置,因为他们优化对数似然的下界,而不是似然度本身,这看起来导致了VAEs生成的实例比GANs更模糊.
缺点
可解释性差,生成模型的分布 Pg(G)没有显式的表达
比较难训练,D与G之间需要很好的同步,例如D更新k次而G更新一次
它很难去学习生成离散的数据,就像文本(不可微)
作者:元峰
链接:https://www.zhihu.com/question/56171002/answer/148593584
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

总之,加油GAN !

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值