在神经网络上选择Levenberg-Marquardt算法的起始参数

时间:2013-07-26 18:26:12

标签: c++ algorithm neural-network levenberg-marquardt

我目前正在开展一个使用ANN的项目。对于训练算法,我选择了LMA,因为它相当快速且通用,我读了一篇论文,表明它是我们用例的最佳训练算法。然而,在编写之后,我开始担心SSE(平方误差的总和除以2),仅在使用具有2个输入的网络的简单XOR问题上从2.05减少到1.00,具有2个节点的1个隐藏层,以及1输出。我认为在编程时我犯了一个错误,但是当我尝试更改PRNG种子值时,SSE突然收敛到2.63e-09。然而,与可能的编程错误相比,这更令人不安,因为我不希望算法的性能受到这种简单问题的随机机会的影响。

PRNG根据模式为0.8和-0.8的双峰分布生成偏差和权重,并且概率分布在0附近下降到接近0,所以希望我不应该从一开始就用非常小的参数来伤害算法,但是有没有其他提示可以产生良好的起始值?我正在使用tanh作为我的sigmoid函数,如果这有所不同。我想也许使用更大幅度的数值可能会有所不同,但我同样担心这可能会产生不利影响。

我知道LMA只会收敛到局部最小值,但无论如何普遍使用它都有一些方法可以避免这些问题。我的种子价值是不是很不走运?每次卡住时,我是否应该使用新的种子值重复训练?我应该完全考虑另一种训练算法吗?

人工神经网络将首先在一些历史数据上进行预先训练,然后定期更新最新数据,所以尽管我可能有必要在必要时多次重复训练,但实际上如何限制可以尝试许多种子值。此外,虽然这个初始测试只有9个参数,但我们最终将处理接近10,000个,可能还有多个隐藏层。我的直觉是,这会使局部最小值的问题恶化,但问题规模增加是否有可能实际上有益?

1 个答案:

答案 0 :(得分:1)

TL; DR

问题是我的网络配置太小而无法处理XOR的复杂性。使用[2,3,1]立即改善,[2,4,1]甚至更好。其他逻辑表不需要那么大的网络。


进展!

好的,我想我已经取得了一些进展,并找到了问题的根源。我使用[2,2,1]的层大小训练了一组100个随机XOR网络,然后绘制了在多达1000个时期之后达到给定SSE的网络数量的反向累积图表(在SSE下降后提前停止)低于1e-8)。

a XOR b

这是我获得的图(XOR b)。 8%的网络被NAN值破坏(我认为它与我正在使用的分解和矩阵库有关,但我离题了)。令人担忧的是,在92个有效样本网络中,只有43%达到了低于1的SSE。较高的样本往往会产生更糟糕的结果。 IIRC,样本大小为1000(具有较低的时期数)我发现只有4%低于1.更近期的测试再次使用1000个时期,样本大小为1000,产生了更可观的47%。尽管如此,这对我来说是不可接受的,并且非常令人沮丧,因为那些确实低于1的人往往做得很好,通常达到至少1e-6甚至更好。

无论如何,我们最近写了一些python绑定并实现了几个测试网络,期望看到类似的结果。然而,令人惊讶的是,这些测试几乎完美无缺,超过90%的测试比1e-6更好:

a AND b

[2,2,1]层配置。 a AND b

a OR b

[2,2,1]层配置。 a OR b

a OR(b AND c)

[3,4,1]层配置(3个输入:a,b,c)。 a OR (b AND c)


显然,特别是XOR网络出了问题,我只是不幸地选择了XOR来解决我的第一个测试问题。阅读关于SO的其他问题,似乎XOR网络在小型网络上没有很好地建模,并且在没有偏差的[2,2,1]网络上是不可能的。我有偏见,但显然这还不够。最后,通过这些线索,我能够使XOR网络与其他问题更加接近。通过简单地添加1个隐藏节点并使用[2,3,1]层配置,我能够将达到1e-6的样本比例提高到70%以上:

a XOR b

使用[2,4,1]将其提高到85%:<​​/ p>

enter image description here

显然我的问题是我的网络规模不足以处理XOR网络的复杂性,我建议任何人测试他们的神经网络都存在2位XOR问题时应该牢记这一点!

感谢您通过这篇长篇文章与我合作,并为过度使用图片道歉。我希望这可以让处于类似情况的人们感到很头疼!

与问题相关的额外信息

在我的调查过程中,我学到了很多东西,所以我想谈谈有关使用LMA的更多观点。

首先,只要它是随机分布,分布似乎没有区别。我尝试了问题中提到的双峰分布,0和1之间的均匀分布,高斯,高斯,平均值为0.5和SD 0.5,甚至是三角分布,它们都给出了非常相似的结果。然而,我坚持使用双峰,因为它似乎是最自然的恕我直言。

其次,很明显,即使是我在这里遇到的简单问题,重复训练也是必要的。虽然~90%的样本产生了不错的SSE,但另外10%的样本表明您总是需要多次预测需要使用一组新的随机权重重复训练,至少在您获得所需的SSE之前,但可能固定次数,以选择最佳样品。

最后,我的测试让我相信LMA确实像所宣称的一样有效和多才多艺,而且我现在更有信心使用它。我仍然需要在更大的问题上测试它(我正在考虑MNIST),但我希望它对于这些更大的问题和网络仍然有效。