zoukankan      html  css  js  c++  java
  • 动手学pytorch-影响模型效果的一些因素

    影响模型效果的一些因素

    1. 梯度消失和梯度爆炸
    2. 模型参数初始化
    3. 考虑到环境因素的其他问题
    4. 实例:Kaggle房价预测

    1.梯度消失和梯度爆炸

    深度模型有关数值稳定性的典型问题是消失(vanishing)和爆炸(explosion)。

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

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

    2.模型参数初始化

    2.1PyTorch的默认随机初始化

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

    2.2Xavier随机初始化

    还有一种比较常用的随机初始化方法叫作Xavier随机初始化。
    假设某全连接层的输入个数为(a),输出个数为(b),Xavier随机初始化将使该层中权重参数的每个元素都随机采样于均匀分布

    [Uleft(-sqrt{frac{6}{a+b}}, sqrt{frac{6}{a+b}} ight). ]

    它的设计主要考虑到,模型参数初始化后,每层输出的方差不该受该层输入个数影响,且每层梯度的方差也不该受该层输出个数影响。主要针对于全连接神经网络。适用于tanh和softsign。

    ***论文地址:Understanding the difficulty of training deep feedforward neural networks ***

    3. 考虑到环境因素的其他问题

    3.1协变量偏移

    数学上,P(x)改变了,但P(y∣x)保持不变。例如用真实世界中猫和狗的图像数据训练模型,却要用该模型来对卡通猫和狗进行判别。

    3.2标签偏移

    数学上,P(y)上的边缘分布的变化,但类条件分布是不变的P(x∣y)的。例如用猫和狗的图像数据训练模型,却要用该模型来对马和羊来进行判别。

    3.3概念偏移

    标签本身的定义发生变化的情况。例如soft drink 可以指suda, coke...
    Image Name

    [美国软饮料名称(soft drink)的概念转变 ]

    4.实例:kaggle房价预测案例

    notebook地址:notebook

  • 相关阅读:
    清理git提交记录并不能达到真正硬盘“瘦身”
    virtualbox虚拟机异常暂停
    百兆带宽升千兆-番外篇
    流水文之百兆带宽升千兆
    OSS设置静态网站托管+CDN加速OSS域名
    每日一坑-exsi中win虚拟机调分辨率
    nginx筛选字段+excel统计
    树莓派使用Samba共享文件
    chrome无法使用独显解决
    解决jdk16安装后无jre目录的问题
  • 原文地址:https://www.cnblogs.com/54hys/p/12310970.html
Copyright © 2011-2022 走看看