异或神经网络在训练过程中误差不再减小

14

我正在使用随机梯度下降通过反向传播来训练一个XOR神经网络。神经网络的权重被初始化为介于-0.5和0.5之间的随机值。神经网络成功地训练了大约80%的时间。然而有时它会在反向传播时“卡住”。所谓的“卡住”,是指我开始看到错误校正速率的下降。例如,在一次成功的训练期间,随着网络学习,总误差会迅速减少:

...
...
Total error for this training set: 0.0010008071327708653
Total error for this training set: 0.001000750550254843
Total error for this training set: 0.001000693973929822
Total error for this training set: 0.0010006374037948094
Total error for this training set: 0.0010005808398488103
Total error for this training set: 0.0010005242820908169
Total error for this training set: 0.0010004677305198344
Total error for this training set: 0.0010004111851348654
Total error for this training set: 0.0010003546459349181
Total error for this training set: 0.0010002981129189812
Total error for this training set: 0.0010002415860860656
Total error for this training set: 0.0010001850654351723
Total error for this training set: 0.001000128550965301
Total error for this training set: 0.0010000720426754587
Total error for this training set: 0.0010000155405646494
Total error for this training set: 9.99959044631871E-4

Testing trained XOR neural network
0 XOR 0: 0.023956746649767453
0 XOR 1: 0.9736079194769579
1 XOR 0: 0.9735670067093437
1 XOR 1: 0.045068688874314006

然而,当它卡住时,总错误数在减少,但似乎是以递减的速率减少:

...
...
Total error for this training set: 0.12325486644721295
Total error for this training set: 0.12325486642503929
Total error for this training set: 0.12325486640286581
Total error for this training set: 0.12325486638069229
Total error for this training set: 0.12325486635851894
Total error for this training set: 0.12325486633634561
Total error for this training set: 0.1232548663141723
Total error for this training set: 0.12325486629199914
Total error for this training set: 0.12325486626982587
Total error for this training set: 0.1232548662476525
Total error for this training set: 0.12325486622547954
Total error for this training set: 0.12325486620330656
Total error for this training set: 0.12325486618113349
Total error for this training set: 0.12325486615896045
Total error for this training set: 0.12325486613678775
Total error for this training set: 0.12325486611461482
Total error for this training set: 0.1232548660924418
Total error for this training set: 0.12325486607026936
Total error for this training set: 0.12325486604809655
Total error for this training set: 0.12325486602592373
Total error for this training set: 0.12325486600375107
Total error for this training set: 0.12325486598157878
Total error for this training set: 0.12325486595940628
Total error for this training set: 0.1232548659372337
Total error for this training set: 0.12325486591506139
Total error for this training set: 0.12325486589288918
Total error for this training set: 0.12325486587071677
Total error for this training set: 0.12325486584854453

在我阅读神经网络的相关资料时,我看到了有关局部最小值和全局最小值的讨论。神经网络并不真正“知道”它应该向哪个最小值前进。

我的神经网络是否陷入了局部最小值而不是全局最小值?

4个回答

7
是的,神经网络可能会陷入局部极小点,具体取决于误差曲面。但是这个摘要表明,在XOR问题的误差曲面上不存在局部极小点。然而我无法获得全文,因此无法验证作者所做的工作以及它如何适用于您的问题。
还可能存在其他导致这个问题的因素。例如,如果您在某个陡峭的山谷中下降得非常快,如果您仅使用一阶梯度下降,您可能会到达相反的斜坡并一直反弹。您可以尝试在每次迭代时给出所有权重的平均变化,以测试您是否真正有一个“卡住”的网络,或者只是遇到了一个极限循环。
您应该首先尝试调整参数(学习率、动量等),如果通过更改参数可以解决问题,则算法可能是正确的。

谢谢!你的回答让我更加清楚了。看起来神经网络并不是精确的,其中涉及一定程度的模糊性。我将尝试改变参数并尝试解决这个问题。 - Vivin Paliath
我偶然发现了这篇论文(发表于'99年,比你引用的那篇晚一年),它指出2-3-1 XOR网络存在局部最小值(我正在使用3-3-1 XOR网络;不确定输入层的偏置是否必要)。再次强调,就像你的情况一样,这只是一个摘要。 - Vivin Paliath
我也看到了这篇论文,它说最简单的异或网络没有极小值,但这似乎不是一个2-3-1或3-3-1网络。 - Vivin Paliath

4
LiKao所描述的过度大步骤的贫瘠梯度下降是一个可能存在的问题。另一个问题是XOR误差景观中存在非常平坦的区域,这意味着需要很长时间才能收敛,实际上梯度可能非常弱,导致下降算法不能将您引向正确的方向。
这两篇论文分别考察了2-1-1和2-2-1 XOR景观。其中一篇使用了我不知道的“交叉熵”误差函数。在第一篇中,他们宣布没有局部最小值,但在第二篇中,他们说在无限远处存在局部最小值——基本上是当权重趋于非常大的值时。因此,对于第二种情况,他们的结果表明,如果您没有从“足够接近”真正的最小值开始,您可能会被困在无限点处。他们还说,其他分析2-2-1 XOR网络的研究表明不存在局部最小值,这并不与他们的结果相矛盾,因为存在特定的定义。

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.31.4770

http://www.ncbi.nlm.nih.gov/pubmed/12662806


2

我遇到了同样的问题,并发现使用激活函数1.7159*tanh(2/3*x)可以解决,这个函数在LeCun的“Efficient Backprop”论文中有描述。这可能是因为该函数在目标值{-1, 1}周围不会饱和,而常规的tanh函数会饱和。


1
@LiKao回答中引用的Hamey的论文证明了在一个2-2-1神经网络中,XOR没有严格的“区域局部最小值”。然而,该论文承认存在“渐近极小值”,其中误差曲面随着一个或多个权重趋近于无穷大而变得平坦。
实际上,即使权重不需要太大,2-2-1网络卡在这种平坦的渐近区域也很常见。原因是饱和:当权重变大时,Sigmoid激活的梯度趋近于0,因此网络无法继续学习。
请查看我的笔记本实验——通常情况下,在经过10000个时期之后,10个网络中约有2到3个会被卡住。如果您更改学习率、批量大小、激活或损失函数、初始权重、输入是随机创建还是按固定顺序创建等,结果可能会略有不同,但通常网络偶尔会卡住。

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