机器学习与数据挖掘萌新的机器学习

逐层贪婪训练-栈式自编码

2018-06-14  本文已影响4人  初七123

UFLDL Tutorial学习笔记

概述
逐层贪婪训练法依次训练网络的每一层,进而预训练整个深度神经网络。在本节中,我们将会学习如何将自编码器“栈化”到逐层贪婪训练法中,从而预训练(或者说初始化)深度神经网络的权重。

按照从前向后的顺序执行每一层自编码器的编码步骤:


同理,栈式神经网络的解码过程就是,按照从后向前的顺序执行每一层自编码器的解码步骤:


其中,a(n)是最深层隐藏单元的激活值,其包含了我们感兴趣的信息,这个向量也是对输入值的更高阶的表示。

通过将a(n)作为softmax分类器的输入特征,可以将栈式自编码神经网络中学到的特征用于分类问题。

训练
一种比较好的获取栈式自编码神经网络参数的方法是采用逐层贪婪训练法进行训练。即先利用原始输入来训练网络的第一层,得到第一层的参数

然后网络第一层将原始输入转化成为由隐藏单元激活值组成的向量(假设该向量为A),接着把A作为第二层的输入,继续训练得到第二层的参数

最后,对后面的各层同样采用的策略,即将前层的输出作为下一层输入的方式依次训练。

对于上述训练方式,在训练每一层参数的时候,会固定其它各层参数保持不变。所以,如果想得到更好的结果,在上述预训练过程完成之后,可以通过反向传播算法同时调整所有层的参数以改善结果,这个过程一般被称作“微调(fine-tuning)”。

实际上,使用逐层贪婪训练方法将参数训练到快要收敛时,应该使用微调。反之,如果直接在随机化的初始权重上使用微调,那么会得到不好的结果,因为参数会收敛到局部最优。

如果你只对以分类为目的的微调感兴趣,那么惯用的做法是丢掉栈式自编码网络的“解码”层,直接把最后一个隐藏层的a(n)作为特征输入到softmax分类器进行分类,这样,分类器(softmax)的分类错误的梯度值就可以直接反向传播给编码层了。

微调多层自编码算法

微调是深度学习中的常用策略,可以大幅提升一个栈式自编码神经网络的性能表现。从更高的视角来讲,微调将栈式自编码神经网络的所有层视为一个模型,这样在每次迭代中,网络中所有的权重值都可以被优化。

上一篇下一篇

猜你喜欢

热点阅读