神经元饱和只发生在最后一层还是所有层?

机器算法验证 神经网络
2022-03-26 04:08:21

在Neural Networks and Deep Learning 一书的第 3 章中,文中反复指出,神经元饱和度只取决于输出层的激活函数和成本函数,例如:

“我们什么时候应该使用交叉熵而不是二次成本?事实上,只要输出神经元是 sigmoid 神经元,交叉熵几乎总是更好的选择。”

和,

“这表明,如果输出神经元是线性神经元,那么二次成本不会导致学习放缓的任何问题。在这种情况下,二次成本实际上是一个合适的成本函数。”

但是,我不清楚为什么饱和只是输出层的问题。如果先前的隐藏层具有 sigmoid 激活和二次成本函数,那么这些先前层的梯度是否也存在饱和度问题?

3个回答

在我看来,作者并不是说这是学习放缓的唯一原因。

隐藏层中的 sigmoid 激活函数肯定会导致梯度消失,但对于输出层中的 sigmoid,可以通过使用交叉熵损失来避免。

我认为那章关于输出层和饱和度的讨论是为了回答这个问题when should we use the cross-entropy instead of the quadratic cost?,答案是sigmoid输出和cross-entropy loss配合得很好,linear output和quadratic loss配合得很好。

据我了解,使用交叉熵成本函数而不是二次成本函数只会帮助您避免由于输出层如果我们查看反向传播方程,我们会看到除输出层之外的每一层的梯度计算乘以σσ

由于二次损失的问题在于它在达到饱和时学习缓慢,并且由于二次损失公式中的σ'项,它不会发生在交叉熵的情况下。并且随着 σ' 项在交叉熵中消失,这可以防止这种在交叉熵饱和时的缓慢学习。

隐藏层中的 Sigmoid 函数可能会导致梯度消失,但对于输出层中的 sigmoid,可以通过使用交叉熵损失来避免。这可能是您问题的答案!