简单学习 --> Transformer架构

Transformer架构

Transformer 是 Google 在 2017 年论文《Attention Is All You Need》提出的完全基于注意力机制的序列建模架构,彻底抛弃了 RNN/CNN,是当前大语言模型(GPT、BERT 等)的基础。

为什么需要Transformer架构

在Transformer架构之前, 主流是RNN 循环神经网络(像流水一样一步步往后读,记住前面信息),擅短句预测、简单语音

RNN有两大致命缺陷 :

  1. 序列化处理瓶颈:像接力赛一样RNN必须是从前往后的顺序来处理,训练极慢,浪费GPU

  2. 长距离遗忘 : RNN只擅长处理短句子预测, 如果遇到很长的句子,就会忘了前面的东西

Transformer架构就解决了这两点

Transformer的两个核心设计

  1. 自注意力机制 : 解决长距离依赖

  2. 完全并行化:解决速度瓶颈

自注意力机制(Self-Attention)

这是 Transformer 最具革命性的地方。它让句子中的每一个词都去跟其他所有词"打个招呼",计算出彼此之间的关联度。

正常的阅读。你读到一句话里的某个词时,眼睛会前后扫视整句话,联系上下文来理解这个词。

复制代码
模仿人类阅读时的“聚焦和筛选”,也就是明白词的重点在哪里
​
句子:“那只 苹果 闪烁着金属光泽,最新款要九千多。”
当模型处理 “苹果” 这个词时:
它去环顾四周: 发现了“闪烁”、“金属光泽”、“最新款”、“九千多”。
计算关系: 它发现“金属光泽”和“九千多”跟它的关系最大(权重极高),而“闪烁”权重一般。
重塑含义: 出了这一层后,“苹果”这个词的含义自动从“树上结的水果”变成了“一款价格昂贵的智能手机实体”。
多头注意力机制

一个人看问题容易片面,模型也是, 所以 Transformer 派出了多个"侦探"(也就是"多头",通常有8个或16个),让它们分不同的角度去看这句话。

如果只用一个"头"去看句子,模型很容易顾此失彼。多头机制就像是给模型配了一个"专家顾问团",面对同一个句子,不同的专家站在不同的角度去观察。

复制代码
多头注意力机制(Multi-Head Attention),就是把自注意力机制,同时复制好几份(也就是好几个“头”),让它们分工合作。
​
句子:“小明 昨天 在店里 买了一只 苹果。”
当模型处理 “苹果” 这个词时,多个“头”同时开工,各司其职:
1号头(负责找“动作”): 盯着 “买了” ➔ 搞懂这只苹果是被交易的,而不是被吃掉的。
2号头(负责找“代词/数量”): 盯着 “一只” ➔ 搞懂苹果的数量是一个。
3号头(负责找“地点”): 盯着 “店里” ➔ 搞懂这个苹果是在哪里出现的。
​
所有的‘头’在同一时间、互相独立工作
最后把所有的报告拼接、融合 得到最全面的结论

多头注意力,就是"三个臭皮匠,顶个诸葛亮"。它让模型能够同时捕捉语法、语义、时间、地点等多个维度的信息,看问题更全面。

位置编码 (Position Encoding)

Transformer 让每个词都同时(并行)计算了,最后怎么分期每个词的顺序是什么?

就像 "猫吃老鼠" 和 "老鼠吃猫" 一样分不清,谁在前谁在后

通过位置编码的方式解决 : 给每个词的向量上 加一个 "位置编码"

复制代码
Transformer 为了并行计算,就抛弃了像RNN那样排队, 他让所有词同时计算,怎么分辨顺序?
​
解决方法 : 打上时间戳,也就是位置编码
位置编码就是解决
​
给每个词发 ‘号码牌’
猫 --> 1
吃 --> 2 
老鼠 --> 3 , 
Transformer架构的硬件支持

Transformer架构天生就适合GPU

  • CPU的特点 : 擅长做一件高难度的事情(像一个数学教授帮你做高数)

  • GPU的特点 : 擅长做百万个小计算 (像一万个小学生帮你做算数)

所以Transformer架构这样 硬件推动技术方案,技术方案有能推动硬件发展

前馈神经网络(FFN)

如果说注意力机制 是 Transformer 的"眼睛"(负责四处看、找关系),那么 FFN 就是 Transformer 的"大脑知识库"(负责消化信息、输出结论)。

