外观
Transformer浅析
约 1943 字大约 6 分钟
AI
2026-03-16
Transformer源自谷歌,最初是为自然语言处理(NLP)设计的。 但是他能在图像分类任务中超越专门为图像设计的ResNet模型,为什么?就得说到CNN与卷积的原理,以及两者核心设计理念的差异:归纳偏置。
通过了解CNN卷积神经网络可以了解到他的一些比较强的固有特性,他们会以一种非常特定的方式处理图像
- 仅可提取局部像素的特征 (卷积核视野狭窄,对纹理依赖严重)
- 具有平移不变性识别能力(猫耳朵长到肚子上 他还是认这是耳朵。。)
- 依赖层次化结构抽象信息(堆叠层的依赖耦合)
这种模型被称为高归纳偏置,具有高归纳偏置的模型具有很强的输入依赖(前置训练),会对输入数据有很强的预设要求。 而transfomer具有低归纳偏置的特性,因为他的核心 自注意力机制。 不要求对数据做预设,从数据中学习规律
Transformer
自注意力机制(Attention)、多模态能力
同样用图形来理解这Transformer,他具有全局视野,图像中的每一个像素都能与其他像素交互计算出相关性,CNN需要一层层的扩大视野(卷积->池化)。
类比我们在玩拼图游戏
- CNN只观察相邻的块。
- transformer会将整个评图的块当成一个数据库,将我们想要移动的块在整个库中查找与之相关的块(类似搜索引擎的搜索,因为这个东西源自谷歌,其实就是用来做搜索的,普通引擎搜索出来的内容是硬搜索,但是transformer是注意力,搜索的相关性)。 transformer会将每一个块与其他的每一块块分配一个权重,如果两个块权重高就相邻,无论多远都能建立联系,以此动态构成整个图片的上下文!
工作原理
大语言模型之所以能理解人类语言并生成内容,其底层逻辑建立在两个核心概念之上:Token 与 向量 (Embedding)
Token与向量
Token:大模型处理信息的基本单元。向量:有方向的量,将万物维度化
模型无法直接理解整句文本,必须将其拆分为更小的片段。 例如,句子 「张三是谁?」 可能会被拆分为:「张三」, 「是」, 「谁」, 「?」。
为什么要拆分? 因为计算机只认识 0 和 1。在处理信息前,必须将输入转化为计算机可理解的数字形式。分词(Tokenization)的本质,就是建立一套数字词典。
多模态
多模态。Token不只是针对文本,还能针对图像语音视频!
- 图像(像素块)
- 语音(音频段)
- 视频(像素块+音频段)
建立索引:分词完成后,每个Token都会获得一个唯一的编号(ID)。比如 “张三”=1,“是”=3,“谁”=8。此时,句子变成了一个数字序列 [1, 3, 8]。但编号本身没有含义,模型无法通过数字 1 理解“张三”是一个人。因此,我们需要 Embedding(嵌入)。
Embedding 矩阵
Embedding 矩阵:专门为捕捉词语语义而设计的低维稠密的一个巨大的查找表(也是向量) 模型在训练过程中,会学习到一个巨大的 Embedding 矩阵。你可以把它看作一个查找表,推理的时候就可以输入:Token ID(如 1) => 输出:一个高维向量(如 [0.1, -0.5, 0.8, ...])。
- 赋予语义(向量):这串小数构成的向量,将预测转换成数学问题! 在向量空间中
- 语义相近的词,距离更近:
C#的向量会靠近Java。 - 语义无关的词,距离更远:“天气”的向量会远离“板蓝根”。
- 语义相近的词,距离更近:
模型训练的过程,本质上就是不断调整这个矩阵,让语义相关的词在向量空间中聚集在一起。
预训练:把一句话的最后一个词拿出来,让模型过反向传播,梯度下降微调模型让他更倾向于找到那个词。重复无数次。模型就有了找的能力,还能组合出新的没有训练过的能力

语义,注意力计算机制
拿到向量后,模型如何理解句子的含义?这就涉及到了 注意力机制。
信息交换 (QKV) 一个词的意义是由他周围的词来决定的。所以句子中的每个词(向量)都需要与其他词进行信息交换。模型通过计算 Query (Q), Key (K), Value (V) 来实现这一点。
点积计算相关性 模型通过点积 来计算两个向量的相关程度:
- 公式:若向量
a=[a1,a2,a3],向量b=[b1,b2,b3],则
=a1b1+a2b2+a3b3
- 含义:从数学角度看,点积计算了两个向量在坐标系中的方向一致性。方向越一致(夹角越小),点积值越大,代表两个词的相关性越高,注意力权重也就越高。
通过这种方式,模型将整句话的上下文信息关联起来。例如在“苹果很好吃”中,“苹果”会更多地关注“好吃”,而不是无关的词汇。
生成过程:从向量回到文字
理解完上下文后,模型如何输出?这是一个自回归 的过程:
- 计算概率:模型根据当前的上下文向量,计算词表中下一个 Token 出现的概率。
- 采样/选择:选出概率最高的 Token(或按概率采样)。
- 循环:将生成的 Token 加入原有序列,作为新的输入,重复上述过程,直到生成结束符或达到长度限制。
这就是为什么大模型是“流式输出”的——它是一个 Token 一个 Token 往外蹦的。
编码器Encoder和解码器Decoder
输入的解码器, 编码器完成后可输出;编码器和解码器(Encoder-Decoder)共同构成了transformer的架构。
编码器就是用来理解输入;解码器是用来生成
但不是所有的模型都需要这两者的组合
比如 Bert 就只用到了的编码器,专门用来做文本分类,分析,匹配之类的理解任务 主流大模型(GPT、Llama、Qwen、GLM)基本都是只用解码器,Decoder-only。 那他不用理解输出 就直接生成输出??那也不是
区别
理解上下文方式不同
- Encoder:专门用来做理解,双向注意力机制,每个词都会结合左右两边的词
- Decoder是单向注意力,每个词只能看到自己左边的词,而大模型的生成机制就是一个token一个token的往外蹦,刚好每个token生成出来之后结合历史在生成后面的(构建成了上下文),所以他们都是流式输出,所以Decoder天生适合做生成!
- 能理解也能输出
- 训练更简单,架构更统一
- 生成过程中动态建模上下文,实现"理解即生成"。它不是省略了理解,而是把理解融合进了生成的每一步。
| 特性 | Encoder (编码器) | Decoder (解码器) |
|---|---|---|
| 主要任务 | 理解 | 生成 |
| 注意力机制 | 双向注意力 | 向/因果注意力 |
| 视野范围 | 可以看到当前词左右两边的所有词 | 只能看到当前词左边 (历史) 的词 |
| 典型模型 | BERT | GPT, Llama, Qwen |
