Transformer架构核心流程解析

article/2025/9/6 9:03:09

Transformer的核心流程
在这里插入图片描述

Tokenizer→Embedding→Attention→FFN

1. 文本预处理与分词阶段(Tokenizer)

分词方式演进

  • 基于单词的分词器:通过空格、标点符号拆分,但词汇表庞大且易出现未知词(UNK)
  • 基于字符的分词器:词汇量小、未知词少,但每个字符意义有限,序列变长
  • 基于子词的分词器(主流):常用词不拆分,稀有词分解为有意义的子词
    • 例如:“annoyingly” → “annoying” + “ly”
    • 既保持语义又节省空间

2. 向量化与嵌入阶段(Embedding)

Token转向量过程

文本 → Token → 数字ID → 向量 → 词嵌入矩阵
  • Token映射:每个token对应一个数字ID
  • 向量转换:将ID转换为固定维度的向量(如512维)
  • 嵌入矩阵:N×d矩阵,N为序列长度,d为嵌入维度

位置编码(Positional Encoding)

解决问题:Transformer没有RNN的顺序处理,需要显式编码位置信息

编码方式:

  • 奇数位置:使用cos函数 + 位置信息pos
  • 偶数位置:使用sin函数 + 位置信息pos
  • 最终结果:token_embedding + positional_embedding

这样确保模型能区分"Sam is looking for trouble"和"Trouble is looking for Sam"

3. 多头自注意力机制(Multi-Head Self-Attention)

QKV矩阵生成

Q = Wq × X  (查询矩阵)
K = Wk × X  (键矩阵)  
V = Wv × X  (值矩阵)

Wq、Wk、Wv是模型需要学习的参数,通过训练过程不断调整这些权重矩阵。
X是经过嵌入处理后的输入矩阵:

  • 假设序列长度为N,嵌入维度为d,则X是一个N×d的矩阵
  • X包含了位置编码信息:X = token_embedding + positional_embedding

注意力计算公式

Attention(Q,K,V) = softmax(Q·K^T/√dk)V

计算步骤:

  1. 相关性计算 Q·K^T:Q与K转置相乘,得到注意力分数
  2. 缩放处理 Q·K^T/√dk):除以√dk,防止梯度消失
  3. 概率归一化 softmax(Q·K^T/√dk):softmax转换为0-1概率分布
  4. 加权求和 softmax(Q·K^T/√dk)V:概率权重与V矩阵相乘

多头机制

  • 8个注意力头并行计算,每个头关注不同的语义子空间
  • 输出合并:将8个z向量拼接后乘以权重矩阵Wo
  • 优势:扩展模型关注不同位置的能力,提供多个表示子空间

4. 残差连接与层归一化

残差连接设计

输出 = LayerNorm(X + MultiHeadAttention(X))

作用:

  • 缓解退化问题:防止网络过深时性能下降
  • 加速收敛:提供梯度直接传播路径
  • 提高表示能力:允许学习复杂函数同时保持简单函数学习能力

5. 前馈神经网络(FFN)

  • 点对点前馈网络:几个线性层 + ReLU激活函数
  • 并行计算:向量间无依赖关系,可并行处理
  • 残差连接:LayerNorm(X + FFN(X))

目的:进一步处理注意力输出,提供更丰富的表达能力

6. 编码器整体架构

单个编码器层结构

Input → Multi-Head Self-Attention → Add & Norm → FFN → Add & Norm → Output

多层堆叠

  • 6层编码器(原论文设置)并行处理
  • 相同结构:每层都包含自注意力层和前馈网络层
  • 信息流转:每个token沿着自己的路径从下往上流转

7. 解码器特殊机制

掩码多头注意力(Masked Multi-Head Attention)

原理:防止模型在训练时看到"未来"的token

  • 当处理位置i的token时,只能关注位置≤i的token
  • 保证训练与推理的一致性

编码器-解码器注意力

  • Q矩阵:来自解码器输入
  • K、V矩阵:来自编码器输出
  • 作用:帮助解码器关注输入序列的相关部分

8. 输出生成阶段

线性分类器 + Softmax

解码器输出 → 线性层 → Logits向量 → Softmax → 概率分布 → 选择最高概率词
  • Logits向量:词汇表大小的向量(如10,000维)
  • 自回归生成:逐个生成token,直到遇到结束符

