本文由 「AI前线」原创,原文连接: dwz.cn/7nBdQV
本文经阿凡题研究院受权发布
做者|王磊,张东祥,高联丽,宋井宽,郭龙,申恒涛
AI 前线导读: ”加强学习和人类学习的机制很是相近,DeepMind 已经将加强学习应用于 AlphaGo 以及 Atari 游戏等场景当中。做为智能教育领域的引领者,阿凡题研究院首次提出了一种基于 DQN(Deep Q-Network)的算术应用题自动求解器,可以将应用题的解题过程转化成马尔科夫决策过程,并利用 BP 神经网络良好的泛化能力,存储和逼近加强学习中状态 - 动做对的 Q 值。实验代表该算法在标准测试集的表现优异,将平均准确率提高了将近 15%。”算法
研究背景网络
自动求解数学应用题(MWP)的研究历史可追溯到 20 世纪 60 年代,而且最近几年继续吸引着研究者的关注。自动求解应用数学题首先将人类可读懂的句子映射成机器可理解的逻辑形式,而后进行推理。该过程不能简单地经过模式匹配或端对端分类技术解决,所以,设计具备语义理解和推理能力的应用数学题自动求解器已成为通向通用人工智能之路中不可缺乏的一步。框架
对于数学应用题求解器来讲,给定一个数学应用题文本,不能简单的经过如文本问答的方式端到端的来训练,从而直接获得求解答案,而须要经过文本的处理和数字的推理,获得其求解表达式,从而计算获得答案。所以,该任务不只仅涉及到对文本的深刻理解,还须要求解器具备很强的逻辑推理能力,这也是天然语言理解研究中的难点和重点。函数
近几年,研究者们从不一样的角度设计算法,编写求解系统,来尝试自动求解数学应用题,主要包括基于模板的方法,基于统计的方法,基于表达式树的方法,以及基于深度学习生成模型的方法。目前,求解数学应用题相关领域,面临训练数据集还不够多,求解算法鲁棒性不强,求解效率不高,求解效果很差等多种问题。因为数学题自己须要天然语言有足够的理解,对数字,语义,常识有极强的推理能力,然而大部分求解方法又受到人工干预较多,通用性不强,而且随着数据复杂度的增长,大部分算法求解效果急剧降低,所以设计一个求解效率和效果上均有不错表现的自动求解器,是既困难又很是重要的。性能
相关工做学习
算术应用题求解器:测试
做为早期的尝试,基于动词分类,状态转移推理的方法,只能解决加减问题。为了提升求解能力,基于标签的方法,设计了大量映射规则,把变量,数字映射成逻辑表达式,从而进行推理。因为人工干预过多,其扩展困难。大数据
基于表达式树的方法,尝试识别相关数字,并对数字对之间进行运算符的分类,自底向上构建能够求解的表达式树。除此以外,会考虑一些比率单位等等的限制,来进一步保证构建的表达式的正确性。基于等式树的方法,采用了一个更暴力的方法,经过整数线性规划,枚举全部可能的等式树。基于树的方法,都面临着随着数字的个数的增减,求解空间呈指数性增长。人工智能
方程组应用题求解器:设计
对于方程组应用题的求解,目前主要是基于模板的方法。该须要将文本分类为预约义的方程组模板,经过人工特征来推断未知插槽的排列组合,把识别出来的数字和相关的名词单元在插槽中进行填充。基于模板的方法对数据的依赖性较高,当同一模板对应的题目数量减小,或者模板的复杂性增长时,这种方法的性能将急剧降低。
本文的主要贡献以下:
方案介绍
基于深度 Q 网络的数学应用题求解器
本文提出的框架如上图所示。给出一个数学应用题,首先采用数字模式提取用于构建表达式树的相关数字,而后根据重排序制定的规则,对提取出来的相关数字进行顺序调整,好比对于“3+4*5”
, 咱们但愿优先计算4*5
,这里的数字 5,对应的文本段是“5 元每小时”,显然这里的数字“5”的单位是“元 / 小时”,当数字“4”的单位是“小时”,数字“3”的单位是“元”,遇到这种状况,调整 4 和 5 放到数字序列的最前面,随后,用已排好序的数字序列自底向上的构建表达式树。
首先,根据数字“4”和数字“5”各自的信息,相互之间的信息,以及与问题的关系,提取相应的特征做为加强学习组件中的状态。而后,将此特征向量做为深度 Q 网络中前向神经网络的输入,获得“+”,“-”,反向“-”,“*”,“/“,反向”/“六种动做的 Q 值,根据 epsilon-greedy 选择合适的操做符做为当前的动做,数字”4“和”5“根据当前采起的动做,开始构建表达式树。下一步,再根据数字”4“和数字”3“,或者数字”5“和数字“3”,重复上一步的过程,把运算符数字的最小公共元祖来构建表达式树。直到没有多余相关数字,建树结束。随后将详细介绍深度 Q 网络的各个部件的设计方式。
状态:对于当前的数字对,根据数字模式,提取单个数字,数字对之间,问题相关的三类特征,以及这两个数字是否已经参与表达式树的构建,做为当前的状态。其中,单个数字,数字对,问题相关这三类特征,有助于网络选择正确的运算符做为当前的动做;数字是否参与已经参与表达式树的构建,暗示着当前数字对在当前表达式树所处的层次位置。
动做:由于本文处理的是简单的算术应用题,因此只考虑,加减乘除四则运算。在构建树的过程当中,对于加法和乘法,两个数字之间不一样的数字顺序将不影响计算结果,可是减法和除法不一样的顺序将致使不一样的结果。因为,咱们实现肯定好数字的顺序,因此添加反向减法和反向除法这两个操做是很是有必要的。所以,总共加减乘除,反向减法和除法 6 种运算符做为深度 Q 网络须要学习的动做。
奖励函数:在训练阶段,深度 Q 网络根据当前两个数字,选择正确的动做,获得正确的运算符,环境就反馈一个正值做为奖励,不然反馈一个负值做为惩罚。
参数学习:本文采用了一个两层的前向神经网络用于深度 Q 网络计算指望的 Q 值。网络的参数θ将根据环境反馈的奖励函数来更新学习。本文使用经验重放存储器来存储状态之间的转移,并从经验重放存储器中批量采样 (s,a,s',r),用于更新网络参数θ。模型的损失函数以下:
利用损失函数的梯度值来更新参数,来缩小预测的 Q 值和指望的目标 Q 值的差距,公式以下:
算法流程以下:
实验
本文采用了 AI2, IL,CC 这三个算术应用题数据集进行实验。其中 AI2 有 395 道题目,题目中含有不相关的数字,只涉及加减法。IL 有 562 道题目,题目中含有不相关的数字,只涉及加减乘除单步运算;CC 有 600 道题,题目中不含有不相关的数字,涉及加减乘除的两步运算。
三个数据集准确率以下图:
观察上述实验结果发现,本文提出的方法在 AI2,CC 数据集上取得了最好的效果。ALGES 在 IL 上表现很好,可是在 AI2 和 CC 数据集上表现却不好,这从侧面证实了咱们的方法有更好的通用性。UnitDep 提出的单位依赖图对只有加减运算的 AI2 数据集没有明显的效果,其增长的 Context 特征在 CC 数据集上有取得了明显的效果,可是却在 AI2 数据集上效果明显降低,这里表现出人工特征的局限性。对于本文提出的方法,重排序在 CC 数据集上,提高效果明显,因为 AI2 只有加减运算,IL 只涉及单步运算,因此在这两个数据集上效果不变。
除此以外,本文还作了单步和多步的断点分析,实验效果代表,本文提出的方法在多步上表现十分优异,实验结果以下图:
运行时间以下图:
观察单个题目求解须要的时间,咱们能够发现,多步运算的数据集 CC,在时间上明显耗费更多。ALGES 因为要枚举全部可能的候选树,所以耗费时间最长。本文提出的方法,求解效率仅次于只有 SVM 作运算符,和相关数字分类的 ExpTree。
平均奖励和准确率的走势以下图:
总结
本文首次提出了一个用于求解数学应用题的加强学习框架,在基准数据上其求解效率和求解效果展示出较好的效果。
将来,咱们将继续沿着深度学习,加强学习这条线去设计数学应用题自动求解器,来避免过多的人工特征。同时在更大更多样化的数据集上,尝试求解方程组应用题。
论文题目:《MathDQN: 利用深度加强学习求解算术应用题》
英文:《MathDQN: Solving ArithmeticWord Problems via Deep Reinforcement Learning》
Paper URL:
团队: 阿凡题研究院、电子科技大学、北京大学
做者: 王磊,张东祥,高联丽,宋井宽,郭龙,申恒涛
更多干货内容,可关注AI前线,ID:ai-front,后台回复「AI」、「TF」、「大数据」可得到《AI前线》系列PDF迷你书和技能图谱。