©作者 | 字节跳动AI Lab、UT Austin等

来源 | 机器之心

目前强大的语言模型普遍在很多下游 NLP 任务中能轻易地达到比较好的结果,但在推理效果上没有达到我们的预期 [1]。字节跳动人工智能实验室与新加坡科技与设计大学提出一个基于演绎推理的方法,希望实现类似 System 2 的推理能力 [2]。

论文标题:

Learning to Reason Deductively: Math Word Problem Solving as Complex Relation Extraction

收录会议:

ACL 2022

论文链接:

https://arxiv.org/abs/2203.10316

代码链接:

https://github.com/allanj/Deductive-MWP

研究动机

作为一类需要解题的推理过程,在数学解题任务中比较适合应用演绎推理模型。我们尝试在此任务上做一些多步的推理 (multi-step reasoning), 使得模型预测能够提供相对可解释的预测结果。

问题描述

在给定一个数学问题的情况下,我们进行算术解答并得到答案。

Question: In a division sum , the remainder is 8 and the divisor is 6 times the quotient and is obtained by adding 3 to the thrice of the remainder. What is the dividend?

Answer: 129.5

Mathematical Expression: ((8×3+3)×(8×3+3)÷6)+8

上面的这个(取自于 MathQA [3] dataset)例子中,我们需要得到最后被除数 (dividend) 129.5。同时数据集也给出计算的表达式,可以用来当作监督信号。这种多步的表达式,也便于验证 multi-step reasoning 的方法。这边我们也主要考虑一些基本的数学运算符,包括加 (+) 减 (-) 乘 (×) 除 (÷) 以及幂 (^),其他更复杂的运算其实可以分解成这些基本的运算。

现有方法

目前流行的数学解题方法主要是 sequence-to-sequence (Seq2Seq) 以及 sequence-to-tree (Seq2Tree) 的方法。针对 Seq2Seq 的方法,优点是简单直接,缺点是需要有非常大量的数据才得到好的效果,否则效果不如结构化模型 Seq2Tree。Seq2Tree 主要的代表工作是 Goal-Driven Tree-Structure (GTS) [4],目前也是大家比较频繁借鉴的工作。

同时 Seq2Tree 也有可以改进的地方,如下图所示,生成的过程是一个前序遍历 (pre-order traveral) 的过程,会先生成顶端的数学运算符 (operator),然后是 operator 左边的运算,最后是右边的运算。生成的过程相对来说比较不符合直觉,并不是一个一步步计算的过程。此外,我们可以看到同一个表达式 8×3+3 被生成了 2 次,然而我们其实是可以重复使用这个表达式的结果。但在 Seq2Tree 的方法中,我们无法这样去使用,必须重新生成整个子树结构。

演绎推理

我们的思路其实比较直接,通过一步步的方法得到最后的结果,并且每一步的生成可以对应到文中相应的描述。

如上图所示,我们只需要对所提供的表达式拆成多步运算即可。前两步的运算,我们得到除数 divisor,第三步我们得到商 quotient ,最后两步则得到最后的被除数 dividend。对于每一步,我们能够找到文中相对应的文本描述,总的来说,有以下的优点:

1. 通过重复利用已有的结果计算,减少了总的计算步数;

2. 一步步的计算过程相对于 Seq2Tree 的生成更加可解释;

3. 生成是生成整个表达式,而不是单个 operator 或者是数字。这样的 constraint 在训练过程中使得模型要更加准确的得到整个表达式。

额外的一个优点是,假如我们已经有了前三步,我们也可以从第三步出发继续推理,不需要从头开始。

推理系统

模型输入:在问题中出现的数字以及整个 constant 的集合,我们用 Q 表示。

对于表达式的表示:

表示从 到 的数学运算,上述这个表达式 是有方向性的。比如对于减法或者除法,我们会有「-_reverse」这样的符号,代表相反的方向 。

从正式的演绎推理系统角度,我们可以用上图表示状态的变化 (和 Dependency Parsing 中的 transition-based system 类似),从 t 到 t+1 状态的变化主要是增加了新的表达式 ,并且这个新的表达式会成为新的候选数字加入到下一个状态当中。

上面这张图简单地可视化了状态的变化过程,我们也可以看到,随着 t 的增加,状态的 size 也会由于新的数字的加入随之变「大」。

模型实现

首先我们还是用预训练语言模型例如 BERT 或者 Roberta 得到数字的向量表达 (representation),然后在这个基础上做 inference。这边我们用一个 q_1/q_2 × q_3 作为例子:

