权值初始化——高斯初始化,Xavier初始化,MSRA初始化,He初始化

在训练神经网络之前,必须对其全值和偏置进行初始化。常用的初始化方法有四种,分别是高斯初始化、Xavier初始化和MSRA初始化。它们一般都把偏置初始化为0,但对权值进行随机初始化。其中,高斯初始化比较容易理解,就是根据某个高斯分布来初始化权值,但均值通常选0,方差需要按经验人工选择。下面对Xavier和MSRA以及He做进一步的说明。

Xavier的基本思想是保持信息在神经网络中流动过程的方差不变。假设激活函数是关于0点对称的,且主要针对于全连接神经网络,适应于tanh和softsign。这种方法在实际应用时根据一个均匀分布来初始化权值。如果某个神经元y_jn 个输入 x_1,x_2,...,x_n ,相应的连接权值为 w_{ij} ,则满足关系:

y_j = w_{1j}x_1+w_2jx_2+...+w_{nj}x_n +b

那么采用Xavier进行初始化的方法就是:

w_{ij}\sim U[-\frac{sqrt(6)}{sqrt(n_i+n_i+1)},\frac{sqrt(6)}{sqrt(n_i+n_i+1)}],b=0

MSRA的基本思想与Xavier类似,但主要是针对ReLU和PReLU激活函数来设计的。这种方法在实际应用时根据一个方差为\delta =sqrt(2/n) 的零均匀高斯分布来初始化权值,即

w_{ij} \sim N(0,\frac{2}{n}), b=0

He的基本思想是正向传播时,状态值的方差保持不变;反向传播时,关于激活值的梯度的方差保持不变。

适用于ReLU的初始化方法:

w_{ij} \sim N(0,sqrt(\frac{2}{n_i})), b=0

适用于Leakly ReLU的初始化方法:

w_{ij} \sim N(0,sqrt(\frac{2}{(1+\alpha^2)n_i})), b=0

在darknet中CNN的权值初始化采用He的方法,具体实现见源码。后续我们会在【darknet源码解析】系列中详细讲解其实现。

完,

你可能感兴趣的:(权值初始化——高斯初始化,Xavier初始化,MSRA初始化,He初始化)