用递归神经网络推断

时间:2013-08-19 09:17:25

标签: machine-learning artificial-intelligence neural-network

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

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

谢谢!

3 个答案:

答案 0 :(得分:13)

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

为了说清楚,神经网络应该能够推广训练样本所跨越的子空间内的函数,但不能在它之外 source 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在这种情况下的表现 source www.vias.org/tmdatanaleng/cc_ann_extrapolation.html

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

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

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

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

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

答案 1 :(得分:2)

据我所知,这只适用于具有 echo 属性的网络。请参阅scholarpedia.org上的Echo State Networks

这些网络专为任意信号学习而设计,能够记住他们的行为。 enter image description here

您还可以查看this tutorial

答案 2 :(得分:0)

您的帖子的性质表明您所指的是"外推"将被更准确地定义为"序列识别和再现。"训练网络识别有或没有时间序列(dt)的数据序列几乎是回归神经网络(RNN)的目的。

帖子中显示的训练函数的输出限制由0和1控制(或-1,因为x在该函数的上下文中实际上是abs(x))。因此,首先要确保您的输入层可以轻松区分负输入和正输入(如果必须)。

接下来,神经元的数量并不像它们如何分层和互连那么重要。 7个中有多少用于序列输入?使用了什么类型的网络以及如何配置?网络反馈将揭示比率,比例,关系等,并有助于调整网络权重调整以匹配序列。反馈也可以采用前向馈送的形式,具体取决于用于创建RNN的网络类型。

制作一个可观察的'网络的指数衰减函数:1 /(1 + x ^ 2),应该是一个体面的练习,以削减你的RNNs牙齿。 ' Observable',意味着网络能够为任何输入值产生结果,即使其训练数据(远)小于所有可能的输入。我只能假设这是你的实际目标而不是"外推。"