【问题标题】:Backpropagation neural network, too many neurons in layer causing output to be too high反向传播神经网络,层中神经元过多导致输出过高
【发布时间】:2016-09-21 21:53:25
【问题描述】:

拥有大量输入的神经网络会导致我的网络出现问题,例如

神经网络卡住了,前馈计算总是给出输出为 1.0 因为输出总和太大,并且在进行反向传播时,梯度总和会太高导致 学习速度太戏剧化了。

神经网络在所有层中都使用 tanh 作为主动函数。 经过深思熟虑,我想出了以下解决方案:

  1. 初始化较小的随机权重值 (WeightRandom / PreviousLayerNeuronCount)

  1. 在计算输出或梯度的总和后,将总和除以“用于输出总和的前一层中的神经元数”和“用于梯度总和的下一层中的神经元数”,然后将总和传递给激活/导数函数.

我对自己提出的解决方案感到不舒服。

解决方案 1. 没有完全解决问题。梯度或输出总和变高的可能性仍然存在。解决方案 2. 似乎解决了问题,但我担心它会以一种可能不再解决某些问题的方式彻底改变网络行为。

在这种情况下你会建议我什么,记住减少层中的神经元数量不是一种选择?

提前致谢!

【问题讨论】:

标签: neural-network backpropagation gradient-descent feed-forward


【解决方案1】:

影响输出反向传播的一般因素包括早期选举的权重和偏差、隐藏单元的数量、运动模式的数量和长时间的迭代。作为一种替代方式,初始权重和偏差的选择有几种算法可以使用,其中一种是算法Nguyen widrow。你可以用它来尽早初始化权重和偏差,我试过了,效果很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 2021-10-25
    • 2015-03-03
    • 2012-02-21
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多