神经网络 - 为什么这么多的学习规则?

时间:2010-01-23 01:18:10

标签: machine-learning neural-network

我正在启动神经网络,目前主要关注D. Kriesel's tutorial。一开始,它引入了至少三个(不同的?)学习规则(Hebbian,delta规则,反向传播),涉及监督学习。

我可能会遗漏一些东西,但如果目标只是为了尽量减少错误,为什么不在Error(entire_set_of_weights)上应用渐变下降?

编辑:我必须承认答案仍然让我困惑。如果可以指出这些方法之间的实际差异,以及它们与直线梯度下降之间的差异,将会有所帮助。

为了强调它,这些学习规则似乎考虑了网络的分层结构。另一方面,找到整个权重集的最小Error(W)完全忽略它。这怎么样?

4 个答案:

答案 0 :(得分:11)

一个问题是如何分配错误的“责备”。经典的Delta规则或LMS规则 基本上是梯度下降。将Delta Rule应用于多层网络时,可以获得反向提升。出于各种原因创建了其他规则,包括更快收敛的愿望,非监督学习,时间问题,被认为更接近生物学的模型等。

关于“为什么不只是梯度下降?”的具体问题。梯度下降可能会解决一些问题,但许多问题都有局部最小值,天真的梯度下降会陷入其中。对此的初始响应是添加“动量”项,以便您可以“推出”局部最小值;这几乎是经典的backprop算法。

答案 1 :(得分:2)

首先请注意,“反向传播”仅表示您将每个图层上的增量规则从输出应用回输入,因此它不是单独的规则。

至于为什么不是简单的梯度下降,嗯,delta规则基本上是梯度下降。然而,它倾向于过度拟合训练数据,并且不会像不试图将误差范围衰减到零的技术那样有效地推广。这是有道理的,因为这里的“错误”仅仅意味着我们的样本和输出之间的差异 - 它们不能保证准确地代表所有可能的输入。

答案 2 :(得分:1)

反向传播和幼稚梯度下降在计算效率上也不同。 Backprop基本上考虑了网络结构,每个权重只计算实际需要的部分。

关于权重的误差的导数通过链规则分为:∂E/∂W=∂E/∂A*∂A/∂W。 A是特定单位的激活。在大多数情况下,导数将为零,因为W由于网络拓扑而稀疏。使用backprop,您将获得有关如何忽略渐变的这些部分的学习规则。

因此,从数学的角度来看,backprop并不那么令人兴奋。

答案 3 :(得分:1)

可能存在一些问题,例如使backprop遇到局部最小值。此外,仅作为示例,您无法使用backprop调整拓扑。还有很酷的学习方法,使用自然启发的元启发式(例如,进化策略),可以同时调整权重和拓扑(甚至是重复的)。也许,我会添加一个或多个章节来涵盖它们。

在手稿的下载页面上还有一个讨论功能 - 如果您发现其他不喜欢手稿的谜题,请随意将它们添加到页面中,以便我可以在下一版中更改内容

格尔茨, 大卫(Kriesel ;-))