任务定义:输入前提文本(premise)和假设文本(hypothesis),预测假设文本和前提文本之间的关系——蕴含、矛盾或中立。
现有的模型计算量非常庞大,模型的参数非常多。与现有的方法相比,该方法仅依赖于对齐方式,并且对于输入文本完全是可分解的。
模型架构如上图所示,输入两个句子,句子中的每个词都用一个embedding向量表示,首先基于neural attention创建一个软对齐矩阵;然后通过软对齐将整个task分解成可以独立解决的子问题;最终,这些子问题的结果被整合起来从而预测最终的分类结果。除此之外,还应用了intra-sentence attention机制,以在对其步骤之前为模型赋予更丰富的子结构编码。
该方法完成了与普通LSTM编码器相同的工作,同时可在整个句子长度上进行平均并行化,这可以在低延迟设置中实现显著的加速。该方法也在SNLI数据集上实现了SOTA。
训练数据由三个部分组成: { a ( n ) , b ( n ) , y ( n ) } n = 1 N \left\{\mathbf{a}^{(n)}, \mathbf{b}^{(n)}, \mathbf{y}^{(n)}\right\}_{n=1}^{N} {a(n),b(n),y(n)}n=1N,a和b分别代表前提文本和假设文本,y是编码输出标签的向量,C是输出类别的数量,所以y是一个C维的0,1向量。训练目标是根据输入的a和b预测y。
核心模型有三个组成成分,它们被一起训练:
- Attend:用attention机制软对齐a和b中的元素,并将问题分解成对对齐的子短语之间的比较。首先通过 e i j : = F ′ ( a ˉ i , b ˉ j ) : = F ( a ˉ i ) T F ( b ˉ j ) e_{i j}:=F^{\prime}\left(\bar{a}_{i}, \bar{b}_{j}\right):=F\left(\bar{a}_{i}\right)^{T} F\left(\bar{b}_{j}\right) eij:=F′(aˉi,bˉj):=F(aˉi)TF(bˉj)获得由函数F计算的非标准化注意力权重,其中,F是带有ReLU激活的前馈神经网络。注意力权重被标准化为: β i : = ∑ j = 1 ℓ b exp ( e i j ) ∑ k = 1 ℓ b exp ( e i k ) b ˉ j \beta_{i}:=\sum_{j=1}^{\ell_{b}} \frac{\exp \left(e_{i j}\right)}{\sum_{k=1}^{\ell_{b}} \exp \left(e_{i k}\right)} \bar{b}_{j} βi:=∑j=1ℓb∑k=1ℓbexp(eik)exp(eij)bˉj和 α j : = ∑ i = 1 ℓ a exp ( e i j ) ∑ k = 1 ℓ a exp ( e k j ) a ˉ i \alpha_{j}:=\sum_{i=1}^{\ell_{a}} \frac{\exp \left(e_{i j}\right)}{\sum_{k=1}^{\ell_{a}} \exp \left(e_{k j}\right)} \bar{a}_{i} αj:=∑i=1ℓa∑k=1ℓaexp(ekj)exp(eij)aˉi,这里的 β i \beta_{i} βi是 b ˉ \bar{b} bˉ中与 a ˉ i \bar{a}_{i} aˉi对齐的子短语。
- Compare:分别比较每一对对齐的子短语,也就是句子a中的一个词与句子b中这个词对应的加权词向量进行比较。即:
v 1 , i : = G ( [ a ˉ i , β i ] ) ∀ i ∈ [ 1 , … , ℓ a ] v 2 , j : = G ( [ b ˉ j , α j ] ) ∀ j ∈ [ 1 , … , ℓ b ] \begin{array}{ll}\mathbf{v}_{1, i}:=G\left(\left[\bar{a}_{i}, \beta_{i}\right]\right) & \forall i \in\left[1, \ldots, \ell_{a}\right] \\ \mathbf{v}_{2, j}:=G\left(\left[\bar{b}_{j}, \alpha_{j}\right]\right) & \forall j \in\left[1, \ldots, \ell_{b}\right]\end{array} v1,i:=G([aˉi,βi])v2,j:=G([bˉj,αj])∀i∈[1,…,ℓa]∀j∈[1,…,ℓb] - Aggregate:整合之前得到的结果,并对最终的label进行预测。首先通过相加对之前得到的两个比较向量的集合进行整合,即 v 1 = ∑ i = 1 ℓ a v 1 , i \mathbf{v}_{1}=\sum_{i=1}^{\ell_{a}} \mathbf{v}_{1, i} v1=∑i=1ℓav1,i以及 v 2 = ∑ j = 1 ℓ b v 2 , j \mathbf{v}_{2}=\sum_{j=1}^{\ell_{b}} \mathbf{v}_{2, j} v2=∑j=1ℓbv2,j;然后将求和的结果输入前馈神经网络进行分类: y ^ = H ( [ v 1 , v 2 ] ) \hat{\mathbf{y}}=H\left(\left[\mathbf{v}_{1}, \mathbf{v}_{2}\right]\right) y^=H([v1,v2])。
在训练过程中,使用多分类交叉熵损失作为损失函数: L ( θ F , θ G , θ H ) = 1 N ∑ n = 1 N ∑ c = 1 C y c ( n ) log exp ( y ^ c ) ∑ c ′ = 1 C exp ( y ^ c ′ ) L\left(\theta_{F}, \theta_{G}, \theta_{H}\right)=\frac{1}{N} \sum_{n=1}^{N} \sum_{c=1}^{C} y_{c}^{(n)} \log \frac{\exp \left(\hat{y}_{c}\right)}{\sum_{c^{\prime}=1}^{C} \exp \left(\hat{y}_{c^{\prime}}\right)} L(θF,θG,θH)=N1∑n=1N∑c=1Cyc(n)log∑c′=1Cexp(y^c′)exp(y^c)。
参考资料:A Decomposable Attention Model for Natural Language Inference