正确的权值初始化可以使模型快速收敛,但是错误的权值初始化则会导致梯度消失和梯度爆炸
一、梯度消失和梯度爆炸
下图表示网络传播的过程
这里对W2求偏导,将公式化简得到
当H1趋于0时就会引发梯度消失,趋于无穷时就会引发梯度爆炸
二、Xavier方法和Kaiming方法
1、Xavier初始化
nn.init.xavier_uniform_()
方差一致性:保持数据尺度维持在适当范围内,通常方差为1
适用激活函数:饱和函数,如sigmoid、tanh
2、Kaiming初始化
nn.init.kaiming_normal_()
方差一致性:保持数据尺度维持在适当范围内,通常方差为1
适用激活函数:非饱和函数,如relu及其变种
三、常用的初始化方法
pytorch中的初始化
1、Xavier均匀分布和正态分布初始化
2、kaiming均匀分布和正态分布初始化
3、均匀分布、正态分布、常数分布
4、正交矩阵初始化、单位矩阵初始化、稀疏矩阵初始化
nn.init.calculate_gain(nonlinearity, param=None)
功能:计算激活函数的方差变化尺度
参数:
nonlinearity:激活函数名称
param:激活函数的参数