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

标签 neural-network backpropagation

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

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

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

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

注意:当变量的范围不是 [0, 1] 时,我将其标准化为该范围,以便它可以与 sigmoid 函数一起使用。另请注意,该函数可能不是 y不是回答问题所必需的,但提供了一些上下文。

最佳答案

输出层中的节点也是 sigmoid 吗?因为如果是这样,那么他们将永远无法复制您的输入函数:对于 b 的负值和 d , 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)例如,但也许这会是作弊;)
  • 关于neural-network - 用于逼近具有四个参数的函数的神经网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31236078/

    相关文章:

    neural-network - 稀疏_softmax_cross_entropy_with_logits和softmax_cross_entropy_with_logits有什么区别?

    machine-learning - Octave 的 rand 函数可以产生所有(或某些)数字相等的输出吗?

    neural-network - 如何将深度学习梯度下降方程转化为python

    keras - 分支神经网络中的中断反向传播

    python - 从 tensorflow 模型中获取权重

    python - Tensorflow Slim 中的批量训练

    python - 使用Tensorflow 2.0在MNIST上的自定义神经网络实现?

    machine-learning - 前馈神经网络 : Using a single Network with multiple output neurons for many classes

    Tensorflow:拦截、修改梯度并继续反向传播

    python - 调试反向传播算法