核心创新

  1. 完全基于注意力:摆脱了RNN的顺序依赖
  2. 并行计算:大幅提升训练效率
  3. 长距离依赖:通过自注意力捕获任意距离的依赖关系
  4. 多头机制:从多个角度理解语义关系
  5. 残差连接:支持更深的网络结构

e.g. 通过QKV注意力机制,模型能从"最新款"、“体验"等词汇中推断出这里的"苹果"指的是手机,而从"阿克苏”、"口感"等词汇中推断出那里的"苹果"指的是水果。

参考链接


http://www.hkcw.cn/article/uoyVdlvCZf.shtml

相关文章

【五模型时间序列预测对比】Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN

【五模型时间序列预测对比】Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN 目录 【五模型时间序列预测对比】Transformer-LSTM、Transformer、CNN-LSTM、LSTM、CNN预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Transformer-LSTM、Transformer、CNN-LSTM、LSTM、…

美国华盛顿州一公园发生枪击事件 7人受伤

美国华盛顿州一公园在5月28日晚间发生枪击事件,导致7人受伤,其中3人伤势严重。警方表示,目前尚不清楚有多少嫌疑人参与了这起事件,并且截至事发当日,还没有任何人被逮捕。责任编辑:zx0176

RabbitMQ项目实战

先参考文章:(必看) 06-MQ基础_mq服务-CSDN博客 07-MQ高级(幂等性)-CSDN博客 https://cloud.iocoder.cn/message-queue/rabbitmq/#_2-0-%E5%BC%95%E5%85%A5%E4%BE%9D%E8%B5%96%E4%B8%8E%E9%85%8D%E7%BD%AE 1、Rabbi…

自动化测试实例:Web登录功能性测试(无验证码)

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、什么是自动化测试 把人为驱动的测试行为转化为机器执行的一种过程称为自动化测试。(来自百度百科)本质上来说,自动化测试对比起手工测试除了需…

用 Python 模拟下雨效果

用 Python 模拟下雨效果 雨天别有一番浪漫情怀:淅淅沥沥的雨滴、湿润的空气、朦胧的光影……在屏幕上也能感受下雨的美妙。本文将带你用一份简单的 Python 脚本,手把手实现「下雨效果」动画。文章深入浅出,零基础也能快速上手,完…

[PyTest-案例]

接口对象封装 1.requests和pymysql实现ihrm登录接口缺点 : 代码冗余度高,耦合度高,维护成本大 核心思想 : 代码分层 按代码功能划分 : 接口对象层 : 负责发送http请求,访问待测接口,返回响应数据测试用例层 : 调用接口,按照响应数据,断言完成测试 封装tpshop商城 普通方式…

25 字符数组与字符串及多维数组详解:定义与初始化、访问与遍历、%s 格式符、内存剖析、编程实战

1 字符数组与字符串 1.1 字符数组 字符数组是 C 语言中用于存储一系列字符的基本数据结构。其定义方式与其他类型的数组类似,使用 char 类型来指定数组的元素类型。例如: char arr[10]; // 定义一个可存储 10 个字符的数组 此数组 arr 能够存储 10 个字…

IEEE旗下2区所有SCI汇总!

本期小编统计了【IEEE旗下】2区所有期刊的最新影响因子,分区、年发文量以及投稿经验,供大家参考! 1 IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing 【影响因子】4.7 【期刊分区】JCR1区,中…

论文略读: STREAMLINING REDUNDANT LAYERS TO COMPRESS LARGE LANGUAGE MODELS

2025 ICLR 判断模型层的重要性->剪去不重要的层(用轻量网络代替) 这种方法只减少了层数量,所以可以用常用的方法加载模型 层剪枝阶段 通过输入与输出的余弦相似度来判断各个层的重要性 具有高余弦相似度的层倾向于聚集在一起&#xff0c…

Geoserver修行记--点击geoserver服务的WMTS能力(GetCapabilities)文档显示400 null

项目场景 在进行geoserver的项目部署过程中再次遇到的问题,这里再记录一下: 我在前端调用WMTS服务的时候,我需要查看图层的能力文档,点击下图出现如下所示的情况: 点击以后出现 400:null,如下…

