自动编码器,也就是自编码神经网络,是神经网络的一种
采用无监督学习的方式对高维数据进行高效的特征提取和特征表示,在学术界和工业界都大放异彩
我们之前看的都是监督学习
但是生活中的大量的数据都是没有label的
现在来看非监督学习
机器学习领域的三大方向
强化学习(樱桃)、监督学习(蛋糕的外皮)、非监督学习
为什么需要非监督学习?
降维
利用大量的无标签数据
https://projector.tensorflow.org/
Auto-Encoders
监督学习是有一个明确的目标的,那么非监督学习也是有目标的
目标就是重建它自己
与CNN不同的在于,CNN的输出层是分类,如果是十分类输出层就有10个节点。但无监督网络就无法分类,其目标就是重建自己,所以输出层的节点数=输入层的节点数
自编码神经网络就是一个特殊的全连接层
neck可以升维也可以降维,大部分是降维
怎样训练
还是原来那些方法
自编码神经网络还是神经网络,所以training还是看loss function
PCA vs AutoEncoder
PCA,principal components analysis,主成分分析
在auto-encoder之前,降维都是用PCA降维
但是PCA具有线性特性,大部分的数学形态都是非线性的,线性变化很可能能操作的空间就非常少
可以看到autoencoder的效果还是好于PCA的
AutoEncoder的一些变种
Denoising AutoEncoders
只是在像素级别的重建,很有可能只是记住一些特征。为了防止这样,我们给加一些扰动,加一些噪声
如果加了噪声之后还能重建出来,就说明能够从数据中发现真正的规律了
Dropout AutoEncoders
在训练的时候,有目的得让一些权值断开(把weight暂时设置为0,但以后反向传播还要用)
这样给下一层的信息就是有限的了,就迫使系统更加robust,不会依赖所有神经元的输入
可以看到,dropout很小的时候accurancy并不是最小的,因为overfitting了,把一些噪声的形态也记住了
Adversarial Autoencoders
对抗自编码器,AAE
将GAN的技术应用到了autoencoder上面
AAE是根据VAE发展来的
encoder把真实分布x映射成隐层的z, decoder 再将z解码还原成x。
AAE的特点就在于在隐层hidden layer中引入了对抗的思想来优化隐层的z