导读:约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%左右。
下表对以上一些具有代表性的系统做出了总结。给出一道数学题文字描述,系统需要涵盖三大部分:自然语言理解,语义表达和映射以及数学推理得出解决公式和答案。
应用场景
作为一种有趣的人工智能问题,数学解题相关的研究和努力不仅有助于推动机器智能的进步,同时也会在众多实际应用场景中产生价值。
>>>> 线上教育
近几年兴起的中小学生学习平台,该类应用普遍会支持如下功能——学生可以采取对准题目拍照,或者文字语音方式来输入数学题,学习平台识别题目并给出解题思路。由于此类平台具有庞大的题库,因此可以通过识别匹配题目来实现上功能。该应用的用户量已经突破一亿,在教育市场份额巨大。但是这些平台中所有的题目需要人工预设解题思路,受限于此,题库的扩展存在一定约束。人工智能数学解题的成功解决将会大大提升此类平台。
>>>> 知识问答系统
作为新一代的知识搜索引擎的代表,WolframAlpha能理解用户搜索问题并直接给出答案,而不是返回一堆网页链接。其中WolframAlpha被搜索过的一类典型的问题就是数学问题。输入数学题,它能给出数学模型、解题步骤以及答案。数学解题是此类引擎的核心构件之一。
>>>> 智能问答
智能对话系统的终极目标是实现人机自由对话,计算机能够响应来自用户的各种问题。其中,自然也包括数学解题。微软小冰实际上已经开始了这方面的尝试,它目前已可以解决比较简单的算术题。
SigmaDolphin——微软亚洲研究院的数学解题
SigmaDolphin是微软亚洲研究院在2013年初启动的解题项目。Sigma即西格玛大厦,是微软亚洲研究院的诞生地;而Dolphin则是该系统被赋予的期望——像海豚一样聪明。
目前SigmaDolphin主要有两个研究成果。
● Dolphin解题
SigmaDolphin定义了一套针对数学解题的抽象表示语言(被命名为Dolphin Language),包含了数学相关的类和函数。该语言人工定义了1000多种数学类型以及7000多种从Freebase和其它网页自动抽取的概念类型,加上其定义的函数和数据结构,使得该语言十分适合表达数学概念及运算,并能很好地构建出一个精准的数学解题系统。同时Dolphin Language具有大约1万条语法规则,把自然语言解析成Dolphin Language的表示,继而进行推理得到数学公式。有关该方法的详细介绍已经发表在EMNLP 2015, 题为“Automatically Solving Number Word Problems by Semantic Parsing and Reasoning” 。
● Dolphin18K数据集
目前该研究领域正在使用的数据集规模都相对较小,而且题型都比较简单。众所周知,机器学习的关键是数据,特别关键的是数据规模。然而,数学题库需要提供公式和答案,人工标注十分耗时。微软亚洲研究院团队采用半自动地方法从雅虎问答获取数学题,经过人工筛选题目,并自动抽取公式和答案作为标注,构建一个新的数据集Dolphin18K。该数据集包含了1万8千多道数学题。有关该数据集的详细介绍已发表在ACL 2016,题为“How Well Do Computers Solve Math Word Problems? Large-Scale Dataset Construction and Evaluation”。过往的系统在各自的数据集上都有高达60%至80%的准确率,但由于评测的数据集都在几百道题目的规模上,而且都有不同的题型限制,导致其得出的结论可能不够有代表性。对比之前的数据集,Dolphin18K题目数量增加了10倍以上,涵盖了不同年级、不同难度的数学题,且题型更加全面丰富,更具有挑战性。目前,在Dolphin18K的评测上,过往的这些数学解题系统平均只能获得20%左右的准确率,说明了数学解题并没有想象中的那么简单。
如上所述,目前智能解题任务仍然存在众多的挑战。但我们仍可以期冀,通过不断的数据积累和方法创新,智能解题系统的能力终将逼近甚至超过人类——答题能力能从及格逐渐提升至100分的水平。