1. 收敛变慢的原因
先上计算图(某层神经网络的一小部分):
图中黑色箭头为正向推理,红色箭头为误差的反向传播。因为 s i g m o i d sigmoidsigmoid 函数的输出值都为正,故x i x_ix
i
的符号都相同且为正;则参数 w i w_iw
i
的更新方向(增大\减小)x i a x_iax
i
a 仅由 a aa 决定。
当 a aa 大于 0 ,所有参数更新时都增大
当 a aa 小于 0, 所有参数更新时均减小
所有参数更新方向始终一致会有什么影响?如果某次迭代收敛到最优参数,一个参数需要增大,另一个需要减小,那我们一致的参数更新方向就无法指向最优点,会形成一种锯齿型的路径,因此收敛到最优点的速度就慢。
图片来源:谈谈激活函数以零为中心的问题
2. 为何要“对称”?
前面我们看到,参数更新方向一致将导致锯齿状的更新路径。只要激活函数的值域分布在零的两边,就不会出现更新方向始终一致的问题了。
那对称的意义是什么?像下图中,函数曲线偏向 y 的正半轴,那么更新参数时参数就更容易增大而不容易减小,但如何确定参数更应该增大还是减小呢?
3. 与“参数值全相同”情况的对比
下面对比一下两个问题。
激活函数输出值全为正:参数更新路径为锯齿状,更新慢
参数值全相同:完全无法正常训练
3.1. 激活函数输出值全为正
对于激活函数输出值全为正,以二维的参数空间为例,它失去的是一半的方向。一对参数值更新量 ( Δ w 1 , Δ w 2 ) (\Delta w1, \Delta w2)(Δw1,Δw2) ,虽然 Δ w 1 \Delta w1Δw1 与 Δ w 2 \Delta w2Δw2 的符号相同,但参数不同的绝对值仍可以组合出丰富的更新方向,足以抵达这二维空间中的任意一点,因为第二、四象限中的任一个向量,都可以分解为第一、三象限中的两个向量。
3.2. 参数值全相同
参数值全相同将导致所有参数的更新方向和幅度也相同(可参考:权重参数全相同值初始化,导致无法训练),此时模型完全报废,因为参数更新将只能在同一条直线上移动。