2. 深度学习——初始化方法

机器学习面试题汇总与解析——初始化方法

本章讲解知识点

    1. 什么是初始化方法
    1. 为什么需要合理的参数初始化
    1. 详细讲解初始化方法


  • 本专栏适合于Python已经入门的学生或人士,有一定的编程基础。
  • 本专栏适合于算法工程师、机器学习、图像处理求职的学生或人士。
  • 本专栏针对面试题答案进行了优化,尽量做到好记、言简意赅。这才是一份面试题总结的正确打开方式。这样才方便背诵
  • 如专栏内容有错漏,欢迎在评论区指出或私聊我更改,一起学习,共同进步。
  • 相信大家都有着高尚的灵魂,请尊重我的知识产权,未经允许严禁各类机构和个人转载、传阅本专栏的内容。

  • 关于机器学习算法书籍,我强烈推荐一本《百面机器学习算法工程师带你面试》,这个就很类似面经,还有讲解,写得比较好。

  • 关于深度学习算法书籍,我强烈推荐一本《解析神经网络——深度学习实践手册》,简称 CNN book,通俗易懂。



1. 什么是初始化方法

1.1 什么是网络参数初始化

深度学习中的初始化方法是指在训练神经网络时,对模型的参数进行初始赋值的方法。合适的初始化方法可以加速模型的收敛速度,提高模型的性能。

神经网络在训练时,前向传播反向传播都涉及到每个神经元的权重更新 w i w_i ,也就是我们说的网络参数了,当然这些参数需要一个初始值。方法有很多,全 0 初始、随机初始等等,每个方法都有优缺点。

1.2 常用的深度学习初始化方法

  • 随机初始化:最常用的初始化方法之一是随机初始化。它通过从某个分布(如均匀分布或高斯分布)中随机选择初始值来初始化参数。随机初始化可以破坏对称性,使得不同的神经元学习到不同的特征。

  • 零初始化:另一种常见的初始化方法是将所有参数初始化为零。然而,零初始化的问题是每个参数的更新将是相同的,导致网络对称性和梯度消失问题。

  • Xavier 初始化:Xavier 初始化是一种常用的初始化方法,特别适用于具有线性激活函数的网络。它根据输入和输出维度来调整参数的初始化范围,以确保梯度的传播保持合适的范围,避免梯度消失或梯度爆炸问题。

  • He 初始化:He 初始化是一种针对具有 ReLU 激活函数的网络的初始化方法。它与 Xavier 初始化类似,但根据激活函数的性质进行了调整,以确保合适的梯度传播范围。


2. 为什么需要合理的参数初始化

理想的网络参数初始化使得模型训练事半功倍,相反,糟糕的初始化可能导致网络梯度消失梯度爆炸。举个例子,如网络使用 sigmoid 函数作为非线性激活函数,若参数初始化的值过大,前向运算时经过 sigmoid 函数后的输出结果几乎全为 0 或1,而反向传播时梯度全部为 0,这就导致梯度消失了。再如 ReLU,如果初始化不合理,前向运算的结果可能全部为负,发生“死区”现象。

再简单说,就是参数又不能过大,又不能过小。比如在前向传播过程中输出为 h ( w x + b ) h(wx+b) ,因为 w w 很小,所以输出很小,同时反向传播过程中梯度的变化也很小,那么参数的改变也很小,在不断的正向传播乘很小的数,反向传播又几乎不变的情况下,最后 w w 会越来越小,趋近于 0,出现梯度消失。反之同理。

从激活函数方面来看,若激活函数的导数绝对值都小于1,那么导致梯度消失;若激活函数的导数绝对值都大于1,那么导致梯度爆炸。这也是为啥Relu激活函数表现好的原因,人家梯度刚好是1。

最理想化的参数初始化

通过我们上面的叙述,当然最理想化的参数初始化就是,经过多层网络后,信号不被过分放大或过分减弱。那么如何保证?数学化的方法就是使每层网络的输入和输出的方差一致。然后我们还要尽量保证每层网络参数分布均值为 0、方差不变,为什么呢?因为这如同归一化,归一化的好处是有助于提高网络的稳定性和收敛速度,防止梯度爆炸或梯度消失;另一个原因也是为了计算方便。


3. 详细讲解初始化方法

3.1. 全0初始化

就是将所有权重置 0。当然是不能这样的,神经网络通过梯度更新参数,参数都是 0,梯度也就是 0,神经网络就停止学习了。

3.2. 随机初始化

将参数随机化,不过随机参数服从高斯分布均匀分布,假设网络输入神经元个数为 n i n n_{in} ,输出神经元个数为 n o u t n_{out} ,则服从高斯分布的参数随机初始化为:

w = 0.001 r a n d n ( n i n , n o u t ) (.) w =0.001 * randn(n_{in}, n_{out}) \\ \tag{.}

其中高斯分布均值为 0,方差为 1。0.001 为控制因子,这样使得参数期望尽量接近 0。

3.3. Xavier 初始化

权重参数随机初始化会带来一个问题,即网络输出数据分布的方差会随着输入神经元个数改变,为解决这一问题,会在初始化的同时加上对方差大小的规划化。

随机初始化没有控制方差,所以对于深层网络而言,随机初始化方法依然可能失效。我们上面已经说了,理想的参数初始化还得控制方差,对 w w 进行一个规范化:

w = 0.001 r a n d n ( n i n , n o u t ) n (.) w = \frac {0.001 * randn(n_{in}, n_{out})}{\sqrt{n}} \\ \tag{.}

其中, n n n i n n_{in} n i n + n o u t 2 \frac {n_{in}+n_{out}}{2} ,这便是“Xavier初始化”,维持了输入输出数据分布方差一致性。注意这里是正态分布。如果是均匀分布,则参数的随机取值范围为 [ 6 n i n + n o u t -\sqrt{ \frac {6} {n_{in}+n_{out}}} 6 n i n + n o u t \sqrt{ \frac {6} {n_{in}+n_{out}}} ]。

核心思想:正向传播时,激活值的方差保持不变;反向传播时,关于状态值的梯度的方差保持不变。

这里我们来具体分析一下“Xavier初始化”如何做到了输入输出数据分布方差的一致性。假设 s s 为未经非线性变换的该层网络的输出结果, w \vec w 为该层参数, x \vec x 为该层输入数据,则有:

V a r ( s ) = V a r ( i n w i x i ) = i n V a r ( w i x i ) = i n [ E 2 ( w i ) V a r ( x i ) + E 2 ( x i ) V a r ( w i ) + V a r ( x i ) V a r ( w i ) ] (.) Var(s) = Var(\sum_i^n w_ix_i) \\ = \sum_i^n Var(w_ix_i) \\ = \sum_i^n [E^2(w_i) Var(x_i) + E^2(x_i) Var(w_i) + Var(x_i)Var(w_i)] \\ \tag{.}

对于理想情况下处于稳定状态的神经网络参数和输入数据均值应为 0,则 E ( w i ) = E ( x i ) = 0 E(w_i)=E(x_i)=0 ,所以上面的式子简化为:

V a r ( s ) = i n V a r ( x i ) V a r ( w i ) = ( n V a r ( w ) ) v a r ( x ) (.) Var(s) = \sum_i^n Var(x_i)Var(w_i) \\ = (nVar(\vec w))var(\vec x) \tag{.}

我们希望输入输出数据分布方差的一致,即 V a r ( s ) = v a r ( x ) Var(s)=var(\vec x) ,那么令 ( n V a r ( w ) ) = 1 (nVar(\vec w)) =1 ,则 V a r ( w ) = 1 n i n = 2 n i n + n o u t Var(\vec w)=\frac{1}{n_{in}} = \frac {2} {n_{in}+n_{out}} 。也就是规范化后的 w \vec w 的方差为原来的 1 n \frac{1}{n} ,那么规范化后的 w \vec w 1 n i n \sqrt {\frac{1}{n_{in}}} 2 n i n + n o u t \sqrt {\frac {2} {n_{in}+n_{out}}} ,我们更多会采用 2 n i n + n o u t \sqrt {\frac {2} {n_{in}+n_{out}}} 因为实际当中输入与输出的个数往往不相等,于是为了均衡考量。从上面推导我们可以知道,“Xavier初始化”需要配合 BN 层,而且针对线性激活函数才有用

3.4. He 初始化

He 初始化由何凯明提出,为了解决 “Xavier 初始化” 的缺点。对于非线性激活函数 ReLU,“Xavier 初始化” 方法失效。He 初始化基本思想是,当使用 ReLU 做为激活函数时,Xavier 的效果不好,原因在于,当 ReLU 的输入小于 0 时,其输出为 0,相当于该神经元被关闭了,影响了输出的分布模式。

因此 He 初始化,在

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

- 本专栏适合于Python已经入门的学生或人士,有一定的编程基础。 - 本专栏适合于算法、机器学习求职的学生或人士。 - 本专栏特点: - 本专栏囊括了深度学习、机器学习、NLP、特征工程等一系列知识点的讲解,并且最后总结出了高频面试考点(附有答案)共301道,知识点讲解全面,事半功倍,为大家春秋招助力。不仅如此,教程还讲解了简历制作、笔试面试准备、面试技巧等内容。

全部评论

相关推荐

09-24 18:30
已编辑
长春工业大学 产品经理
小肥罗:HR就是好人的缩写哈哈哈哈
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务