让人工智能解数学题,可能没你想象的那么简单

中科院物理所 2017-03-07

  

  

  导读:约1500年前的古代数学著作《孙子算经》中记载了一个有趣的问题:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”这就是今人所谓的鸡兔同笼问题。如今这个问题小学生们解决起来可能都轻而易举,但对于人工智能而言可能并非如此。在人工智能火热的今天,我们想聊聊如何让计算机具备解此类问题的能力——即数学解题。

  智能答题任务

  如果说一套系统就能解决所有问题的“通用人工智能”离人们的生活还很遥远,那么让人工智能系统解决具体的某一项、或某一类问题已经是一个切实可行的小目标。近几年智能解题逐渐成为人工智能的一大研究热点。随着这项研究的日益火热,人们想通过让人工智能参加“考试”,与人类选手进行公平、公开的比试,从而衡量目前人工智能系统的“智能”水平。

  在全世界范围内,有多家研究机构正在从事这一方面的研究。例如日本国立情报学研究所开发了一个项目Todai Robot,他们让机器人挑战大学试题,目标是2021能够考上东京大学。艾伦人工智能研究所(Allen Institute for Artificial Intelligence) 也举办了一项比赛,来自全世界的几千个团队纷纷提交了自己的软件系统来挑战8年级的科学题目,最终,该比赛的第一名仅能达到59%的正确率。在中国,国家科技部2015年也开启了“高考机器人” 项目(863计划中的类人智能项目),让人工智能系统和全国的文科考生一样,挑战2017年高考语文、数学、文综三项科目,研究相关类人答题系统。超过30多家高校和科研机构(清华大学、中科院自动化所等)联合参与了该项目。

  意料之外但又情理之中的是,目前各个人工智能系统的表现普遍在理科解题上弱于文科解题。究其原因:目前机器学习更多强调的是对记忆、计算等相关内容的储存和运用,而对于逻辑理解和推理这一模块还没有很好的解决。数学解题,作为理科考试的一部分,十分考验计算机的理解能力和推理能力,针对数学解题之上的研究成果非常有可能定义计算机智能的新层次。有鉴于此,数学解题应该也正在成为人工智能的一块重要拼图。

  难点和挑战

  尽管鸡兔同笼问题已经成为小学数学中的常见题型,然而该问题对于计算机来说却是一个极大的挑战。具体来讲,为了得到最终答案计算机需要通过理解题目的文字描述来得到相关数学表达,计算机需要具备逻辑推理能力来对得到的数学表达进行算术演算,计算机还需要具有一定的有关现实世界的常识从而能够约束和简化题目。

  

  首先,数学解题需要多种层次的自然语言理解。对于一道题目的文字描述,计算机需要知道并理解其中包含的概念。举个例子,“一加一等于几”以及“小明有一个苹果和一个梨,问小明有几个水果”,同样本质是“1+1=?”的两道题,在题型概念上是一样的,表达方式却截然不同。计算机需要知道如何把以上两道问题都抽象成两个对象相加,这就涉及到所谓的自然语言理解。

  事实上,抽取题目中各个概念变量的关系也十分具有难度。数学题要求的是精确,如果题目变换了一个词,变量之间的关系可能就会改变,整个解法也会不一样。比如下面两道追赶问题:

  (1)两辆车同时往同一方向开,速度分别为28km/h和46km/h,问多少小时后两车相距63km?

  (2)两辆车同时往相反方向开,速度分别为28km/h和46km/h,问多少小时后两车相距63km?

  两道题描述很类似,但是车的方向关系导致了两题的解法大不相同。如何捕抓出这种细微的差别也是一大难点。这也是所谓的自然语言理解的一部分。

  其次,在一定程度上理解文字之后,数学解题需要通过逻辑推理生成解题公式。如下图Hosseni 2014的工作,把数学题通过自然语言处理得到几个变量状态之后,需要推理得到各个变量状态之间的关系得出数学公式。在他给出的例子中,计算机通过学习能得到动词“give”代表两个状态相减。

  

  Hosseni 2014训练一个分类器判断一个动词属于加/减

  最后,计算机需要具有一定有关现实世界的常识去理解自然语言里面一些隐式的指代。比如圆周率为3.14,速度乘以时间等于路程等等。在鸡兔同笼问题中,鸡有两条腿、兔有四条腿是隐式包含的条件,只有知道这些常识才能正确的解答问题。

  历史与现状

  智能答题系统最早可以回溯到20世纪60年代。1964年提出的STUDENT(Bobrow 1964)系统可以视作早期答题人工智能实现的代表:输入有规定的描述方式的数学题,人工定义一组关键词和关系(如EQUAL, SUM, PRODUCT),把自然语言(linguistic form)通过模式匹配映射到对应的函数关系表达。例如句子“the number of advertisements is 45”可转化为函数表达方式(EQUAL (NUMBER OF ADVERTISMENTS)45)。之后的CARPS系统(Charniak 1968)能够把自然语言表示成为成树状结构,再匹配生成公式解答,此外它嵌入了很多数学模型的知识,如面积、体积、维度等等。但CARPS系统仅限于解决比率问题 (ratio problem)。

  2008年之前多数关于智能答题系统的工作都是基于预定义的模式匹配规则,这类工作主有两个主要的缺点:(1)定义的规则覆盖率小,能解决的问题十分有限,而在真实场景下数学题目的描述往往是比较自由、不太受限的;(2)评测比较模糊,这些系统很少给出评测结果以验证其有效性。

  在这之后有了很多不同的尝试。比如SoMaTePs系统(Liguda & Pfeiffer 2012)尝试用扩张语义网(Augmented Semantic Network)表示数学题,抽取题目的对象(object)作为节点,节点之间的关系包括加减乘除。ARIS 系统(Hosseini 2014)让机器学习题目中的动词,并对这些动词进行加减二分类,把数学题看作以动词为关系的状态转移图,但这个方法目前只解决一元加减问题,不考虑乘除。

  

  MIT 于2014年在国际计算语言年会(ACL 2014, Kushman 2014) 上提出了一种基于统计学习的方法(命名为KAZB),引入了模板的概念 (比如“1+1”和 “1+2”同属于一个模板x = a + b) 。根据公式的标注把数学题归类成不同的题型,抽取题目中不同层次的特征(如有关词汇、词性以及语法等),使用统计学习技术自动判断题型。但是此类方法的一个缺点为:无法解决训练集之外的题型。比如训练集只出现过两个数相加,机器无法泛化解答三个数相加的问题。之后百度ZDC(Zhou et al. 2015),微软研究院 (Upadhyay 2016)的研究团队也在同样的方法框架下分别做了不同的优化改进。在一个开放的评测数据集上(即ALG514,含有514道题),三个系统准确率在上分别是68.7%,78.7%以及83%。

  随后,华盛顿大学的ALGES系统(Koncel-Kedziorski et al. 2015)定义了Qset的概念(一个Qset包括Quantity,Entity,Adjective等属性)。首先抽取一道问题的Qset,利用线性整数规划把Qset和加减乘除生成可能的公式,再选出最有可能的公式解出答案。目前限定于一元一次方程。他们同时构建了一个508道题的数据集,系统获得的准确率在72%左右。

  艾伦人工智能研究所除了考虑数学文字题之外,还有关于几何看图题的研究。GEOS (Seo et al. 2015) 根据几何数学定义了一组数学概念以及函数,对图和文字分别构建了不同的分析器(parser)。他们在186道SAT的数学题上获得的准确率大概是60%左右。

  下表对以上一些具有代表性的系统做出了总结。给出一道数学题文字描述,系统需要涵盖三大部分:自然语言理解,语义表达和映射以及数学推理得出解决公式和答案。

  

  作者: [责任编辑: 吕芮光]

责任编辑:李阳阳

科普中国APP 科普中国微信 科普中国微博
中科院物理所
是中国科协为深入推进科普信息化建设而塑造的全新品牌,旨在以科普内容建设为重点,充分依托现有的传播渠道和平台,使科普信息化建设与传统科普深度融合,以公众关注度作为项目精准评估的标准,提升国家科普公共服务水平。

猜你喜欢