| 第14行: |
第14行: |
| | 具体的步骤为<ref>Han, K. ''et al.'' A Survey on Vision Transformer. ''IEEE Transactions on Pattern Analysis and Machine Intelligence'' '''45''', 87-110, doi:10.1109/TPAMI.2022.3152247 (2023).</ref><ref name=":1">Vaswani, A. ''et al.'' Attention Is All You Need. ''ADVANCES IN NEURAL INFORMATION PROCESSING SYSTEMS 30 (NIPS 2017)'' Vol. 30 (2017).</ref>: | | 具体的步骤为<ref>Han, K. ''et al.'' A Survey on Vision Transformer. ''IEEE Transactions on Pattern Analysis and Machine Intelligence'' '''45''', 87-110, doi:10.1109/TPAMI.2022.3152247 (2023).</ref><ref name=":1">Vaswani, A. ''et al.'' Attention Is All You Need. ''ADVANCES IN NEURAL INFORMATION PROCESSING SYSTEMS 30 (NIPS 2017)'' Vol. 30 (2017).</ref>: |
| | | | |
| − | ==== 1.查询 (Query), 键(Key), 值 (Value) 的生成 ==== | + | ==== 查询 (Query), 键(Key), 值 (Value) 的生成 ==== |
| | 将输入序列转化形成的嵌入向量(可以是词向量,也可以是词向量加上位置编码向量)分别与3个不同的可学习权重矩阵W(Q), W(K), W(V)相乘生成Q, K, V向量。其中Q, K向量的维度为d(k),V向量的维度为d(v)。 | | 将输入序列转化形成的嵌入向量(可以是词向量,也可以是词向量加上位置编码向量)分别与3个不同的可学习权重矩阵W(Q), W(K), W(V)相乘生成Q, K, V向量。其中Q, K向量的维度为d(k),V向量的维度为d(v)。 |
| | | | |
| − | ==== 2.注意力分数矩阵 ==== | + | ==== 注意力分数矩阵 ==== |
| | 将Q向量与所有K向量点乘(matrix multiplication, MatMul)得到注意力分数矩阵。注意实际应用中,如模型在生成第i个词时,只能依赖目标序列的前 i-1 个词,而不能看到目标词。通过添加 mask,可以将目标序列中当前位置之后的词隐藏起来,防止模型在生成过程中提前获取到未来的信息,从而保证模型在训练过程中的自回归特性,使其能够更好地模拟实际的序列生成过程。 | | 将Q向量与所有K向量点乘(matrix multiplication, MatMul)得到注意力分数矩阵。注意实际应用中,如模型在生成第i个词时,只能依赖目标序列的前 i-1 个词,而不能看到目标词。通过添加 mask,可以将目标序列中当前位置之后的词隐藏起来,防止模型在生成过程中提前获取到未来的信息,从而保证模型在训练过程中的自回归特性,使其能够更好地模拟实际的序列生成过程。 |
| | | | |
| − | ==== 3.归一化点乘矩阵 ==== | + | ==== 归一化点乘矩阵 ==== |
| | 由于点乘操作,S值可能过大或过小,在归一化之前通常需要除以一个缩放因子来稳定梯度。之后应用Softmax 函数对注意力分数矩阵进行归一化。 | | 由于点乘操作,S值可能过大或过小,在归一化之前通常需要除以一个缩放因子来稳定梯度。之后应用Softmax 函数对注意力分数矩阵进行归一化。 |
| | | | |
| − | ==== 4.加权输出 ==== | + | ==== 加权输出 ==== |
| | 使用归一化后的注意力分数对V向量进行加权求和,作为自注意力机制的输出。整体流程可以概括为缩放点乘注意力 (Scaled dot-product attention),用公式表示为: | | 使用归一化后的注意力分数对V向量进行加权求和,作为自注意力机制的输出。整体流程可以概括为缩放点乘注意力 (Scaled dot-product attention),用公式表示为: |
| | [[文件:公式2.png|居中|缩略图]] | | [[文件:公式2.png|居中|缩略图]] |
| 第46行: |
第46行: |
| | [[文件:多头注意力机制.png|缩略图|多头注意力机制<ref name=":2">Zhang, Y. ''et al.'' Attention is all you need: utilizing attention in AI-enabled drug discovery. ''Briefings in Bioinformatics'' '''25''', bbad467, doi:10.1093/bib/bbad467 (2024).</ref>|替代=]]多头注意力是利用多个查询,来平行地计算从输入信息中选取多个信息。每个注意力关注输入信息的不同部分。它将输入序列的表示拆分成多个子空间(头),然后在每个子空间内独立地计算注意力权重,最后将各个子空间的结果拼接起来。多头注意力机制使得模型可以在不同的表示子空间中捕获到不同的上下文信息,增强对复杂数据内在结构的建模能力<ref name=":1" /><ref name=":2" /><ref>Voita, E. ''et al.'' Analyzing Multi-Head Self-Attention: Specialized Heads Do the Heavy Lifting, the Rest Can Be Pruned. ''57TH ANNUAL MEETING OF THE ASSOCIATION FOR COMPUTATIONAL LINGUISTICS (ACL 2019)'' 5797-5808 (2019).</ref>。具体流程如下: | | [[文件:多头注意力机制.png|缩略图|多头注意力机制<ref name=":2">Zhang, Y. ''et al.'' Attention is all you need: utilizing attention in AI-enabled drug discovery. ''Briefings in Bioinformatics'' '''25''', bbad467, doi:10.1093/bib/bbad467 (2024).</ref>|替代=]]多头注意力是利用多个查询,来平行地计算从输入信息中选取多个信息。每个注意力关注输入信息的不同部分。它将输入序列的表示拆分成多个子空间(头),然后在每个子空间内独立地计算注意力权重,最后将各个子空间的结果拼接起来。多头注意力机制使得模型可以在不同的表示子空间中捕获到不同的上下文信息,增强对复杂数据内在结构的建模能力<ref name=":1" /><ref name=":2" /><ref>Voita, E. ''et al.'' Analyzing Multi-Head Self-Attention: Specialized Heads Do the Heavy Lifting, the Rest Can Be Pruned. ''57TH ANNUAL MEETING OF THE ASSOCIATION FOR COMPUTATIONAL LINGUISTICS (ACL 2019)'' 5797-5808 (2019).</ref>。具体流程如下: |
| | | | |
| − | ==== 1.子空间Q, K, V 向量的生成 ==== | + | ==== 子空间Q, K, V 向量的生成 ==== |
| | 给定嵌入向量和头 (Head) 的数目h,在每个头(子空间)中都会通过一组不同的权重矩阵得到QKV向量。 | | 给定嵌入向量和头 (Head) 的数目h,在每个头(子空间)中都会通过一组不同的权重矩阵得到QKV向量。 |
| | | | |
| − | ==== 2.多头并行计算 ==== | + | ==== 多头并行计算 ==== |
| | 对每个头独立计算缩放点乘注意力: | | 对每个头独立计算缩放点乘注意力: |
| | [[文件:公式3.png|居中|缩略图|400x400像素]] | | [[文件:公式3.png|居中|缩略图|400x400像素]] |
| | | | |
| − | ==== 3.多头合并输出 ==== | + | ==== 多头合并输出 ==== |
| | 将所有头的输出拼接后通过线性层融合作为多头注意力机制的输出: | | 将所有头的输出拼接后通过线性层融合作为多头注意力机制的输出: |
| | [[文件:公式4.png|居中|缩略图|616x616像素]] | | [[文件:公式4.png|居中|缩略图|616x616像素]] |