当前位置: 首页 > 编程日记 > 正文

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

来源 | 数据派 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

相关文章:

***和******

网络是一把双刃剑,它在人类社会的发展中起着越来越重要作用,但同时,网络自身的安全问题也像挥之不去的阴影时刻笼罩在人们心头。据不完全统计,全世界平均每 20秒钟就发生一起******事件,互联网上大约有20万个***网站可…

Linux监控工具dstat

dstat是一个用来替换 vmstat,iostat netstat,nfsstat和ifstat这些命令的工具, 是一个全能系统信息统计工具. 与sysstat相比, dstat拥有一个彩色的界面, 在手动观察性能状况时, 数据比较显眼容易观察; 而且dstat支持即时刷新, 譬如输入dstat 3, 即每三秒收集一次, 但最新的数据都…

9月16号晚上,Asuka有一场关于Windows 7组策略的Webcast,欢迎兄弟们来捧场

之所以选题在组策略之一块,是因为Windows 7和2008 R2对于组策略有了很大的功能上的增强,但是很多IT人员都无法意识或者去重视这一块内容,所以我将从下面这3个角度去介绍这些更新。如果您正好有时间,那不妨来技术交流一番:)直播进入…

腾讯天衍实验室联合微众银行研发医疗联邦学习 AI利器让脑卒中预测准确率达80%

近几年,医疗行业正在经历一场数字化转型,这场基于大数据和AI技术的变革几乎改变了整个行业的方方面面,将“信息就是力量”这句箴言体现的淋漓尽致,人们对人工智能寄以厚望,希望它能真正深入临床一线,帮助医…

JavaSript模块化 AMD CMD 详解.....

模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问题进行系统性的分解以之处理。模块化是一种处理复杂系统分解为代码结构更合理,可维护性更高的可管理的模块的方式。可以想象一个巨大的系统代码,被整合优化分割…

在Eclipse中使用Maven构建Spring项目

最新版的Spring需要使用Maven构建,本文讲述怎么在Eclipse构建Maven项目,以配置Spring项目为例。 maven简单介绍 maven是构建工具,也是构建管理工具。ant只是构建工具,因为不支持生成站点功能,只有预处理,编…

Go 语言官网全新改版

2019独角兽企业重金招聘Python工程师标准>>> 前两天发现 Go 语言官网改版了,布局由原来的左中右变成了上中下结构,主色调没有变,整体依然保持简洁的风格。在首页添加了一个叫 Playground 的模块,它可以编译、运行你输入…

就在今晚 | 港科大李世玮教授问诊未来,开辟大湾区新航路

阳春三月,万象更新,2020年注定是不平凡的一年!有激荡就会遇见变革,有挑战就会迎来机遇。今天总会过去,未来将会怎样?香港科大商学院内地办事处重磅推出全新升级的《袁老师访谈录》全新系列【问诊未来院长系…

NLP(Natural Language Processing)

https://github.com/kjw0612/awesome-rnn#natural-language-processing 通常有: (1)Object Recognition (2)Visual Tracking (3)Image Generation (4)Video Analysis NLP: (1)Language Modeling (2)Speech Recognition…

Linux环境编程