在 Transformer 的每一个大层里,数据都是先过注意力机制,紧接着就进 FFN。它们俩是雷打不动的"黄金搭档"。

FFN的3个步骤

复制代码
1. 首先有一个向量(512维的纸团)
2. 第1步 : 升维 (展开纸团) ==> 放大细节,2048维(看清楚纸团里的字)
3. 第2步 : 激活函数(过滤掉无用的数据)
4. 第3步 : 降维(打包成总结)

FFN其实就是大模型的'记忆体'

FFN本质是一个 键值对存储系统

  • 第一层(key): 识别模式, 比如'中国的首都' 这样模式

  • 第二次(value):取出答案 , 北京

这就是为什么参数量越大,模型记得就越多-->相当于增加FFN的宽度,能记录的也更多

残差连接(Residual)

残差连接通俗来说,就是给数据在模型里拉一条"免死金牌通道",或者叫"直通高速公路"。

在 Transformer 每一个大层(无论是注意力机制还是 FFN)的旁边,都并排修了一条小路。原本的数据不经过任何加工 ,直接沿着这条小路走过去,和经过层层加工后的输出加在一起,然后再送往下一层。

如果数据经过100层计算,会出现2个大问题

  • 信息退化 : 信息在层层传递中失真,被改的面目全非了

  • 梯度消失 : 模型"学不动"了,网络太深时,后期的修正信号往回传,传着传着就衰减到 0 了,底层的网络根本学不到东西。

残差连接负责拉一条"高速公路",把原始信息不加修改地送往下一层,防止随着网络变深,前面的记忆被"糊"掉。

复制代码
┌─── [ 直通高速公路 ] ───┐
               │                         │
输入数据 X ───┴──> LayerNorm ──> 加工 ──> ➕ ──> 输出新数据

残差连接的作用

  • 消息不丢失 : 无论经过多少层,原始数据仍然在

  • 梯度高速公路 : 误差信号可以直达底层,不会衰减

一层Transformer的完整流程

数据从底向上流动

复制代码
下一层 Transformer (Layer N+1)
                      ▲
                      │
               【 第二次残差相加 ➕ 】 ◄───────┐
                      ▲                       │
                      │                       │
               [ FFN 前馈网络 ]                │
                      ▲                       │ (第二条直通公路)
                      │                       │
               [ LayerNorm 归一化 ]           │
                      ▲                       │
                      │                       │
               【 第一次残差相加 ➕ 】 ◄───┐   │
                      ▲                   │   │
                      │                   │   │
               [ 多头自注意力机制 ]        │   │
                      ▲                   │   │ (第一条直通公路)
                      │                   │   │
               [ LayerNorm 归一化 ]       │   │
                      ▲                   │   │
                      │                   │   │
                      └───────────────────┴───┴── [ 输入向量 X ]
                                                  (来自上一层 Layer N-1)

当"苹果"这个词向量走完这一层的 8 个步骤后,它发生的变化是:

  1. 进这一层前: 它知道自己身处什么环境。

  2. 出这一层后: 它不仅融合了环境,还通过 FFN 激发了模型底层对这个环境的"深度理解"。

然后,这个进化后的向量会作为输入,原封不动地送进下一层 Transformer,重复上面的折腾,直到堆叠的几十层全部走完。层数越深,模型对语义的理解就越抽象、越聪明。

相关推荐
chimchim661 小时前
Azure ADF(Azure Data Factory 数据工厂)学习
学习·microsoft·azure
fengxin_rou1 小时前
【Feed 高并发架构实战】:雪花 ID + 三级缓存 + 计数旁路设计详解
数据库·redis·缓存·架构·事务·并发
他们叫我阿冠1 小时前
Docker的基础学习
学习·docker·容器
辰海Coding10 小时前
MiniSpring框架学习笔记-解决循环依赖的简化IoC容器
笔记·学习
晓梦林10 小时前
cp520靶场学习笔记
android·笔记·学习
weixin_4462608511 小时前
[特殊字符] 视觉Transformer (ViT) 原理及性能突破:从CNN到大规模自注意力机制的迁移
深度学习·cnn·transformer
小a彤11 小时前
GE 在 CANN 五层架构中的位置
人工智能·深度学习·transformer
心中有国也有家11 小时前
cann-recipes-infer:昇腾 NPU 推理的“菜谱集合”
经验分享·笔记·学习·算法
Upsy-Daisy11 小时前
AI Agent 项目学习笔记(八):Tool Calling 工具调用机制总览
人工智能·笔记·学习