什么是最简单的非线性函数的最简单的神经网络 F( x , y) = x yF(X,是的)=X是的

数据挖掘 神经网络 回归
2021-09-16 04:37:07

我如何捕捉 y=x1x2使用具有常用激活函数的简单神经网络?我假设我至少需要一个隐藏层。我应该使用哪些常见的激活函数组合?

到目前为止,我已经使用 max(0,x)tanh 隐藏层的激活,但梯度下降很快发散。

一些可能有用的想法:

(x1y1)2=exp(log(x12)+log(x22))

2个回答

可能您需要执行以下一项或多项操作:

  • 降低学习率。发散损失通常是学习率过高的症状。

  • 增加隐藏神经元的数量。输出函数将是许多“补丁”的组合,每个“补丁”都是由学习了不同偏差的神经元创建的。每个补丁的形状和质量由激活函数决定,但几乎任何在 NN 库中使用的非线性激活函数都应该能够生成通用函数逼近器。

  • 规范化输入。如果您正在以较高的值进行训练x1或者x2,除非您对训练数据进行标准化,否则这可能会使训练变得更加困难。

出于您的目的,通过训练来跳过标准化的需要可能是一个想法 x1x2在 -2.0 到 2.0 的范围内。这样做并不会改变你的目标,并且消除了一个潜在的问题。

您应该注意,针对像这样的开放式函数(输入参数没有逻辑界限)训练的网络不会学会推断。它从不“学习”函数本身,而是接近提供的示例的近似值。当您提供一个(x1,x2) 输入远离训练示例,输出很可能与您的原始函数完全不匹配。

为了补充上述答案,一个简单的前馈网络不会学习函数本身。但最近,神经图灵机声称可以学习该算法。值得一试!