CVDL - 生成网络
九、生成网络
主题:
- 无监督学习
- 产生式模型
- PixelRNN and PixelCNN
- Variational Autoencoders(VAE)
- Generative Adversarial Networks(GAN)
9.1 无监督学习
-
有监督学习
数据: (x, y) ,其中x表示样本, y表示标签
目标: 学习 x -> y的映射
例子:分类,回归,目标检测,语义分割等等
-
无监督学习
数据: x ,其中x为数据
目标: 找出隐含在数据里的模式或者结构
例子:聚类,降维,特征学习,密度估计等
9.2 产生式模型
定义
-
训练数据服从 ,产生样本服从
-
给定训练集,产生与训练集同分布的新样本,希望学到一个模型 ,其与训练样本的分布 相近。
-
无监督学习里的一个核心问题——密度估计问题
-
几种典型思路:
-
显示的密度估计:显示的定义并求解分布
-
隐式的密度估计:学习一个模型 ,而无需显示的定义它
-
分类
9.3 PixelRNN 与 PixelCNN
定义
- 显式的密度模型
- 利用链式准则将图像 x 的生成概率转变为每个像素生成概率的乘积。
PixelRNN
PixelCNN
效果
优点:
似然函数可以精确计算
利用似然函数的值可以有效地评估模型性能
缺点:
- 序列产生 => 慢
9.4 VAE
自编码器
变分自编码器
- 为什么需要变分?
- 原理
学习过程:
推导过程
效果
问题
总结
-
基于典型自编码器拓展成的概率框架 => 可以产生新的样本
-
定义一个难以计算的密度函数 => 通过推导来优化一个下边界
-
优点:
- 产生式模型里的一种主要方法
- 可以计算 q(z|x), 这个特征表示可以用在其他的许多任务中。
-
缺点:
- 最大化似然函数的下边界能够有效地工作,但是模型本身没有PixelRNN/PixelCNN那样好评估
- 与最新的技术(GANs)相比,产生的样本较模糊,质量较低
9.5 GAN
定义
-
生成对抗网络(GAN)
问题: 希望从训练样本分布中采样新数据,但这个分布不仅维度高而且还很复杂,难以直接实现。
解决方案: 对一个简单的分布采样,比如均匀分布;然后,学习一种映射将其变换到训练样本分布
- Q: 用什么方法能够实现这个复杂的映射?
- A: 神经网络!
-
生成网络: 期望能够产生尽量真实的图片,进而骗过判别器
判别网络: 期望能够准确的区分真假图片
两个玩家的游戏
原方法
优化
效果
数学原理
Generation
Discriminator
推导过程
算法
总结
-
不需要显示的密度函数定义
-
采用了游戏理论方法:利用2个玩家的博弈,来学习训练数据的分布。
-
优点
- 优雅, 目前最好的生成效果
-
缺点
- 很难训练,非常不稳定
- 无法计算出样本或者隐变量的概率,如 p(x), p(z|x)
-
领域热点
- 更好的损失函数, 更稳定的训练方法 (Wasserstein GAN, LSGAN等等,)
- 条件GANs(Conditional GANs), 将 GANs 应用于多种任务。
GAN的学习资源
- CS 236: Deep Generative Models (Stanford)
- CS 294-158: Deep Unsupervised Learning (Berkeley)
- Machine Learning (台湾大学): http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML20.html
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 isSeymour!
评论