神经网络的“训练数据越多越好”吗?

时间:2014-03-07 13:24:48

标签: neural-network

我正在编写一个函数逼近神经网络,试图逼近一个非常复杂的函数。

对于训练数据,我在两个限制之间生成1000个随机数,然后我通过函数f(x)传递这些数字,得到输出。

我的神经网络旨在近似该函数的逆。因此,我将使用函数的输出作为输入训练数据,并将1000个随机数作为输出训练数据。

问题是当一个随机数放入函数f(x)时,输出更可能在0到0.01之间,非常罕见的是它将落在这个范围之外。下面是一个数字行,其顶部绘制了函数输出中的1000个数字。正如您所看到的,示例并未统一涵盖所有可能的数字。

Distribution of 1000 training examples

为了解决这个问题,我使用了大量的训练样例,希望在0.1到0.9的范围内有更多的例子,但这意味着使用了一些荒谬的例子。

因此,对于这样的功能,使用更多示例会更好吗,或者如果使用大量数据会出现问题?

3 个答案:

答案 0 :(得分:2)

是否有可能尝试拟合f(x)的对数或一些基于对数的变换?它可以更均匀地分配您的输出。

答案 1 :(得分:1)

简单地删除0.01以上的所有内容,然后将数据从0到0.01归一化为-1到1.由于0.01以上的数据点很少,删除它们不会影响训练。

或者,试试这个:

  

我建议通过计算来标准化独立的数字数据   数字x数据的均值和标准差,然后应用   transform(x - mean)/ stddev。

http://visualstudiomagazine.com/articles/2013/07/01/neural-network-data-normalization-and-encoding.aspx

您希望在0到1(或-1到1)的范围内更均匀地展开聚簇数据。

答案 2 :(得分:-1)

“越多越好”只能达到一定程度;您可以为神经网络提供过多数据。

过多的样本会导致过度拟合/过度训练的风险。