1.Xaiver初始化
1.1 目标
每一层输出的方差应该尽量相等,每一层的梯度的方差也应该保持相同。那么,每一层的权重应该满足哪种条件。
1.2 结论
权重的方差应该满足:
。其中,
表示输入维度(
),
表示输出维度。
设计一个用于初始化参数的概率分布,这里使用均匀分布进行参数初始化。假设随机变量服从范围为
的均匀分布,那么它的方差为:
。可以求得,最终把参数初始化成
范围内的均匀分布。
2.MSRA初始化
2.1 目标
和Xavier初始化方法类似,只不过Xavier初始化方法假设激活函数是线性的,显然我们目前常用的ReLU和PReLU并不满足这一条件。
2.2 结论
MSRA初始化是高斯分布:
3.应用
3.1结论
- sigmoid激活函数 + 均值0,方差1的高斯分布的权重初始化。
- ReLU激活函数 + xavier权重初始化/MSRA权重初始化。
- PReLU激活函数 + xavier权重初始化/MSRA权重初始化。
3.2 理由
sigmoid函数能够控制数据的幅度,在深层模型中,保证数据幅度不会太大。但sigmoid存在梯度消失问题,反向传播上有劣势。
ReLU函数不能控制数据的幅度,在深层模型中,数据的幅度有可能产生一定的不平衡,最终会影响模型的表现。但ReLU在反向传播方面可以把梯度传给后面的参数,优化效果更好。通过Xavier和MSRA的权重初始化,可以解决数值范围不稳定的问题。