Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neural network 四参数函数逼近的神经网络_Neural Network_Backpropagation - Fatal编程技术网

Neural network 四参数函数逼近的神经网络

Neural network 四参数函数逼近的神经网络,neural-network,backpropagation,Neural Network,Backpropagation,我有一个函数如下所示: y = a^(2b) + c^(2d) 我想通过使用反向传播训练神经网络来近似这个函数。变量a、b、c和d的范围目前对我来说是不确定的,因此首先我假设它们都在范围[0,1]内。然后我通过假设变量的均匀分布来生成一个训练集。在找到适当数量的隐藏节点和层以及反向传播的学习率和动量的良好值之后,我可以使用此范围在测试集上获得较低的平均误差。但是,一旦我将变量的范围更改为[-1,1]之类的值,错误就会增加很多 我需要改变神经网络的结构(见下面的coment)和反向传播的参数,这

我有一个函数如下所示:

y = a^(2b) + c^(2d)
我想通过使用反向传播训练神经网络来近似这个函数。变量
a
b
c
d
的范围目前对我来说是不确定的,因此首先我假设它们都在范围[0,1]内。然后我通过假设变量的均匀分布来生成一个训练集。在找到适当数量的隐藏节点和层以及反向传播的学习率和动量的良好值之后,我可以使用此范围在测试集上获得较低的平均误差。但是,一旦我将变量的范围更改为[-1,1]之类的值,错误就会增加很多

我需要改变神经网络的结构(见下面的coment)和反向传播的参数,这是否正常取决于我提供给网络的变量范围?或者这可能与隐藏层中具有sigmoid激活功能的节点有关


注意:当变量的范围不是[0,1]时,我将其规格化为该范围,这样它将与sigmoid函数一起工作。还请注意,函数可能不是回答问题所必需的
y
,但提供了一些上下文。

输出层中的节点也是sigmoid吗?因为如果是这样的话,它们将永远无法复制您的输入函数:对于
b
d
的负值,
y
接近无穷大,因为
a
c
接近零

只是随便说说你可以尝试的一些可能的事情,我绝对不是专家,所以对所有这些建议持保留态度:

  • 改变你对“平均误差”的定义?你可以尝试使用 类似于“中位数平方根误差”,允许偶尔出现较大误差
  • 将变量范围更改为[-1,-epsilon]并集[epsilon,1]中的
    a,c,对于某些
    epsilon>0
    ,使函数有界
  • 将输出节点更改为使用无界激活函数。。。例如,您可以让输出节点具有激活函数
    y=a^(2b)+c^(2d)
    ,但这可能是作弊;)
符号改变后的函数值…@AdamStelmaszczyk所以你认为整个网络结构需要改变?当前的结构是什么?也许你可以展示代码?@AdamStelmaszczyk很遗憾,我现在无法展示代码,但我只是想澄清一下:我所说的网络结构是指隐藏层的数量、每层中的节点数量以及每个节点的激活函数。因此,我这里的问题是,通常情况下,这种结构是否需要根据反馈给网络的参数范围进行改变(与实际问题或要近似的函数无关)。我的猜测是肯定的,但我只想记录在案。