神经网络的权重初始化——修正
Xavier初始化
原理
考虑前向传播:
对于全连接神经网络,假设激活函数为\(g(z) = z\),那么, \[ Z^{[l]} = W^{[l]}A^{[l-1]} + b^{[l]} = W^{[l]}Z^{[l-1]} + b^{[l]} \] 对于\(Z^{[l-1]}\)内的每个元素\(z_{ij}^{[l-1]}\),假定全部都为独立同分布的随机变量,每个元素均服从均值为\(\mu_1\),方差为\(\sigma^2_{1}\)的某一分布;对于\(W^{[l]}\)内的每个元素\(w_{ij}^{[l]}\),假定全部都为独立同分布的随机变量,每个元素均服从均值为\(\mu_2\),方差为\(\sigma^2_2\)的某一分布;对于偏置\(b^{[l]}\),其元素全部初始化为0
为了能够缓解神经网络的梯度消失与梯度爆炸,我们希望在每一层的线性映射结果都是稳定的,即,我们希望\(Z^{[l]}\)内的每个元素与\(Z^{[l-1]}\)内的每个元素均服从相同的分布,设\(Z^{[l]}\)内的每个元素\(z^{[l]}_{ij}\)也全部为独立同分布的随机变量,每个元素均服从均值为\(\mu_3\),方差为\(\sigma^2_3\),那么,我们希望\(\mu_3 = \mu_1\),\(\sigma_3^2 = \sigma_1^2\)
注意:\(z_{ij}^{[l]}\)中的\(i\)表示的是矩阵\(Z^{[l]}\)中的第\(i\)行,对应着第\(i\)个特征,也就是当前层的第\(i\)个神经元;\(j\)表示的是矩阵\(Z^{[l]}\)中的第\(j\)列,对应着第\(j\)个样本。设\(z_{j}^{[l]}\)表示第\(l\)层第\(j\)个样本对应的所有神经元的输出的值组成的向量,设\(w_i^{[l]}\)表示矩阵\(W^{[l]}\)中的第\(i\)行对应的向量,即第\(l\)层第\(i\)个神经元对应的各个权重
因为\(Z^{[l]}\)、\(Z^{[l-1]}\)、\(W^{[l]}\)内的每个元素都是独立的随机变量,因此,我们可以只对其内部部分元素进行研究,从而推出总体:
对于\(Z^{[l]}\)内的元素\(z_{ij}^{[l]}\),其值应满足 \[ \begin{aligned} z_{ij}^{[l]} &= w_i^{[l]}z^{[l-1]}_{j}\\ &= w_{i1}^{[l]}z_{1j}^{[l-1]} + w_{i2}^{[l]}z_{2j}^{[l-1]} + \cdots + w_{in^{[l-1]}}^{[l]}z_{n^{[l-1]}j}^{[l-1]}\\\ &= \displaystyle\sum_{k=1}^{n^{[l-1]}}w_{ik}^{[l]}z_{kj}^{[l-1]} \end{aligned} \] 对于\(w_{ik}^{[l]}z_{kj}^{[l-1]}\),因为\(w_{ik}^{[l]}\)与\(z_{kj}^{[l-1]}\)相互独立,则 \[ E(w_{ik}^{[l]}z_{kj}^{[l-1]}) = E(w_{[ik]}^{[l]})E(z_{kj}^{[l-1]}) = \mu_2\mu_1 \]
\[ \begin{aligned} D(w_{ik}^{[l]}z_{kj}^{[l-1]}) &= E[(w_{ik}^{[l]}z_{kj}^{[l-1]})^2] - [E(w_{ik}^{[l]}z_{kj}^{[l-1]})]^2\\\ &= E(w_{ik}^{[l]2})E(z_{[kj]}^{[l-1]2}) - \mu_2^2\mu_1^2 \end{aligned} \]
而 \[ \begin{aligned} &E(w_{ik}^{[l]2}) = D(w_{ik}^{[l]2}) + [E(w_{ik}^{[l]})]^2 = \sigma_2^2 + \mu_2^2\\\ &E(z_{kj}^{[l-1]2}) = D(z_{kj}^{[l-1]2}) + [E(z_{kj}^{[l-1]})]^2 = \sigma_1^2 + \mu_1^2 \end{aligned} \] 因此, \[ \begin{aligned} D(w_{ik}^{[l]}z_{kj}^{[l-1]}) &= E(w_{ik}^{[l]2})E(z_{[kj]}^{[l-1]2}) - \mu_2^2\mu_1^2\\\ &= (\sigma_2^2 + \mu_2^2)(\sigma_1^2 + \mu_1^2) - \mu_2^2\mu_1^2 \end{aligned} \] 对于\(z_{ij}^{[l]}\), \[ E(z_{ij}^{[l]}) = E\bigg(\displaystyle\sum_{k=1}^{n^{[l-1]}}w_{ik}^{[l]}z_{kj}^{[l-1]}\bigg) = \displaystyle\sum_{k=1}^{n^{[l-1]}}E(w_{ik}^{[l]}z_{kj}^{[l-1]}) = n^{[l-1]}\mu_1\mu_2 = \mu_3 \] 因为要满足 \[ E(z_{ij}^{[l]}) = E(z_{ij}^{[l-1]}) = \mu_1 \] 因此 \[ \mu_3 = n^{[l-1]}\mu_1\mu_2 = \mu_1 \] 即 \[ \mu_1(n^{[l-1]}\mu_2 - 1) = 0 \] 因此可得\(\mu_1 = 0\)或者\(\mu_2 = \frac{1}{n^{[l-1]}}\)
在神经网络中,权重是可以初始化的,我们让其均值为零,即\(\mu_2 = 0\),那么,\(\mu_3 = \mu_1 = 0 = \mu_2\)
那么, \[ \begin{aligned} D(w_{ik}^{[l]}z_{kj}^{[l-1]}) &= (\sigma_2^2 + \mu_2^2)(\sigma_1^2 + \mu_1^2) - \mu_2^2\mu_1^2\\\ &= \sigma_1^2\sigma_2^2 \end{aligned} \] 那么 \[ D(z_{ij}^{[l]}) = D\bigg(\displaystyle\sum_{k=1}^{n^{[l-1]}}w_{ik}^{[l]}z_{kj}^{[l-1]}\bigg) = \displaystyle\sum_{k=1}^{n^{[l-1]}}D(w_{ik}^{[l]}z_{kj}^{[l-1]}) = n^{[l-1]}\sigma_1^2\sigma_2^2 \] 因为要满足 \[ D(z_{ij}^{[l]}) = D(z_{ij}^{[l-1]}) = \sigma_3^2 = \sigma_1^2 \] 因此 \[ \sigma_3^2 = n^{[l-1]}\sigma_1^2\sigma_2^2 = \sigma_1^2 \] 因此 \[ \sigma_1^2(n^{[l-1]}\sigma_2^2 - 1) = 0 \] 即\(\sigma_1^2 = 0\)或者\(\sigma_2^2 = \frac{1}{n^{[l-1]}}\)
如果\(\sigma_1^2 = 0\),那么\(z_{ij}^{[l-1]}\)不再是随机变量,仅仅只是一个常数,为了保证\(z_{ij}^{[l-1]}\)为随机变量,\(\sigma_1^2\neq0\),那么\(\sigma_2^2 = \frac{1}{n^{[l-1]}}\)
因此,\(W^{[l]}\)内的元素应满足均值为0,方差为\(\frac{1}{n^{[l-1]}}\)的某一分布
考虑反向传播:
对于全连接神经网络,假设激活函数为\(g(z) = z\),那么, \[ \begin{aligned} \frac{\partial L}{\partial Z^{[l]}} &= W^{[l+1]T}\cdot\frac{\partial L}{\partial Z^{[l+1]}}\odot g'(Z^{[l]})\\\ &= W^{[l+1]T}\cdot\frac{\partial L}{\partial Z^{[l+1]}} \end{aligned} \] 因为在前向传播中,我们已经令\(W^{[l]}\)内各个元素的均值为0,同理对\(W^{[l+1]}\),其内各个元素的均值也为0,那么参考前向传播中的推导,容易得到\(\frac{\partial L}{\partial Z^{[l]}}\)内的各个元素均值为0,\(\frac{\partial L}{\partial Z^{[l+1]}}\)内的各个元素均值为0(由此可见,在训练过程中,如果能保持权重的均值为零,那么前向传播与反向传播的线性映射部分的值均值也会为0,会使得神经网络更加稳定,更难以梯度爆炸或者梯度消失)
同样的,我们希望\(\frac{\partial L}{\partial Z^{[l]}}\)与\(\frac{\partial L}{\partial Z^{[l+1]}}\)有着相同的分布,对于\(\frac{\partial L}{\partial Z^{[l]}}\)内的某一元素\(t_{ij}\)(\(i\)代表行,\(j\)代表列),其为\(W^{[l+1]T}\)第\(i\)行与\(\frac{\partial L}{\partial Z^{[l+1]}}\)的第\(j\)列各个元素相乘再相加的结果。因为\(W^{[l+1]T}\)的维度为\(n^{[l]}\times n^{[l+1]}\),\(\frac{\partial L}{\partial Z^{[l+1]}}\)的维度为\(n^{[l+1]}\times m\)(\(m\)表示样本个数),因此,\(W^{[l+1]}\)第\(i\)行有\(n^{[l+1]}\)个元素,\(\frac{\partial L}{\partial Z^{[l+1]}}\)的第\(j\)列有\(n^{[l+1]}\)个元素,而\(W^{[l+1]T}\)第\(i\)行的这些元素均为独立同分布的随机变量,均值为\(\mu_2 = 0\),方差为\(\sigma_2^2\);\(\frac{\partial L}{\partial Z^{[l+1]}}\)第\(j\)类均为独立同分布的随机变量,满足均值\(\mu_1 = 0\),方差为\(\sigma_1^2\),参考前向传播的推导,可得,\(\frac{\partial L}{\partial Z^{[l]}}\)的均值\(\mu_3 = 0\),方差为\(\sigma_3^2\),并且: \[ \sigma_1^2 = \sigma_3^2 = \displaystyle\sum_{r=1}^{n^{[l+1]}}D(w_r\frac{\partial L}{\partial z_r}) = n^{[l+1]}\sigma_1^2\sigma_2^2 \] 因此, \[ \sigma_1^2(n^{[l+1]}\sigma_2^2 - 1) = 0 \] 而\(\sigma_1^2\neq 0\),
因此, \[ \sigma_2^2 = \frac{1}{n^{[l+1]}} \] 因此,\(W^{[l+1]}\)内的元素应满足均值为0,方差为\(\frac{1}{n^{[l+1]}}\)的某一分布;对应的,\(W^{[l]}\)内的元素应满足均值为0,方差为\(\frac{1}{n^{[l]}}\)
我们发现,在前向传播中,\(W^{[l]}\)设置为均值为0,方差为\(\frac{1}{n^{[l-1]}}\)最好;在反向传播中,\(W^{[l]}\)设置位均值为0,方差为\(\frac{1}{n^{[l]}}\)最好。为了综合考虑前向传播与反向传播,我们将\(W^{[l]}\)的均值设为0,方差设为\(\frac{2}{n^{[l-1]}+n^{[l]}}\)
需要注意的是,之前我们讨论的前提条件是激活函数为\(g(z) = z\),也就是相当于没有激活函数,只有线性映射部分,而\(\tanh\)激活函数与sigmoid激活函数的函数图像当自变量在0附近时可以近似看为直线,而\(\tanh\)激活函数在0附近的导数值与1相近,因此,\(\tanh\)激活函数在0附近可以近似视为\(g(z) = z\);sigmoid激活函数在0附近的导数值约为0.25(即\(\frac{1}{4}\)),因此,sigmoid激活函数在0附近可以近似视为\(g(z) = \frac{1}{4}z + 0.5\)
由此可知,Xavier初始化比较适合以\(\tanh\)为激活函数的神经网络,如果要用于sigmoid激活函数的神经网络,如果继续使用前面的权重初始化方案,那么 \[ \begin{aligned} D(z^{[l]}) &= D(g(z^{[l-1]})) = D(\frac{1}{4}z^{[l-1]}+0.5)\\\ &= \frac{1}{16}D(z^{[l-1]})\\\ &= \frac{1}{16}D(z^{[l]}) \end{aligned} \] 为了保证线性映射结果独立同分布,那么我们应该让新的\(z^{[l]}\)内元素的方差为原先的\(z^{[l]}\)内元素的方差的16倍,对应着权重的方差要变为原先的16倍,即\(W^{[l]}\)内的元素应满足均值为0,方差为\(\frac{32}{n^{[l-1]}+n^{[l]}}\)
对于\(\tanh\)激活函数
权重满足均匀分布
如果权重满足均匀分布,即\(w_{ij}^{[l]}\sim U(a, b)\),则 \[ \begin{aligned} &E(w_{ij}^{[l]}) = \frac{a+b}{2} = 0\\\ &D(w_{ij}^{[l]}) = \frac{(b-a)^2}{12} = \frac{2}{n^{[l-1]}+n^{[l]}} \end{aligned} \] 因此, \[ \begin{aligned} &b = \sqrt\frac{6}{n^{[l-1]}+n^{[l]}}\\\ &a = -b = -\sqrt\frac{6}{n^{[l-1]}+n^{[l]}} \end{aligned} \] 即 \[ w_{ij}^{[l]}\sim U\Bigg(-\sqrt\frac{6}{n^{[l-1]}+n^{[l]}}\ ,\ \sqrt\frac{6}{n^{[l-1]}+n^{[l]}}\Bigg) \]
权重满足正态分布
如果权重满足正态分布,即\(w_{ij}^{[l]}\sim N(\mu, \sigma^2)\),则 \[ \begin{aligned} &E(w_{ij}^{[l]}) = \mu = 0\\\ &D(w_{ij}^{[l]}) = \sigma^2 = \frac{2}{n^{[l-1]}+n^{[l]}} \end{aligned} \]
因此, \[ w_{ij}^{[l]}\sim N\bigg(0\ ,\ \frac{2}{n^{[l-1]}+n^{[l]}}\bigg) \]
对于sigmoid激活函数
权重满足均匀分布
对于sigmoid激活函数,权重的方差应变为原来的16倍,因此, \[ \begin{aligned} &E(w_{ij}^{[l]}) = \frac{a+b}{2} = 0\\\ &D(w_{ij}^{[l]}) = \frac{(b-a)^2}{12} = \frac{32}{n^{[l-1]}+n^{[l]}} \end{aligned} \] 因此, \[ \begin{aligned} &b = \sqrt\frac{96}{n^{[l-1]}+n^{[l]}}\\\ &a = -b = -\sqrt\frac{96}{n^{[l-1]}+n^{[l]}} \end{aligned} \] 即, \[ w_{ij}^{[l]}\sim U\bigg(-\sqrt\frac{96}{n^{[l-1]}+n^{[l]}}\ ,\ \sqrt\frac{96}{n^{[l-1]}+n^{[l]}}\bigg) \]
权重满足正态分布
对于sigmoid激活函数,权重的方差应变为原来的16倍,因此, \[ \begin{aligned} &E(w_{ij}^{[l]}) = \mu = 0\\\ &D(w_{ij}^{[l]}) = \sigma^2 = \frac{32}{n^{[l-1]}+n^{[l]}} \end{aligned} \] 即, \[ w_{ij}^{[l]}\sim N\bigg(0\ ,\ \frac{32}{n^{[l-1]}+n^{[l]}}\bigg) \]
He初始化(kaiming初始化)
对于ReLU激活函数
对于ReLU激活函数,其在负半轴上结果均为0,因此,对于第\(l\)层的输入\(A^{[l-1]}\),如果上一层的线性映射结果\(Z^{[l-1]}\)内元素满足均值为0,那么理论上约有一半的元素的值均小于等于0,而因为使用的是ReLU激活函数,那么\(A^{[l-1]}\)的元素不可能有小于0的,那么\(A^{[l-1]}\)内元素约有一半为0,其余元素大于0
此时,如果想要保持\(Z^{[l]}\)内元素与\(Z^{[l-1]}\)内元素具有相同的分布,根据前面的推导,只要保证\(W^{[l]}\)内元素均值为0,那么\(Z^{[l]}\)内元素的均值也会为0,因此,我们接下来需要处理的就是保证\(Z^{[l]}\)内元素的方差与\(Z^{[l-1]}\)内元素的方差相同即可,考虑前向传播: \[ D(z_{ij}^{[l]}) = \displaystyle\sum_{k=1}^{n^{[l-1]}}D(w_{ik}^{[l]}a_{kj}^{[l-1]}) \]
而约有一半的输出为0,那么, \[ D(z_{ij}^{[l]}) = \frac{1}{2}\displaystyle\sum_{k=1}^{n^{[l-1]}}D(w_{ik}^{[l]}z_{kj}^{[l-1]}) = \frac{1}{2}n^{[l-1]}\sigma_1^2\sigma_2^2 = \sigma_1^2 \] 那么, \[ \sigma_1^2(\frac{1}{2}n^{[l-1]}\sigma_2^2 - 1) = 0 \] 因为\(\sigma_1^2\neq0\),因此 \[ \sigma_2^2 = \frac{2}{n^{[l-1]}} \] 在反向传播中,因为使用的是ReLU激活函数,只要前向传播的值大于0,那么导数值就为1,这样很难造成梯度消失和梯度爆炸,因此,我们无需考虑反向传播。
那么,
如果权重满足均匀分布, \[ w_{ij}^{[l]}\sim U\bigg(-\sqrt\frac{12}{n^{[l-1]}}\ ,\ \sqrt\frac{12}{n^{[l-1]}}\bigg) \] 如果权重满足正态分布, \[ w_{ij}^{[l]}\sim N\bigg(0\ ,\ \frac{2}{n^{[l-1]}}\bigg) \]
对于Leaky ReLU激活函数
Leaky ReLU激活函数当自变量大于0时,导数为1;当自变量小于0是,导数为\(\alpha\)
考虑前向传播:
同理, \[ D(z_{ij}^{[l]}) = \displaystyle\sum_{k=1}^{n^{[l-1]}}D(w_{ik}^{[l]}a_{kj}^{[l-1]}) \] 因为\(Z^{[l-1]}\)内的元素满足均值为0,那么,其中的元素大约有一半为负,一半为正,
对\(z^{[l-1]}\)(一个样本的向量)内的元素重新排序,将元素值为负的放到前面,那么, \[ D(z_{ij}^{[l]}) = \displaystyle\sum_{k=1}^{n^{[l-1]}/2}D(w_{ik}^{[l]}a_{kj}^{[l-1]}) + \displaystyle\sum_{k=n^{[l-1]}/2+1}^{n^{[l-1]}}D(w_{ik}^{[l]}a_{kj}^{[l-1]}) \] 易知 \[ \begin{aligned} &\displaystyle\sum_{k=1}^{n^{[l-1]}/2}D(w_{ik}^{[l]}a_{kj}^{[l-1]}) = \frac{1}{2}\alpha^2\displaystyle\sum_{k=1}^{n^{[l-1]}}D(w_{ik}^{[l]}z_{kj}^{[l-1]}) = \frac{1}{2}\alpha^2n^{[l-1]}\sigma_1^2\sigma_2^2\\\ &\displaystyle\sum_{k=n^{[l-1]}/2+1}^{n^{[l-1]}}D(w_{ik}^{[l]}a_{kj}^{[l-1]}) = \frac{1}{2}\displaystyle\sum_{k=1}^{n^{[l-1]}}D(w_{ik}^{[l]}z_{kj}^{[l-1]}) = \frac{1}{2}n^{[l-1]}\sigma_1^2\sigma_2^2 \end{aligned} \] 因此, \[ D(z_{ij}^{[l]}) = (1+\alpha^2)\frac{1}{2}n^{[l-1]}\sigma_1^2\sigma_2^2 = \sigma_1^2 \] 因为\(\sigma_1^2\neq0\),因此, \[ \sigma_2^2 = \frac{2}{(1+\alpha^2)n^{[l-1]}} \] 考虑反向传播,因为前向传播输出大于0时导数为1,小于0时导数值很小,接近于0,同样的,我们不考虑反向传播,那么,
如果权重满足均匀分布: \[ w_{ij}^{[l]}\sim U\bigg(-\sqrt\frac{12}{(1+\alpha^2)n^{[l-1]}},\ \sqrt\frac{12}{(1+\alpha^2)n^{[l-1]}}\bigg) \] 如果权重满足正态分布: \[ w_{ij}^{[l]}\sim N\bigg(0\ ,\ \frac{2}{(1+\alpha^2)n^{[l-1]}}\bigg) \]