【基础知识】第六章:深度学习中的几个问题

问题一:梯度消失和梯度爆炸

1:梯度异常的原因

神经网络中基于BP算法的梯度下降策略,使用目标的负梯度方向对参数进行更新。计算梯度对激活函数求导,如果如果梯度值大于1,网络一层一层向下传播,梯度会以指数形式增加,导致梯度爆炸,反之小于1,导致梯度消失。

正向传播

x_{out1}=wx+b

\sigma (x_{1})=\frac{1}{1+e^{-x_{out1}}}

x_{out2}=w_{1}x_{1}+b_{1}

\sigma (x_{2})=\frac{1}{1+e^{-x_{out2}}}

假设最终的输出为f(x2)=σ(x2)

计算LOSS  MSE

Loss=\frac{1}{n}\sum_{i=1}^{n}(y_{i}-f(x_{i}))^2

反向传播

\Delta w=\eta \frac{\partial loss}{\partial w}=\eta \frac{\partial loss}{\partial \sigma }\frac{\partial \sigma }{\partial w}

\Delta w>1 or <1 就可能会在神经网络中导致梯度消失或者爆炸

(1)梯度消失

  • 隐藏层的层数过多
  • 采用了不合适的激活函数(更容易产生梯度消失,但是也有可能产生梯度爆炸)

(2)梯度爆炸

  • 隐藏层的层数过多
  • 权重的初始化值过大

2:解决办法

  • 逐层训练加微调

    该方法由 Geoffrey Hinton 于2006年提出,具体流程为每次只训练一层神经网络,待权重稳定之后,再使用该层网络的输出进行后一层网络的输入,重复该步骤至训练所有网络层。最后再对整个模型进行finetune,得到最优的模型。

  • 梯度剪切

    梯度剪切这个方案主要是针对梯度爆炸提出的,其思想是设置一个梯度剪切阈值,然后更新梯度的时候,如果梯度超过这个阈值,那么就将其强制限制在这个范围之内。这可以防止梯度爆炸。

  • 权重正则化

    比较常见的是L1正则,和L2正则,在各个深度框架中都有相应的API可以使用正则化。

  • relu、leakrelu、elu等激活函数

    Relu: 如果激活函数的导数为1,那么就不存在梯度消失爆炸的问题了,每层的网络都可以得到相同的更新速度,relu就这样应运而生。

  • batchnorm

    batchnorm全名是batch normalization,简称BN,即批规范化,通过规范化操作将输出信号x规范化到均值为0,方差为1,保证网络的稳定性。

  • 残差结构

    残差结构中的 shortcut 有效地避免了梯度消失与爆炸问题。

问题二:过拟合和欠拟合

判断方法:k折交叉验证

用训练集训练的同时,使用验证集测试算法效果,随着模型拟合能力的增强。错误率在train上逐渐减少,而在验证集上先减少在增大。

欠拟合:错误率在验证集和训练集上都很大

过拟合:当验证集错误率达到最低点时 拟合效果最好 由最低点开始增大 就是过拟合

产生原因:

  • 欠拟合:模型简单不够复杂,拟合能力不足 数据量太多 
  • 过拟合:数据集过于简单  是的模型在拟合函数的时候过分考虑的噪声等不必要的数据

解决方法:

过拟合:

  1. 增加数据量 
  2. 降低模型复杂度  例如 剪枝 减少层数
  3. 针对神经网络 采用dropout  间接减少参数数量 弱化特征联系
  4. 提前终止训练
  5. 正则化方法 包括  dropout  正则化(惩罚项) 的引入,就是瓤模型在较小的参数范围内学习最优参数,从而简化模型,就是瓤最终学到的参数值绝对值变小,而且在使用Sigmoid的时候,较小的参数值导致激活函数工作在线性区,此时模型拟合能力弱,降低过拟合可能。

问题三:样本不均衡

1:可以通过 过抽样 欠抽样解决

2:通过正负样本的惩罚权重解决样本不均衡

3:focal loss

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值