第一步我们得到 和  的联合表示,主要通过拼接 representation 方式完成,然后对于每一个 operator ,我们有一个 operator-specific 的 Feed-forward network 来得到数学表达式 的向量表达,从而这个新的表达式在下一个 timestep,会变成新的候选数字 。同时,在 inference 的过程当中,我们可能会得到错误的表达式,比如说上图的 。所以,我们是在所有可能的表达式中,通过 scoring 选取一个最好的表达式来当作 。然后当 的时候,我们最后能得到 。

注意到的是,在不同的 timestep t,状态当中数字数量不同,导致所有可能的数学表达式的数量不同。如果我们做 beam-search 的话,这种情况是比较困难的。因为每个 timestep 的概率分布会不平衡。

我们的方法的好处是可以增加一些 constraints,比如说如果 是一个不可能出现的表达式,或者是 的结果是不可能存在的,则我们可以直接从整个状态空间中去掉这个表达式。

实验

我们主要在现有的公开数据集中做实验:MAWPS, Math23k, MathQA 和 SVAMP。这边展示一些现有比较好的方法的主要结果。实验过程中,我们最好的 varaint 是 「Roberta-DeductiveReasoner」,并且我们不采用 beam-search,这边比较的之前的工作,全都有采用 beam size 为 5 的 beam search。

整体来说,我们在答案的准确率上能比之前的 seq2tree 的工作都能高出不少,我们把主要的提升归咎于我们预测整个表达式,而不是一个个操作符和数字。但整体的绝对数字,发现并不高,尤其是 SVAMP ,我们文章中后续对 SVAMP 的困难度做了一些分析,详细可以看一下文章细节。对于 SVAMP 数据集,我们发现 constraint 的作用尤其的大,这里的 constraint 主要是不允许中间结果出现负数。这个 constraint 对于我们 BERT-based 的 Reasoner 能提高 7 个点的准确率,对于 Roberta-based 的 Reasoner 能提高 2 个点。

可解释分析 

在这个例子中,我们想展示模型的可解释的能力。

Question: There are 255 apple trees in the orchard. Planting another 35 pear trees makes the number exactly the same as the apple trees. If every 20 pear trees are planted in a row, how many rows can be planted in total?

Answer: 11. Gold Expression: (255 - 35) / 20.  Predicted Expression: (255 + 35) / 20 Deductive Scores: Prob(‘255+35=290’) = 0.068 > Prob(‘255-35=220’) = 0.062

模型在第一步表达式预测错误,我们定位到图中标红的那一句描述。我们怀疑「planting another」会误导模型去预测 + 的数学运算符。我们通过修改那一句话希望那一句话会有更准确的表达,下图中标蓝的为修改后的话。

Question: There are 255 apple trees in the orchard. The number of pear trees is 35 fewer than the apple trees.  If every 20 pear trees are planted in a row, how many rows can be planted in total?

Prob(255+35=290) = 0.061 < Prob(255-35=220) = 0.067

通过 fewer 这个词希望让模型知道这个地方是一个减法。这个分析能让我们从模型的预测中,学习到模型 inference 过程中的一些行为。

结论 

本文提出的整体演绎推理系统从速度上相对树结构模型更高效,并且可以提供一些可解释的解答步骤。此外,我们也能加入一些先验知识变成 constraint ,从而提高模型的效果。从理论上说,我们的演绎推理模型可以不仅仅用在数学解题上,对于其他涉及多步推理的问答任务以及一些结构预测任务也是适用的。

我们的模型也有一些缺陷,比如说计算中有很多的数学运算符以及常数的时候,模型耗费的空间会比较大,造成资源的浪费。此外,beam search 目前还无法很好的地运用在这个框架下面,会有上文提到的概率分布不平衡的问题。

参考文献

[1] Bengio, Yoshua, Yann Lecun, and Geoffrey Hinton. "Deep learning for AI." Communications of the ACM 64.7 (2021): 58-65.

[2] Daniel, Kahneman. "Thinking, fast and slow." (2017).

[3] Amini, Aida, et al. "MathQA: Towards Interpretable Math Word Problem Solving with Operation-Based Formalisms." Proceedings of NAACL, 2019.

[4] Xie, Zhipeng, and Shichao Sun. "A Goal-Driven Tree-Structured Neural Model for Math Word Problems." Proceedings of IJCAI. 2019.

更多阅读

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

