激活函数和权重初始化的问题
激活函数是否以零为中心对收敛速度的影响
收敛速度
这里首先需要给收敛速度做一个诠释。模型的最优解即是模型参数的最优解。通过逐轮迭代,模型参数会被更新到接近其最优解。这一过程中,迭代轮次多,则我们说模型收敛速度慢;反之,迭代轮次少,则我们说模型收敛速度快。
参数更新
深度学习一般的学习方法是反向传播。简单来说,就是通过链式法则,求解全局损失函数 $L(x)$对某一参数$w$的偏导数(梯度);而后辅以学习率 $η$,向梯度的反方向更新参数$w$。
$$
w \gets w - \eta\cdot\frac{\partial L}{\partial w}.
$$
考虑学习率$η$是全局设置的超参数,参数更新的核心步骤即是计算$\frac{∂L}{∂w}$。再考虑到对于某个神经元来说,其输入与输出的关系是
$$
f(x,w,b) = f(z) = f\Bigl(\sum_iw_ix_i + b\Bigr).
$$
因此,对于参数$w_i$来说,
$$
\frac{\partial L}{\partial w_i} = \frac{\partial L}{\partial f}\frac{\partial f}{\partial z}\frac{\partial z}{\partial w_i} = x_i \cdot \frac{\partial L}{\partial f}\frac{\partial f}{\partial z}.
$$
因此,参数的更新步骤变为
$$
w_i \gets w_i - \eta x_i\cdot \frac{\partial L}{\partial f}\frac{\partial f}{\partial z}.
$$
更新方向
由于$w_i$是上一轮迭代的结果,此处可视为常数,而$η$是模型超参数,参数$w_i$的更新方向实际上由$x_i \cdot \frac{\partial L}{\partial f}\frac{\partial f}{\partial z}$决定。
又考虑到$\frac{\partial L}{\partial f},\frac{\partial f}{\partial z}$对于所有的$w_i$来说是常数,因此各个$w_i $更新方向之间的差异,完全由对应的输入值$x_i$的符号决定。
以零为中心的影响
至此,为了描述方便,我们以二维的情况为例。亦即,神经元描述为
$$
f(x,w,b) = f\bigl(w_0x_0 + w_1x_1 + b\bigr).
$$
现在假设,参数$w_0$, $w_1$的最优解$w_0^∗$,$w_1^∗$满足条件
$$
\begin{cases}
w_0 < w_0^* \\
w_1\geqslant w_1^{*}
\end{cases}
$$
这也就是说,我们希望$w_0$适当增大,但希望$w_1$适当减小。考虑到上一小节提到的更新方向的问题,这就必然要求$x_0$和$x_1$符号相反。
但在 Sigmoid 函数中,输出值恒为正。这也就是说,如果上一级神经元采用 Sigmoid 函数作为激活函数,那么我们无法做到$x_0$和 $x_1$符号相反。此时,模型为了收敛,不得不走 Z 字形逼近最优解。
如图,模型参数走绿色箭头能够最快收敛,但由于输入值的符号总是为正,所以模型参数可能走类似红色折线的箭头。如此一来,使用 Sigmoid 函数作为激活函数的神经网络,收敛速度就会慢上不少了。
初始权重对网络的影响
1.初始权重为0
假设输入为$(x_1,x_2,x_3)$,隐藏层为1,隐藏层单元为2,输出为$y$,则神经网络计算如下
$$
z_1=w_{11}x_1+w_{12}x_2+w_{13}x_3+b \\
z_2=w_{21}x_1+w_{22}x_2+w_{23}x_3+b
$$
由于权重都为0,所以使得$z_1,z_2$为相同值,经过激活函数后也会得到同一输出,而在反向传播计算梯度时,我们得到不同权值的偏导数相同,则神经网络失去了学习不同特征的能力
在神经网络中,如果将权值初始化为 0 ,或者其他统一的常量,会导致后面的激活单元具有相同的值,所有的单元相同意味着它们都在计算同一特征,只会得到若干个相同的神经元
2.初始化权重为很小的接近于0和1的随机数
针对
$$
y=w_{21} \times f(w_{11}x_1+w_{12}x_2)+\cdot \cdot \cdot
$$
通过反向传播可以得到
$$
\frac{\partial y}{\partial w_{11}} = \frac{\partial y}{\partial f}\frac{\partial f}{\partial z}\frac{\partial z}{\partial w_{11}} = w_{21} \cdot \frac{\partial y}{\partial f}.x_1
$$
使用cs231n的图片来直观表示一下
权重接近0
通过观察得到传播的梯度大小是和权重的值成正比的,所以如果其值很小那么得到的梯度也是很小的,对于网络较深来说会使得梯度消失,从而无法去迭代下降
权重接近1
针对$tanh$来说所有的值又接近于1和-1,那么$\frac{\partial y}{\partial f}$又会接近0,会使得网络饱和,也无法进行迭代下降
而解决的办法有使用Xavier权重初始化等等,不再赘述
Comments | NOTHING