自动编码机
自动编码器就是一种尽可能复现输入信号的神经网络
-
为了实现这种复现,自动编码器就必须捕捉可以代表输入数据的最重要因素,和主成分分析类似,找到可以代表原信息的主要成分
-
一般的神经网络学习都是有标签的学习,根据当前计算的输出值和label之间的差去改变前面各层的参数,直到收敛。但是对于无标签的数据,神经网络无法进行反向传播进行训练,此时需要找到一个特征进行学习。
无监督学习过程:
-
将input输入一个encoder编码器,就会得到一个code,这个code也就是输入的一个表示
-
增加一个decoder解码器
-
通过调整encoder和decoder的参数,使得重构误差最小,这样就得到了输入input信号的一个表示了,也就是编码code
-
因为是无标签数据,所以误差来源就是直接重构后与原输入相比得到
如下图所示:
第一步:采用自下而上的无监督学习——wake-sleep算法
-
wake阶段:
认知过程,通过下层的输入特征(Input)和向上的认识(Encoder)权重产生每一层的抽象表示(Code),再通过当前的生成(Decoder)权重产生一个重建信息(Reconstruction),计算输入特征和重建信息残差,使用梯度下降修改层间的下行生成(Decoder)权重。也就是“如果现实和我想象的不一样,改变我的权重使得我想象的东西变得与现实一样”。
-
sleep阶段:
生成过程,通过上层概念(Code)和向下的生成(Decoder)权重,生成下层的状态,再利用认知(Encoder)权重产生一个抽象景象。利用初始上层概念和新建抽象景象的残差,利用梯度下降修改层间向上的认知(Encoder)权重。
第二步:自顶向下的监督学习
-
这一步是在第一步学习获得各层参数进的基础上,在最顶的编码层添加一个分类器(例如络捷斯特回归、SVM等),而后通过带标签数据的监督学习,利用梯度下降法去微调整个网络参数。
-
深度学习的第一步实质上是一个网络参数初始化的过程。区别于传统神经网络初值碎浆机初始化,深度学习模型是通过无监督学习输入数据的结构得到的,因而这个初值更接近于全局最优