自动编码器(AE)
1、自动编码器的基本思想
直接用一个单层或者多层神经网络对输入数据进行映射,得到输出向量,作为从输入数据中提取出的特征
核心问题:怎么设定训练目标
解决思路:编码器+解码器框架
2、网络结构
编码器-将输入数据映射为特征向量
解码器-将特征向量映射回输入向量,重构
3、损失函数
损失函数定义为重构误差-类似PCA的做法
输入与输出:(X,X)
训练算法和普通的神经网络相同(BP算法+梯度下降)
4、特征提取
实际使用时,只需要编码器网络,解码器只用于训练阶段
输入一个数据向量,即可得到特征向量
5、去噪自动编码器(Denoising Autoencoder,DAE)
在训练样本中加入随机噪声,重构的目标是不带噪声的样本数据
用自动编码器学习得到的模型重构出来的数据可以去除这种噪声,获得没有被污染过的数据
对于每个样本向量X随机选择其中的一部分分量,将它们的值置为0,其他分量保持不变,得到的带噪声向量x
输入与输出:
6、稀疏自动编码器
加入稀疏性惩罚项,让编码器的输入结果稀疏
编码器网络隐含层的第i个神经元的平均激活度为对所有训练样本的激活函数的均值,记为ρi
ρ为人工指定的活跃度,是一个接近于0的数
使用相对熵构造惩罚项
加上惩罚项后的目标函数变为
7、收缩自动编码器(Contractive Auto-Encoders,CAE)
训练时在损失函数中加上正则化项,使得编码器函数的导数尽可能小
正则化项是编码器函数导数的二范数平方
8、多层自动编码器
层叠自动编码器由多个自动编码器串联组成,能够逐层提取输入数据的特征,在此过程中逐层降低输入数据的维度,将高维的输入数据转化为低维的特征
训练层也是逐层进行的。给定输入向量,采用无监督方式训练第一层自动编码器。把第一个自动编码器的输出作为第二个自动编码器的输入,采用同样的方法训练第二个自动编码器
重复第二步直到所有自动编码器训练完成。把最后一个自动编码器的输出作为最终的输出
在每一层,都会得到输入数据的不同抽象特征,随着层数的增加,这个特征越来越抽象