如何对不同激活函数的训练数据进行归一化?
How to normalize training data for different activation functions?
我正在训练完全连接的神经网络来对 MNIST 数据集进行分类。输入数据是像素值为 [0, 255]
.
的方形黑白图像
我读到过要使用 sigmoid()
激活器,需要将输入标准化为 [0, 1]
(S 形范围)。
如何规范化 tanh()
激活器的输入数据?我是否需要将其重新调整为 [-1, 1]
(tanh 的范围)或者它仍然可以在 [0, 1]
.
中
哪种方法更好,为什么?一般指导是什么?
您不必对不同的激活函数使用不同的归一化。事实上,对于 sigmoid,您不必将输入标准化为 [0, 1]
。 sigmoid的范围[0, 1]
就是它输出的范围。它的输入(域)范围实际上是从负无穷大到正无穷大。
更重要的是,您的输入不会直接进入 sigmoid 函数,因此您的图像输入范围与 sigmoid 将获得的输入范围不同。中间会有一些线性层改变数据范围。
一般指导是将您的输入规范化为 [-1, 1]
。这与激活函数无关,而是反向传播的一般有效措施。参见 Effective BackProp。
归一化导致神经网络的正确行为,因为它简化了网络权重调整,为此您可以选择标准化或归一化。
标准化 = (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 估计器归一化参考可在以下位置找到:https://www.cs.ccu.edu.tw/~wylin/BA/Fusion_of_Biometrics_II.ppt
我正在训练完全连接的神经网络来对 MNIST 数据集进行分类。输入数据是像素值为 [0, 255]
.
我读到过要使用 sigmoid()
激活器,需要将输入标准化为 [0, 1]
(S 形范围)。
如何规范化 tanh()
激活器的输入数据?我是否需要将其重新调整为 [-1, 1]
(tanh 的范围)或者它仍然可以在 [0, 1]
.
哪种方法更好,为什么?一般指导是什么?
您不必对不同的激活函数使用不同的归一化。事实上,对于 sigmoid,您不必将输入标准化为 [0, 1]
。 sigmoid的范围[0, 1]
就是它输出的范围。它的输入(域)范围实际上是从负无穷大到正无穷大。
更重要的是,您的输入不会直接进入 sigmoid 函数,因此您的图像输入范围与 sigmoid 将获得的输入范围不同。中间会有一些线性层改变数据范围。
一般指导是将您的输入规范化为 [-1, 1]
。这与激活函数无关,而是反向传播的一般有效措施。参见 Effective BackProp。
归一化导致神经网络的正确行为,因为它简化了网络权重调整,为此您可以选择标准化或归一化。
标准化 = (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 估计器归一化参考可在以下位置找到:https://www.cs.ccu.edu.tw/~wylin/BA/Fusion_of_Biometrics_II.ppt