我正在编程一个函数逼近神经网络,即试图逼近一个非常复杂的函数。对于神经网络来说,“训练数据越多越好”是真的吗?
对于训练数据我产生了两个限制之间的1000个随机数,然后我通过函数f(x)传递这些数字,并得到了输出。
我的神经网络旨在近似这个函数的逆。因此,我将使用函数的输出作为输入训练数据,并将1000个随机数作为输出训练数据。
问题是,当一个随机数被放到函数f(x)中时,输出将在0到0.01之间的可能性很大,非常罕见的是它会落在这个范围之外。下面是一个数字线,功能输出的1000个数字绘制在上面。正如你可以看到这些例子并没有统一涵盖所有可能的数字。
为了解决这个问题我用了很多的训练实例,希望会有在0.1〜0.9范围内更多的例子,但是这意味着使用的例子荒谬的数字。
因此,对于这样的功能,使用更多示例还是更好,或者如果您使用大量数据会出现问题吗?
过度拟合是由于训练过多(迭代/时代太多)而造成的,而不是太多的数据。有了一个巨大的数据集,即使是一个比必要的大得多且噪音很大的数据集,如果您在合适的点退出训练,网络将会准确无误。 – andrelucas
这就是我的想法。如果有什么大数据集可以减少过度拟合的机会。过度拟合是由成本函数的价值被最小化到如此低的值所引起的,神经网络的功能将几乎精确地通过所有的训练点(导致成本函数低),但并不接近趋势其他地区的积分。使用更多的训练点可以减少发生这种情况的几率。 – Blue7