预训练如何改进神经网络中的分类?

Posted

技术标签:

【中文标题】预训练如何改进神经网络中的分类?【英文标题】:How does pre-training improve classification in neural networks? 【发布时间】:2016-04-03 13:15:12 【问题描述】:

到目前为止,我读过的许多论文都提到了“预训练网络可以提高反向传播误差方面的计算效率”,并且可以使用 RBM 或自动编码器来实现。

    如果我理解正确,自动编码器通过学习 恒等函数,如果它的隐藏单元小于 输入数据,然后它也进行压缩,但是这甚至有什么 与提高传播计算效率有关的任何事情 错误信号向后?是不是因为pre的权重 经过训练的隐藏单元与其初始值相差不大?

    假设正在阅读本文的数据科学家自己会 已经知道自动编码器将输入作为目标值,因为 他们正在学习恒等函数,这被认为是 无监督学习,但这种方法可以应用于 卷积神经网络的第一个隐藏层是 特征图?每个特征图都是通过卷积一个学习的 内核在图像中有一个感受野。这个学过的内核,怎么 这可以通过预训练(无监督方式)获得吗?

【问题讨论】:

【参考方案1】:

需要注意的一点是,自动编码器尝试学习非平凡识别功能,而不是识别功能本身。否则它们根本就没有用处。那么预训练帮助将权重向量移向误差表面上的良好起点。然后使用 反向传播 算法,它基本上是在做梯度下降,用于改进这些权重。请注意,梯度下降会卡在关闭局部最小值中。

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

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

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

Here 是第二张图片的来源。

【讨论】:

感谢清晰的解释。 @VM_AI 不客气。如果您有大量数据,您可能会使用新的优化技术,并且您可能不需要对模型进行任何预训练。【参考方案2】:

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

至于第二个问题,不,您通常不会预先学习内核,至少不会以无监督的方式进行。我怀疑这里预训练的含义与您的第一个问题有点不同-也就是说,正在发生的事情是他们正在采用预训练模型(例如来自模型动物园)并使用新集合对其进行微调数据的。

您使用哪种模型通常取决于您拥有的数据类型和手头的任务。我发现卷积网络可以更快、更有效地训练,但并非所有数据在卷积时都有意义,在这种情况下,dbns 可能是要走的路。除非说,你有少量数据,否则我会完全使用神经网络以外的东西。

无论如何,我希望这有助于解决您的一些问题。

【讨论】:

以上是关于预训练如何改进神经网络中的分类?的主要内容,如果未能解决你的问题,请参考以下文章

4. 使用预训练的PyTorch网络进行图像分类

4. 使用预训练的PyTorch网络进行图像分类

fine-tuning:预训练中的迁移

获取 torchvision 预训练网络的分类标签

23个系列分类网络,10万分类预训练模型,这是飞桨PaddleClas百宝箱

深度学习笔记:利用预训练模型之特征提取训练小数据集上的图像分类器