如何检查死亡的鲁鲁神经元


10

背景:在使神经网络适应relu激活的同时,我发现有时预测变得接近恒定。我相信这是由于如本文所述在训练过程中神经元神经元死亡。(神经网络中的“垂死的ReLU”问题是什么?

问题:我希望做的是在代码本身中实现检查,以检查神经元是否死亡。之后,如果需要,代码可以重新调整网络。

因此,检查死亡神经元的最佳条件是什么?目前,我正在考虑将预测中的低方差作为一个标准进行检查。

如果有帮助,即时通讯使用keras。


添加总结为tensorboard的偏见:tensorflow.org/get_started/summaries_and_tensorboard
埃姆雷

Answers:


6

死的ReLU几乎只意味着其自变量值为负,从而梯度保持在0;无论从那时起如何训练它。您只需在训练过程中查看梯度即可查看ReLU是否死亡。

实际上,您可能只想使用泄漏的ReLU,即如果x> 0,则设置f(x)= x,而不是f(x)= max(0,x);如果x <= 0,则设置f(x)= 0.01x这样,您始终会允许一个小的非零梯度,并且该单元不应再完全陷入训练中。


1

死亡的神经元是指在训练过程中不会更新的神经元。0渐变。

Keras允许直接针对给定的数据行进行梯度提取(另一个很好的例子)

或者,您可以提取神经元权重并自己计算梯度
(例如,对于relu,relu的负参数-> 0梯度。)

不幸的是,梯度是特定于数据点的。仅当每行训练数据的梯度为0时,您才能确保在训练时期神经元不会针对所有迷你批次进行更新。

泄漏的relu可能是有用的策略,因为对于泄漏的relu没有价值,其中梯度等于0。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.