是否可以训练神经网络来解决数学方程?

人工智能 神经网络 数学 应用
2021-11-14 19:41:29

我知道神经网络可能不是为此而设计的,但是假设性地问,是否可以训练深度神经网络(或类似网络)来解决数学方程?

因此,给定 3 个输入:第一个数字、由数字(1 - +、2 - -、3 - /、4 -*等)表示的运算符符号,以及第二个数字,那么在训练网络后应该会给我有效的结果。

示例 1 ( 2+2):

  • 输入 1: 2; 输入 2: 1( +); 输入 3: 2; 预期输出:4
  • 输入 1: 10; 输入 2: 2( -); 输入 3: 10; 预期输出:0
  • 输入 1: 5; 输入 2: 4( *); 输入 3: 5; 预期输出:25
  • 所以

以上可以扩展到更复杂的示例。

那可能吗?如果是这样,什么样的网络可以学习/实现这一点?

4个回答

是的,已经完成了!

但是,这些应用程序不会取代计算器或类似的东西。我所在的实验室开发了等式推理的神经网络模型,以更好地了解人类如何解决这些问题。这是数学认知领域的一部分。不幸的是,我们的网站信息量不是很大,但这里有一个此类工作示例的链接。

除此之外,最近关于扩展神经网络以包括外部存储器存储(例如神经图灵机)的工作被用来解决数学问题,作为一个很好的概念证明。这是因为许多算术问题涉及存储中间结果的长过程。请参阅本文中有关长二进制加法和乘法的部分。

并不真地。

当存在隐藏变量时,神经网络有利于确定输入之间的非线性关系。在上面的示例中,关系是线性的,并且没有隐藏变量。但即使它们是非线性的,传统的人工神经网络设计也不太适合实现这一目标。

通过仔细构建层并严格监督训练,您可以让网络始终如一地产生输出 4.01,例如,对于输入:2、1 (+) 和 2,但这不仅是错误的,而且本质上是不可靠的技术的应用。

  1. 有可能的!事实上,它是流行的深度学习框架 Keras 的一个例子。查看此链接以查看源代码

  2. 这个特定示例使用循环神经网络 (RNN) 将问题处理为字符序列,生成形成答案的字符序列。请注意,这种方法显然不同于人类倾向于考虑解决简单加法问题的方式,并且可能不是您希望计算机解决此类问题的方式。大多数情况下,这是使用 Keras 进行序列到序列学习的示例。在处理顺序或时间序列输入时,RNN 是一种流行的选择。

是的 - 现在似乎可以从您给出的示例中获得更多,本文描述了一个针对一个相当困难的问题的深度学习解决方案 -为用自然语言描述的程序生成源代码

这两者都可以描述为回归问题(即目标是最小化验证集上的一些损失函数),但自然语言情况下的搜索空间要大得多。