【问题标题】:How to normalize training data for different activation functions?如何标准化不同激活函数的训练数据?
【发布时间】:2018-08-02 05:59:46
【问题描述】:

我正在训练全连接神经网络来对 MNIST 数据集进行分类。输入数据为像素值为[0, 255]的方形黑白图像。

我读过,使用sigmoid() 激活器需要将输入标准化为[0, 1](sigmoid 范围)。

如何规范化tanh() 激活器的输入数据?我是否需要将其重新调整为[-1, 1](tanh 范围)或者它仍然可以在[0, 1]

哪种方法更好,为什么?一般指导是什么?

【问题讨论】:

    标签: machine-learning neural-network mnist


    【解决方案1】:

    您不必为不同的激活函数使用不同的归一化。事实上,对于 sigmoid,您不必将输入标准化为 [0, 1]。 sigmoid[0, 1]的范围是它的输出范围。它的输入(域)范围实际上是从负无穷到正无穷。

    更重要的是,您的输入不会直接进入 sigmoid 函数,因此您的图像输入范围与 sigmoid 将获得的输入范围不同。中间会有一些线性层改变数据范围。

    一般指导是将您的输入标准化为[-1, 1]。这与激活函数无关,而是反向传播的一般有效措施。见Effective BackProp

    【讨论】:

    • 感谢您的解释。我对[0, 1] 标准化的逻辑是,每个下一层都作为前一个 sigmoid 层的输入输出。也就是说,网络中除第一层外的每一层的输入都在激活函数的输出范围内。这有点暗示你应该对第一层做同样的事情。
    • @Ribtoks 输入数据范围的差异应由线性运算符处理。每一层是否接收相同范围的输入并不重要。另一个建议:试试看。训练 MNIST 分类器非常快。
    【解决方案2】:

    归一化导致神经网络的正确行为,因为它简化了网络权重调整,为此您可以选择标准化或归一化。

    标准化 = (x - mean(x)) / std(x);

    归一化 = (x - x_min) / (x_max - x_min);

    此外,Hampel 等人对 tanh 估计器进行了很好的研究。就异常值而言,这似乎是稳健的。 他们考虑了以下 x_norm = (1/2) * (tanh (0.01 * ((x - mean(x)) / std(x))) + 1)

    Tanh-estimators 归一化参考可以在以下位置找到:https://www.cs.ccu.edu.tw/~wylin/BA/Fusion_of_Biometrics_II.ppt

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-29
      • 2010-10-05
      • 2019-09-25
      • 2021-03-24
      • 2019-05-23
      • 2018-11-07
      • 2021-09-08
      相关资源
      最近更新 更多