【P9】Point to the Expression:Solving Algebraic Word Problems using the Expression-Pointer Transformer

Proceedings of the 2020 Conference on EMNLP, pages 3768–3779,November 16–20, 2020.

Abstract

针对 NLP 中的代数词问题(algebraic word problems),已有的研究提出使用“Op(operator运算符/operand操作数)” tokens作为输入/输出的单元。这样的模型需要解决两个问题:

  1. expression fragmentation
  2. operand-context separation

对此,本文提出一个纯神经模型 Expression-Pointer Transformer(EPT),使用(1)“Expression” token(2)operand-context pointers来生成解方程。

文章贡献主要有:

  1. 提出EPT,解决上述两个问题;
  2. 性能与手工设计特征的模型相当,比现有纯神经模型有40%的性能提升 。

1 Introduction

1.1 任务介绍

现有神经模型与基于手工设计特征的模型有相当大的性能差距。

1.2 两个问题

在这里插入图片描述

  1. expression fragmentation 表达式分片问题
    该问题(上图左加粗虚线框)是指expression tree(表示方程式的计算结构)的分割。
    • 问题出现
      Op而不是整个expression tree作为模型的输入/输出单元,就会出现此问题。例如:图1(a), 使用Op tokens作为模型输入,将树结构分解为运算符(“ × \times ×”)和操作数(“ x 1 x_1 x1” 和 “ 2 2 2”)
    • 解决
      本文则使用“Expression” token × ( x 1 , 2 ) ×(x1, 2) ×(x1,2)),可以显式的捕捉树结构作为一个整体,如图1©
  2. operand-context separation 操作数-上下文分离问题
    该问题是指operand(操作数)和与operand相关的数字之间被切断联系——operand与上下文分离
    • 问题出现
      代数词 problem 中陈述的数字代入抽象符号以进行概括时,会出现此问题。例如:图1(b),使用Op token时,数字8变为抽象符号“ N 1 N_1 N1”。
    • 解决
      当使用“Expression” token时,数字8并没有被转化为符号。而是建立一个指针,指向数字8在代数词问题中出现的位置。因此,使用这样的“operand-context pointer”可以使模型预测operand时利用其上下文信息,如图1©所示。

2 Related work

2.1 expression fragmentation 表达式分片问题

研究人员试图通过使用两步过程或使用单步seq-to-seq模型来反映operatoroperand之间的关系信息。

  • 两步过程(早期)

    • step1:通过对预定义的模板进行分类来选择operator
      step2:将operand应用于在第一步中选择的模板。
    • 其他模型首先选择operand,然后在第二步中用operator构造表达式树。
  • 单步seq-to-seq模型(近期)——学习operatoroperand之间的隐式关系
    这些seq2seq方法在生成operator时考虑了operand的关系信息,但是仍未解决在生成operand时缺少operator的关系信息的问题

    • Chiang和Chen(2019)构建了一个seq2seq模型,该模型使用堆栈上的push/pop动作来生成operator/operand tokens
    • Amini等(2019)建立了一个seq2seq模型,以在生成所需的operand tokens后立即生成operator token

2.2 operand-context separation 操作数-上下文分离问题

  • 构建手工特征来获取单词的语义内容
    • 例如给定数字的单位或数字之间的依赖关系。
    • 缺点:设计手工输入特征非常耗时,并且需要领域专业知识。
  • 采用分布式表示和神经模型来自动学习operand的数字上下文
    • Huang 使用了一个pointer-generator网络,该网络可以指向给定数学问题中number的上下文。缺点是性能无法与使用手工特征的最新模型相媲美。
    • 本文通过添加额外的指针(可以利用operand相邻的Expression tokens的上下文信息),可以提高纯神经模型的性能。

3 EPT: Expression-Pointer Transformer

在这里插入图片描述
总体采用encoder-decoder架构:

  • encoder:预训练模型ALBERT
    • input: tokenized word problem
    • output: ALBERT编码器的隐状态向量(表示给定问题的数字上下文)
  • decoder:Transformer Decoder
    • input:Expression tokensALBERT编码器的隐状态向量
    • output:Expression tokens

在这里插入图片描述

3.1 Input vector of EPT’s decoder

