Transformer模型的自注意力机制
字数 830 2025-10-27 11:27:25
Transformer模型的自注意力机制
题目描述:请详细解释Transformer模型中的自注意力机制,包括其计算步骤、数学公式以及在实际应用中的作用。
解题过程:
-
自注意力的基本概念
自注意力机制允许序列中的每个位置都能关注到序列中的所有位置,从而捕捉长距离依赖关系。它的核心思想是:通过计算每个词与所有词的相关性权重,得到基于全局信息的新表示。 -
输入表示
首先将输入序列(如句子)的每个词转换为向量表示(词嵌入)。假设输入序列有n个词,每个词向量维度为d_model,则输入矩阵X ∈ R^(n×d_model)。 -
生成Q、K、V矩阵
通过三个可学习的权重矩阵WQ、WK、WV,将输入向量转换为查询(Query)、键(Key)、值(Value)三个向量:
- Q = XWQ (查询矩阵,用于计算注意力权重)
- K = XWK (键矩阵,用于被查询匹配)
- V = XWV (值矩阵,包含实际的信息内容)
-
计算注意力分数
通过点积计算每个查询与所有键的相似度得分:
分数 = QK^T (结果矩阵维度为n×n)
得分矩阵的每个元素表示两个位置之间的相关性强度。 -
缩放与归一化
为防止点积过大导致梯度消失,对得分矩阵进行缩放(除以√dk,dk是键向量的维度):
缩放分数 = QK^T / √dk
接着使用softmax函数对每一行进行归一化,得到注意力权重矩阵(每行之和为1):
注意力权重 = softmax(缩放分数) -
加权求和
用注意力权重对值矩阵V进行加权求和,得到自注意力层的输出:
输出 = 注意力权重 × V -
多头注意力机制(扩展)
实际应用中常使用多头注意力:
- 将Q、K、V通过多组不同的权重矩阵投影到多个子空间
- 在每个子空间独立计算自注意力
- 将多个头的输出拼接后通过线性变换融合信息
作用总结:
自注意力能动态捕捉上下文依赖,解决了RNN的长距离依赖问题。在机器翻译等任务中,它允许模型直接关注到最相关的词(如翻译时关注对应的源语言词)。