九、生成网络

主题:

  • 无监督学习
  • 产生式模型
    • PixelRNN and PixelCNN
    • Variational Autoencoders(VAE)
    • Generative Adversarial Networks(GAN)

9.1 无监督学习

  • 有监督学习

    数据: (x, y) ,其中x表示样本, y表示标签

    目标: 学习 x -> y的映射

    例子:分类,回归,目标检测,语义分割等等

  • 无监督学习

    数据: x ,其中x为数据

    目标: 找出隐含在数据里的模式或者结构

    例子:聚类,降维,特征学习,密度估计等

GN-1-1 GN-1-2 GN-1-3

9.2 产生式模型

定义

  • 训练数据服从 pmodel(x)p_{model}(x),产生样本服从 pdata(x)p_{data}(x)

    GN-2-1
  • 给定训练集,产生与训练集同分布的新样本,希望学到一个模型pmodel(x)p_{model}(x) ,其与训练样本的分布 pdata(x)p_{data}(x)相近。

  • 无监督学习里的一个核心问题——密度估计问题

  • 几种典型思路:

    • 显示的密度估计:显示的定义并求解分布 pmodel(x)p_{model}(x)

    • 隐式的密度估计:学习一个模型 pmodel(x)p_{model}(x) ,而无需显示的定义它

分类

GN-2-2

9.3 PixelRNN 与 PixelCNN

定义

  • 显式的密度模型
  • 利用链式准则将图像 x 的生成概率转变为每个像素生成概率的乘积。
GN-3-1

PixelRNN

GN-3-2

PixelCNN

GN-3-3

效果

GN-3-4

优点:

  • 似然函数可以精确计算

  • 利用似然函数的值可以有效地评估模型性能

缺点:

  • 序列产生 => 慢

9.4 VAE

自编码器

GN-4-1 GN-4-2 GN-4-3

变分自编码器

  • 为什么需要变分?
GN-4-4
  • 原理
GN-4-5

学习过程:

GN-4-6

推导过程

GN-4-7 GN-4-8 GN-4-9 GN-4-10 GN-4-11 GN-4-12

效果

GN-4-13 GN-4-14

问题

GN-4-15

总结

  • 基于典型自编码器拓展成的概率框架 => 可以产生新的样本

  • 定义一个难以计算的密度函数 => 通过推导来优化一个下边界

  • 优点:

    • 产生式模型里的一种主要方法
    • 可以计算 q(z|x), 这个特征表示可以用在其他的许多任务中。
  • 缺点:

    • 最大化似然函数的下边界能够有效地工作,但是模型本身没有PixelRNN/PixelCNN那样好评估
    • 与最新的技术(GANs)相比,产生的样本较模糊,质量较低

9.5 GAN

定义

  • 生成对抗网络(GAN)

    问题: 希望从训练样本分布中采样新数据,但这个分布不仅维度高而且还很复杂,难以直接实现。

    解决方案: 对一个简单的分布采样,比如均匀分布;然后,学习一种映射将其变换到训练样本分布

GN-5-1
  • Q: 用什么方法能够实现这个复杂的映射?
  • A: 神经网络!
  • 生成网络: 期望能够产生尽量真实的图片,进而骗过判别器

    判别网络: 期望能够准确的区分真假图片

GN-5-2

两个玩家的游戏

GN-5-3
  • 原方法

    GN-5-4
  • 优化

    GN-5-5

效果

GN-5-6 GN-5-7

数学原理

Generation

GN-5-8 GN-5-9 GN-5-10 GN-5-11

Discriminator

GN-5-12 GN-5-13 GN-5-14
  • 推导过程

    GN-5-15 GN-5-16 GN-5-17 GN-5-18
GN-5-19 GN-5-20

算法

GN-5-21
GN-5-22

总结

  • 不需要显示的密度函数定义

  • 采用了游戏理论方法:利用2个玩家的博弈,来学习训练数据的分布。

  • 优点

    • 优雅, 目前最好的生成效果
  • 缺点

    • 很难训练,非常不稳定
    • 无法计算出样本或者隐变量的概率,如 p(x), p(z|x)
  • 领域热点

    • 更好的损失函数, 更稳定的训练方法 (Wasserstein GAN, LSGAN等等,)
    • 条件GANs(Conditional GANs), 将 GANs 应用于多种任务。

GAN的学习资源

  1. CS 236: Deep Generative Models (Stanford)
  2. CS 294-158: Deep Unsupervised Learning (Berkeley)
  3. Machine Learning (台湾大学): http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML20.html