深度学习机器学习笔试面试题——初始化方法

本文探讨了深度学习中参数初始化的重要性,包括全0初始化的弊端、随机初始化的局限性以及Xavier和He初始化的优势。重点讨论了梯度消失问题,解释了其根本原因并提出了缓解策略,如使用ReLU激活函数、批量归一化和残差网络。此外,还强调了归一化在训练过程中的作用,总结了初始化和归一化对解决梯度问题和加速训练的影响。
摘要由CSDN通过智能技术生成

深度学习机器学习笔试面试题——初始化方法

提示:可能的大厂笔试面试题目
说说初始化方法有哪些?
理想的参数初始化方法是什么?
说说你用过的初始化方法,都有哪些优缺点
网络参数初始化为0可以吗?
随机初始化参数有什么问题?
手推梯度消失和梯度爆炸问题
怎么缓解梯度消失
梯度消失的根本原因
说说归一化方法


说说初始化方法有哪些?说说你用过的初始化方法,都有哪些优缺点?

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

(2)随机初始化
将参数随机化,不过随机参数服从高斯分布或均匀分布
高斯分布均值为0,方差为1。
0.001为控制因子,这样使得参数期望尽量接近0
在这里插入图片描述

(3)Xavier初始化
随机初始化没有控制方差,所以对于深层网络而言,随机初始化方法依然可能失效
理想的参数初始化还得控制方差,对ww进行一个规范化:
在这里插入图片描述
Xavier初始化”维持了输入输出数据分布方差一致性
在这里插入图片描述

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

因此He初始化,在Xavier的基础上,假设每层网络有一半的神经元被关闭,于是其分布的方差也会变小
经过验证发现当对初始化值缩小一半时效果最好,故He初始化可以认为是Xavier初始 / 2的结果
在这里插入图片描述
在这里插入图片描述

什么是网络参数初始化?为什么需要合理的参数初始化?

神经网络在训练时,前向传播和反向传播都涉及到每个神经元的权重更新wi,也就是我们说的网络参数了,当然这些参数需要一个初始值。方法有很多,全0初始、随机初始等等,每个方法都有优缺点。
为什么需要合理的参数初始化?
理想的网络参数初始化使得模型训练事半功倍
相反,糟糕的初始化可能导致网络梯度消失和梯度爆炸
举个例子,如网络使用sigmoid函数作为非线性激活函数,若参数初始化的值过大,前向运算时经过sigmoid函数后的输出结果几乎全为0或1,而反向传播时梯度全部为0,这就导致梯度消失了。再如ReLU,如果初始化不合理,前向运算的结果可能全部为负,发生“死区”现象

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

最理想化的参数初始化
通过我们上面的叙述,当然最理想化的参数初始化就是,经过多层网络后,信号不被过分放大或过分减弱
那么如何保证?数学化的方法就是使每层网络的输入和输出的方差一致
然后我们还要尽量保证每层网络参数分布均值为0,为什么呢?
因为这如同归一化,归一化的好处是加快训练;另一个原因也是为了计算方便

理想的参数初始化方法是什么?

当然最理想化的参数初始化就是,经过多层网络后,信号不会产生梯度消失或梯度爆炸
数学化的方法就是使每层网络的输入和输出的方差一致
然后我们还要尽量保证每层网络参数分布均值为0
因为这如同归一化,归一化的好处是加快训练;另一个原因也是为了计算方便

网络参数初始化为0可以吗?

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

随机初始化参数有什么问题?

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

手推梯度消失和梯度爆炸问题

在这里插入图片描述
我们神经网络中的初始权值也一般是小于 1 的数,所以相当于公式中是多个小于 1 的数在不断的相乘,导致乘积和还很小。这只是有两层的时候,如果层数不断增多,乘积和会越来越趋近于 0,以至于当层数过多的时候,最底层的梯度会趋近于 0,无法进行更新,并且 Sigmoid 函数也会因为初始权值过小而趋近于 0,导致斜率趋近于 0,也导致了无法更新

除了这个情况以外,还有一个情况会产生梯度消失的问题,即当我们的权重设置的过大时候,较高的层的激活函数会产生饱和现象,如果利用 Sigmoid 函数可能会无限趋近于 1,这个时候斜率接近 0,最终计算的梯度一样也会接近 0, 最终导致无法更新.

怎么缓解梯度消失

(1)预训练加微调:大模型+fine-tuning
(2)梯度剪切
(3)使用合理的参数初始化方案,如He初始化
(4)使用 ReLU、LReLU、ELU、maxout 等激活函数 ,sigmoid函数的梯度随着x的增大或减小和消失,而ReLU不会。
(5)使用批规范化BN
(6)残差结构:ResNet

梯度消失的根本原因

斜率趋近于0,无法更新。

我们神经网络中的初始权值也一般是小于 1 的数,所以相当于公式中是多个小于 1 的数在不断的相乘,导致乘积和还很小。这只是有两层的时候,如果层数不断增多,乘积和会越来越趋近于 0,以至于当层数过多的时候**,最底层的梯度会趋近于 0,无法进行更新,并且 Sigmoid 函数也会因为初始权值过小而趋近于 0,导致斜率趋近于 0,也导致了无法更新**。

说说归一化方法,为什么要归一化?

在这里插入图片描述
为什么要归一化?
1)归一化后加快了梯度下降求最优解的速度
2)归一化有可能提高精度


总结

提示:重要经验:

1)深度学习初始化,归一化,这些有利于解决梯度爆炸,消失等问题,然后还可以加速运算
2)没事看看深度学习的内容,这是算法工程师需要的基础知识点
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰露可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值