【问题标题】:NeuralNet regression, input normalization/ouput denormalization and role of activation funcions?NeuralNet 回归、输入归一化/输出反归一化和激活函数的作用?
【发布时间】:2020-09-08 23:30:52
【问题描述】:

给定一个训练数据集,Xtrain (m x n) 和 ytrain(m,) 以及一些神经网络序列模型。

训练数据也必须在何时以及在什么范围内进行归一化?应该如何对预测值进行非规范化?不同层的激活函数的选择如何影响这一点?

  • 我们是否必须对 Xtrain 数据进行归一化?
  • 我们归一化的范围,例如 [0-1]、[-1,1]、[-5,5]、[0,) 是否取决于输入层的激活函数域?还是所有激活函数都会影响它,因此应该将其归一化为模型中所有激活函数的共同范围?

对于训练中使用的目标(ytrain):

  • 必须非规范化吗?
  • 是否必须将其归一化为输出层激活函数的范围或所有层的公共范围?

非常困惑,因此我将不胜感激。

【问题讨论】:

    标签: tensorflow keras normalization denormalization


    【解决方案1】:

    我们是否必须标准化 Xtrain 数据?
    - 是的,我们必须

    我们归一化的范围是否取决于输入层的激活函数?
    - 不,它没有

    必须非规范化吗?
    - 没有

    是否必须归一化为输出层激活函数的范围或所有层的公共范围?
    - 实际上,我没有得到这个问题。但让我解释一下标准化的工作原理。


    规范化的主要目的 - 将特征带入单一视图。标准化提高了模型的数值稳定性。如果您有不同的功能(例如,一些介于 1000 和 20000 之间的数字列,一些介于 -10 和 5 之间的数字列,一些布尔列等),您必须进行标准化。这会将您的非常不同的变成相似的。

    但是我们为什么需要它呢?在神经网络中,每个神经元都将特征和权重作为输入:
    g(X) = X^T * w
    因此,如果您的某些特征比其他特征大,模型将更加关注大数字。

    谈到非规范化。我们需要非规范化 y 值吗?不,我们没有。由于我们没有对模型进行训练的 y_train 特征进行归一化,因此我们不需要对预测值进行反归一化。

    【讨论】:

    • 谢谢,激活函数的域/范围仍然让我感到困惑。假设第一个隐藏层中的神经元使用 sigmoid 激活,因此它输出 [0,1] 范围内的值。所以我们不应该在那个范围内对 y 进行归一化,以便我们可以使用我们归一化的相同参数来对其进行非归一化吗?否则我们怎么能去规范化那个神经元的输出
    • 如果要预测大于1的值,可以使用其他激活函数或在最后一层完全不使用激活
    • 所以同样的说法是,在我们网络的任何层中,使用任何激活函数,y 应该归一化为所有激活函数中通用的范围? (在默认线性激活的情况下,公共范围是 R 所以不需要归一化)
    • 不,你没有标准化 y 值。您必须在最后一层选择正确的激活函数。
    猜你喜欢
    • 2023-03-30
    • 2020-10-23
    • 2018-03-28
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 2018-05-22
    相关资源
    最近更新 更多