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

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

    三、小结

    • 深度模型有关数值稳定性的典型问题是衰减和爆炸。当神经⽹络的层数较多时,模型的数值稳定性容易变差。
    • 我们通常需要随机初始化神经⽹络的模型参数,如权重参数。
  • 相关阅读:
    博客园设置简约主题
    day25-48
    day1-10
    drf app
    flask 框架 练习
    vue入门 显示数据 操作属性 操作样式 条件渲染
    flask 配置文件 路由 视图 模板 中间件
    flask 使用数据库连接池
    Android 工程中添加依赖
    apk反编译
  • 原文地址:https://www.cnblogs.com/somedayLi/p/12398657.html
Copyright © 2011-2022 走看看