来源 | 数据派 THU

封图 | CSDN 付费下载于视觉中国

Facebook AI建立了第一个可以使用符号推理解决高级数学方程的AI系统。通过开发一种将复杂数学表达式表示为一种语言的新方法,然后将解决方案视为序列到序列的神经网络的翻译问题,我们构建了一个在解决积分问题以及一阶和二阶微分方程方面都优于传统计算系统的系统。

以前,这类问题被认为是深度学习模型所无法企及的,因为求解复杂方程需要精度而不是近似值。神经网络擅长通过近似达到成功,例如认识像素的特定模式很可能是狗的图片,或者一种语言的句子特征匹配另一种语言的句子特征。解决复杂的方程式还需要具有处理符号数据的能力,例如方程b-4ac = 7中的字母。此类变量不能直接相加、相乘或相除,仅使用传统的模式匹配或统计分析,神经网络就仅限于极其简单的数学问题。

我们的解决方案是一种全新的方法,可将复杂的方程视为语言中的句子。这使得我们能够充分利用在神经机器翻译(NMT)被证明有效的技术,通过训练模型将问题从本质上转化为解决方案。要实现此方法,需要开发一种将现有数学表达式分解为类似语言语法的方法,并生成一个超过100M个配对方程和解的大规模训练数据集。

当出现数千个未知表达式时(这些方程并不是训练数据的一部分),我们的模型比传统基于代数的方程求解软件,例如Maple,Mathematica和Matlab,表现出更快的速度和更高的精度。这项工作不仅表明深度学习可以用于符号推理,而且还表明神经网络有潜力解决各种各样的任务,包括那些与模式识别不相关的任务。我们将分享我们的方法以及产生相似训练集方法的细节。

一种应用NMT的新方法

擅长符号数学的人经常依靠一种直觉。他们对给定问题的解决方案应该是什么有一种感觉,例如观察被积分函数中是否存在余弦,这意味着其积分可能存在正弦,然后进行必要的工作以证明这个直觉。

这与代数所需的直接计算不同。通过训练模型来检测符号方程中的模式,我们相信神经网络可以将导致其解决方案的线索拼凑起来,大致类似于人类对复杂问题的基于直觉的方法。因此,我们开始探索将符号推理作为NMT问题,在该模型中,模型可以根据问题示例及其匹配的解决方案来预测可能的解决方案。

作为示例,我们的方法将展示如何把左侧的现有方程扩展为可以用作翻译模型输入的表达式树。对于该方程,输入到模型中的预序列为:(加,乘,3,乘方,x,2,减,余弦,乘,2,x,1)

为了使用神经网络实现此应用,我们需要一种新颖的方式来表示数学表达式。NMT系统通常是序列到序列(seq2seq)模型,使用单词序列作为输入,并输出新的序列,从而允许它们翻译完整的句子而不是单个单词。我们使用了两步方法将此方法应用于符号方程。

首先,我们开发了一种有效地分解方程的过程,将被分解后的方程布置在树状结构的分支中,这个树状结构随后被扩展为与seq2seq模型兼容的序列。常量和变量充当叶子,而运算符(例如加号和减号)和函数是连接树的分支的内部节点。 

尽管它看起来可能不像传统语言,但以这种方式组织表达式可为方程提供类似于语言的语法,数字和变量是名词,而运算符则充当动词。

我们的方法使NMT模型可以学习将给定树状结构问题的模式与其匹配的方程的解(也表示为树)对齐,类似于将一种语言的句子与经过确认的翻译相匹配。这种方法使我们能够利用功能强大的现成的seq2seq NMT模型,将单词序列替换为符号序列。

建立新的训练数据集

尽管我们的表达式——树语法使NMT模型在理论上有可能有效地将复杂的数学问题转化为方程的解,但是训练这样的模型将需要大量示例。而且,因为在我们关注的两类问题(积分和微分方程)中,随机生成的问题并不总是具有解,所以我们不能简单地收集方程并将其输入系统。

我们需要生成一个全新的训练集,其中包括重新构造为模型可读的表达式树的已解方程的示例。这产生了方程和解的二元组,类似于在各种语言之间翻译的句子语料库。

