0%

parameter_initialization

背景

在深度学习中,参数初始化也是很重要的一步,糟糕的初始参数可能会导致模型在训练时遇到梯度消失梯度爆炸这两个情况

梯度消失

梯度消失是指在训练是,参数的梯度变为0,或者是非常接近0,导致参数在迭代过程中不再更新或者说更新很小。

除了糟糕的初始化参数,另外一个导致梯度消失原因是激活函数的选择,曾经,sigmoid函数$\frac{1}{1+e^{-x}}$常常作为激活函数,但是sigmoid函数的梯度在自变量较小和自变量较大时,对应的导数值都非常接近0,所以水用sigmoid激活函数往往会导致梯度消失的问题。所以现在大家基本上都选择ReLU函数作为默认的激活函数。

梯度爆炸

梯度爆炸是指在训练时,参数的梯度变得非常大。

参数对称问题

如果初始化参数时,如果参数出现很多相似的参数,那个就可能会导致多个神经元表现得像一个神经元。一个极端的例子,如果在输出化参数时,所有参数都初始化为一个常数,如果输入样本的特征也是相同的话,那么对于每次迭代,每个参数的偏导数值也是相同的,更新之后的值也是相同的,那么这些神经元就和一个神经元的效果一样了。

参数初始化的方法

Default Initialization

在使用深度学习框架创建网络时,如果是传入模型初始化方法的参数,则会使用深度学习框架默认的参数初始化方法,通常不会出现什么大问题。

Xavier Initialization

Xavier Initialization使用期望为0,方差为$\frac{2}{n_{in} + n_{out}}$的正态分布来初始化参数,其中$n_{in}$为当前层的输入神经元个数,$n_{out}$为当前层的输出神经元的个数,即下一层神经元的个数。

others

神经网络中的参数初始化方法也是目前研究的一个领域