
谢谢邀请,下面回答仅代表个人看法。
在深度学习领域或者更具体地说,涉及到神经网络算法的时候,总时不时地出现一些来自于生物学上的术语,这是因为:
所以我们常常看见神经元(neuron),激活(activation)等术语也就不足为奇了。而题主所问的saturate,也是其中一例。这个词更偏生化领域,我在CS231n课程翻译中将其译为“饱和”。
这个词描述的情况可以直观理解为:当Sigmoid和tanh等激活函数值接近其边界(对于Sigmoid函数来说,就是接近0和1)的时候,会导致算法在反向传播时梯度消失。
图例:左边是Sigmoid,右边是tanh。
怎么理解呢?回忆一下,在反向传播的时候,(局部)梯度将会与整个损失函数关于该门单元输出的梯度相乘。因此,如果局部梯度非常小(你看但函数值非常接近0和1的时候,曲线的梯度是不是趋近于零?),那么相乘的结果也会接近零,这会有效地“杀死”梯度,几乎就有没有梯度信号通过神经元传到权重再到数据了。
为了防止饱和,一般对于权重矩阵初始化要特别留意。如果初始化权重过大,那么大多数神经元将会饱和,将导致网络很难学习。
以上就是一个简要直观的理解。如果想详细了解,可以阅读
或其他相关文献。
回答完毕。
