REAL2-融合检索和生成的端到端数学应用题自动解题

10 篇文章 1 订阅
3 篇文章 1 订阅

  本篇文章主要讲解本人在今年 NIPS2021 Workshop MATHAI4ED发表的一篇关于应用题自动解题的论文(打开超链接可以看到REAL2模型的Paper,Poster, Video等信息)。
  同时本篇文章也是REAL模型的改进,因此阅读本篇文章之前,建议先阅读REAL模型:REAL4MWP-基于记忆增强的应用题自动解题方法
  论文题目为:REAL2: An End-to-end Memory-augmented Solver for Math Word Problems
  代码已开源,欢迎star:REAL2

1. 背景介绍及数据集介绍

背景介绍及数据集介绍请参考REAL4MWP-基于记忆增强的应用题自动解题方法文章中提到的内容。

2. 动机

  本文首先对REAL模型的检索器(记忆模块)进行了探索,我们认为在使用类比方式时,检索到的问题的相似性可能会极大地影响学习模型和推理解决方案。
  因此,考虑到减少从检索器引入的模型噪声,我们的目标是设计一个可训练的记忆模块(memory module)来取代预先训练的Word2Vec检索器。

3. REAL2模型框架

REAL2模型整体框架如下图所示:
在这里插入图片描述
  REAL模型如上图所示,它由两个阶段组成。在第一阶段,对于未解决的问题X,我们首先使用基于Word2Vec的检索器对问题库中最相似的N个候选问题进行预排序。基于候选问题和可训练记忆模块对K个相似问题进行重新排序。第二阶段,基于未解决的问题及其检索到的问题生成表达式的token分布,然后执行加权和操作连接阶段1和阶段2,其中记忆模块可以与整个框架进行端到端的训练。

  更具体地,本论文提出的融合检索和生成的自动解题方法包括无监督检索方法,相似题检索器和表达式生成器三个大模块。首先,使用无监督检索方法得到若干个相似候选题(如topn=10),此过程类似于推荐系统中的粗排阶段;其次,将待求解题目和相似候选题分别输入相似题检索器中,得到每道题目的文本向量,并通过点积形式计算待求解题目和各相似候选题,并根据相似度大小进行重新排序,此过程相当于推荐系统中的精排阶段。最后,根据重排序后的结果取出若干个最相似的习题(如topk=3, 其中topk<topn),将每道相似题与待求解题目拼接后输入表达式生成器中,得到预测表达式的概率矩阵,并与相似题的相似概率进行乘积,由多道相似题得到的结果进行平均池化,从而得到最终的表达式。

3.1 无监督检索方法

  使用无监督检索方法进行粗排,得到候选的n个相似习题。该阶段根据题目间的相似性,将原始题目从训练语料库中检索出top n个候选相似习题,如下图所示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/8bd0c7abf327491c93b74186d5dd08cf.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARmx5aW5nX3NmZW5n,size_20,color_FFFFFF,t_70,g_se,x_16{:height=“50%” width=“50%”}
  首先,将语料库中的每道题目向量化得到对应的题目向量,向量化方法可采用word2vec或glove算法训练语料库得到每个词的向量表示,然后将每道题目的词向量进行均值池化可得到题目向量;同时将待求解题目向量化得到待求解题目向量;将待求解题目向量与语料库中的每道题目向量进行余弦相似度计算,并取相似度最高的n道题目作为下一步的候选相似习题。

3.2 相似题检索器

  使用相似题检索器对题目做进一步精排,召回k个最相似的题目。相似题检索器结构如下图所示:
在这里插入图片描述
  首先,将上一步得到的topn各候选习题以及待求解题目分别输入文本特征提取器中,得到各题目的向量表示,其中文本特征提取器可使用textcnn, textrcnn, bert等神经网络模型进行句子特征向量的提取,上述模型的网络参数在本发明中可根据表达式生成结果进行动态调整,因此,在模型训练过程中,各题目的向量表示是动态变化的。该方法与无监督检索方法的最大区别是可以通过模型训练来动态调整参数,以学习到更好的向量表示。得到各题目的向量表示后,将待求解习题向量与各候选习题向量进行向量内积计算:
在这里插入图片描述
其中,x表示待求解题目,Z表示所有候选相似习题,z表示其中一个候选相似习题, z i z_i zi表示第i个候选相似习题,p(z|x)表示将内积计算后的结果进行归一化,从而得到相似度概率。
  通过内积计算后可得到待求解习题与各候选习题的相似度,并根据相似度进行排序,得到topk个最相似的习题(topk<topn),取topk个相似习题及对应的相似概率作为下一个模块的输入。

3.3 表达式生成器

  使用表达式生成器生成最终的表达式,为了降低模型预测的难度,本发明将原始表达式内容转换为前缀表达式,这样做的好处是可以消除括号,减少表达式长度,从而降低预测难度。表达式生成过程如下图所示:
在这里插入图片描述
  首先,将检索到的K个相似习题题目内容和待求解题目的题目内容分别进行拼接,得到K个拼接后的输入文本,其中相似习题题目内容包括题目信息及对应的表达式,目的是让模型学习到相似题的求解逻辑,通过对K个相似题目的求解逻辑的学习,让模型能够举一反三,更有利于待求解题目的求解,该方法类似于人类学习过程中通过学习几道相似题目来掌握该类型题的求解。
  得到输入文本后,将其输入表达式生成器中,表达式生成器可以是Unilm, BART, T5等生成模型,目的是得到K个表达式的生成概率,将K个表达式的生成概率与检索到的K个相似习题的相似概率分别进行乘积后求和,得到最终的待求解题目的生成表达式概率分布,损失函数具体如下:
在这里插入图片描述
其中x表示待求解题目,Z表示K个相似题目,z表示其中一个相似题目,表示待求解参数,p(z|x)表示其中一个相似题目与待求解题目的相似概率,该相似概率由相似题检索器计算得到,并通过端到端训练的形式来优化相似概率结果,y表示待求解题目的生成表达式;
   p ( y ∣ z , x ) p(y|z,x) p(yz,x)表示将其中一个相似题目与待求解题目拼接后输入到生成模型中得到的待求解表达式概率, p θ ( y ∣ z , x ) p_\theta(y|z,x) pθ(yz,x)将每一个相似题目的相似概率与对应的待求解表达式概率进行乘积得到联合概率,这一步的目的是越相似的题目对新题目的求解越有借鉴意义,所以突出基于该相似题目对应的待求解生成表达式的结果。最后,将K个相似题目的联合概率进行求和,得到最终的待求解题目的生成表达式概率,并通过负对数似然进行损失函数的计算。

4. 实验

4.1 不同memory module结构

我们使用Math23K数据集进行五折交叉验证,对比了textcnn, textrcnn, 两层transformer,BERT等模型作为memory module时的效果,如下表所示:
在这里插入图片描述
可以看到,基于BERT的记忆模块效果是最好的,相比REAL模型,有1.8%的提升。

4.2 检索数量消融实验

另外,我们还基于math23k test1k数据集(注意跟4.1实验数据集不同),使用BERT作为Memory module,对比不同topn(无监督检索相似题数量), topk(动态检索相似题数量)条件下的模型性能:
在这里插入图片描述
1) 通过比较N=3、K=3和N=5、K=5实验的性能,我们可以看出,后者比前者的精度高1.8个百分点。这是一个显著的改进,表明检索问题的数量是我们提议的框架中的一个关键因素;
2) 当候选问题数量固定时,随着检索问题数量的增加,模型的性能不断提高,这表明我们的模型能够综合利用来自不同来源的更多知识来解决问题。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值