擅长:python、mysql、java
<p>我不认为隐藏节点的数量是问题所在。在</p>
<p>在第一种情况下,由于梯度下降更新错误,权重接近无穷大。相对于权重的损失的梯度表示应该更新权重以增加损失的方向。由于人们(通常)希望最小化它,如果权重朝正方向更新,它们将增加损失,并且很可能导致发散。在</p>
<p>尽管如此,即使假设更新是正确的,我也会认为它更像是错误的初始化/超参数设置,而不是一个严格依赖于ReLU的问题(很明显,ReLU在其正部分爆炸,给出无穷大,而sigmoid饱和,给出1)。在</p>
<p>在第二种情况下,正在发生的是<em>死区ReLU</em>问题,饱和ReLU总是给出相同(零)的输出,并且它不能自我恢复。它的发生有很多原因(例如,错误的初始化,错误的偏差学习),但最有可能的是更新步骤太高。试着降低你的学习率,看看会发生什么。在</p>
<p>如果这不能解决问题,请考虑使用<em>Leaky ReLU</em>版本,也只是为了简单的调试目的。在</p>
<p>关于<em>泄漏ReLU</em>和<em>死ReLU</em>的更多(和更好的解释)细节可以在这里找到:<a href="https://datascience.stackexchange.com/questions/5706/what-is-the-dying-relu-problem-in-neural-networks">https://datascience.stackexchange.com/questions/5706/what-is-the-dying-relu-problem-in-neural-networks</a></p>