参数初始化
*
– 动机
– 1. 预训练初始化
– 2. 随机初始化
–
+ 2.1 高斯(Gaussian)分布初始化
+ 2.2 均匀分布初始化
+ 2.3 根据范数保持性(Norm-Preserving)
+
* 2.3.1 通过方差缩放的方式
* 2.3.2 正交初始化
– 3. 固定值初始化
– 4. 混合初始化
动机
神经网络本身是个非凸优化问题,并且容易出现梯度消失情况,因此参数初始化是很重要的。
注意神经网络的参数初始化不能为0,因此如果为0的话,同一层的神经元就是一个固定的输出值,一直到最后的输出值,无法区分每个神经元的行为,因此无法表示出神经元的能力。
1. 预训练初始化
先在大量数据上预训练(pre-train)一个骨干网络(backbone),然后把骨干网络,在不同的下游任务上进行微调(fune-turning)。
2. 随机初始化
直接对所有的参数随机进行初始化。
2.1 高斯(Gaussian)分布初始化
参数从一个固定均值(比如0)和固定方差(比如0.01)的高斯分布上进行随机初始化。
2.2 均匀分布初始化
参数可以在区间[ − r , r ] [-r, r][−r ,r ]内采用均匀分布进行初始化。为了优化的高效,不能采用很大的参数,比如饱和型的激活函数,容易直接产生梯度消失。
2.3 根据范数保持性(Norm-Preserving)
- 一个M层的等宽线性网络:
- 为了避免梯度消失或者梯度爆炸问题,希望误差项通过范数保持性来估计:
; 2.3.1 通过方差缩放的方式
由最左边的误差项跟最右边的误差项的模既不放大也不缩小,所以通过让他们乘起来等于单位阵I I I。
例如Xavier初始化和He初始化。
通过正交初始化的方式:直接找到一组正交的w w w,让他们相乘等于单位阵I I I。
2.3.2 正交初始化
用均值为0、方差为1的高斯分布初始化一个矩阵,将该矩阵用奇异值分解得到两个正交矩阵,使用其一作为权重矩阵。通常用在循环神经网络的hidden state到hidden state之间的连接权重上。
; 3. 固定值初始化
有些参数比较重要,需要用特定的值进行初始化,比如偏置(bias)通常需要初始化为0、或者循环神经网络(RNN)里的遗忘门(forget gate)。
4. 混合初始化
混合采用以上的初始化方式,对不同部分的参数进行不同方法的初始化方法。
Original: https://blog.csdn.net/qq_37320017/article/details/124394776
Author: YunGo
Title: 对于神经网络参数初始化的一些理解
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/697122/
转载文章受原作者版权保护。转载请注明原作者出处!