zoukankan      html  css  js  c++  java
  • 数值稳定性和模型初始化——2020.3.2

    一、衰减和爆炸

         当神经⽹络的层数较多时,模型的数值稳定性容易变差。例如假设权重分别为0.2和5,(0.2^{30} approx 1 imes 10^{-21})(此时得到一个很小的数,会导致神经元学习非常慢,从而导致衰减。),(5^{30} approx 9 imes 10^{20})(此时得到一个非常大的数,因此造成梯度爆炸。)

    二、 随机初始化模型参数

         如果一个网络里面包含若干神经元,这些参数在基于梯度的优化算法迭代后值依然相等,之后的迭代也是如此。那么着若干个神经元就好比等同于一个神经元,为了使其余的神经元发挥作用,因此需要进行随机初始化。

    ( 一 )PyTorch默认随机初始化

         可以使用torch.nn.init.normal_()使模型net的权重参数采用正态分布的随机初始化方式。其中nn.model对每一个layer采取的初始化策略都有考量,可参考源代码.

    ( 二 )Xavier随机初始化

         还有⼀种⽐较常⽤的随机初始化⽅法叫作Xavier随机初始化[1]。 假设某全连接层的输⼊个数为 (a),输出个数为 (b) ,Xavier随机初始化将使该层中权᯿参数的每个元素都随机采样于均匀分布:

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

    它的设计主要考虑到,模型参数初始化后,每层输出的⽅差不该受该层输⼊个数影响,且每层梯度的⽅
    差也不该受该层输出个数影响。

    三、小结

    • 深度模型有关数值稳定性的典型问题是衰减和爆炸。当神经⽹络的层数较多时,模型的数值稳定性容易变差。
    • 我们通常需要随机初始化神经⽹络的模型参数,如权重参数。
  • 相关阅读:
    MathType输入框怎么调整
    几何画板中去除画出的线段的教程
    MathType怎么编辑半开半闭区间
    几何画板给月牙图形填充颜色的技巧
    MathType调整矩阵分隔线粗细的方法
    帮你深入理解OAuth2.0协议
    phalapi
    Spring松耦合实例
    让前端工程师糟心的正则表达式到底是什么?
    composer安装
  • 原文地址:https://www.cnblogs.com/somedayLi/p/12398657.html
Copyright © 2011-2022 走看看