symbolmeaningdimension
v i \mathbf{v}_{i} viThe input vector of i i ith Expression tokenD
f i \mathbf{f}_{i} fioperator embeddingD
a i j \mathbf{a}_{i j} aijthe j j jth operand embedding of i i ith ExpressionD
  • v i \mathbf{v}_{i} vi
    v i = F F in  (  Concat  ( f i , a i 1 , a i 2 , ⋯   , a i p ) ) \mathbf{v}_{i}=\mathrm{FF}_{\text {in }}\left(\text { Concat }\left(\mathbf{f}_{i}, \mathbf{a}_{i 1}, \mathbf{a}_{i 2}, \cdots, \mathbf{a}_{i p}\right)\right) vi=FFin ( Concat (fi,ai1,ai2,,aip))其中, F F ∗ \mathrm{FF}_{*} FF表示前馈线性层,而  Concat  ( ⋅ ) \text { Concat }(\cdot)  Concat ()表示括号内所有向量的级联
  • f i \mathbf{f}_{i} fi
    f i = LN ⁡ f ( c f E f ( f i ) + P E ( i ) ) \mathbf{f}_{i}=\operatorname{LN}_{\mathrm{f}}\left(c_{\mathrm{f}} \mathrm{E}_{\mathrm{f}}\left(f_{i}\right)+\mathrm{PE}(i)\right) fi=LNf(cfEf(fi)+PE(i))其中, E ∗ ( ⋅ ) \mathrm{E}_{*}(\cdot) E()表示嵌入向量的查找表, c ∗ ( ⋅ ) \mathrm{c}_{*}(\cdot) c()表示标量参数, L N ∗ ( ⋅ ) \mathrm{LN}_{*}(\cdot) LN()表示层归一化, P E ∗ ( ⋅ ) \mathrm{PE}_{*}(\cdot) PE()表示位置编码。
  • a i j \mathbf{a}_{i j} aij
    为了反映operand的上下文信息, a i j \mathbf{a}_{i j} aij有三种可能的来源(sources):
    • problem-dependent numbers
      即代数问题中提供的数字(如表1中的“20”)。为了计算一个number的 a i j \mathbf{a}_{i j} aij,重用对应于该number tokens的编码器隐状态向量,如下所示:
      a i j = L N a ( c a u n u m + e a i j ) \mathbf{a}_{i j}=\mathrm{LN}_{\mathrm{a}}\left(c_{\mathrm{a}} \mathbf{u}_{\mathrm{num}}+\mathbf{e}_{a_{i j}}\right) aij=LNa(caunum+eaij) 其中 u ∗ \mathrm{u}_{*} u为代表source的向量, e a i j \mathbf{e}_{a_{i j}} eaij为数字 a i j \mathbf{a}_{i j} aij对应的编码器隐状态向量。
    • problem-independent constants
      即问题中没有说明的预定义数字(如100经常用于百分位数)。为计算一个常数的 a i j \mathbf{a}_{i j} aij,使用一个查找表 E c \mathrm{E}_{c} Ec,如下所示:
      a i j = L N a ( c a u const  + E c ( a i j ) ) \mathbf{a}_{i j}=\mathrm{LN}_{\mathrm{a}}\left(c_{\mathrm{a}} \mathbf{u}_{\text {const }}+\mathrm{E}_{\mathrm{c}}\left(a_{i j}\right)\right) aij=LNa(cauconst +Ec(aij))其中, L N a \mathrm{LN}_{\mathrm{a}} LNa c a c_{\mathrm{a}} ca在不同的源之间共享。
    • the result of the prior Expression token
      即在 i i ith Expression之前生成的Expression (如R0)。为了计算result的 a i j \mathbf{a}_{i j} aij,使用如下的位置编码:
      a i j = L N a ( c a u e x p r + P E ( k ) ) \mathbf{a}_{i j}=\mathrm{LN}_{\mathrm{a}}\left(c_{\mathrm{a}} \mathbf{u}_{\mathrm{expr}}+\mathrm{PE}(k)\right) aij=LNa(cauexpr+PE(k))其中,k是先前的Expression a i j \mathbf{a}_{i j} aij的索引。

