当前进度:
3.2.2 Multi-Head Attention Attention Is All You Need, page 4
知识点
-
基本架构:6层encoder,6层decoder。每层encoder内部两子层:多头注意力→前馈网络。两子层末尾包括残差连接、normalization(增强稳定性,减轻梯度消失、梯度爆炸问题)
-
decoder的mask attention
(上一output(前一个输出的词汇/字母/标记)+位置编码+self attention) + encoder输出 + 其他 →多头注意力→前馈网络。mask用于保证自回归(未来位置的权重设为负无穷)和填充标记(输出序列和输入不等长时填充空白)
-
English Constituency Parsing
关于英语句法结构分析(Constituency Parsing),有许多相关的论文。例如,这个网站12列出了69篇与句法结构分析相关的论文,包括一些最新的研究成果2。此外,还有一篇名为”CPTAM: Constituency Parse Tree Aggregation Method”的论文,该论文采用了真实性发现的思想,通过在没有基准真值的情况下估计各个解析器的可靠性,从而从不同的解析器中聚合句法结构树3。
对于中文句法结构分析,也有一些相关的研究。例如,有一篇名为”Joint Chinese Word Segmentation and Span-based Constituency Parsing”的论文,该论文提出了一种通过在解析树上为每个中文字符添加额外标签来进行联合中文词分割和基于跨度的句法结构分析的方法45。还有一篇名为”Dependency Parser for Chinese Constituent Parsing”的论文,该论文介绍了如何使用依存关系解析器进行中文句法结构分析6。
-
Attention
- Scaled Dot-Product Attention
-
什么是Scaled Dot-Product Attention
缩放点积注意力(Scaled Dot-Product Attention)是一种在自注意力机制(Self-Attention)中常用的技术,经常出现在深度学习模型中,特别是在Transformer模型中。自注意力机制用于分析输入序列中各元素之间的关系,它通过计算每个元素与其他元素的注意力权重来确定它们在模型中的重要性。
Scaled Dot-Product Attention的计算过程如下:
-
给定一组查询(Q)、一组键(K)、和一组数值(V)。
-
对查询和键进行点积操作,然后将结果除以一个缩放因子(通常是键的维度的平方根),以避免点积值过大。
Attention(Q, K) = Q * K^T / sqrt(d_k)
其中,d_k表示键的维度。
-
将上一步得到的点积值通过softmax函数进行归一化,得到注意力权重。
Attention(Q, K) = softmax( Q * K^T / sqrt(d_k) )
-
使用注意力权重对数值进行加权求和,以生成最终的输出:
Output = Attention(Q, K) * V
Scaled Dot-Product Attention具有一个缩放因子,这个缩放因子确保了点积的值在一定范围内,有助于控制注意力的稳定性和效果。这是因为点积的值会受到向量维度的影响,较大的维度可能导致点积值过大,难以有效训练。通过除以sqrt(d_k),可以将点积值的范围限制在一个合理的范围内。
Scaled Dot-Product Attention在Transformer模型中被广泛应用,用于处理输入序列的自注意力机制,以构建上下文感知的表示。这有助于模型在各种自然语言处理和序列建模任务中取得出色的性能,如机器翻译、文本生成、语言理解等。
-
-
qkv计算中key-value具体是什么
在自注意力(Self-Attention)机制中,Q(Query)、K(Key)、和V(Value)是用于计算注意力权重和上下文向量的重要部分。它们是来自输入序列的不同变换形式。
- Query (Q):Query是一个表示当前位置或元素的向量。它用于计算其他元素对当前位置的注意力权重。每个元素都有自己的Query向量,而Query的计算通常是通过将原始输入序列的一个元素(例如,词嵌入)与可学习的权重矩阵相乘得到的。
- Key (K):Key是另一个向量,它表示输入序列中每个元素的关键信息。Key向量用于衡量Query向量与其他元素之间的相似性。与Query一样,每个元素都有自己的Key向量,其计算也是通过将原始输入序列的元素与另一个可学习的权重矩阵相乘得到的。
- Value (V):Value是表示每个元素的数值信息的向量。它在计算注意力权重后,与权重相乘,用于生成最终的上下文表示。与Query和Key一样,每个元素都有自己的Value向量,其计算也是通过将原始输入序列的元素与另一个可学习的权重矩阵相乘得到的。
自注意力机制中,通过计算Query(Q)和Key(K)之间的点积(通常使用缩放的点积),然后将点积的结果通过softmax函数归一化,生成注意力权重。这些注意力权重决定了每个元素对于当前位置的贡献,而这些权重被用于对Value(V)进行加权求和,以生成最终的上下文表示。
在自注意力机制中,Q、K、V的计算是可学习的参数,它们经过神经网络的训练,以适应特定的任务和数据。这种方式允许模型根据输入数据动态地计算不同位置的Query、Key和Value,以捕捉输入序列中不同元素之间的关系。
-
为什么用点积
点积(Dot Product)作为自注意力机制中的计算方式,被用于计算注意力权重的原因有几个:
- 相似性度量:点积可以用来度量两个向量之间的相似性。在自注意力机制中,查询(Q)与键(K)之间的点积可以衡量它们之间的相似性,表示查询与不同键的匹配程度。较高的点积值表示更高的相似性,而较低的点积值表示较低的相似性。
- 方便的数学性质:点积在数学上非常方便,它可以高效地计算,尤其是在硬件加速的神经网络计算中。此外,点积的数学性质使得梯度计算相对简单,有助于模型的训练。
- 缩放因子:通过除以缩放因子,点积可以控制点积的范围,避免了点积值过大或过小。这个缩放因子通常是键的维度的平方根,它有助于稳定自注意力的计算。
- 并行计算:点积计算可以高度并行化,这意味着可以同时计算多个注意力权重,从而提高了计算效率。这对于深度学习模型的训练和推理来说是非常重要的,因为它可以加速模型的计算速度。
总之,点积作为自注意力机制中的相似性度量方式,以及其在数学计算、梯度计算、范围控制和并行计算方面的便利性,使其成为了一种常用的注意力计算方式。通过点积,模型可以确定输入序列中不同元素之间的关系,以便更好地理解上下文信息,有助于提高各种自然语言处理和序列建模任务的性能。
-
点积是如何表示相似性的
点积是一种用于表示向量之间相似性的方法,具体来说,点积可以用来衡量两个向量之间的夹角和方向关系。点积的值可以告诉我们两个向量在多大程度上指向相似的方向。
考虑两个向量A和B,它们的点积表示为A·B。点积的计算公式如下:
A·B = |A| * |B| * cos(θ)
其中:
- |A|表示向量A的模(或长度)。
- |B|表示向量B的模(或长度)。
- θ表示A和B之间的夹角。
点积的值由三个因素决定:
- 两个向量的模(长度):|A|和|B|,它们的大小决定了点积的绝对值。
- 夹角θ:两个向量之间的夹角,cos(θ)表示它们之间的方向关系。
点积的性质:
- 如果A和B之间的夹角θ接近0度,即它们指向相似的方向,那么cos(θ)接近1,点积A·B的值较大,表示它们相似度高。
- 如果A和B之间的夹角θ接近90度,即它们指向不同的方向,那么cos(θ)接近0,点积A·B的值较小,表示它们相似度低。
- 如果A和B之间的夹角θ大于90度,即它们指向相反的方向,那么cos(θ)为负值,点积A·B的值为负值,表示它们反向相似度。
因此,点积可以用来度量两个向量之间的相似性。当点积为正且接近1时,表示它们指向相似的方向;当点积为0时,表示它们之间没有明显的关联;当点积为负时,表示它们指向相反的方向。
在自注意力机制中,点积被用来计算查询向量与键向量之间的相似性,以确定注意力权重。更高的点积值表示更高的相似性,因此会增加查询对键的关注。这有助于模型捕捉输入序列中不同元素之间的关系,以更好地理解上下文信息。
-
Scaled Dot-Product Attention中计算QKV时,QK的点积的值是0到1吗
在Scaled Dot-Product Attention中,点积(QK)的值通常不会被强制限制在0到1之间。点积(QK)的值是由两个向量(Q和K)之间的相似性来决定的,它可以是任何实数值,包括正数、负数和零。
具体来说,点积(QK)的值会受到Q和K之间的夹角以及它们的模(长度)的影响。当Q和K之间的夹角接近0度时,点积(QK)的值会接近正数,表示它们指向相似的方向,这通常被认为是高相似性。当夹角接近90度时,点积(QK)的值接近0,表示它们指向不同的方向,这被认为是低相似性。当夹角大于90度时,点积(QK)的值为负数,表示它们指向相反的方向,也被认为是低相似性。
在Scaled Dot-Product Attention中,点积(QK)的值经常会被除以一个缩放因子,通常是键的维度的平方根(sqrt(d_k)),以避免点积值过大。这个缩放因子有助于稳定计算,并控制点积值的范围,但它不会将点积的值限制在0到1之间。注意力权重的计算会在点积值上应用softmax函数,将点积值转化为概率分布,以确保权重之和为1。
所以,点积(QK)的值在Scaled Dot-Product Attention中可以是任何实数值,用于度量Q和K之间的相似性,而不是被限制在0到1之间。
-
- Scaled Dot-Product Attention