CS231n-2017 第13讲 生成模型

一、监督学习与非监督学习、生成模型

    1. 监督学习

      给定数据 x x x,以及数据所对应的标签 y y y,学习一个从 x x x y y y的映射。

      应用举例:分类、回归、目标识别、语义分割、图像标注等。

    1. 非监督学习
      分析数据的隐藏结构特征。

      应用举例:聚类、降维、特征提取、数据分布估计等。

    1. 生成模型
      给定训练数据,生成满足训练数据分布规律的新数据。这一问题和非监督学习中的数据分布估计问题关联甚大。

      应用举例:创造图像、图像着色、超像素。

生成模型的主要研究思路分为两类:一种是对数据分布律进行显式建模,本节将会讲述此类中的逐像素RNN/CNN方法和变分自编码器;另一类是不对数据分布律显式建模,而直接生成新数据,本节将讲述此类方法中的对抗生成网络。

二、逐像素RNN/CNN

朴素的想法是依据已有的像素,确定下一像素的取值。数学抽象描述为:在已知若干像素的条件下,构建未知像素的概率分布;然后利用条件概率的链式法则,求取整幅图像中所有像素的分布规律。

p ( x ) = Π i = 1 n p ( x i ∣ x 1 , ⋯   , x i − 1 )    ↑ ↑ 图 像 像 素    下 一 个 未 知 像 素 \begin{array}{ccl} p(x) &=& \Pi^n_{i=1} p(x_i|x_1,\cdots,x_{i-1})\\ \,\,\uparrow &&\quad\quad\quad\uparrow\\ 图像像素 &&\,\,下一个未知像素 \end{array} p(x)=Πi=1np(xix1,,xi1)

解决方案:使用RNNLSTM网络,从图像的左上角像素开始,依次推测相邻像素的取值;然后使用新的像素值,推进网络到下一轮的预测。

图 1. 逐像素RNN图示

上述方法存在的问题是,在训练阶段和预测阶段,位置像素的分布律和取值需逐个构建或推断,因而计算效率不高。一个解决方法是使用CNN代替RNN来构建未知像素的分布律,这样,未知像素的取值依赖于一小块区域,而非仅是与之相关联的像素;同时,使得训练过程可以并行化,无需逐像素进行;但推断过程仍是逐像素的。

图 2. 逐像素CNN图示

三、变分自编码器

考虑如下过程:我们期望从数据中提取最能表征数据的特征,然后使用这些特征尽可能地重建数据,此即自编码-解码过程。其中由自编码器输出的特征可用做分类网络的输入。

图 3. 自编码-解码图示

好,现在扔掉编码器,仅考虑解码过程,并作如下描述:假设图像 x x x由特征 z z z产生,这个由 z z z x x x的过程已由上述解码器描述,即我们已通过神经网络学得生成模型 p ( x ∣ z ) p(x|z) p(xz)。现要考察数据的真实分布律。这一分布律可由用于生成图像的特征 z z z的分布律 p θ ( z ) p_\theta(z) pθ(z)表示。求解真实分布律的问题可归结为求解参量 θ \theta θ的问题。进一步,我们明确 θ \theta θ的最优解为使得观测到的数据 x x x出现概率最大的值,即一个最大似然问题:

arg ⁡ max ⁡ θ p θ ( x ) = ∫ p θ ( z ) p θ ( x ∣ z ) d z \arg\max_\theta p_\theta(x) = \int p_\theta(z)p_\theta(x|z)dz argθmaxpθ(x)=pθ(z)pθ(xz)dz
假定 p θ ( x ) p_\theta(x) pθ(x)为正太分布形式。那么上述问题的难点在于积分式不可求解。

上述问题又进一步可转化成如下形式:

图 4. VAE数学抽象

然后这个问题就可近似求解了。(好吧,其实我也没看懂,后面再补充吧o(╯□╰)o)

应用实例:生成手写字体;依据笑容程度和头部姿态,生成人脸图像。

图 5. 使用VAE生成人脸图像

四、生成对抗网络

一个概率论中的结论:可通过恰当的变换,使得满足均匀分布的数据通过变换后,满足任意分布。在此,这种变换可使用神经网络实现。用于实现这一表换(实际上,是实现从高斯分布到任意分布的变换)的网络被称为生成网络(Generator Network)。另外需要一个判别网络(Discriminator Network),用于监督生成的数据的好坏。这样就构成了对抗生成网络的基本结构:生成网络用于生成虚假数据,力求使得这些虚假数据看起来像是真的,并能够通过判别网络的检验;判别网络则争取尽量识别出"伪造"的数据。

G θ g ( z ) G_{\theta_g(z)} Gθg(z)表示生成器生成的数据,以 D θ d ( ⋅ ) D_{\theta_d}(\cdot) Dθd()表示判别器判别为真的概率,则生成对抗网络的优化目标为:

min ⁡ θ g max ⁡ θ d [ E x ∼ p d a t a log ⁡ D θ d ( x ) + E z ∼ p ( z ) log ⁡ ( 1 − D θ d ( G θ g ( z ) ) ) ] \min_{\theta_g}\max_{\theta_d}\left[ E_{x\sim p_{data}}\log D_{\theta_d}(x) + E_{z\sim p(z)}\log(1-D_{\theta_d}(G_{\theta_g}(z))) \right] θgminθdmax[ExpdatalogDθd(x)+Ezp(z)log(1Dθd(Gθg(z)))]

这一模型的求解,可通过对生成器和判别器交替推进来实现,即交替优化如下函数:

  • 针对判别器,使用梯度上升方法,优化

    max ⁡ θ d [ E x ∼ p d a t a log ⁡ D θ d ( x ) + E z ∼ p ( z ) log ⁡ ( 1 − D θ d ( G θ g ( z ) ) ) ] \max_{\theta_d}\left[ E_{x\sim p_{data}}\log D_{\theta_d}(x) + E_{z\sim p(z)}\log(1-D_{\theta_d}(G_{\theta_g}(z))) \right] θdmax[ExpdatalogDθd(x)+Ezp(z)log(1Dθd(Gθg(z)))]

  • 针对生成器,使用梯度下降法,优化

    min ⁡ θ g E z ∼ p ( z ) log ⁡ ( 1 − D θ d ( G θ g ( z ) ) ) \min_{\theta_g} E_{z\sim p(z)}\log(1-D_{\theta_d}(G_{\theta_g}(z))) θgminEzp(z)log(1Dθd(Gθg(z)))

在实际中,上述优化模型有点问题。问题产生于 log ⁡ ( 1 − D ( G ( z ) ) ) \log(1-D(G(z))) log(1D(G(z)))函数。当 D ( G ( z ) ) D(G(z)) D(G(z))很小时—即此时生成器产生的图片很假— log ⁡ ( 1 − D ( G ( z ) ) ) \log(1-D(G(z))) log(1D(G(z)))曲线较为平缓,这意味着对生成器网络,此时反向传递回去的梯度值很小,不利于网络的训练。解决方法是:针对生成器,优化如下目标:

  • 针对生成器,使用梯度上升法,优化

    max ⁡ θ g E z ∼ p ( z ) log ⁡ ( D θ d ( G θ g ( z ) ) ) \max_{\theta_g} E_{z\sim p(z)}\log(D_{\theta_d}(G_{\theta_g}(z))) θgmaxEzp(z)log(Dθd(Gθg(z)))

图 6. 两个优化目标函数的曲线对比

一些关于生成对抗网络的资料:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值