Transformer 架构
参考: https://2048.csdn.net/681b21aec7c7e505d353f730.html
Transformer模型结构由输入部分、输出部分、编码器区域部分、解码器区域部分构成。
输入部分: : 目标数据和源数据通过词嵌入(Word Embedding)后,与位置编码(Positional Encoding)结合
**词嵌入(Word Embedding):** 文字通过词嵌入转化成向量,机器才能识别;
向机器输入的是通过词嵌入映射的对应的词向量**位置编码(Positional Encoding):**
这里词嵌入转化后的向量是没有任何位置信息,即不知道输入信息的前后的顺序,
这时候Transformer引入位置编码(Positional Encoding)进行解决,标注序列信息的空间位置;
编码器部分
由多个编码器层堆叠构成,包含多头注意力机制与前馈神经网络构成的(残差模块+层归一化)两个子层结构
注意力机制:
Transformer 的注意力机制是其核心创新点,本质上是一种模拟人类 “选择性关注” 的计算机制 —— 在处理序列数据(如文本、图像特征序列)时,通过计算元素间的关联权重,让模型自动聚焦于对当前任务更重要的信息,同时弱化无关信息。
核心思想:用 “关联权重” 实现动态关注, 象人类阅读一句话时,会自然地将 “今天” 与 “明天”、“他” 与 “她” 等相关词汇关联起来,注意力机制正是通过数学方式模拟这种关联:对于序列中的每个元素(如文本中的词),模型会计算它与其他所有元素的 “相关度分数”,再根据分数分配注意力权重,最终通过加权求和得到该元素的 “关注后特征”。自注意力(Self-Attention)是 Transformer 中最核心的注意力形式,用于捕捉序列内部元素的关联(如一句话中词与词的关系),其计算可拆解为 4 步:
1. 生成 Query、Key、Value 矩阵
对于输入序列中的每个元素(如词向量),通过 3 个不同的线性变换矩阵,生成 3 个新向量:
Query(查询):查询是一个特征向量,描述了我们在序列中寻找的内容,代表 “当前元素想关注什么”;
Key(键):对于每个输入元素,我们都有一个键 ,代表 “元素能提供什么信息”;键的设计应使我们可以根据查询识别要关注的元素
Value(值):代表 “K键的具体信息内容”
例如,处理 “猫追狗” 时,“追” 的 Query 可能更倾向于寻找 “动作的主体” 和 “对象”,而 “猫” 和 “狗” 的 Key 会分别匹配 “主体” 和 “对象” 的特征。
2. 计算注意力分数(关联度)
用每个元素的 Query 与所有元素的 Key 进行 “相似度计算”,得到注意力分数(即该元素对其他元素的关注程度), Transformer 中采用 “点积” 计算相似度, 直观理解: 若某个Q和K的点积越大,说明两者关联越紧密,注意力分数越高。
3. 缩放与归一化缩放:为避免序列长度过长时,点积结果过大导致 softmax 梯度消失,将分数除以(某个值,跟维度有关)归一化:对缩放后的分数应用 softmax 函数,得到权重,确保权重总和为 1,且每个权重在 0~1 之间(代表关注比例)。4. 用归一化后的权重,对所有元素的 Value 进行加权求和,得到当前元素的 “注意力输出”
多头注意力(Multi-Head Attention)
对基础注意力机制的扩展与优化,其核心思想是通过 “并行计算多个注意力头”,
让模型从不同角度捕捉序列中元素的关联关系,从而提升对复杂模式的建模能力。
解决了单一注意力头只能捕捉有限关联模式的局限,是 Transformer 实现高效特征提取的关键组件。
通俗解释:
每个注意力头相当于一个 “分析师”,专注于从某一角度解读序列(如 A 关注语法,B 关注语义,C 关注逻辑);所有人分别输出分析结果后,再汇总整合(拼接 + 线性变换),最终得到更全面、更深入的结论。
多头注意力的优势:
并行性:不同于 RNN 需按顺序处理序列,注意力机制可一次性计算所有元素的关联,大幅提升训练效率;
长距离依赖:直接计算任意两个元素的关联,无需像 RNN 那样 “逐步传递”,能有效捕捉长序列中的远距离关系(如段落首尾的呼应);
灵活性:通过多头设计和不同注意力变体(如交叉注意力、自注意力),可适配翻译、摘要、图像描述等多种任务。
解码器部分
解码器区域由多个解码器层堆叠构成,比编码器区域多了一个将解码器与编码器连接交叉注意力机制
共同的组件Add & Norm(残差链接+层归一化)
在编码器与解码器层都有Add & Norm层,Add指的是残差链接(Residual Connection),指的是层的输出与输入相加,有助于保留信息和防止梯度消失;Norm指的是层归一化,是常用的模型训练技巧,由于输入的数据都有不同的分布,归一化通过调整维度的均值和方差,可以消除这种影响,更加关注层内特征之间相互关系,改善梯度消失和梯度爆炸问题,有效提高模型的性能和训练时间
编码器-解码器交叉注意力(Encoder-Decoder Cross Attention)
编码器传入K、V,解码器输出Q,通过注意力公式,将编码器与解码器链接起来,这里可以这样理解,
由于编码器区域输入是源数据,解码器输入的目标数据,由于解码器看到是当前词,且表达的意思通过注意力输出都包含在这个词向量中,
用这些信息来聚焦编码器中与当前词相关的信息,这可以生成更为准确的上下文向量来帮助解码。
输出部分
即模型接入全连接层,输出最终模型结果。