gpt4 book ai didi

artificial-intelligence - 随机化神经网络输入顺序的影响

转载 作者:行者123 更新时间:2023-11-30 08:28:00 24 4
gpt4 key购买 nike

在我的高级算法和数据结构类(class)中,我的教授要求我们选择任何我们感兴趣的主题。他还告诉我们要研究它并尝试实现解决方案。我选择神经网络是因为它是我长期以来想学习的东西。

我已经能够使用神经网络实现 AND、OR 和 XOR,该神经网络的神经元使用阶跃函数作为激活器。之后,我尝试实现一个反向传播神经网络,学习识别 XOR 运算符(使用 sigmoid 函数作为激活器)。通过使用 3-3-1 网络(输入层和隐藏层为 1 偏差,权重随机初始化),我能够在 90% 的情况下实现此目的。在其他时候,它似乎陷入了我认为的局部最小值,但我不确定(我之前问过这方面的问题,人们告诉我不应该有局部最小值)。

在 90% 的时间里,我一直按以下顺序呈现我的输入:[0, 0], [0, 1], [1, 0], [1, 0] ,预期输出设置为 [0, 1, 1, 0]。当我一致地以相同的顺序呈现值时,网络最终会学习该模式。实际上,我以什么顺序发送它并不重要,只要每个时期的顺序完全相同即可。

然后我实现了训练集的随机化,因此这次输入的顺序是充分随机化的。我现在注意到我的神经网络被卡住了,错误正在减少,但速度非常小(每个时期都在变小)。一段时间后,误差开始围绕某个值振荡(因此误差停止减小)。

我是这个主题的新手,到目前为止我所知道的一切都是自学的(阅读教程、论文等)。为什么输入的呈现顺序会改变我的网络的行为?是不是因为从一个输入到下一个输入的误差变化是一致的(因为顺序是一致的),这使得网络更容易学习?

我可以做什么来解决这个问题?我正在检查我的反向传播算法,以确保我已经正确实现了它;目前它是通过学习率和动力来实现的。我正在考虑寻找其他增强功能,例如自适应学习率。然而,XOR 网络通常被描述为一个非常简单的网络,因此我认为我不需要使用复杂的反向传播算法。

最佳答案

向网络呈现构成训练集的观测值(输入向量)的顺序仅在一方面重要 -根据响应变量对观测值进行随机排列/em> 与有序排列相比是强烈首选。

例如,假设您的训练集有 150 个观测值,并且每个观测值的响应变量是三个类别标签(I 类、II 类或 III 类)之一,因此观测值 1-50 属于 I 类、51 类II 级为 -100,III 级为 101-50。您不想做的是以该顺序将它们呈现给网络。换句话说,您不希望网络看到 I 类中的所有 50 个观测值,然后是 II 类中的所有 50 个观测值,然后是 III 类中的所有 50 个观测值。

训练分类器期间发生了什么?最初,您向网络呈现四个观察结果,无序 [0, 1, 1, 0]。

我想知道在网络无法收敛的情况下输入向量的顺序是什么?如果它是 [1, 1, 0, 0] 或 [0, 1, 1, 1],这与上面提到的这个有据可查的经验规则是一致的。

另一方面,我想知道这条规则是否适用于您的情况。原因是你的训练实例太少,即使顺序是 [1, 1, 0, 0],在多个时期进行训练(我确信你必须这样做)将意味着这个顺序看起来更“随机”而不是我上面提到的示例(即 [1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0] 是网络如何呈现三个时期的训练数据) 。

诊断问题的一些建议:

  1. 正如我上面提到的,查看非收敛情况下输入向量的排序 - 它们是按响应变量排序的吗?

  2. 在不收敛的情况下,查看您的权重矩阵(我假设您有两个)。查找任何非常大的值(例如,其他值的 100 倍,或初始化值的 100 倍)。较大的权重可能会导致溢出。

关于artificial-intelligence - 随机化神经网络输入顺序的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8101925/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com