深度学习——权值初始化

本博文属于deeplearning.ai学习笔记总结系列,DL中权值初始化也有很多trick,不同的初始化方法可能会得到不同的结果,随机初始化需要打破symmetry,确保每个隐藏层的units可以学习不同的东西,同时初始化的权值不能过大,通常在ReLU激活函数下,He初始化方法能起到不错的效果。

NN权值初始化最常用的方法是随机数进行初始化,代码表示就是W=np.random.randn(shape),其中randn从均值0,标准差为1的标准正太分布中采样,这种初始化有一个问题就是,每一个units输出值的方差会随着units输入样本数量而增加。

为了解决该问题,提出了He initializationXavier initialization等,根据Ng老师的讲解,他推荐在使用ReLU激活函数时,考虑He initialization方法进行初始化,代码表示,即为,WL=np.random.randn(shape)*np.sqrt(2/n);使用tanh激活函数时,考虑Xavier initialization方法进行初始化,代码表示,即为,WL=np.random.randn(shape)*np.sqrt(1/n),这里的n指进入某一units的输入个数。如果你比较困惑为什么要乘上$ \sqrt{\frac{1}{n}} $,可以阅读这篇博文

想要直观的感受初始化的效果,可以通过这个栗子体会下,链接Here

总之,较差的初始化可能会引发梯度爆炸/消失,训练变慢等问题,掌握这些trick,避免入坑。

分享