神经网络的训练数据范围
Posted
技术标签:
【中文标题】神经网络的训练数据范围【英文标题】:Training data range for Neural Network 【发布时间】:2016-04-02 08:46:31 【问题描述】:神经网络使用较小范围的训练数据更好还是无关紧要?例如,如果我想用角度(浮点值)训练 ANN,我应该以度 [0; 360] 或弧度 [0; 6.28] 或者可能所有值都应该归一化到范围 [0; 1]?训练数据的范围是否会影响 ANN 的学习质量? 我的神经网络有 6 个输入神经元,1 个隐藏层,我使用的是 sigmoid 对称激活函数 (tanh)。
【问题讨论】:
【参考方案1】:对于神经网络,数据是否标准化并不重要。 但是,训练方法的性能可能会有很大差异。 简而言之:通常这些方法更喜欢具有较大值的变量。这可能会使训练方法偏离轨道。
对于大多数 NN 训练方法而言,关键是训练数据的所有维度都具有相同的域。如果所有变量都是角度,那么无论它们是 [0,1) 还是 [0,2*pi) 还是 [0,360) 都无关紧要,只要它们具有相同的域即可。但是,您应该避免使用一个变量来表示角度 [0,2*pi),而另一个变量表示距离(以 mm 为单位),其中距离可能远大于 2000000mm。
算法可能在这些情况下受到影响的两种情况:
(a) 正则化:如果 NN 的权重被强制变小,控制大域变量输入的权重的微小变化会比小域产生更大的影响
(b) 梯度下降:如果步长有限,您也有类似的效果。
建议:所有变量都应该具有相同的域大小,无论是 [0,1] 或 [0,2*pi] 还是...都无所谓。
另外:对于许多领域,“z-score 标准化”效果非常好。
【讨论】:
【参考方案2】:数据点范围会影响您训练模型的方式。假设数据集中特征的值范围未标准化。然后,根据您的数据,您最终可能会为特征空间中的数据点使用拉长的椭圆,并且学习模型将很难学习数据点所在的流形(学习底层分布)。此外,在大多数情况下,数据点在特征空间中散布得很稀疏,如果没有进行归一化 (see this)。因此,关键信息是尽可能对特征进行规范化。
【讨论】:
以上是关于神经网络的训练数据范围的主要内容,如果未能解决你的问题,请参考以下文章
有人知道bp神经网络Matlab R2012a 的newff用法么
在训练 LSTM NN 之前,我需要做哪些数据重新缩放预处理?