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) ]

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

    三、小结

    • 深度模型有关数值稳定性的典型问题是衰减和爆炸。当神经⽹络的层数较多时,模型的数值稳定性容易变差。
    • 我们通常需要随机初始化神经⽹络的模型参数,如权重参数。
  • 相关阅读:
    acdream.18.KIDx's Triangle(数学推导)
    upc.2219: A^X mod P(打表 && 超越快速幂(in some ways))
    山东省第四届acm.Rescue The Princess(数学推导)
    BC.5200.Trees(dp)
    BC.36.Gunner(hash)
    hdu.5195.DZY Loves Topological Sorting(topo排序 && 贪心)
    数组倒置算法扩展
    C# 传值和传引用 ( ref out in )
    C# 输出文件夹下的所有文件
    控制反转(自译)
  • 原文地址:https://www.cnblogs.com/somedayLi/p/12398657.html
Copyright © 2011-2022 走看看