【问题标题】:Does normalizing predictor variables help in case of dnn regression?在 dnn 回归的情况下,标准化预测变量是否有帮助?
【发布时间】:2018-10-03 04:16:58
【问题描述】:

我正在使用 tensorflow 的 DNNRegressor。想知道标准化(应用对数或逆变换等)我的数值预测变量是否有助于提高模型性能,如果是,基本逻辑是什么? 附言MSE 被用于训练损失。

【问题讨论】:

    标签: python tensorflow machine-learning deep-learning regression


    【解决方案1】:

    有多种归一化方法,例如,您可以使用批量归一化层,它使用高斯分布对层的输出进行归一化。

    就预测而言,它没有区别。神经网络可以很容易地对抗你的归一化,因为它只是缩放权重并改变偏差。最大的问题在于训练。通常输入是标准化的,以保持较低的值并有助于避免称为exploding gradient 的问题。这是由于使用 sigmoid 激活函数的传统反向传播导致 sigmoid 导数饱和。

    this post 的答案很好地解释了为什么它很重要。

    【讨论】:

      【解决方案2】:

      确实如此。 DNNRegressor 是一个神经网络,你使用梯度下降来优化它(可能是一些高级的东西,比如 Adam,但最终它仍然是 SGD)。你必须标准化你的特征以获得更好的梯度。更好,我的意思是或多或少相等,不是特别大也不是特别小。通过规范化,我的意思是:

      • 特征的均值应为 0
      • 特征应具有相同的偏差(此处通常选择 1)
      • 它应该是正常分布的。均匀很好,正常很好,对数正态是有问题的,指数是危险的。这个想法是:异常值会损害你的表现。

      关于如何使 SGD 更好地工作,有很多很棒的资源,但我建议看看 Hinton's lecturethis cool review of gradient descent algorithms

      【讨论】:

      • 只是为了确认一下,你的意思是规范化只有在我使用 SGD 时才有效,否则无效?实际上,在我目前的方法中,我现在没有使用批处理,所以我的 1 步跨越了整个数据,即在我的情况下 1 步 = 1 epoch。
      • 哦,好的。不,您仍然需要标准化数据。这里的关键是您使用的是渐变,毕竟随机性并不那么重要。 0-mean/1-deviation 是至关重要的,而规范化分布的形状是次要的(但它通常会有所帮助)
      猜你喜欢
      • 2013-01-19
      • 1970-01-01
      • 2021-12-03
      • 2018-10-15
      • 2018-04-05
      • 2018-10-29
      • 2021-12-08
      • 1970-01-01
      • 2017-06-06
      相关资源
      最近更新 更多