用递归神经网络推断

use*_*774 3 artificial-intelligence machine-learning neural-network

我写了一个简单的复发神经网络(7个神经元,每个神经元最初连接到所有神经元)并使用遗传算法训练它来学习"复杂"的非线性函数,如1 /(1 + x ^ 2).作为训练集,我使用了[-5,5]范围内的20个值(我试图使用超过20个,但结果没有显着改变).

网络可以很好地学习这个范围,并且当给出该范围内的其他点的示例时,它可以预测函数的值.但是,它无法正确推断并预测范围[-5,5]之外的函数值.这是什么原因,我该怎么做才能提高其外推能力?

谢谢!

lej*_*lot 14

神经网络不是外推法(无论是否经常发生),这完全超出了他们的能力范围.它们用于在提供的数据上拟合函数,它们完全可以在填充了训练点的子空间之外构建模型.因此,在非常严格的意义上,人们应该将它们视为插值方法.

为了清楚起见,神经网络应该能够推广训练样本所跨越的子空间内的函数,但不能在它之外 来源www.vias.org/tmdatanaleng/cc_ann_extrapolation.html

神经网络仅在与训练样本的一致性方面进行训练,而外推则完全不同."H.Lohninger:Teach/Me Data Analysis,Springer-Verlag,Berlin-New York-Tokyo,1999.ISBN 3-540-14743-8"中的简单示例显示了NN在这种情况下的行为 来源www.vias.org/tmdatanaleng/cc_ann_extrapolation.html

所有这些网络都与训练数据一致,但可以在此子空间之外执行任何操作.

您应该重新考虑您的问题的表述,如果它可以表示为回归或分类问题,那么您可以使用NN,否则您应该考虑一些完全不同的方法.

唯一能够以某种方式"纠正"训练集之外发生的事情的方法是:

  • 在所需的子空间中添加人工训练点(但这只会增加训练集,并且再次 - 在这个新集合之外,网络的行为是"随机的")
  • 添加强正则化,这将迫使网络创建非常简单的模型,但模型的复杂性不能保证任何外推强度,因为具有完全相同复杂度的两个模型可以具有例如 - /+无限的完全不同的限制.

结合上述两个步骤可以帮助构建在某种程度上"推断"的模型,但是如前所述,这不是神经网络的目的.

  • 事情是**他们是怎么做的.一个问题可以用许多不同的方式建模.在**时间序列预测的情况下**最常见的想法是实际**内插**数据,这是通过将时间序列"分块"到恒定大小的窗口而创建的,所以你实际上只是试图建模**里面**分数数据的子空间,你只是**将**解释为某种**外推**.这就是为什么这样的模型只能预测前面几步(因为它们没有以良好的方式进行实际推断),而是插入人工数据"块". (4认同)
  • 只需谷歌"时间序列预测神经网络",你将获得大量的论文,链接和教程. (3认同)