A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification

记录一下这篇论文。

网络结构如下:

A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification

有3个阶段:第一个阶段是使用CNN生成短语向量,第二个阶段结合短语向量和词向量,并使用软对齐的RNN来生成考虑词顺序的句向量,第三个阶段使用句向量来做类别预测。

1. CNN句向量

A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification是句子中第i个单词对应的k维的词向量,长度为N的句子可以看作列方向上的词向量的拼接。

使用一系列卷积核来学习不同长度的短语表示。

A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification

A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification表示第i步的短语向量,包含了所有以A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification结尾的短语。

(短语向量的作用就是后面加入到生成句子状态向量时的输入中)

2. 软对齐RNN

使用第i个词更新的state来表示一个d维的向量A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification,句子状态向量

在GRU的第i步,GRU cell使用更新门Z来遗忘句向量A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification的部分信息,并使用重置门R来更新A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification。GRU cells是由A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification

A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification来控制的。

一般GRU公式:(其中ht-1就相当于这边的Si-1)

A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification

在我们的网络结构中,由CNN生成的短语向量A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification也作为GRU RNN的输入。

A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification

如何理解在输入中加入A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification

一种理解方法是认为模型尝试基于目前的句子状态向量A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification来决定由词A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification生成的哪个短语比较合理,就是会根据A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification来更新A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification

在上图中,单词guys,权重函数根据这个短语向量和句子状态向量的相似性来决定 "couple of crazy guys" "of crazy guys" "crazy guys"这些短语向量的权重。为了计算相似度,短语向量A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification(以第i个单词结尾的长度为l的短语对应的向量)和句子状态向量A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification被映射到一个新的向量空间,使用点乘来表示相似度,相似度表示为A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification,叫做注意力得分(attention scoring)。A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification是第i个单词对应所有的短语向量的注意力得分。

A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification

如果对A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification使用softmax表示神经网络必须关注输入的某一部分,但是在我们的网络结构中,这种假设是不对的,因为短语信息在训练RNN每一步的时候不一定需要。例如“Then one day, completely out of the blue, I had a letter from her.” 以"blue"结尾的短语是需要的,但是以“I”结尾生成的短语是不需要的,所以,动态加入或忽略短语向量的框架是必要的。

使用什么算法来计算短语向量的权重?

使用一系列GRU cell,输入是之前的权重,其他短语的权重,注意力得分作为输入,来计算每个短语向量最终的权重。初衷是想要拼接注意力得分,之前的权重和其他短语的权重来确定A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification的权重(为什么使用三个信息来确定权重?),使用RNN可以存储过去的信息,并考虑当前的权重。为了计算A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification,如果A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification还没有计算,使用A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification作为GRU的输入。

把这个阶段叫做attention gating。最后得到的输出是对应A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification的权重A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification

(attention gate的作用是为了更新A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification,从而动态加入或忽略短语向量吗?可是如果单纯使用attention score,也可以学习使某些attention score=0来得到忽略某些短语向量的作用呀)

A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification

其中,A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification表示L中去除l外的其他长度的短语对应的注意力得分。

latest表示i或者i-1,如果A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification已经计算了,那latest就是i,否则就是i-1

[A,B]表示A和B的水平方向的拼接。

(以下维度的说明是我自己的理解,不知道是否正确,望探讨)

A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification维度为(A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification-2+1)   A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification维度为(A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification-1-2+1)  A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification维度为1,所以A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification的维度为(A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification-2+1+A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification-1-2+1+1)= 2*A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification-2

A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification的维度取决于A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification

A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification的维度是 [A Hybrid CNN-RNN Alignment Model for Phrase-Aware Sentence Classification-2+1, CNN生成的短语向量的维度]

3. 分类层和正则话

使用所有时间点的句子状态向量的平均值作为最终的句向量,使用softmax将句向量映射到K维的概率,K是类别个数,使用概率最大的类作为类别的预测值。

在使用RNN的时候,作者使用了dropout来进行正则化。(TODO:RNN中的dropout)

 

其他:

为什么使用这种网络结构?

CNN可以发现小范围内的语法,但没法解决词顺序敏感的问题。RNN可以保留历史词信息,但并不明确由多少短语信息并利用,作者的这种网络结构可以同时解决CNN和RNN单独使用时存在的问题。

 

自己的想法:

1. 感觉是在生成句子状态向量时又加强考虑了一遍这个词前面的几个词,就是输入中增加了Ci

2. 为什么使用CNN生成短语向量时,不考虑当前词后面的词?是因为在生成句向量的时候是双向GRU,正序的时候考虑这个词之前的,倒序的时候考虑这个词后面的吗?

3. attention gate的作用不太理解