Codeforces Round 1027 (Div. 3)(A-E)

题面链接&#xff1a;Dashboard - Codeforces Round 1027 (Div. 3) - Codeforces A. Square Year 思路 先看数字能否被开方&#xff0c;如果能输出0 即可 代码 #include<bits/stdc.h> using namespace std;#define vcoistnt ios_base::sync_with_stdio(false); ci…

在MDK中自动部署LVGL,在stm32f407ZGT6移植LVGL-8.3,运行demo,显示label

在MDK中自动部署LVGL&#xff0c;在stm32f407ZGT6移植LVGL-8.3 一、硬件平台二、实现功能三、移植步骤1、下载LVGL-8.42、MDK中安装LVGL-8.43、配置RTE4、配置头文件 lv_conf_cmsis.h5、配置lv_port_disp_template 四、添加心跳相关文件1、在STM32CubeMX中配置TIM7的参数2、使能…

数据结构数组总结

给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0 。 示例 1&#xff1a; 输入&#xff1a;…

集成均衡功能电池保护芯片在大功率移动电源的应用,创芯微CM1341-DAT、杰华特JW3312、赛微微电CW1244、中颖SH366006

一文了解集成均衡功能电池保护IC在大功率移动电源的应用 创芯微CM1341-DAT 创芯微CM1341-DAT是一款专用于4串锂离子/磷酸铁锂电池的保护芯片&#xff0c;内置有高精度电压检测电路和电流检测电路。通过检测各节电池的电压、充放电电流及温度等信息&#xff0c;实现电池过充电…

2025年机电一体化与自动化系统国际会议(ICMAS 2025)

2025年机电一体化与自动化系统国际会议&#xff08;ICMAS 2025&#xff09; 2025 International Conference on Mechatronics and Automation Systems 一、大会信息 会议简称&#xff1a;ICMAS 2025 大会地点&#xff1a;中国南京 审稿通知&#xff1a;投稿后2-3日内通知 投稿…

Linux多线程(四)之Linux线程控制2【线程等待和线程终止】

文章目录 线程等待线程终止return退出线程pthread_exit退出线程pthread_cancel取消线程 线程等待 哪个线程先运行&#xff1f;由调度器说的算。 但是主线程一定要是最后退出&#xff01; 为什么需要线程等待&#xff1f; 已经退出的线程&#xff0c;其空间没有被释放&#…

Python自动化之selenium语句——浏览器设置显示尺寸、截图、刷新网页

目录 一、浏览器设置最大化、最小化 1.浏览器最大化 2.浏览器最小化 二、浏览器打开的位置、尺寸 1.浏览器打开位置 2.浏览器打开尺寸 三、浏览器截图 1.截图语句 2.运行成功后查看 四、刷新网页 上一节实现了打开浏览器、打开指定网址、关闭浏览器的操作&#xff0c…

Selenium的第三天打卡——Selenium应用(selenium元素选取以及浏览器操作)

Selenium 4 应用示例解析 目录 Selenium 4 应用示例解析 一、基本配置 二、浏览器设置&#xff08;这之前没有html基础的朋友可以先去了解一下html哦&#xff09; 三、元素定位方法 1.Selenium 4 元素的选中 ①开发者模式 ②观察代码 2.Selenium 4 元素抓取的核心内容…

智能仓储落地:机器人如何通过自动化减少仓库操作失误?

仓库作业的速度和准确性至关重要&#xff0c;尤其是在当前对无差错、高效作业的要求达到前所未有的环境下。每一个错误&#xff0c;无论是物品放错位置还是库存差异&#xff0c;都会在供应链中产生连锁反应&#xff0c;造成延误、增加成本&#xff0c;并最终影响客户满意度。 …

【Linux系统移植】Cortex-A8 Linux系统移植(超详细)

目录 前言 一、ARM开发板ARM简介RISC和CISCARM产品分布核心板S5pv210 SOC嵌入式系统开发方式 二、嵌入式系统组成为什么要系统移植内核移植框图 三、嵌入式开发环境搭建搭建开发环境总流程设置ubuntu与windows共享目录修改用户为root用户安装NFS服务器安装tftp服务器安装交叉编…