自编码器微调_自编码(AutoEncoder)模型及几种扩展之三——SDAE

SDAE(堆栈去噪自编码器)是一种无监督的神经网络模型,通过多层DAE堆叠形成深度架构。在训练过程中,仅在输入层加入噪声。完成训练后,通过添加分类器并使用带标签数据进行有监督微调,使其具备分类功能。SDAE可用于特征提取,与传统监督算法结合使用,或在最顶层添加softmax层进行微调。代码示例展示了SDAE的构建和训练过程。
摘要由CSDN通过智能技术生成

5、 SDAE模型

SDAE(stacked denoised autoencoder ,堆栈去噪自编码器)是vincent大神提出的无监督的神经网络模型,论文:Stacked Denoising Autoencoders: Learning Useful Representations ina Deep Network with a Local Denoising Criterion,原文作者从不同角度解释了模型架构设计理念,非常值得一读。原文请戳:http://www.jmlr.org/papers/volume11/vincent10a/vincent10a.pdf

sDAE的思想就是将多个DAE堆叠在一起形成一个深度的架构. 需要注意的是, 只有在训练的时候才会对输入进行腐蚀(加噪), 一旦训练完成, 就不需要在进行腐蚀, 如下图所示

af23f64989139925647bcf00d621e1dc.png

SDAE只是一个特征提取器,并不具有分类功能。为了使SDAE具有分类功能,需在其顶层添加分类器,如SVM、softmax等,并使用带标签的数据对SDAE进行有监督训练,最后使用利用BP算法对整个网络参数进行微调,便得到具有分类功能的SDAE。

具体步骤如下:

  • Step1 初始化SDAE网络参数;
  • Step2 训练第一层DAE,将其隐含层作为第2个DAE的输入,并进行同样的训练,直到第n层DAE训练完成;
  • Step3 将训练好的n层DAE进行堆叠形成SDAE,向SDAE网络顶层添加输出层;
  • Step4 利用样本数据和标签对整个网络进行有监督的微调。

来自李宏毅的PPT的图可能更清楚理解其训练过程:

3cff06a2101c78ba377279a08e545f88.png

逐层贪婪训练:每层自编码层都单独进行非监督训练,以最小化输入(输入为前一层的隐层输出)与重构结果之间的误差为训练目标。前K层训练好了,就可以训练K+1层,因为已经前向传播求出K层的输出,再用K层的输出当作K+1的输入训练K+1层。

一旦SDAE训练完成, 其高层的特征就可以用做传统的监督算法的输入。当然,也可以在最顶层添加一层logistic regression layer(softmax层),然后使用带label的数据来进一步对网络进行微调(fine-tuning),即用样本进行有监督训练(如上图中最上层是10类分类)。

看代码吧:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值