在自然语言处理领域,如何准确而有效地理解句子的含义一直是研究者们追求的目标。随着深度学习技术的不断发展,研究者们开始关注如何通过学习语义嵌入来表示句子。A Structured Self-Attentive Sentence Embedding 提出了一种新的结构化自注意力句子嵌入模型,旨在通过引入自注意力机制来提高句子嵌入的精度和可解释性。
概述
A Structured Self-Attentive Sentence Embedding 提出了一种利用自注意力提取句子嵌入的新模型。文中建议使用二维矩阵来表示句子,来取代传统的一维向量,矩阵的每一行都出现在句子的不同部分。并且还为模型提出了一种自注意力机制和特殊的正则化项。生成的嵌入是可解释的,可以通过可视化了解句子的哪些部分被编码到嵌入中。
论文的观点:
- 在递归模型的所有时间步骤中携带语义是相对困难和不必要的。
- 所提出的自注意机制允许将句子的不同方面提取为多个向量表示。
- 在句子嵌入模型中,注意力是在 LSTM 层的顶部执行的。这使得在没有额外输入的情况下可以使用注意力。此外,由于它可以直接访问以前时间步骤中的隐藏表示,它减轻了 LSTM 的一些长期记忆负担。
注意力机制
简单地说,注意力是一种神经网络对输入文本序列的特定部分给予"注意"或关注的机制,给出了更多的上下文信息。这就像人类在文本文档中查找问题答案时注意某些单词或想法一样。
在神经网络模型中,注意力机制通常用于 LSTM 或 CNN 层之上,通过提供更多信息或上下文来指导句子嵌入的提取。考虑基于内存网络的问答系统。在这样的系统中,查询或问题向量提供必要的额外信息来关注可用的内存向量,以确定回答问题的最合适的内存向量。
但是,对于其他一些任务,如情感分类或情感分析,注意力机制并不直接适用,因为模型只给出一个句子作为输入,没有额外的信息。在这种情况下,最常见的方法是使用循环架构,并在所有时间步长中添加最大池化或平均步长,或者只在最后一个时间步长中选取隐藏表示作为编码嵌入。
核心方法
自注意力机制
文中的句子嵌入模型由两部分组成:
- 双向 LSTM
- 自注意力机制
注意力机制为 LSTM 隐藏状态提供了一组权重向量。这些权重与 LSTM 隐藏状态相乘,并将得到的加权 LSTM 隐藏状态相加以生成句子的嵌入。
在"我喜欢你这样"这句话中,"我"和"你"这两个标记可能无助于决定其情绪。相反,"我"和"喜欢"的组合让我们清楚地了解句子的情绪。在这种情况下,我们很少关注前者,而非常关注后者。通过引入权重向量α
,我们可以让算法调整单词组合的重要性。
假设第 i 句话中的 T 标记嵌入在 H_{i1},...,H_{iT}
中,则嵌入的标记 H_{io}
对另一个嵌入标记 H_{ip}
的关注量(汇总标记时的相对重要性)为 α_{op}
。
假设第i个句子中的T个标记嵌入到H_{i1},...,H_{iT}中,嵌入的标记H_{io}对另一个嵌入的标记H_2{ip}的关注量(当标记被总结时的相对重要性)将是α_{op}。
架构实现
自注意力机制应用于双向 LSTM 的隐藏层,如图所示:
上图显示了句子嵌入模型与用于情感分析的完全连接和 softmax 层相结合(A)。句子嵌入 M 被计算为双向 LSTM(h~1~,...,h~n~)的隐藏状态的多重加权和,其中总和权重(A~i1~ ,..., A~in~)以(b)所示的方式计算。蓝色代表隐藏表示,红色代表权重、注释或输入/输出。
双向 LSTM(BiLSTM)
现在有一个包含 n 个单词的语句,每个单词都用维度为 d 的词向量表示。因此,整个句子 S 可以可视化为大小为 n x d 的二维矩阵,其中 t ^th^ 行表示在序列中嵌入 t ^th^ 字的词 w~b~ 。
词向量本身是单词在潜在空间中的良好表示,但不是语句的良好表示,因为它们不捕获任何语义或上下文。因此,为了在单个句子中的相邻单词之间获得一些依赖关系,使用双向 LSTM 来处理句子。BiLSTM 将前一个时间步长 h ~t-1~ 的 d 维词向量 w ~t~ 和 u 维隐藏状态作为输入,并给出 u 维隐藏上下文向量 h ~t~ 作为输出。
其中 h ~tf~ 表示时间步长 t 的正向 LSTM 的隐藏状态,h ~tb~ 表示时间步长 t 的后向 LSTM 的隐藏状态。现在我们将两个向量 h ~tf~ 和 h ~tb~ 连接起来,得到一个新的隐藏状态向量 h ~t~ ,其大小为 2u。因此,对于所有 n 个时间步长,我们将得到一个大小为 n x 2u 的向量 H。
自注意力机制
由于有一个可变长度的输入文本序列,并且想将其编码为固定大小的嵌入,在 H 中执行 n 个 LSTM 隐藏向量的线性组合。为了计算注意力权重,我们将 H 中的所有 LSTM 隐藏状态作为输入,并输出注意力权重 a 的向量。
其中,W ~s1~ 是大小为 d x 2u 的权重矩阵,w ~s2~ 是大小为 d 的单个向量,d ~a a a~ 是可调超参数。H ^T^ 将是一个 2u x n 矩阵与 W ~s1~ 相乘将得到一个 d ~a~ x n 大小的矩阵。然后,对矩阵中的每个值应用 tanh 激活函数。最后,与 w ~s2~ 相乘将得到一个 n 维向量,在其上应用 softmax 来获得 n 个值的概率分布。这些值的总和为 1,充当注意力权重。
需要注意的是,这种向量表示只关注句子的特定方面或组成部分,例如一组特殊的相关单词或短语。由于一个语句中可以有多个组件,它们共同构成了整个句子的整体语义,尤其是对于长句子,我们需要多个 m,每个 m 都专注于句子的不同部分。因此要多次进行关注。如果想提取语句的不同方面,可以将 w ~s2~ 扩展为 r x d ~a~ 矩阵,该矩阵表示为 w ~s2~ ,生成的注释向量 a 将成为注释矩阵 A。
然后,嵌入向量 m 成为 r x 2u 嵌入矩阵 M。为了计算 r 加权和,我们将注释矩阵 A 和 LSTM 隐藏状态 H 相乘,生成的矩阵是嵌入 M 的句子。
惩罚
为了提取语句的各个方面,执行多个注意力跳跃以生成 r 个不同的注意力权重向量,构成注意力矩阵 A,但是注意力机制可能面临冗余问题。如果一两个方面比其他方面更占主导地位,那么注意力机制将只关注它们,并最终生成一个具有相似注意力权重行的矩阵。为了避免这个问题,需要一个惩罚项来强制注意力向量的多样性,从而在 M 中生成不同的总和嵌入 m,从而捕获句子的不同方面。
其中 ||•|| ~F~ 代表矩阵的 Frobenius 范数。这个惩罚项 P 将乘以一个系数,将其与原始损失一起最小化。
总结
自注意力机制可以通过将每个位置的表示进行加权平均来生成全局表示,这有助于提高模型的泛化能力。在自然语言处理领域中,自注意力机制已经被广泛应用于各种任务,如机器翻译、文本分类、情感分析等。它被认为是实现序列数据建模的关键技术之一,可以有效地提高模型的性能和泛化能力。