美文网首页
STEP-3:Pytorch-过拟合、欠拟合、梯度消失、梯度爆炸

STEP-3:Pytorch-过拟合、欠拟合、梯度消失、梯度爆炸

作者: 可恶小林子 | 来源:发表于2020-02-18 13:09 被阅读0次
感谢伯禹学习平台,本次学习将记录记录如何使用Pytorch高效实现网络,熟练掌握Pytorch的基础知识,记录不包含理论知识的细节展开。

一:过拟合与欠拟合

模型训练中经常出现的两类典型问题:

  • 一类是模型无法得到较低的训练误差,我们将这一现象称作欠拟合(underfitting);
  • 另一类是模型的训练误差远小于它在测试数据集上的误差,我们称该现象为过拟合(overfitting)。
过拟合与欠拟合
Pytorch 如何应对过拟合
  • 权重衰减:在pytorch 中的optim使用weight_decay可以指定权重衰减因子,引入正则化
import torch
optimizer_w = torch.optim.SGD(params=[net.weight], lr=lr, weight_decay=wd) 
  • 随机丢弃(Dropout)Pytorch中可以直接使用封装号的Dropout
import torch.nn as nn
nn.Dropout(drop_p)
Pytorch 如何应对欠拟合
  • 增加模型复杂度
  • 提高输入特征

二:梯度消失与梯度爆炸

以下内容来自伯禹学习平台教学内容

当神经网络的层数较多时,模型的数值稳定性容易变差。

假设一个层数为L的多层感知机的第l\boldsymbol{H}^{(l)}的权重参数为\boldsymbol{W}^{(l)},输出层\boldsymbol{H}^{(L)}的权重参数为\boldsymbol{W}^{(L)}。为了便于讨论,不考虑偏差参数,且设所有隐藏层的激活函数为恒等映射(identity mapping)\phi(x) = x。给定输入\boldsymbol{X},多层感知机的第l层的输出\boldsymbol{H}^{(l)} = \boldsymbol{X} \boldsymbol{W}^{(1)} \boldsymbol{W}^{(2)} \ldots \boldsymbol{W}^{(l)}。此时,如果层数l较大,\boldsymbol{H}^{(l)}的计算可能会出现衰减或爆炸。举个例子,假设输入和所有层的权重参数都是标量,如权重参数为0.2和5,多层感知机的第30层输出为输入\boldsymbol{X}分别与0.2^{30} \approx 1 \times 10^{-21}(消失)和5^{30} \approx 9 \times 10^{20}(爆炸)的乘积。当层数较多时,梯度的计算也容易出现消失或爆炸。

PyTorch的默认随机初始化

随机初始化模型参数的方法有很多。在线性回归的简洁实现中,我们使用torch.nn.init.normal_()使模型net的权重参数采用正态分布的随机初始化方式。不过,PyTorch中nn.Module的模块参数都采取了较为合理的初始化策略(不同类型的layer具体采样的哪一种初始化方法的可参考源代码),因此一般不用我们考虑。

相关文章

网友评论

      本文标题:STEP-3:Pytorch-过拟合、欠拟合、梯度消失、梯度爆炸

      本文链接:https://www.haomeiwen.com/subject/idlgfhtx.html