ABCNN 学习笔记

介绍

论文地址

ABCNN是将注意力机制应用在卷积网络中的模型,在 answer selection(AS)、paraphrase identification(PI)和textual entailment(TE)等领域有很大价值。文章指出,之前的模型大多对两个要匹配的句子提取语义时,都不会考虑句子间的影响,而是单独提取特征,而ABCNN在编码句子的时候使用注意力机制考虑句子间的相互影响。

作者介绍了基础的BCNN模型,并分别讨论了三种ABCNN模型。

下表中,\((s_0, s_1^+)\)为正确的配对,\((s_0,s_2^-)\)为错误的。

\(s_0\) \(s_1^+\) \(s_2^-\)
\(\textrm{AS}\) how much did Waterboy gross? the movie earned $161.5 million this was Jerry Reed’s final film appearance
\(\textrm{PI}\) she struck a deal with RH to pen a book today she signed a contract with RH to write a book she denied today that she struck a deal with RH
\(\textrm{TE}\) an ice skating rink placed outdoors is full of people a lot of people are in an ice skating park an ice skating rink placed indoors is full of people

BCNN

Basic Bi-CNN(BCNN)是基础的模型,不涉及到注意力。模型中的参数见下表。

在BCNN中,主要有输入层、卷积层、池化层、输出层。

输入层

模型使用时,将句子长度补到最大长度\(s = \max_i length_i = \max \{\text{length of }s_0, \text{length of }s_1\}\),但是图示中,为了能够更清楚的展示模型是如何运作的,将句子长度设为5和7。

每一个单词经过编码后为\(\mathbb{R}^{d_0}\),句子则会变成\(\mathbb{R}^{d_0 \times s}\)。其中,句子方向为列方向,单词的表示维度为行。

卷积层

图中表示的卷积层为\(\mathbb{R}^{d_0 \times w},w=3\),叠加\(d_1\)个,就会得到卷积层的输出,此时列方向长度\(s + w - 1\)。卷积时设置\(v_j = 0,j < 1 \text{ or } j > s\)。对于第\(i\)个单词,\(c_i\)为它的向量表示,卷积层输出为

\[p_i = \tanh (W \cdot c_i + b) \]

\(W\)为卷积核的集合。

池化层

经过卷积层,数据已经可以从单词粒度表示到词语(phrase)了。

这里的平均池化层有两种,一种应用在最后一层,最后一层输出层之前的池化都为另一种。

w-ap

这种池化层对应模型图中的w-ap,池化层的步长为1,跨度为\(w\),这样就会将输入向量的列长度转换回句子长度\(s\),所以,这种池化层搭配上面的卷积层可以无限叠加,直到提取出高抽象度的语义。

all-ap

而all-ap池化层是在输出层前的最后一步,在列方向上求一次平均,将向量转换为\(d_1\)一个维度。

输出层

输出层一般是一个logistic regression,应该根据具体任务进行设计。

作者发现,如果将不同卷积-池化层的输出都传递给output layer,效果会更好,因为这种方式考虑了不同的级别上的语义。

ABCNN

作者介绍了三种的ABCNN模型,并解释了每种注意力机制的原理,三种模型如图。

ABCNN-1

模型如(a)所示。卷积层的输入,由之前的 feature map,变成了 feature map 和 attention feature map 的加权结果,而后者是由注意力矩阵通过两个学习出的矩阵\(W_1\)\(W_2\)得来的,下面说一说这个注意力矩阵\(A\)

注意力矩阵\(A\)是考虑到两个句子的feature map 的。我们称第一个句子的特征矩阵每一列为第一个句子的一个unit,第二个句子特征矩阵的每一列为第二个句子的一个unit。\(A \in \mathbb{R}^{len_1 \times len_2}\),注意力矩阵的每一行可以表示为与第一个句子的每一个unit相关,每一列与第二个句子的每一个unit相关。

\(F_{i,r} \in \mathbb{R}^{d \times s},i\in \{ 0, 1 \}\)为representation feature map,注意力矩阵可以这样计算:

\[A_{i,j} = \text{match-score}(F_{0,r}[:, i], F_{1, r}[:, j]) \]

而attention feature map:

\[F_{0,a} = W_0 \cdot A^T,F_{1,a} = W_1 \cdot A \]

作者说,match-score取\(\frac{1}{1 + |x - y|}\)效果很好。

ABCNN-2

第二种ABCNN的注意力是放在池化层的,不再使用平均池化,而是加权的,权重和注意力机制有关。

注意力矩阵\(A \in \mathbb{R}^{len_1 \times len_2}\),每一行都和第一个句子的一个unit相关,每一列都和第二个句子的unit的相关。计算时,第一个句子的池化的权重系数为\(A\)的列方向和,第二个句子用行方向和,设\(F_{i, r}^c\)为第\(i\)个句子的卷积层输出,\(F_{i,r}^p\)为池化输出,如下式

\[F_{i,r}^p[:, j] = \sum_{k=j:j+w} a_{i,k}F_{i,r}^c[:, k] \]

其中,\(a_{0,j} = \sum A[j,:],a_{1,j} = \sum A[:, j]\)

我们可以注意到几点区别。

  • ABCNN-1在卷积层添加注意力,ABCNN-2在池化层,相比较而言,在池化层的影响更大,即第二种方式可以在更大层面上影响句子的语义。
  • ABCNN-1相比ABCNN-2多了两个将representation feature map转化为 attention feature map 的矩阵,所以参数更多。

ABCNN-3

通过研究前两种模型,很容易产生将二者融合起来的想法。

ABCNN-3就是将前两种做法融合起来,在词层面、短语层面都有很好的表示。

posted @ 2020-06-24 15:31  TABball  阅读(603)  评论(0编辑  收藏  举报