训练堆叠式自动编码器和2层神经网络有什么区别吗?


14

假设我正在编写一种用于构建2层堆叠式自动编码器和2层神经网络的算法。它们是一样的还是不同的?

我了解的是,当我构建一个堆叠式自动编码器时,我会逐层构建。对于神经网络,我将初始化网络中的所有参数,然后对于每个数据点,将其通过网络并计算损耗(例如,euclean距离)并进行反向传播。

Answers:


16

堆叠式自动编码器与多层神经网络不同。实际上,您将使两个网络共享权重,并可能共享内存缓冲区。因此,在您的实施中,两个网络相互交织。

通常,自动编码器以无监督,贪婪的分层方式进行训练。(没有标签,仅从网络的第一层开始训练,然后随便添加新层。)权重可以使用多种技术来学习,例如“批量”梯度下降(请不要这样做),进行小批量随机梯度下降(SGD),类似L-BFGS的准牛顿法。

这个想法是,以无监督的方式学习的权重可以最小化表示学习任务的重构误差,这为初始化监督的分类任务(例如分类或相似性)的网络提供了一个很好的起点。即,网络通过查看未标记的数据来了解有关基础分布的信息,从而可以区分标记的数据。但是,对于此新任务,权重仍然需要“微调”。因此,在网络顶部添加逻辑回归层,然后使用标记的数据集进行监督学习。微调步骤将进行梯度下降,并同时调整网络中所有层的权重。

这种训练神经网络的方式的优点是:

  1. 无监督训练可让您向网络显示更多数据,因为获取大型无监督数据集比获取标记数据要容易得多。
  2. 您可以将经过预训练的网络用作训练新分类器的“起点”,这样就不必每次都从头开始。

对于本文,请参阅堆叠式去噪自动编码器:使用局部去噪标准在深度网络中学习有用的表示形式


我对第二步感到困惑,在第二步中,您为分类任务训练了编码层和分类层(例如softmax层)。您是否再次将训练数据集用于此部分以学习标签?我觉得这很奇怪,因为训练集只是用来学习其自身的近似值。
家伙

无论如何,如果所有标签数据都没有多大意义。这是针对您有更多的未标记数据要进行预训练,然后使用标记的“训练”数据进行微调的情况。
喵2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.