我编写了一个简单的递归神经网络(7个神经元,每个神经元最初连接到所有神经元),并使用遗传算法对其进行训练,以学习像1/(1+x^2)这样的“复杂”非线性函数。作为训练集,我在范围-5,5中使用了20个值。
网络可以很好地学习这个范围,当给出这个范围内其他点的例子时,它可以预测函数的值。然而,它不能正确地外推和预测超出范围的函数值-5,5.有什么原因,我能做些什么来提高它的外推能力?
谢谢!
发布于 2014-02-17 15:05:18
据我所知,只有在具有回声特性的网络中才有可能做到这一点。参见回声状态网络 on scholarpedia.org。
这些网络是为任意信号学习而设计的,并且能够记住它们的行为。

您还可以查看本教程。
发布于 2014-04-04 23:41:43
你的文章的性质表明,你所指的“外推”将更准确地定义为“序列识别和复制”。训练网络识别有无时间序列的数据序列是递归神经网络(RNN)的基本目的。
post中显示的培训函数的输出限制为0和1(或-1,因为x实际上是该函数上下文中的abs(x) )。因此,首先要确保输入层可以很容易地区分负面输入和积极输入(如果必须的话)。
其次,神经元的数量不像它们的分层和相互联系那么重要。7个中有多少是用于序列输入的?使用了什么类型的网络以及如何配置它?网络反馈将揭示比例、比例、关系等,有助于调整网络权重,使之与顺序相匹配。反馈也可以采取前馈的形式,这取决于用于创建RNN的网络类型。
为指数衰减函数( 1/(1+x^2) )生成一个“可观察的”网络,应该是在RNN上割断牙齿的一个不错的练习。“可观测”,即网络能够为任何输入值产生结果,即使它的训练数据比所有可能的输入小(远)。我只能假设这是你的实际目标,而不是“外推”。
https://stackoverflow.com/questions/18310293
复制相似问题