1.__sync_fetch_and_add和__sync_bool_compare_and_swap gcc从4.1.2提供了__sync_*系列的built-in函数,用于提供加减和逻辑运算的原子操作。 其声明如下: type __sync_fetch_and_add (type *ptr, type value, ...) type __sync_fetch_and_sub (type *p…

AI新基建如何构建?浪潮给出了一个答案

作者 | Just出品 | AI科技大本营(ID:rgznai100)伴随生产力升级,社会基础设施也正在发生变化。而智慧时代的新型基础设施,要能够对外提供各种算力服务、数据服务和AI服务。浪潮认为,其核心是计算力的生产中心。因此&…

协作是企业管理的重点和难点

这个问题让我想起了一道数学题,11?。在生活中这个题目的答案会千差万别,更别说一个企业。在我眼中,企业中最难管的是关系,更准确的说是协作。 经理过好几个信息系统建设的项目,小到一个简单的邮件系统&…

使用CSS3美化复选框checkbox

我们知道HTML默认的复选框样式十分简陋,而以图片代替复选框的美化方式会给页面表单的处理带来麻烦,那么本文将结合实例带您一起了解一下使用CSS3将复选框checkbox进行样式美化,并且带上超酷的滑动效果。 查看演示 下载源码HTML 通常我们使用以…

Thift安装

thrift官网http://thrift.apache.org/ #wget http://mirror.bit.edu.cn/apache/thrift/0.9.2/thrift-0.9.2.tar.gz #tar -zvxf thrift-0.9.2.tar.gz # ./configure --prefix/usr/local/thrift #make && makeinstall 增加到环境变量 #export PATH$PATH:/usr/…

​“手把手撕LeetCode题目,扒各种算法套路的裤子”

出品 | AI科技大本营(ID:rgznai100)刷LeetCode刷到懵还是一头雾水?莫慌,这里有一个标星27000的算法详解教程。从项目命名来看,作者labuladong就有着要干翻算法的精气神。当然,这个教程不只是为了机械刷题。…

c语言标准库低通的qsort函数不适宜所有排序任务的原因

c语言标准库低通的qsort函数不适宜所有排序任务的原因: 第一:它只能用于内存中的数组排序,不能对链表中的数据排序; 第二:因为它是参数化的函数,所以能对各种数据进行操作,也造成它的运行速度比…

第三周学习进度条

星期日 星期一 星期二 星期三 星期四 星期五 所花时间 下午: 3:00-5:00 上午: 8:00-10:00 下午: 3:00-5:00 下午: 2:30-4:30 下午: 4:30-5:30 下午&#xff1…

jca分析java dump日志

可以使用jca分析java dump的日志 jca:https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid2245aa39-fa5c-4475-b891-14c205f7333c 运维报说是某机房突然全部都线程阻塞了 其中锁住了tcp的socket,在研究无果的情况下…

shell脚本10

对于使用/bin/bash作为登录shell的系统用户,检查他们在/opt目录中拥有的子目录或文件数量,如果超过100个,则列出具体数值及对应的用户帐号.具体实现: #!/bin/bash DIR"/etc" LMT100 validusersgrep "/bin/bash" /etc/passwd|cut -d ":" -f 1 for…

百度重磅发布云手机:低配置也可玩大型游戏 21

又一个科技巨头发力云游戏。4月15日,百度举行"云手机"线上直播会,发布基于自主研发的ARM服务器的百度"云手机"产品,让用户摆脱硬件的制约,中低端设备也能流畅运行大型游戏和应用。百度"云手机"可以…

创业思维 - Qunar的故事

在这里特别想介绍下Qunar,因为他和我们的最主要的系统-交易系统相关。大家都知道淘宝的交易平台可以说是国内甚至全球最复杂的交易系统。但是我们的交易系统由于承担业务太多,发展太久,历史包裹太重,在业务架构上可以说有很大的问…

“机器学习还是很难用!”

作者 | Caleb Kaiser译者 | 香槟超新星,责编 | 郭芮出品 | CSDN(ID:CSDNnews)我是一名Cortex贡献者,Cortex是一个用于在生产中部署模型的开源平台。首先声明,以下内容是基于我对一些机器学习团队的观察总结…

silverlight 无法发布 如何灵活配置IP

灵活配置IP可以有一个工具的 我为了比赛花了 两天工具做了一个配置Silverlight IP的小工具 可以参考 http://download.csdn.net/source/2714688

使用GoAccess分析Nginx日志

下载 GoAccess 的源代码、编译和安装: http://www.goaccess.io/download # wget http://tar.goaccess.io/goaccess-0.9.6.tar.gz# tar -xzvf goaccess-0.9.6.tar.gz# cd goaccess-0.9.6/# ./configure --prefix/usr/local/goaccess --enable-geoip --enable-utf8#…

STM32中GPIO的8种工作模式

一、推挽输出:可以输出高、低电平,连接数字器件;推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源决定。形象点解释:推挽,就是有推有拉&…

深挖谷歌 DeepMind 和它背后的技术

作者 | James Murphy译者 | 天道酬勤 责编 | Carol出品 | AI科技大本营(ID:rgznai100)人工智能(AI)的子集已经成倍增长,并完成了只有人类才能完成的各种任务。像机器学习这样的技术可以执行管理任务、人脸识别、下棋,甚至翻译语言…

Java编译原理

代码Test.java public class Test {public static void main(String[] args) {int a 0xae;int b 0x10;int c a b;int d c 1;String s;s "hello";}} # javac Test.java # javap -c Test 参考:http://codemacro.com/2015/03/31/intro-java-bytecod…

RHEL5.5学习--安装vmtools

首先先说明两点: (1)vmtools的安装需要gcc的支持,所以首先确定gcc是否已经安装。可运行gcc -v,若能显示gcc版本信息则说明安装完成,否则请查看上一篇文章(RHEL5.5学习--查看gcc是否安装以及如何…

SQL server 专业词汇

sql组成:DDL:数据库模式定义语言,关键字:createDML:数据操纵语言,关键字:Insert、delete、updateDCL:数据库控制语言 ,关键字:grant、removeDQL:数…

只会高中数学运算就能发现算法?Google开源的AutoML-Zero有多厉害

译者 | 刘畅出品 | AI科技大本营(ID:rgznai100)机器学习研究,已经在多个方面都取得了进步,包括模型结构和优化方法等。而使此类研究自动化的工作(称为AutoML)也有重大进展。这一进展主要集中在神经网络的体…