2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part I)

Deep Generative Model-part 1:深度生成模型-part 1

1.Generative Models

就是致力于让机器自主学习的一些方法,比较有名的有下面几种:

PixelRNN
Variational Autoencoder(VAE)
Generative Adversarial Network(GAN)

什么意思呢?
现在的机器学习是能够区分猫狗的不同了,但是,机器还是不能准确地画一只猫出来,所以我们现在就generate 一个模型出来。
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part I)

2.Pixel RNN

Pixel RNN:不需要label就可以 train
根据前面的pixel,输出下一个pixel。pixel是由rgb三维构成,也就是说,输入一个颜色的vecter,输出一个颜色的vecter,这种方式可以收集大量的图片进行无监督训练,训练网络。通过部分的图像就可以预测后面的图像。
如果直接进行训练的话,RGB的值都会偏向于中间点,图像呈现灰色或者棕色。可以直接用one-hot编码的形式,让整个网络产生一个颜色(红色,黄色,蓝色…)。将相似的颜色用一个颜色来表示。
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part I)
应用1:
这个模型是非监督的。怎么玩?先给一张狗狗的图,遮住下半身让机器随你意画图,可以看到机器画出来了个啥!
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part I)
应用2
这个方法除了在图像处理方面的应用之外,还有声音和视频的应用。
比如给机器看影像中,一个人旁边有抹布,机器就会脑补把抹布拿起来的影像

2.1练习这个模型

Pokemon Creation:从792张原有的宝可梦图片学习创建新的宝可梦角色。
完全没有版权问题
Original image is 40×40,有点大
Making them into 20×20
每个颜色的像素都是由rgb代表,给rgb分别赋值代表不同的颜色。要想产生鲜明的颜色的话,就得让rgb的差值足够大。
这样有一些问题,当**函数是sigmoid的时候,输出的值不会是那种极端的0或者1,基本都是在0.5附近,这样图片就是都差不多都是灰色的。
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part I)
所以把像素使用独热编码表示:不用rgb合成了,让杜热编码的每一个编码代表一个颜色
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part I)
但是颜色太多怎么办,把类似颜色合并clustering:最后总共可以有167种颜色。
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part I)
看一下编码和rgb的对应关系
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part I)

实验结果:
先是盖住一半的宝可梦,valid data,机器没学过的。
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part I)
如果全部叫机器自己画会咋样?
如果都是机器画,每次的算法模型都一样,画出来的东西也是一样的,所以要加一些随机的东西在里面,本来是去下一个出现几率最大的颜色,但是加上随机变量,取不同颜色,就有了下面的杰作:
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part I)

3.Variational Auto Encoder(VAE)

3.1 先回顾一下Auto Encoder
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part I)
然后把decoder部分拿出来做生成任务:
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part I)
但是生成结果不太好,于是有了VAE。
看这个模型,区别在code的部分:一个相乘相加的公式,还要minimize
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part I)
除了输入输出的误差要最小化之外还要满足一个目标:
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part I)
为什么要弄这个东西后面会有解释,先来看看VAE在CIFAR-10上做的结果:VAE可以让我们控制图片生成的因素,虽然是什么因素还不知道。接下来还是以创造宝可梦项目为例进行说明。
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part I)
假设这个模型中设定的code是10维的,训练后之后把code和decoder拿出来进行宝可梦生成。
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part I)
这个过程中我们可以把code中的其中8个维度控制住,然后剩下的两个维度用如图所示的输入逐个输入,然后就可以观察输出的变换。
直起身来了
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part I)
然后可以从结果中观察出这两维对生成图像的影响。下面是另外两维的生成结果
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part I)
3.1应用:Writing Poetry
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part I)
先给定两个句子,然后用模型将句子映射为code,如下图:
2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part I)
然后把两个点连起来,然后等间隔的取若干点,当然了,这些点也是code。然后把这些code点从模型中reconstruction回句子:偏一点对应不同的code2020李宏毅学习笔记——45.Unsupervised learning Deep Generative Model(Part I)