3.2 Output layer of EPT’s decoder

  • 预测下一个operator f i + 1 \mathbf{f}_{i+1} fi+1
    f i + 1 = arg ⁡ max ⁡ f σ ( f ∣ F F out  ( d i ) ) f_{i+1}=\arg \max _{f} \sigma\left(f \mid F F_{\text {out }}\left(\mathbf{d}_{i}\right)\right) fi+1=argfmaxσ(fFFout (di))
  • 预测下一个operand a i + 1 , j \mathbf{a}_{i+1,j} ai+1,j
    (1) 输出层会应用operand-context pointers,这受指针网络 pointer networks 的启发。在 pointer networks 中,输出层使用对候选向量的 attention 来预测下一个 token。 EPT根据operand的来源,以三种不同的方式收集the next (i+1)th Expression的候选向量:
    e k for the  k th number in the problem  , d k for the  k th Expression output  , E c ( x ) for a constant  x \begin{aligned} &\mathbf{e}_{k} \quad\quad \text {for the } k \text {th number in the problem }, \\ &\mathbf{d}_{k} \quad\quad \text {for the } k \text {th Expression output },\\ &\mathrm{E}_{\mathrm{c}}(x)\quad \text {for a constant } x \end{aligned} ekfor the kth number in the problem ,dkfor the kth Expression output ,Ec(x)for a constant x
    (2) EPT预测the next jth operand a i + 1 , j \mathbf{a}_{i+1,j} ai+1,j
    A i j A_{ij} Aij为矩阵,其行向量就是上述候选向量。然后计算key矩阵 K i j K_{ij} Kijquery向量 Q i j Q_{ij} Qij的注意力来预测 a i + 1 , j \mathbf{a}_{i+1,j} ai+1,j
    Q i j = F F query  , j ( d i ) K i j = F F key  , j ( A i j ) a i + 1 , j = arg ⁡ max ⁡ a σ ( a ∣ Q i j K i j ⊤ D ) \begin{aligned} Q_{i j} &=\mathrm{FF}_{\text {query }, j}\left(\mathbf{d}_{i}\right) \\ K_{i j} &=\mathrm{FF}_{\text {key }, j}\left(\mathbf{A}_{i j}\right) \\ a_{i+1, j} &=\arg \max _{a} \sigma\left(a \mid \frac{Q_{i j} K_{i j}^{\top}}{\sqrt{D}}\right) \end{aligned} QijKijai+1,j=FFquery ,j(di)=FFkey ,j(Aij)=argamaxσ(aD QijKij)loss:将operator的loss和其所需参数的loss相加来计算Expression的损失。所有loss函数都是通过cross-entropy with the label smoothing计算的。

4 Experimental Setup

4.1 Metric and Datasets

使用三个公开可用的英语代数单词问题数据集:

  • ALG514 —— 高复杂度
  • DRAW-1K —— 高复杂度
  • MAWPS —— 低复杂度

4.2 Baseline and ablated models

EPT 与五个现有 SoTA 模型对比,这五个模型分为三种类型:使用手工特征的模型,纯神经模型,混合模型。

消融实验:

4.3 Implementation details

  • PyTorch 1.5
  • encoder:使用了三种不同尺寸的ALBERT模型:albert-base-v2,albert-large-v2和albert-xlarge-v2。在训练期间固定了编码器的嵌入矩阵,以保留嵌入矩阵中的世界知识和稳定整个学习过程。
  • decoder:堆叠了六个解码器层,并在不同层之间共享参数以减少内存使用。
  • 将输入向量的维数 D D D设置为编码器隐状态向量的维数。
  • 在训练阶段使用 teacher forcing,在评估阶段使用 3 beams 进行 beam search。
  • EPT的超参数,除训练时期,批量大小,预热时期和学习率外,其他参数均遵循ALBERT模型的参数。具体设置见论文。
  • optimizer:LAMB,使用带 warm-up 的 linear decay

5 Result and Discussion

5.1 Comparison study 比较研究

EPT优于现有的纯神经模型的一个可能的解释是使用了operand的上下文信息。

使用symbols的四种方式是:(1)泛化常见模式,(2)表示方程中的未知数,(3)表示函数的一个参数,(4)替换任意标记。

  • 现有的神经模型——使用symbols来提供与问题相关(problem-dependent)的数字或未知数的抽象,即通过应用模板分类或机器学习技术,应用了(1)和(2)。
  • EPT模型——使用Expression tokens处理(3),使用operand-context pointers处理(4)。

5.2 Ablation study 消融研究

在这里插入图片描述

表6给出了误差分析的结果:
在这里插入图片描述
高复杂度数据集上,性能增强有两种可能的解释:

  1. 使用Expression tokens,解决了生成求解方程时的expression fragmentation问题。
  2. 使用和operand-context pointers解决了选择操作数时operand-context separation问题。

错误的例子(case 3 和 case 4)可以分为两类:比较误差和时间顺序误差。

6 Conclusion

本文的工作证明了“在解决代数词问题中,降低使用手工设计特征的高昂成本”的可能性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值