神经网络回归问题的输入特征重新缩放

在用于回归问题的Neural Nets中,我们会根据输出激活函数一致地重新缩放连续标签,例如,如果使用逻辑Sigmoid函数,则对其进行归一化;如果使用tanh函数,则进行调整后的归一化。最后,我们可以通过重新归一化输出神经元来恢复原始范围。

我们是否也应该对输入特征进行归一化?如果是,应该如何操作?例如,如果隐藏层的激活函数与输出层的激活函数不同呢?比如,如果隐藏层的激活函数是TANH,而输出层的激活函数是LOGISTIC,输入特征应该归一化到[0,1]还是[-1,1]区间呢?


回答:

简短的回答是肯定的,你也应该对输入值进行缩放,尽管这样做的原因与输出神经元的不同。激活函数只是使得某些输出值无法达到(例如,Sigmoid只能输出[0,1]区间内的值,tanh只能输出[-1,1]区间内的值),而这对于输入来说并非如此(所有激活函数都在整个实数域上定义)。缩放输入是为了加速收敛(以避免进入激活函数的“平坦”部分),但没有确切的规则。至少有三种广泛使用的可能性:

  • 线性缩放到[0,1]
  • 线性缩放到[-1,1]
  • 归一化到均值为0和标准差为1

每种方法在某些特定数据集上都有其优缺点。据我所知,最后一种方法具有最佳的统计特性,但在神经网络的背景下仍然是一种“经验法则”。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注