拥有大量输入的神经网络会导致我的网络问题,例如
神经网络卡住了,前馈计算总是给出 1.0 的输出,因为输出总和太大,在进行反向传播时,梯度总和会太高,导致学习速度太快。
神经网络在所有层中都使用 tanh 作为主动函数。经过深思熟虑,我想出了以下解决方案:
- 初始化较小的随机权重值( WeightRandom / PreviousLayerNeuronCount )
或者
- 在计算输出或梯度的总和后,将总和除以“用于输出和的前一层中的神经元数量”和“用于梯度和的下一层中的神经元数量”,然后将总和传递给激活/导数函数。
我对自己提出的解决方案感到不舒服。
解决方案 1. 没有完全解决问题。梯度或输出总和变高的可能性仍然存在。解决方案 2. 似乎可以解决问题,但我担心它会以一种可能不再解决某些问题的方式彻底改变网络行为。
在这种情况下,你会建议我什么,记住减少层中的神经元数量不是一种选择?
提前致谢!