是否可以训练神经网络来求解多项式方程?

数据挖掘 机器学习 神经网络 数据挖掘
2021-10-09 12:04:27
  • 我随机生成数百万组三元组 {x0,x1,x2} 范围内 (0,1),然后计算多项式的对应系数 (xx0)(xx1)(xx2),这导致三重组以以下形式归一化 {x0+x1+x23,x0x1+x1x2+x0x23,x0x1x23};

  • 之后,我将系数三元组输入到 5 层神经网络 {3,4,5,4,3},其中所有激活函数设置为sigmoid,学习率设置为0.1;

  • 然而,我只得到了一个非常糟糕的交叉验证,大约 20%。

我怎样才能解决这个问题?

背景

我原来的问题是一个动态逆问题在那个问题中,我有成千上万的观察结果,从这些观察中,我需要恢复数百个参数 . 模拟过程从 计算起来非常容易且便宜,但是从 是高度非线性的,几乎是不可能的。我的想法是训练一个神经网络 作为输入和 作为输出。为了检验这个想法的可行性,我使用了一个三阶多项式方程来进行验证。

半年后更新

每层有更多的节点,我已经成功地训练了一个神经网络。拓扑设置为{3,64,64,64}. 最重要的技巧是,对生成的三元组进行排序{X0,X1,X2}, 确保 X0<=X1<=X2 总是成立。

1个回答

您正在尝试拟合一个非常复杂的函数。没有理由期望神经网络会非常擅长这一点。神经网络不是神奇的精灵尘埃。他们可以做好一些事情,但不要指望银弹。

你试图让神经网络学习计算一些复杂的函数。我们确实知道,给定足够多的节点和足够多的层,您可以获得对该函数的任意良好近似,但没有先验理由期望您选择的特定(少量)节点和层数应该是可能的。事实上,如果你有足够多的节点,两层就足够了——但我们无法计算需要多少节点。

特别是,您尝试计算的函数相当于计算X0,X1,X2一个,b,C,d, 在哪里

Xķ=-13一个(b+ηķC+Δ0ηķC)Δ0=b2-3一个CC=Δ1±Δ12-4Δ0323Δ1=2b3-9一个bC+27一个2dη=-12+123一世

(这来自求解三次方程的一般公式。)

这是一个非常混乱的函数,因此使用您所呈现的架构的神经网络进行近似可能具有挑战性。您始终可以尝试增加节点数和/或层数,但没有先验理论可以告诉您正确的数字是多少。