Unsupervised Learning : Generation
本章主要讲解了无监督学习中的生成模型方法。
1.生成模型(Generative Models)
“What I cannot create, I do not understand.” ——Richard Feynman
生成模型的想法是希望机器能够自己主动去生成,去创造。
2.PixelRNN
此方法主要是用到RNN,例如要生成一张3*3的图,可以一次生成一个像素,再将其组合起来就可以得到要求的图。此方法能够被大量没有标注的图像进行训练。
上图先随机得到一个像素点值(橙色),将其作为输入用一个RNN网络输出了一个蓝色的像素点;接着用原来的橙色点和生成的蓝色点,两个点作为输入,用RNN网络输出另外一个浅蓝色的点;接着用这已有的三个点作为输入,再重复之前的步骤......直到得到完整的图。
3.Variational AutoEncoder(VAE)
在第十四讲,了解了自编码器的知识,最初想法是可以利用解码器,随机产生一个code作为输入向量,来产生图像,但是效果并不理想。
VAE的想法是通过对编码器的输出做出改变,如下图所示。
假设code维度是三维。编码器的输出m1、m2、m3是原始code,σ1、σ2、σ3视为添加的噪声的方差,这是自动学习的,通过指数操作保证非负,e1、e2、e3是系数。得到的新的code是带噪声的。如果在学习时,仅仅最小化重构误差会怎样呢?显然,噪声方差为0就能使得误差最小,但这和我们的想法不一致。所以在上图右下方,在学习时不仅要最小化重构误差也要最小化该公式的值。
VAE为什么work?一种直觉的想法是,其是加上噪声了的。比如上图中,要在一张满月图和半月图中生成一张图,加上了噪声后,能够使得在很大范围内都是月亮的圆和半圆的形状,所以能够在一定程度上保证在其中间的生成图是介于两者之间的。
其主要数学原理是高斯混合模型(Gaussian Mixture Model)。
VAE的问题是其实VAE并没有想过怎样去生成一张新图,而是在产生一张与数据库中的图尽可能相似的图,只是在模仿。上图中一个像素点的不同在原始的“7”图上,左边的可以理解,但是右图是不一样的,是假的,但是VAE会认为说其与原始目标是一致的。
VAE并没有生成新图,而是仅仅记住了已经存在了的图。
4.总结
本章主要讲述了两种生成模型的方法:PixelRNN以及Variational AutoEncoder(VAE)。
并讲述了其原理及优缺点。