预训练如何改进神经网络中的分类?
How does pre-training improve classification in neural networks?
到目前为止,我阅读的许多论文都提到了这一点 "pre-training network could improve computational efficiency in terms of back-propagating errors",并且可以使用 RBM 或自动编码器来实现。
如果我没理解错的话,自动编码器通过学习
恒等函数,如果它的隐藏单元小于
输入数据,然后它也进行压缩,但这甚至有什么
任何与提高传播计算效率有关的事情
错误信号向后?是不是因为pre的权重
经过训练的隐藏单元与其初始值相差不大?
假设正在阅读本文的数据科学家自己会
已经知道自动编码器将输入作为目标值,因为
他们正在学习身份函数,这被认为是
无监督学习,但这种方法可以应用于
第一个隐藏层是卷积神经网络
特征图?每个特征图都是通过卷积学习到的
图像中具有感受野的内核。这个学习内核,如何
这可以通过预训练(无监督方式)获得吗?
我对自动编码器理论知之甚少,但我对 RBM 做了一些工作。 RBM 所做的是预测看到特定类型数据的概率是多少,以便将权重初始化为正确的球场——它被认为是一个(无监督的)概率模型,所以你不使用已知标签来纠正.基本上,这里的想法是学习率太大永远不会导致收敛,但学习率太小将永远无法训练。因此,通过 "pretraining" 以这种方式,您可以找出权重的大致范围,然后可以将学习率设置得较小,以便将它们降低到最佳值。
至于第二个问题,不,您通常不会预学习内核,至少不会以无监督的方式进行预学习。我怀疑这里预训练的意思与你的第一个问题有点不同 - 也就是说,正在发生的事情是他们正在采用预训练模型(比如来自模型动物园)并使用新的模型对其进行微调数据的。
您使用哪种模型通常取决于您拥有的数据类型和手头的任务。我发现 Convnets 可以更快更有效地训练,但并不是所有的数据在卷积时都有意义,在这种情况下,dbns 可能是可行的方法。除非说,你有少量数据,否则我会完全使用神经网络以外的东西。
无论如何,我希望这有助于解决您的一些问题。
需要注意的一件事是自动编码器尝试学习 non-trivial 识别函数,而不是识别函数本身。否则他们根本就没有用。那么 pre-training 帮助 将权重向量移向误差表面上的良好起点。然后 backpropagation 算法,基本上是做梯度下降,用于改进这些权重。请注意,梯度下降会卡在关闭的局部最小值中。
[忽略发布的图像中的术语 全局最小值 并将其视为另一个更好的局部最小值]
直观地说,假设您正在寻找从起点 A 到目的地 B 的最佳路径。有一张没有显示路线的地图(你在神经网络模型的最后一层获得的错误)有点告诉你去哪里。但是你可能会把自己放在一条有很多障碍的路线上,上山下山。然后假设有人告诉你他之前走过的路线和方向(pre-training)并给你一张新地图(pre=training phase 的起点)。
这可能是为什么从随机权重开始并立即开始使用反向传播优化模型不一定能帮助您实现使用 pre-trained 模型获得的性能的直观原因。但是,请注意,许多达到 state-of-the-art 结果的模型不一定使用 pre-training,它们可能会结合使用反向传播和其他优化方法(例如 adagrad、RMSProp、Momentum 和...)来希望避免得到陷入糟糕局部极小值。
Here是第二张图片的来源。
到目前为止,我阅读的许多论文都提到了这一点 "pre-training network could improve computational efficiency in terms of back-propagating errors",并且可以使用 RBM 或自动编码器来实现。
如果我没理解错的话,自动编码器通过学习 恒等函数,如果它的隐藏单元小于 输入数据,然后它也进行压缩,但这甚至有什么 任何与提高传播计算效率有关的事情 错误信号向后?是不是因为pre的权重 经过训练的隐藏单元与其初始值相差不大?
假设正在阅读本文的数据科学家自己会 已经知道自动编码器将输入作为目标值,因为 他们正在学习身份函数,这被认为是 无监督学习,但这种方法可以应用于 第一个隐藏层是卷积神经网络 特征图?每个特征图都是通过卷积学习到的 图像中具有感受野的内核。这个学习内核,如何 这可以通过预训练(无监督方式)获得吗?
我对自动编码器理论知之甚少,但我对 RBM 做了一些工作。 RBM 所做的是预测看到特定类型数据的概率是多少,以便将权重初始化为正确的球场——它被认为是一个(无监督的)概率模型,所以你不使用已知标签来纠正.基本上,这里的想法是学习率太大永远不会导致收敛,但学习率太小将永远无法训练。因此,通过 "pretraining" 以这种方式,您可以找出权重的大致范围,然后可以将学习率设置得较小,以便将它们降低到最佳值。
至于第二个问题,不,您通常不会预学习内核,至少不会以无监督的方式进行预学习。我怀疑这里预训练的意思与你的第一个问题有点不同 - 也就是说,正在发生的事情是他们正在采用预训练模型(比如来自模型动物园)并使用新的模型对其进行微调数据的。
您使用哪种模型通常取决于您拥有的数据类型和手头的任务。我发现 Convnets 可以更快更有效地训练,但并不是所有的数据在卷积时都有意义,在这种情况下,dbns 可能是可行的方法。除非说,你有少量数据,否则我会完全使用神经网络以外的东西。
无论如何,我希望这有助于解决您的一些问题。
需要注意的一件事是自动编码器尝试学习 non-trivial 识别函数,而不是识别函数本身。否则他们根本就没有用。那么 pre-training 帮助 将权重向量移向误差表面上的良好起点。然后 backpropagation 算法,基本上是做梯度下降,用于改进这些权重。请注意,梯度下降会卡在关闭的局部最小值中。
[忽略发布的图像中的术语 全局最小值 并将其视为另一个更好的局部最小值]
直观地说,假设您正在寻找从起点 A 到目的地 B 的最佳路径。有一张没有显示路线的地图(你在神经网络模型的最后一层获得的错误)有点告诉你去哪里。但是你可能会把自己放在一条有很多障碍的路线上,上山下山。然后假设有人告诉你他之前走过的路线和方向(pre-training)并给你一张新地图(pre=training phase 的起点)。
这可能是为什么从随机权重开始并立即开始使用反向传播优化模型不一定能帮助您实现使用 pre-trained 模型获得的性能的直观原因。但是,请注意,许多达到 state-of-the-art 结果的模型不一定使用 pre-training,它们可能会结合使用反向传播和其他优化方法(例如 adagrad、RMSProp、Momentum 和...)来希望避免得到陷入糟糕局部极小值。
Here是第二张图片的来源。