ACL 2022 | 字节跳动与新加坡科技与设计大学提出:基于演绎推理的数学解题相关推荐

  1. 博后招募 | 新加坡科技与设计大学段凌杰教授招收人工智能方向博士后

    合适的工作难找?最新的招聘信息也不知道? AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职! 新加坡科技设计大学 新加坡科技与设计大学是一所坐落于新加坡东部海岸的公立研 ...

  2. X-Pool:多伦多大学提出基于文本的视频聚合方式,在视频文本检索上达到SOTA性能!(CVPR 2022)...

    关注公众号,发现CV技术之美 本文分享 CVPR 2022 论文『X-Pool: Cross-Modal Language-Video Attention for Text-Video Retriev ...

  3. ACL 2022 | 字节AI Lab联合UCSB提出MOSST:基于单调切分的端到端同传

    研究背景和动机 随着信息技术的发展,流媒体和多媒体成为信息传递的主要媒介,逐渐应用在我们生活的方方面面.即时的信息传递需求也在日益增加.特别地,在跨国交流和文化传播场景中,为了消除语言沟通障碍,即时语 ...

  4. 2022字节跳动【数据仓库工程师】日常实习面经-----一面

    文章目录 一,自我介绍 二,问答阶段 三,代码阶段 四,反问 五,总结 背景:今年金三银四,看着大家都在疯狂找实习offer,不甘落后的我也信心满满(毫无把握)的去字节面试(现在想想真是胆大,都还没学 ...

  5. 2022字节跳动数仓实习面经(2、3面、hr面)

    字节已经给offer了,今天接着上一篇抖音电商部门的数仓实习生面经,这次面试是2.3面的总结,就放在一起吧.对往期内容感兴趣的同学可以查看如下内容

  6. 2022字节跳动数据仓库实习面经

  7. CVPR 2022 | 小鹏汽车联合石溪大学提出基于Transformer的安全域适应

    摘要 在本文中,作者提出了一种新的UDA解决方案SSRT (Safe Self-Refinement for Transformer-based domain adaptation).该方案从两个方面 ...

  8. 字节跳动CVPR 2023论文精选来啦(内含一批图像生成新研究)

    计算机视觉领域三大顶会之一的 CVPR 今年已经开奖啦. 今年的 CVPR 将于六月在加拿大温哥华举办,和往年一样,字节跳动技术团队的同学们收获了不少中选论文,覆盖文本生成图像.语义分割.目标检测.自 ...

  9. 曾被ICLR拒稿,字节跳动今斩获最佳论文,ACL 2021各大奖项揭晓

    来源:机器之心 被顶会拒稿请不要灰心,说不定你的论文会成为另一个顶会的最佳. NLP 领域国际顶会 ACL 2021 公布获奖论文信息:来自字节跳动火山翻译的一篇神经机器翻译工作被评为最佳论文.此外, ...

最新文章

  1. 对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
  2. 《走进SAP(第2版)》——第2章 企业软件的SAP之路2.1 企业资源计划(ERP)...
  3. java8异步_Java8新特性之:CompletableFuture
  4. 获取一个目录下文件扩展名为txt或htm或html的文件的几种方法
  5. TypeScript void 和 undefined 的区别
  6. nuxt.js的核心代码_Nuxt.js中的通用应用程序代码结构
  7. 河南理工大学计算机课d,河南理工大學计算机基础课后习题答案.doc
  8. Mybatis源码笔记之浅析ParameterHandler
  9. TIOBE 4 月榜单:上古编程语言 Fortran 击败 Objective-C,PHP、Go 下滑
  10. 如何在Mac上更改“终端”窗口光标?
  11. 给Visual Studio 2005设置一个代码边界线
  12. SQL:postgresql中判断一个点是否落在指定区域
  13. 娜璋初识(一)你的酒窝没有酒,我却醉得像条狗,看程序员如何表白
  14. 辨析:方差 和 均方误差 的联系和区别
  15. 5年从点点点到测开,写给即将进入或者正在做测试的你...
  16. 20-统一网关Gateway-全局过滤器
  17. mysql配置secure_file_priv
  18. C_sharp-gives-OJ-background-test-data
  19. 10年创业消亡史:风口起落的背后,是6271家创业公司的黯然离场
  20. iOS Charts库绘制曲线

热门文章

  1. 大电容滤低频,小电容滤高频?——滤波电容的选择
  2. 工业边缘计算研究现状与展望
  3. Python使用模拟退火(Simulated Annealing)算法构建优化器获取机器学习模型最优超参数组合(hyperparameter)实战+代码
  4. STM32开发基于SPI接口的OLED数据显示
  5. ORACLE问题记录-ORA-01078、LRM-00109处理
  6. c和java哪个难_为什么说 C 语言比 Java 难?
  7. 关于对象存储服务(OBS)的使用
  8. python在画布上显示动态图片_python Tkinter在画布上显示图像,它总是blin
  9. WWDC2016 Session笔记 - Xcode 8 Auto Layout新特性
  10. 如何看待 Python (PyScript) 可以做浏览器前端开发语言?