【问题标题】:Is it normal for gradients to be extremely large in a deep convnet?在深度卷积网络中梯度非常大是否正常?
【发布时间】:2019-09-18 03:31:41
【问题描述】:

我刚刚从头开始实现了一个卷积神经网络。这是我第一次这样做。在测试我的反向传播算法时,输出的权重增量值与原始值相比非常大。例如,我所有的权重都被初始化为一个介于 -0.1 和 0.1 之间的随机数,但输出的 delta 值在 75000 左右。这显然是一个太大的变化,它需要非常小的学习率甚至接近功能.像 0.01 这样的学习率似乎是惯例,但我的需要至少为 0.0000001,这让我相信我做错了什么。问题是我不明白三角洲怎么不可能很大。为了获得权重关于成本函数的导数,我将前一层的激活(由于泄漏 reLu 导致大部分为正)与先前的错误(由于泄漏 reLu 的导数全部为 0.1 或 1)进行卷积。显然,所有这些正数的总和在通过层传播时会变得非常大。我在某处跳过了一步吗?这是一个爆炸梯度问题吗?我应该使用渐变裁剪还是批量归一化?

【问题讨论】:

    标签: machine-learning deep-learning conv-neural-network gradient-descent backpropagation


    【解决方案1】:

    根据卷积的大小,-0.1 到 0.1 似乎非常大。尝试 0.01 甚至更低。

    如果您想进行更深入的初始化,可以查看 glorot (http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf?hc_location=ufi) 或 he (https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/He_Delving_Deep_into_ICCV_2015_paper.pdf) 初始化。

    关键是使用均值为 0 且标准差等于输入通道平方根的均匀值或高斯值进行初始化。

    【讨论】:

      猜你喜欢
      • 2018-01-09
      • 1970-01-01
      • 2015-04-09
      • 1970-01-01
      • 2014-08-24
      • 2015-05-11
      • 1970-01-01
      • 2016-11-05
      • 2019-09-19
      相关资源
      最近更新 更多