Compact Multi-Head Self-Attention 低秩因子分解

paperhttps://arxiv.org/pdf/1912.00835.pdf

Proposed Model

首先对文档(评论或新闻文章)进行标记,然后通过查找将其转换为嵌入到预先训练好的嵌入矩阵中。每个标记的嵌入通过bi-GRU语句编码器进行编码,以获得该语句中每个单词的上下文注释。LAMA的注意机制通过计算单词级上下文向量对这些单词的隐藏表示的对齐分数,从而获得这些单词上的多个注意分布。由多个注意分布的分数加权的词表示形式的和,形成一个矩阵句嵌入。然后,矩阵嵌入被压平并传递到下游的层(根据任务的不同,可以是分类器,也可以是编码器)。由于我们将文本中的所有标记建模在一起,没有使用任何层次结构,也没有失去概括性,因此在本文的其余部分中可以互换使用句子和文档。大写黑体字母表示矩阵,小写黑体字母表示向量,小写字母表示标量。

Sequence Encoder

我们使用GRU [1] RNN作为序列编码器。GRU使用一个门控机制来跟踪序列的状态。有两种类型的门:重置门r_{t}和更新门z_{t}。更新门决定保留多少过去的信息和添加多少新信息。在时刻t, GRU计算其新状态为:

                                                    

更新门z_{t}更新为:

                                                    

                                                   

                                                   

                                                   

Single-Head Attention

为了减轻从GRUs中记忆长期依赖关系的负担,我们使用全局注意机制[17],在该机制中,通过关注句子中的所有单词来计算句子表示。设h_{t}为对应于单词x_{t}的注释。首先利用单层多层感知器(MLP)对h_{t}进行变换,得到ht的隐式表示。我们假设W_{w}b_{w}上的高斯先验均值为0,标准差为0.1。

                                                  

表1:重要的符号。大写黑体字母表示矩阵,小写黑体字母表示向量,小写字母表示标量

                                                

接下来,为了计算单词在当前上下文中的重要性,我们计算它与全局上下文向量c的相关性。

                                                  

其中为训练中随机初始化并与其他参数联合学习的双线性投影矩阵。h是GRU隐藏状态的维数,u_{t}和c都是2h×1维数,因为我们使用的是bi-GRU。嵌入词的平均值提供了一个很好的句子整体上下文的初始近似值。初始化,然后在训练中更新。我们使用双线性模型,因为它们更有效地学习两两互动。然后使用softmax函数计算单词x_{t}的注意权重,其中对文档中的所有单词求和。

                                              

LAMA

上面的注意力分配通常集中在文档的特定组件上,比如一组特殊的触发词。因此,它应该反映文档中语义的一个方面或组件。这种类型的注意力对较小的文本非常有用,比如tweet或简短的评论。对于较大的评审,可以有多个方面来描述该评审。为此,我们介绍了一种计算多个注意头的新方法,它可以捕获不同的方面。

假设从一个句子中提取m个方面,我们需要每个单词隐藏表示u_{t}和上下文向量c之间的m个对齐分数。为了得到一个m维输出f_{t},我们需要学习W = [W_{1},…,W_{m}]∈R^{m*2h*2h},如前文所述。尽管这种策略可能有效地捕获每个方面的成对交互,但它也引入了大量可能导致过拟合的参数以及对于较大的m或较大的h,计算量较大。为了解决这一问题,可以采用低秩双线性方法减少矩阵W的秩,减少参数的个数[12,28]。考虑一个方面;将式3.8中的双线性投影矩阵Wi分解为两个低秩矩阵P & Q。

图1:图中描述了该模型的结构示意图及其主要组件,包括句子编码器、提出的多头部注意机制LAMA、结构化句子嵌入以及最后的MLP分类器。对单个词进行了注意计算。

                                               

未完待续。。。

Hyperparameters

我们使用的字嵌入大小为100。利用word2vec对嵌入矩阵进行预处理。所有出现次数少于5次的单词将被丢弃。GRU隐藏状态设置为h = 50, MLP隐藏状态设置为512,在隐藏层添加0.4 dropout。我们使用32的批量大小进行训练,初始学习率为0.05。对于提前停止我们使用patience= 5。

发布了104 篇原创文章 · 获赞 97 · 访问量 26万+

猜你喜欢

转载自blog.csdn.net/weixin_37947156/article/details/104062386