cs231n spring 2017 lecture13 Generative Models 听课笔记
1. 非监督学习
监督学习有数据有标签,目的是学习数据和标签之间的映射关系。而无监督学习只有数据,没有标签,目的是学习数据额隐藏结构。
2. 生成模型(Generative Models)
已知训练数据,根据训练数据的分布(distribution)生成新的样例。
无监督学习中的一个核心问题是估计分布。

3. PixelRNN 和 PixelCNN
依次根据已知的像素估计下一个像素。

PixelRNN(van der Oord et al. NIPS 2016):利用RNN(LSTM)从角落开始依次生成像素。缺点是非常慢。

PixelCNN(van der Oord et al. NIPS 2016):利用CNN从角落开始依次生成像素。求像素的最大似然估计。比PixelRNN快,但依旧慢。

PixelRNN和PixelCNN的优点是可以显式地求出概率分布,并且给出评价尺度(evaluation metric),生成的结果也不错。缺点是慢。改进版本是PixelCNN++(Salimans et al. 2017)。
4. Variational Autoencoders (VAE)
Autoencoder是一种从没有标签的训练数据学习低维度特征(lower-dimensional feature representation)的方法。最开始是用Linear+nonlinearity(sigmoid)的方法,后来人们用深度的全连接层,再后来人们用ReLU CNN。为什么要“低维度特征”?或者说为什么把输入的维度降低?目的是为了获得可靠的、不变的特征。
第一种用法是和监督学习配合使用。在训练阶段,可以再用一个Decoder把低维度特征解码成和输入类似的数据。这样可以建立损失函数。训练完成之后可以把Decoder扔掉,把Encoder出的特征当成某个监督学习的输入,预测出结果,建立Loss function。在有大量没有标签的训练数据和少量有标签的数据的情况下,这样做很有效。图中的 z 叫 “latent factors”。

第二种用法是生成新的数据。对于编码出的 z(“latent factors” )的分布 p(z),可以直接选择简单的概率分布,比如高斯。而对于条件概率 p(x|z),则是比较复杂的,用神经网络来模拟。训练的过程如下图所示,(推导过程完全没听懂。。。)。训练完了之后可以只用Decoder network,渐进地改变z的各个分量(比如z1表示微笑的程度,z2表示头的姿态,则可以生成各种头的姿态各种微笑程度的人脸),生成不同的样例x_hat。

Variational Autoencoders的优点:生成模型的主要方法(principled approach);可以估计q(z|x)(没搞明白这里q是什么。。。),对于其他任务可能是很好的特征描述。缺点:最大化似然估计的下限,而不是直接最大化似然估计,从评估的角度说不如PixelRNN和PixelCNN;相比于GAN,生成的图片比较模糊,质量不高。
5. Generative Adversarial Networks (GAN) (Ian Goodfellow et al., "Generative Adersarial Nets", NIPS 2014)
不考虑显式地描述density function,而是根据对抗直接生成样例。我们没有办法直接从复杂的、高维度的训练集分布中生成样例,那么就先从简单的分布生成样例(比如随机噪音),然后从训练集分布学习把这个简单分布生成的样例转变成(transformation)符合训练集分布。神经网络就是用来描述这个复杂的transformation(神经网络的作用似乎一直就是用来描述高维度、非线性的某种函数、映射、转换等等)。该神经网络的输入是随机噪声,输出是符合训练集分布的样例。
GAN有两个网络,生成网络(generator network)和区分网络(discriminator network),生成网络尽一切努力生成图片欺骗区分网络,区分网络尽一切努力区分原图和生成的图。

具体的训练过程是先优化区分网络k次迭代,再优化生成网络一次迭代,然后不断重复。

训练完成之后,可以丢掉区分网络,只用生成网络来生成样例。
改进方案如下:

2017年是GAN的爆发年,出了成吨的相关研究。生成的样例越来越好。
GAN的优点:效果非常好。缺点:训练的过程不稳定,很需要经验和技巧;不能给出对得density function的估计。
6. 总结:生成模型的对比
PixelRNN和PixelCNN:显式的density model,优化似然函数,效果不错,低效、慢。
Variational autoencoders (VAE):优化似然函数的下限,latent representation很有用,inference queries,生成的图片的质量不够好。
Generative Adversarial Network (GANs):博弈的原理,生成的图片的质量超级好,难训练,no inference queries。
cs231n spring 2017 lecture13 Generative Models 听课笔记的更多相关文章
- cs231n spring 2017 lecture13 Generative Models
1. 非监督学习 监督学习有数据有标签,目的是学习数据和标签之间的映射关系.而无监督学习只有数据,没有标签,目的是学习数据额隐藏结构. 2. 生成模型(Generative Models) 已知训练数 ...
- cs231n spring 2017 lecture9 CNN Architectures 听课笔记
参考<deeplearning.ai 卷积神经网络 Week 2 听课笔记>. 1. AlexNet(Krizhevsky et al. 2012),8层网络. 学会计算每一层的输出的sh ...
- cs231n spring 2017 lecture14 Reinforcement Learning 听课笔记
(没太听明白,下次重新听) 1. 增强学习 有一个 Agent 和 Environment 交互.在 t 时刻,Agent 获知状态是 st,做出动作是 at:Environment 一方面给出 Re ...
- cs231n spring 2017 lecture2 Image Classification 听课笔记
1. 相比于传统的人工提取特征(边.角等),深度学习是一种Data-Driven Approach.深度学习有统一的框架,喂不同的数据集,可以训练识别不同的物体.而人工提取特征的方式很脆弱,换一个物体 ...
- cs231n spring 2017 lecture9 CNN Architectures
参考<deeplearning.ai 卷积神经网络 Week 2 听课笔记>. 1. AlexNet(Krizhevsky et al. 2012),8层网络. 学会计算每一层的输出的sh ...
- cs231n spring 2017 lecture11 Detection and Segmentation 听课笔记
1. Semantic Segmentation 把每个像素分类到某个语义. 为了减少运算量,会先降采样再升采样.降采样一般用池化层,升采样有各种"Unpooling"." ...
- cs231n spring 2017 lecture7 Training Neural Networks II 听课笔记
1. 优化: 1.1 随机梯度下降法(Stochasitc Gradient Decent, SGD)的问题: 1)对于condition number(Hessian矩阵最大和最小的奇异值的比值)很 ...
- cs231n spring 2017 lecture16 Adversarial Examples and Adversarial Training 听课笔记
(没太听明白,以后再听) 1. 如何欺骗神经网络? 这部分研究最开始是想探究神经网络到底是如何工作的.结果人们意外的发现,可以只改变原图一点点,人眼根本看不出变化,但是神经网络会给出完全不同的答案.比 ...
- cs231n spring 2017 lecture15 Efficient Methods and Hardware for Deep Learning 听课笔记
1. 深度学习面临的问题: 1)模型越来越大,很难在移动端部署,也很难网络更新. 2)训练时间越来越长,限制了研究人员的产量. 3)耗能太多,硬件成本昂贵. 解决的方法:联合设计算法和硬件. 计算硬件 ...
随机推荐
- Laravel学习笔记(三)--在CentOS上配置Laravel
在Laravel框架上开发了几天,不得不说,确实比较优雅,处理问题逻辑比较清楚. 今天打算在CentOS 7上配置一个Laravel,之前都是在本机上开发,打算实际配置一下. 1)系统 ...
- 原生JS的Ajax
转自:https://www.cnblogs.com/yufann/p/JS-Ajax.html 1.创建一个Ajax对象 非IE6浏览器:var obj = new XMLHttpReuqest() ...
- wordpress登录、修改、删除、查看代码记录
wordpress 登录,新增.修改.删除.查看,页面代码如下 package info.itest.www; import static org.junit.Assert.*; import org ...
- Mybatis篇总结
本文是对慕课网上"搞定SSM开发"路径的系列课程的总结,详细的项目文档和课程总结放在github上了.点击查看 JDBC写法 //sql: String sql = "s ...
- xml文件解析(使用解析器)
一.Xml解析,解析xml并封装到list中的javabean中 OM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在 ...
- css盒模型研究
css的盒模型一直是一个重点和难点,最近由后端的学习转到前端,觉得有必要深入研究一下css的盒模型. 1.万物皆盒子 我们必须要有一个理念,在html的世界里,万物皆盒子,那就是任何一个html元素都 ...
- errcode 4103 invalid page hint 小程序模板消息推送遇到的坑
invalid page hint一直提示这个坑爹的就是,我的小程序没发布之前,也就是测试版本用这个格式是可以的 /pages/myGroup/myGroup?groupid=22***但是发布成功以 ...
- Scrum And Teamwork
Scrum Learning 概念 Scrum是迭代式增量软件开发过程,通常用于敏捷软件开发.Scrum包括了一系列实践和预定义角色的过程骨架.Scrum中的主要角色包括同项目经理类似的Scrum主管 ...
- MVC框架实例构建
转自:http://www.cnblogs.com/levenyes/p/3290885.html MVC全名是Model View Controller,是模型(model)-视图(view)-控制 ...
- Windows批量添加防火墙例外端口
Windows下批量添加防火墙例外端口,查了网上资料,基本上都是使用"Netsh命令",循环增加端口,这会导致建立的规则特别多,不便于管理,查了下微软的资料,原来是Netsh命令, ...