gpt4 book ai didi

machine-learning - 神经网络发散而不是收敛

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

我已经实现了一个 2 层的神经网络(使用 CUDA)。 (每层 2 个神经元)。我试图让它使用反向传播学习 2 个简单的二次多项式函数。

但是它没有收敛,而是发散(输出变得无穷大)

以下是有关我所尝试的更多详细信息:

  • 我已将初始权重设置为 0,但由于它是发散的,所以我随机化了初始权重
  • 我了解到,如果学习率太高,神经网络可能会发散,因此我将学习率降低到 0.000001
  • 我试图添加的两个函数是:3 * i + 7 * j+9j*j + i*i + 24 (我将层 ij 作为输入)
  • 我之前已将其实现为单层,这样可以更好地逼近多项式函数
  • 我正在考虑在这个网络中实现动力,但我不确定这是否有助于它学习
  • 我正在使用线性(如无)激活函数
  • 一开始存在振荡,但当任何权重大于 1 时,输出就开始发散

我已经检查并重新检查了我的代码,但似乎没有任何问题。

所以这是我的问题:这里出了什么问题?

任何指针将不胜感激。

最佳答案

  1. 如果您要解决的问题是分类类型,请尝试 3 层网络(根据 Kolmogorov,3 层就足够了)从输入 A 和 B 到隐藏节点 C 的连接 (C = A*wa + B* wb) 表示 AB 空间中的一条线。该线划分了正确和错误的半空间。从隐藏层到输出的连接使隐藏层值相互关联,从而提供所需的输出。

  2. 根据您的数据,误差函数可能看起来像发梳,因此实现动量应该会有所帮助。事实证明,将学习率保持在 1 对我来说是最佳选择。

  3. 您的训练类(class)每隔一段时间就会陷入局部最小值,因此网络训练将包含几个后续类(class)。如果 session 超过最大迭代次数或幅度太高,或者错误明显很高 - session 失败,请开始另一个 session 。

  4. 在每次开始时,使用随机 (-0.5 - +0.5) 值重新初始化权重。

  5. 它确实有助于绘制错误下降图。你会得到“啊哈!”的感觉。因素。

关于machine-learning - 神经网络发散而不是收敛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17985319/

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