目录
- 1. 监督学习&无监督学习
- 1.1 监督学习
- 1.2 无监督学习
- 1.3 为什么需要无监督学习
- 2. AutoEncoders
- 3. Auto Encoders loss function
- 4. PCA VS Auto Encoders
- 5. Auto Encoders的变种
- 5.1 Denoising Auto Encoders
- 5.2 Dropout AutoEncoders
- 5.3 Adversarial AutoEncoders
- 5.4 Variational Auto Encoder
1. 监督学习&无监督学习
1.1 监督学习
分类和回归都属于监督学习,即数据集需要人的参与,比如:数据标定、分类,因此受人的主观影响较大。
1.2 无监督学习
下图展示了三大机器学习方向的数据量,增强学习最少,其次是监督学习,大部分数据是无标注无监督学习
1.3 为什么需要无监督学习
- 降维
- 预处理
比如:把224x224的数据降维为64x64 - 可视化
降维后,进行数据可视化
https://projector.tensorflow.org/ - 从无监督数据中发现数据的分布、形态,方便后续train
- 压缩、去噪、超分辨率
2. AutoEncoders
auto encoder 就是重建自己,它的输入和输出维度相同,如下图:输入和输出都是784,中间都是隐藏层,过程分三步,encoder、code和decode,decode是encode的反过程。code可以看作数据暂存,可升维也可降维,下图处理手写数字识别图片,code降到了2维
3. Auto Encoders loss function
如下图:MSE和cross Entropy loss函数也是适合auto encoder的
cross Entropy用于binary 0,1输入。
4. PCA VS Auto Encoders
大部分数据是非线性的,PCA 属于线性变化,而Auto Encoders得意于神经网络的非线性,因此效果要比PCA更好。
如下图:
5. Auto Encoders的变种
5.1 Denoising Auto Encoders
为了防止像素级重建时,网络记住像素值,通常会在样本数据中增加一些噪声,这样才能记住更高级别的特征。
如下图:可以看出加了噪声后,重建后的效果还是不错的。
5.2 Dropout AutoEncoders
drop是在train的时候,删除掉一些网络连接,以防止over fitting,而在测试的时候又恢复全部网络连接。
如下图:
绿色柱状图标识dropout与loss之间的关系,蓝色标识dropout与accuracy之间的关系,可以看出dropout为0时,全连接loss最小,但是accuracy却不是最大的,说明可能出现了over fitting,dropout=0.2时,accuracy最大,说明dropout在一定程度上防止overfitting
5.3 Adversarial AutoEncoders
AutoEncoders的hidden code数据存在类似下图的一种分布,随着epoch的增加数据越靠近下方,而这种分布并不符合常见的分布形态,所以人为希望均值=0,方差为某个值,使得在生成时,h从[-1,1]属于某种分布,为了解决这个问题,Adversarial 加入一个discriminator网络用来验证真实的z分布是否与z`一致,如果相差不大输出一个real,否则输出一个Fake
5.4 Variational Auto Encoder
VAE = Variational Auto Encoder,变分自编码器。是一种常见的生成模型,属于无监督学习的范畴。它能够学习一个函数/模型,使得输出数据的分布尽可能的逼近原始数据分布,其基本思路是:把一堆真实样本通过编码器网络变换成一个理想的数据分布,然后这个数据分布再传递给一个解码器网络,得到一堆生成样本,生成样本与真实样本足够接近的话,就训练出了一个VAE模型.
下图中的公式,前半部分计算的是重建误差,可以理解为MSE或者是Cross Entropy,而后半部分KL是散度的公式,主要是计算q分布与p分布的相似度。
那么公式的目标就是重建误差越小越好,q和p的分布越接近越好。
下图中1表示pq两种分布,2表示两种分布的重叠程度,重叠度越高,值越低,3表示的KL值,同样是两种分布越接近值越小,反之越大。
下图是计算重建误差max likelihood 公式的两个常用方法,MSE和cross Entropy
计算KL的公式
下图表示VAE的一个过程,AE过程是输入x->h->x值一一对应;VAE是输入->N分布->x
,也就说值不是一一对应的了,所以需要在N分布中sample出一个值,变为x->h->x`一一对应。
那么有一个问题是sample操作不可微,所以有个小技巧就是将N(μ,σ 2 ^2 2)分布表达为
使得μ和σ即变得可导,又保留了原来的分布特性,因为不关心ε ,从而忽略掉ε
VAE网络,隐藏层是一个分布,z值从分布中sample得到
AE与VAE的对比,发现VAE还是要好一些
生成模型
VAE学习的是分布,通过从q(h)分布sample不同的h值,就可以做生成模型
下图是通过VAE和GAN生成的二次元图像