CS231n:(13) Generative Models

问答总结


一、无监督学习

提到生生成模型,首先还是要提无监督学习无监督学习监督学习最显著的特征就是数据有无标签。监督学习不必再提。无监督学习常有以下任务。(1) 聚类: K-means. (2) 降维:PCA. (3) 特征学习: AE。(4)密度估计。
在这里插入图片描述

二、生成模型

1、定义

生成式模型是一种无监督模型,生成式模型的特点是: 给定训练数据,我的学习一个分布,然后我们从和该分布中采样生成新数据

在这里插入图片描述
生成模型的核心是学习分布 P m o d e l ( X ) P_{model}(X) Pmodel(X)去逼近真实数据分布 P d a t a ( X ) P_{data}(X) Pdata(X)从而通过采样实现生成功能。因为一般来说 P d a t a ( X ) P_{data}(X) Pdata(X)很复杂,因此我们自然想到使用神经网络去拟合。

2、分类

虽然最终目标是学习分布 P m o d e l ( X ) ≃ P d a t a ( X ) P_{model}(X) \simeq P_{data}(X) Pmodel(X)Pdata(X),但是根据是否具体定义 P m o d e l ( X ) P_{model}(X) Pmodel(X)可以进一步细分。

在这里插入图片描述
可以看到,生成模型主要分为两部分.(1) 显示密度估计。(2)隐式密度估计。其中VAE属于前者,GAN属于后者。

三、PixelRNN/CNN

首先来看显示密度估计中比较容易估计密度的一种模型。PxielRNN/CNN。该类模型显示定义为:

P ( X ) = Π i = 1 N P ( X i ∣ X 1 , X 2 , . . . , X i − 1 ) P(X) = \Pi_{i=1}^NP(X_i|X_1,X_2,...,X_{i-1}) P(X)=Πi=1NP(XiX1,X2,...,Xi1)

这样,我们通过设定依赖顺序,原始图像通过 R N N / C N N RNN/CNN RNN/CNN, 最后接上 s o f t m a x softmax softmax,通过选择极大似然学习策略, 便可以学习到 P ( X ) P(X) P(X),下面是分别是 P i x e l R N N PixelRNN PixelRNN P i x e l C N N PixelCNN PixelCNN的依赖顺序图示。

在这里插入图片描述
生成新数据时,我们可以使得第一个点为均匀分布,进而采样第一个点,最后便可以生成新样本。

在这里插入图片描述

四、变分自编码器VAE

说道VAE,自然应该先说一下AE,AE框架如下所示:
由
AE将每一个数据 x x x编码为一个隐向量 z z z, 再用 z z z重构 x x x x x x z z z之间一一对应,没有一点随机性。但是,如果我们希望生成新数据呢?,我们如何构建一个靠谱的 z z z呢? 我们无从下手。

从这个问题出发,如果我们将解码部分转变为编码两个概率分布之间的映射,并且我们规定 z ∼ N ( 0 , 1 ) z \sim \mathcal{N}(0,1) zN(0,1),那么我们不就可以从分布中采样靠谱的 z z z,从而便能够生成新数据了吗。这也是[1]中的观点: VAE目的是进行分布之间的变换

关于为什么要假定 z ∼ N ( 0 , 1 ) z \sim N(0,1) zN(0,1). (1) 为了计算方便。 (2) 为了现实意义,比如 z z z的特征可以表示笑意有几分,脸大小程度等等,由于现实生活中高斯分布很常见,因此这是符合现实规律的。

因此改造AE网络,使其编码解码分布,我们得到VAE框架:
在这里插入图片描述
得到整个模型框架。我们使用极大似然的学习策略学习整个模型。具体如何根据最大似然转变为网络的学习,可以参看[2]种82页的推导,并结合[1]理解每一项损失的物理意义。其中学习的细节可以参看[3]。

这样,训练好整个网络后,我们就得到了编码器 q ϕ ( z ∣ x ) q_{\phi(z|x)} qϕ(zx)和解码器(概率分布映射) p θ ( x ∣ z ) p_{\theta}(x|z) pθ(xz),用编码器,我们可以进行一些模型的底层特征加工,当然这一点AE也能做。而我们拥有了解码器,我们就能够通过从 z ∼ N ( 0 , 1 ) z \sim \mathcal{N}(0,1) zN(0,1)中采样到靠谱的隐向量,从而生成好的新数据。如下图所示: (隐向量z含有一定的物理意义)

在这里插入图片描述
[4] 是一个很好的VAE的小项目,可以帮助理解VAE过程

五、生成对抗网络GAN

GAN分为两个部分,一个是生成器,一个是判别器。生成器目的仍然是为了学习两个概率分布之间的变换。GAN和PixelCNN和VAE不同,其放弃了显示定义概率密度函数,而进行采样进行学习。

(PixelCNN: P ( X ) = Π i = 1 N P ( X i ∣ X 1 , X 2 , . . . , X i − 1 ) P(X) = \Pi_{i=1}^NP(X_i|X_1,X_2,...,X_{i-1}) P(X)=Πi=1NP(XiX1,X2,...,Xi1), VAE: P ( X ) = ∫ p ( Z ) p ( X ∣ Z ) d Z P(X) = \int p(Z)p(X|Z)dZ P(X)=p(Z)p(XZ)dZ)

GAN框架如下:
在这里插入图片描述

其目标函数如下:
在这里插入图片描述
目标函数物理意义很明显,判别器希望真实数据得分高,虚假数据得分低,生成器反之。 GAN的训练策略是交替训练两个网络。具体细节在这里就不赘述了。

训练GAN有很多技巧,这里有一个网址总结了一些: https://github.com/soumith/ganhacks

参考资料

  • [1] 苏剑林. (2018, Mar 18). 《变分自编码器(一):原来是这么一回事 》[Blog post]. Retrieved from https://spaces.ac.cn/archives/5253
  • [2] CS231n官方PDF
  • [3] 苏剑林. (2018, Mar 28). 《变分自编码器(二):从贝叶斯观点出发 》[Blog post]. Retrieved from https://spaces.ac.cn/archives/5343
  • [4] 苏剑林. (2018, Mar 24). 《基于CNN和VAE的作诗机器人:随机成诗 》[Blog post]. Retrieved from https://spaces.ac.cn/archives/5332
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值