我们的集合还必须比该领域以前的研究中使用的训练数据大得多,后者曾尝试对数千个示例进行系统训练。由于神经网络只有在拥有更多训练数据时才会表现得更好,因此我们创建了包含数百万个示例的集合。 

建立此数据集需要我们整合一系列数据清洗和生成技术。例如,对于我们的符号积分方程,我们翻转了翻译方法:不是生成问题并找到其解决方案,而是生成解决方案并找到它们的问题(它们的导数),这是一件容易得多的任务。

这种从解决方案中产生问题的方法(有时被工程师称为陷门问题)使创建数百万个积分示例变得可行。我们得出的以翻译为灵感的数据集包括大约1亿个配对示例,其中包含积分问题的子集以及一阶和二阶微分方程。 

我们使用此数据集来训练具有8个attention head和6个层的seq2seq transformer模型。transformer通常用于翻译任务,而我们的网络旨在预测各种方程的解,例如确定给定函数的不定积分。为了评估模型的性能,我们向模型提供了5000种未知表达式,使系统识别出训练中未出现的方程模式。

我们的模型在求解积分问题时显示出99.7%的准确度,对于一阶和二阶微分方程,它们的准确度分别为94%和81.2%。这些结果超出了我们测试的所有三个传统方程求解器的结果。Mathematica取得了次佳的结果,在相同的积分问题上准确度为84%,对于微分方程结果的准确度为77.2%和61.6%。我们的模型还可以在不到0.5秒的时间内返回大多数预测,而其他系统则需要几分钟来找到解决方案,有时甚至会完全超时。

我们的模型将左侧的方程式(Mathematica和Matlab都无法求解的方程式)作为输入,并且能够在不到一秒钟的时间内找到正确的解决方案(如上图所示)。

将生成的解决方案与参考解决方案进行比较,使我们能够轻松,准确地验证结果。但是我们的模型也为给定方程生成了多个解。这类似于机器翻译中发生的事情,在机器翻译中,有很多翻译输入句子的方法。

AI方程求解器的下一步是什么

目前,我们的模型适用于单变量问题,我们计划将其扩展为多变量方程。这种方法还可以应用于其他基于数学和逻辑的领域,例如物理领域,从而有可能开发出可帮助科学家进行广泛工作的软件。

但是我们的系统对于神经网络的研究和使用具有更广泛的意义。通过在以前认为不可行的地方发现一种使用深度学习的方法,这项工作表明其他任务可以从人工智能中受益。无论是通过将NLP技术进一步应用到传统上与语言没有关联的领域,还是通过在新的或看似无关的任务中对模式识别进行更开放的探索,神经网络的局限性可能来自想象力的局限,而不是技术。

原文标题:

Using neural networks to solve advanced mathematics equations

原文链接:

https://ai.facebook.com/blog/using-neural-networks-to-solve-advanced-mathematics-equations/

欢迎所有开发者扫描下方二维码填写《开发者与AI大调研》,只需2分钟,便可收获价值299元的「AI开发者万人大会」在线直播门票!

推荐阅读

  • 前百度主任架构师创业,两年融资千万美元,他说AI新药研发将迎来黄金十年

  • 北京四环堵车引发的智能交通大构想

  • 400 多行代码!超详细中文聊天机器人开发指南 | 原力计划

  • 三大运营商将上线 5G 消息;苹果谷歌联手,追踪 30 亿用户;jQuery 3.5.0 发布 | 极客头条

  • 比特币当赎金,WannaRen 勒索病毒二度来袭!

  • 你公司的虚拟机还闲着?基于 Jenkins 和 Kubernetes 的持续集成测试实践了解一下!

  • 从 Web 1.0到Web 3.0:详析这些年互联网的发展及未来方向

  • 你点的每个“在看”,我都认真当成了AI

