为什么选择输出以0为中心的激活函数比较好?
详细过程
随意圈出神经网络中的一个单元如图所示,该单元的左半部分是对输入的线性变换即
w
1
x
1
+
w
2
x
2
+
.
.
.
+
w
n
x
n
=
z
{w_1}{x_1} + {w_2}{x_2} + ... + {w_n}{x_n} = z
w1x1+w2x2+...+wnxn=z
该单元的右半部分是对线性变换后的值作用激活函数,即
f
(
z
)
=
f
f\left( z \right) = f
f(z)=f
根据反向传播公式,我们有
∂
L
∂
w
i
=
∂
L
∂
f
∂
f
∂
z
∂
z
∂
w
i
=
∂
L
∂
f
∂
f
∂
z
x
i
\begin{aligned} \frac{{\partial L}}{{\partial {w_i}}} & = \frac{{\partial L}}{{\partial f}}\frac{{\partial f}}{{\partial z}}\frac{{\partial z}}{{\partial {w_i}}}\\ & = \frac{{\partial L}}{{\partial f}}\frac{{\partial f}}{{\partial z}}{x_i} \end{aligned}
∂wi∂L=∂f∂L∂z∂f∂wi∂z=∂f∂L∂z∂fxi
因为
x
i
x_i
xi 为
σ
\sigma
σ 函数的输出,所以对于所有
i
i
i 来说,
x
i
>
0
x_i>0
xi>0 ,即
∂
L
∂
w
1
\dfrac{\partial L}{\partial w_1}
∂w1∂L,
∂
L
∂
w
2
\dfrac{\partial L}{\partial w_2}
∂w2∂L,…,
∂
L
∂
w
n
\dfrac{\partial L}{\partial w_n}
∂wn∂L 同号
又因为在梯度下降中
w
1
←
w
1
−
η
∂
L
∂
w
1
w
2
←
w
2
−
η
∂
L
∂
w
2
⋮
w
n
←
w
n
−
η
∂
L
∂
w
n
\begin{aligned} {w_1} \leftarrow {w_1} &- \eta \frac{{\partial L}}{{\partial {w_1}}}\\ {w_2} \leftarrow {w_2} &- \eta \frac{{\partial L}}{{\partial {w_2}}}\\ & \vdots \\ {w_n} \leftarrow {w_n} &- \eta \frac{{\partial L}}{{\partial {w_n}}} \end{aligned}
w1←w1w2←w2wn←wn−η∂w1∂L−η∂w2∂L⋮−η∂wn∂L
这意味着
w
1
w_1
w1,
w
2
w_2
w2,…,
w
n
w_n
wn 只能同向更新,为方便说明取二维解释,假设
w
1
∗
w_1^{\rm{*}}
w1∗,
w
2
∗
w_2^{\rm{*}}
w2∗ 为最优解(图中的0,1理解为1,2)
这种情况下模型只能 z z z 字型下降收敛逼近最优解,无疑这会增加迭代次数,降低收敛速度
总结
因为输出不以0为中心的激活函数,比如sigmoid函数,其输出都为正,意味着在梯度下降时对某权重1到权重n的导数要么全为正,要么全为负。这会导致梯度下降呈z字型,增加了迭代次数,降低了收敛速度