首页 理论教育自动编码器优化方法

自动编码器优化方法

【摘要】:自动编码器就是一种尽可能复现输入信号的神经网络。为了实现这种复现,自动编码器就必须捕捉可以代表输入数据的最重要的因素,就像主成分分析那样,找到可以代表原信息的主要成分。通过编码器产生特征,然后训练下一层。此时,这个自动编码器还不能用来分类数据,因为它还没有学习如何去联结一个输入和一个类。为了实现分类,可以在自动编码器的最顶的编码层添加一个分类器,然后通过标准的多层神经网络的监督训练方法去训练。

深度学习最简单的一种方法是利用人工神经网络的特点,人工神经网络本身就是具有层次结构的系统,如果给定一个神经网络,假设其输出与输入是相同的,然后训练调整其参数,得到每一层中的权重。自然地,我们就得到了输入I的几种不同表示(每一层代表一种表示),这些表示就是特征。自动编码器就是一种尽可能复现输入信号的神经网络。为了实现这种复现,自动编码器就必须捕捉可以代表输入数据的最重要的因素,就像主成分分析那样,找到可以代表原信息的主要成分。具体过程简单的说明如下。

(1)给定无标签数据,用非监督学习特征

在之前的神经网络中,输入的样本是有标签的,即(输入值,目标值),这样根据当前输出和实际值之间的差去改变前面各层的参数,直到收敛。但现在只有无标签数据,没有对应的实际值作比较,那么这个误差怎么得到呢?

将输入值输入到一个编码器,就会得到一个编码,这个编码也就是输入的一个表示,为了确定这个编码表示的就是输入值,我们加一个解码器,这时候解码器就会输出一个信息,那么如果输出的这个信息和一开始的输入信号输入值是很像的(理想情况下就是一样的),那很明显,人们就有理由相信这个编码是可靠的。所以,就通过调整编码器和编码器的参数,使得重构误差最小,这时候就得到了输入值信号的第一个表示了,也就是编码了。因为是无标签数据,所以误差的来源就是直接重构后与原输入相比得到。

(2)通过编码器产生特征,然后训练下一层。这样逐层训练

上面得到第一层的编码,重构误差最小让这个编码就是原输入信号的良好表达了,或者说,它和原信号是一模一样的,虽然表达不一样,但反映的是一个东西。第二层和第一层的训练方式没有差别,将第一层输出的编码当成第二层的输入信号,同样最小化重构误差,就会得到第二层的参数,并且得到第二层输入的编码,也就是原输入信息的第二个表达了。其他层用同样的方法进行。

(3)有监督微调

经过上面的方法,就可以得到很多层。至于需要多少层需要自己试验调整。每一层都会得到原始输入的不同的表达。

此时,这个自动编码器还不能用来分类数据,因为它还没有学习如何去联结一个输入和一个类。它只是学会了如何去重构或者复现它的输入而已;或者说,它只是学习获得了一个可以良好代表输入的特征,这个特征可以最大程度代表原输入信号。为了实现分类,可以在自动编码器的最顶的编码层添加一个分类器(如逻辑斯特回归、SVM等),然后通过标准的多层神经网络的监督训练方法(梯度下降法)去训练。