我正在尝试调试为什么我的神经网络无法正常工作。我观察到的一件事是输入层和第一个隐藏层之间的权重几乎没有变化,而网络中稍后的权重(例如,最后一个隐藏层和输出之间的权重)变化很大。这是意料之中的还是我的代码中有错误的症状?
我正在应用反向传播和梯度下降来改变权重。
我正在尝试调试为什么我的神经网络无法正常工作。我观察到的一件事是输入层和第一个隐藏层之间的权重几乎没有变化,而网络中稍后的权重(例如,最后一个隐藏层和输出之间的权重)变化很大。这是意料之中的还是我的代码中有错误的症状?
我正在应用反向传播和梯度下降来改变权重。
这是意料之中的,也是公认的——消失的梯度
https://en.wikipedia.org/wiki/Vanishing_gradient_problem
这具有将这些小数的 n 相乘以计算 n 层网络中“前”层的梯度的效果,这意味着梯度(误差信号)随 n 呈指数下降,并且前层训练非常缓慢。
虽然我不是神经网络方面的专家(专家,请添加答案),但我确信神经网络的专业实现是棘手且高度优化的。如果你只是简单地实现一个普通的教科书式的神经网络,你将无法用它来训练一个大型网络。保持小,你会没事的。