ANN学习F = MA的最简单方法?

机器算法验证 机器学习 神经网络
2022-04-13 21:58:17

想象一个具有 10 个输入特征的训练集。前两个是质量(M)和加速度(A),其余的都是无用或不相关的。输出是力 (F),当然等于 M*A。

在我看来,人工神经网络架构没有简单的方法可以将这两个特征相乘并给出答案。

如果输入向量是 [1,1,0,0,0,0,0,0,0,0] 并且权重都初始化为 1,那么你会得到 (1*M) + (1*A) . 这没有提供必要的直接乘法。

ANN 显然会以某种方式计算出映射,但它是否总是以一种过于复杂的方式进行呢?

这是在某些方面的限制还是我误解了关于 ANN 的重要内容?

在此处输入图像描述

2个回答

是的,网络可能会近似某种乘法,但它不太可能在你训练它的输入范围之外泛化。

通过使用能够将输入相乘的二次神经元,您可能会更幸运地学习和推广规则。这里介绍的 RNTN 起到了这种作用。

我建议使用类似的神经元,其中是激活函数(可能是线性的)。f(x)=a(xTWx+bTx+c)a

正如 Shimao 所说,NNet 将能够学习一些基于 sigmoid 的乘法近似,但对于超出训练集范围的新值,它可能会失败。

请记住,给定足够数量的神经元,3 层前馈神经网络是一个通用逼近器。因此,您最终可能不得不求助于每个训练示例都有一个神经元,在这种情况下,您的 NNet 并没有真正“学习”任何东西,它只是充当查找表。

解决问题的另一种方法是执行对数转换:

F=malog(F)=log(m)+log(a)

NNet 可以轻松学习第二个函数,然后从输出进行反向转换。