【问题标题】:Is "The more training data the better" true for Neural Networks?对于神经网络来说,“训练数据越多越好”是真的吗?
【发布时间】:2014-04-10 16:08:29
【问题描述】:

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

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

我的神经网络旨在逼近这个函数的逆。所以,我将函数的输出作为输入训练数据,1000个随机数作为输出训练数据。

问题在于,当将一个随机数放入函数 f(x) 中时,输出很可能会在 0 到 0.01 之间,而且很少会超出这个范围。下面是一条数字线,上面绘制了函数输出的 1000 个数字。如您所见,这些示例并未统一涵盖所有可能的数字。

为了解决这个问题,我使用了很多训练示例,希望在 0.1 到 0.9 范围内会有更多示例,但这意味着使用的示例数量非常多。

那么对于这样的函数,是用更多的例子更好,还是如果使用大量会出现问题?

【问题讨论】:

    标签: neural-network


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      只需去掉 0.01 以上的所有内容,然后将数据从 0 到 0.01 归一化为 -1 到 1。由于 0.01 以上的数据点很少,因此删除它们不会影响训练。

      或者,试试这个:

      我建议通过计算 数字 x 数据的均值和标准差,然后应用 变换(x - 均值)/标准差。

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

      您希望在 0 到 1(或 -1 到 1)的范围内更均匀地分布集群数据。

      【讨论】:

        【解决方案3】:

        “越多越好”只是在一定程度上;对于神经网络,您可能拥有太多数据。

        如果样本过多,您会面临过度拟合/过度训练的风险。

        【讨论】:

        • 过度拟合是由于训练过多(迭代次数/epoch 次数过多)而不是数据过多造成的。对于一个庞大的数据集,即使是一个比必要的大得多并且有很多噪音的数据集,如果你在合适的点退出训练,网络将是准确的。
        • 这就是我的想法。如果有的话,大型数据集应该可以减少过度拟合的机会。过度拟合是由于成本函数的值被最小化到如此低的值,以至于神经网络的函数将几乎完全通过所有的训练点(导致成本函数很低),但不能接近趋势在其他领域的点。使用更多的训练点应该会减少发生这种情况的机会。
        猜你喜欢
        • 2019-12-05
        • 2012-08-30
        • 1970-01-01
        • 1970-01-01
        • 2014-06-23
        • 1970-01-01
        • 2011-04-07
        • 1970-01-01
        • 2019-10-20
        相关资源
        最近更新 更多