问题定义:
= {, , …, } , 句子 的长度为,
= {, , …, } , 句子 的长度为
目的是学习一个分类器 用于判断两个句子和的关系,即 y = (, )
Input Embedding:
(1)Word Embedding
pre-trained word embedding(预训练的词向量)
character features(单词中的字母序列用CNN+maxpooling处理)
syntactical features(binary exact match feature, binary antonym feature)这两个特征不是太清楚,待解决问题
这些特征串接后传入一个two-layer highway network进行处理,得到:
句子 a 的表示 : { | i = 1, 2, …, } = { , , …, }
句子 b 的表示 : { | j = 1, 2, …, } = { , , …, }
(2)Attention Stack-GRU Unit
先来理解下Stack-GRU, 其实相当于多层GRU堆叠,假设有层GRU堆叠,则让表示 第层 GRU
图(B)可以清晰地知道每层GRU的输入是:(1) :同层前一时刻的输出,(2) : 前一层同时刻GRU的输出,(3) : 前一层(-1层)同时刻GRU的输入也作为第层的输入
经过第 层(最后一层ASG)处理后的结果是:
句子 a 中每个词的表示:{ | i = 1, 2, …, }
句子 b 中每个词的表示:{ | j = 1, 2, …, }
为了以一种综合的方式将所有信息收集到一个向量中,并且考虑到不同词对句子语义的贡献不同,利用attention 得到句子的向量表示:
公式(3)中 就是句子 a 经过attention处理后得到的向量表示,同理,我们可以得到句子 b 的向量表示是
Dynamic Re-read Mechanism:
虽然通过ASG可以得到句子 a 和 句子 b 的向量表示,为了更深入地理解句子,考虑了已学习到信息不同应该关注的词就会有变化,本文应用了Dynamic Re-read(DRr) Mechanism, DRr根据已经学到的信息以及以及前一步生成的信息去挑选重要的词(这段文字没看到没关系)
我们以句子 a 为例,了解 DRr 学习句子 a 的向量表示:
其中公式(4)第一个公式的中的具体计算过程是:
由以上公式的思考:
(1)在求 的过程中,注意公式(5)中 的计算可是,并不是 按照句子a 中词的出现顺序进行的,而是在计算的每一步(一共1— 步),根据attention的计算,从 [, , …, ]中挑选出的
(2)公式(4)中的 是GRU 编码后的结果,并不对应句子中的词 , 是打乱句子 a 中词的顺序进行了编码
(3) = ,注意这里的下表是 “T” ,其实就是说公式(4)中的前两个公式循环执行 T 次,最后第T次GRU的计算结果, 对句子 a 来说 T 是 ,对句子 b 而言,T是
(4)注意到:公式(5)中 j 的选取是不可导的,即没办法后向传播,于是公式(5)更改为公式(6)
注意到 的取值
Label Prediction:
attention Stack-GRU Unit处理句子后的的句子表示:
句子 a 的表示 :
句子 b 的表示 :
Dynamic Re-read Mechanism处理句子后的句子表示:
句子 a 的动态表示:
句子 b 的动态表示:
这一部分(Label Prediction)由三部分组成:
(1)matching
concatenation : 串接能够保留所有的信息,公式(7)中的前两个公式都是串接而成
the element-wise product ( , ) : 对两个句子 a 和 句子 b 相似性的度量
their difference ( - , - ) : capture the degree of distributional inclusion in each dimension
(2)fusion && classification
公式(7)中得到的 , 经过 fusion gate的变换(也即是公式(8)中的前两个公式)最后送入一个MLP对两个句子进行分类
Model Learning
这部分涉及到的就是模型的训练工作了,损失函数有四部分组成,除了范式,是最终分类结果的交叉熵,是与标注答案(true label)的交叉熵