神经网络用于逼近具有四个参数的函数

时间:2015-07-05 23:41:45

标签: neural-network backpropagation

我有一个看起来像这样的函数:

y = a^(2b) + c^(2d)

我想通过使用反向传播训练神经网络来近似这个功能。变量abcd的范围目前对我来说是不确定的,所以首先我假设它们都在[0, 1]。然后我通过假设变量的均匀分布来生成训练集。在找到适当数量的隐藏节点和层以及反向传播的学习速率和动量的良好值之后,我可以使用该范围在测试集上达到低平均误差。但是,只要我将变量的范围更改为[-1,1],错误就会增加很多。

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

注意:当变量的范围不是[0,1]时,我将其标准化为该范围,因此它将与sigmoid函数一起使用。另请注意,回答问题时,函数可能不是y,但提供了一些背景信息。

1 个答案:

答案 0 :(得分:0)

输出图层中的节点是否也是sigmoid?因为如果是这样,那么他们永远无法复制您的输入函数:对于bd的负值,y接近无穷大ac接近零。

简单地说一下你可以尝试的一些可能的东西,我绝对不是专家,所以请大家带上所有这些建议:

  • 更改"平均错误"的定义?你可以尝试使用 类似于"中位根平方误差"允许偶尔出现大错误
  • 为某些a, c in [-1, -epsilon] union [epsilon, 1]将您的变量范围更改为epsilon >0,以便您的功能受限制。
  • 更改输出节点以使用无界激活函数it looks like this may be a theoretically OK thing to do ...例如,您可以让输出节点具有激活函数y = a^(2b) + c^(2d),但这可能是作弊;)