什么?神经网络还能求解高级数学方程?相关推荐

  1. 推荐 :教你用神经网络求解高级数学方程!

    作者:François Charton, Guillaume Lample 翻译:冯羽 校对:吴金笛 本文约2650字,建议阅读10分钟 本文介绍了一种利用深度学习中的神经机器翻译(NMT)技术求解方 ...

  2. 神经网络建模的基本思想,数学建模神经网络应用

    1.人工神经网络有什么应用条件 人工神经网络(Artificial Neural Network,简称ANN ),以数学模型模拟神经元活动,是基于模仿大脑神经网络结构和功能而建立的一种信息处理系统.人 ...

  3. 线性回归算法数学原理_线性回归算法-非数学家的高级数学

    线性回归算法数学原理 内部AI (Inside AI) Linear regression is one of the most popular algorithms used in differen ...

  4. 用python和sympy库解决方程组问题_Python语言 SymPy库数学方程问题——线性方程组篇...

    本文主要向大家介绍了Python语言 SymPy库数学方程问题--线性方程组篇,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 这里我的本机的操作系统是 Ubuntu 14.04  ...

  5. 如何在 XMind 中输入数学方程?LaTeX 简易入门

    数学方程输入对于很多理工科朋友来说是一件让人头疼的事情.不仅是数学方程本身就纷繁复杂花样百出,各种输入语法更是劝退无数人.然而很多看似复杂的东西其实并非如想象中的难,抓住本质即可快速入门.今天和大家分 ...

  6. python数学方程计算_用Python解方程

    一元一次方程 例题1: 这是北师大版小学六年级上册课本95页的一道解方程练习题: 大家可以先口算一下,这道题里面的x的值为200 接下来我们用python来实现,代码如下,每一句代码后面都写有解释语: ...

  7. 求解欧拉方程的c语言,用有限体积方法求解欧拉方程

    <用有限体积方法求解欧拉方程>由会员分享,可在线阅读,更多相关<用有限体积方法求解欧拉方程(12页珍藏版)>请在人人文库网上搜索. 1.有限体积法求解二维可压缩Euler方程计 ...

  8. 【组合数学】生成函数 ( 生成函数应用场景 | 使用生成函数求解递推方程 )

    文章目录 一.生成函数应用场景 二.使用生成函数求解递推方程 参考博客 : [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常用的生成函数 | 与常数相关 | 与二项式系数相 ...

  9. 代数学笔记11: 分圆域,分圆多项式,求解17次方程

    问题引入 考虑问题:f(x)=xn−1∈F[x]f(x)=x^n-1\in F[x]f(x)=xn−1∈F[x], EEE为FFF关于fff的分裂域, 则Gf=Gal(E/F)=?G_f=\text{ ...

最新文章

  1. 当钢铁直男去应聘...... | 每日趣闻
  2. 前端Layui开发日常记录
  3. DL:深度学习框架Pytorch、 Tensorflow各种角度对比
  4. python人工智能——机器学习——数据的降维
  5. 揽货最短路径解决方案算法 - C# 蚁群优化算法实现
  6. ElasticSearch和mysql对比
  7. 36岁程序员感慨:天天加班压力太大,有200万存款能转行了吗?
  8. 决策树的python实现
  9. 知云文献阅读器_知云文献翻译
  10. 【pytorch】常见的坑汇总
  11. Mac高效笔记软件GoodNotes 5
  12. Selenium+Python自动化测试学习问题总结笔记
  13. QQ群技术:0成本创建2000人QQ群技巧
  14. AM437X系列编译环境搭建
  15. Win8下双系统win7 教程详解
  16. 从备份升级到容灾,利用华为云就可以做到的灾备方案
  17. 计算机上计算器不见,win10系统自带的计算器不见了的处理教程
  18. 防火墙双机热备+负载分担
  19. 如何删除流氓弹窗广告(全民仙战)
  20. 呐,c语言学习你想要的都在这里

热门文章

  1. input框取消光标颜色手机端不生效
  2. Codeforces 862B - Mahmoud and Ehab and the bipartiteness
  3. linux mysql 卸载,安装,測试全过程
  4. web 服务发布注意事项
  5. SQL Server 2005/2008 用户数据库文件默认路径和默认备份路径修改方法
  6. 在任何设备上都完美呈现的30个华丽的响应式网站
  7. 分布式缓存系统Memcached简介与实践
  8. CI报Disallowed Key Characters的解决
  9. 计算机电磁兼容性设计方法,某型號加固计算机电磁兼容性设计.doc
  10. 信息系统项目管理师 章节_信息系统项目管理师章节重点(5)项目整体管理