预训练如何提高神经网络分类的准确性?

7
我阅读了许多论文,其中提到“预训练网络可以通过使用RBM或Autoencoders来提高反向传播误差的计算效率”。
1. 如果我理解正确,AutoEncoders 通过学习恒等函数工作,如果隐藏单元少于输入数据的大小,则还会进行压缩。但是,这与如何提高向后传播误差信号的计算效率有什么关系呢?这是因为预先训练的隐藏单元的权重与其初始值相差不大吗?
2. 假设正在阅读此内容的数据科学家已经知道 AutoEncoders 将输入作为目标值,因为它们正在学习恒等函数,这被认为是无监督学习。但是,这种方法是否适用于卷积神经网络,其中第一个隐藏层是特征映射?每个特征映射是通过将学习到的内核与图像中的接受域进行卷积而创建的。这个学习到的内核如何以预训练(无监督方式)获得?
2个回答

11
请注意,自编码器试图学习非平凡的识别功能,而不是识别功能本身。否则,它们将毫无用处。预训练有助于将权重向量移动到误差表面上的良好起点。然后使用反向传播算法(基本上是梯度下降)来改进这些权重。请注意,梯度下降会陷入最接近的局部最小值中。

enter image description here

[忽略图片中的术语全局最小值,将其视为另一个更好的局部最小值]

直观地说,假设您正在寻找从起点A到终点B的最佳路径。没有显示路线的地图(神经网络模型的最后一层得到的错误)告诉您该去哪里。但是您可能会走上一条有很多障碍物、上坡和下坡的路线。然后假设有人告诉您他以前走过的一条路线和方向(预训练),并给您一张新地图(预训练阶段的起点)。

这可能是为什么使用随机权重并立即开始使用反向传播优化模型可能不一定帮助您实现使用预训练模型获得的性能的直观原因。但是,请注意,许多实现最先进结果的模型不一定使用预训练,并且它们可能使用反向传播与其他优化方法(例如adagrad、RMSProp、Momentum等)相结合,以希望避免陷入 不良 的局部最小值。

enter image description here

这里是第二张图片的源代码。


感谢您清晰明了的解释。 - VM_AI
@VM_AI 不客气。如果您有大量的数据,可以使用新的优化技术,很可能不需要对模型进行任何预训练。 - Amir

0

我对自编码器理论不是很了解,但我做过一些RBM的工作。RBM的作用是预测看到特定类型数据的概率,以便将权重初始化到正确的范围内-它被认为是一种(无监督)概率模型,因此您不使用已知标签进行校正。基本上,这里的想法是,学习速率太大永远不会导致收敛,但学习速率太小将需要很长时间来训练。因此,通过这种“预训练”方式,您可以找出权重的范围,然后可以将学习速率设置为较小,以便将其降至最佳值。

至于第二个问题,通常情况下不会以无监督的方式预先学习卷积核。我怀疑这里所说的预训练与您第一个问题中的预训练有所不同-也就是说,正在发生的是他们正在使用预训练模型(例如从模型库中)并使用新的数据集进行微调。

通常你使用哪种模型取决于你所拥有的数据类型和手头的任务。我发现卷积神经网络训练速度更快、更高效,但并非所有数据在进行卷积时都有意义,这种情况下深度信念网络可能是更好的选择。除非你只有少量数据,否则我会完全使用其他方法而不是神经网络。

总之,我希望这能够帮助你解答一些问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接