0

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

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

我知道 LMA 只收敛到局部最小值,但肯定有一些方法可以避免这些问题。我只是因为我的种子价值不走运吗?每次卡住时,我是否应该简单地使用新的种子值重复训练?我应该完全寻找另一种训练算法吗?

ANN 将首先在一些历史数据上进行预训练,然后定期使用更新的数据进行更新,所以虽然我可能有能力在必要时重复训练几次,但种子值的数量是有实际限制的可以尝试。此外,虽然这个初始测试只有 9 个参数,但我们最终将处理接近 10,000 个,并且可能不止一个隐藏层。我的直觉是,这会加剧局部最小值的问题,但增加问题规模是否可能实际上是有益的?

4

1 回答 1

1

TL;博士

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


进步!

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

异或 b

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

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

a 和 b

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

a 或 b

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

一个或(b 和 c)

[3,4,1] 层配置(3 个输入:a,b,c)。 一个或(b 和 c)


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

异或 b

使用 [2,4,1] 将其提高到 85%:

在此处输入图像描述

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

感谢您在这篇长篇文章中对我的包容,并为过度使用图像表示歉意。我希望这可以使处于类似情况的人们免去很多麻烦!

与问题相关的额外信息

在我的调查过程中,我学到了很多东西,因此我想就使用 LMA 提出更多可能感兴趣的问题。

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

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

最后,我的测试让我相信 LMA 确实像声称的那样有效且用途广泛,而且我现在对使用它更有信心。我仍然需要在更大的问题上对其进行测试(我正在考虑 MNIST),但我希望它对这些更大的问题和网络仍然有效。

于 2013-08-07T20:55:48.137 回答