大模型基础架构之Transformer

大模型基础架构之Transformer

1.1 大模型的三种架构

(1)Encoder-Decoder架构

(2)Decoder-only架构

(3)Encoder-only架构

Encoder-Only=看完整句子做理解

Decoder-Only=只看过去逐步生成,给定上下文 → 预测下一个token → 不断续写

Encoder-Decoder=先理解输入,再生成输出

架构 注意力方式 每个 token 能看什么 适合任务
Encoder-only,BERT 双向注意力 左右所有 token 理解、分类、匹配、NER
Decoder-only,GPT 单向注意力 当前及之前 token 生成、续写、对话
Encoder-Decoder,T5 Encoder 双向,Decoder 单向 源语言全看,目标语言只看过去 翻译、摘要、问答

下图来自Understanding BERT: The Simple Guide to Google's Language Model

1.2 Encoder-Decoder架构

推荐一个超级哇噻的transformer可视化交互的网站

Encoder擅长于理解任务

Decoder擅长于生成任务

1.3 核心处理流程

整体流程如下:

用户输入text → tokenizer → token → token ID → WordEmbedding → InputEmbedding → Positional Encoding → Encoder Input → Encoder → Decoder → Hidden State → Linear → Logits → Softmax → Probability → Sampling → Next Token

1.3.1 text → tokenizer → token → token ID

输入文本变为数字的向量表示

分词器BPE,其作用是将文本切分为token

BPE学习的是输入语料中高频、稳定出现的字符组合规则,并把这些组合保存为新的 token,使文本表示从"字符级"逐渐变成"子词级"

BPE的核心:把词拆分,统计相邻token对出现频次,找最高频,合并

BPE 学习的对象是:哪些字符片段应该作为一个整体 token 保存下来

BPE 学习的结果

包含:"", "", "▁", "h", "e", "l", "o", "he", "▁he", "▁hello", "▁world", "▁code"

特殊字符 ", "", "▁"

基础字符(作用:处理没有见过的新词) 单字母 h、e、l......

高频子词(作用:BPE 真正想学习的东西)ing、tion、pre......

高频完整词(某个词出现特别频繁)_hello、_world

1.3.2 token → token ID → WordEmbedding → InputEmbedding

这一步我们得到了输入transformer的input embedding

提前熟悉几个变量

batch_size = 2 # 一批处理 2 个句子

seq_len = 6 # 每个句子有 6 个 token

d_model = 512 # 每个 token 用 512 个数表示

num_heads = 8 # 8 个注意力头

d_k = 64 # 每个头的维度:512 / 8

batch_size 一个批次可能同时处理好几个句子

seq_len 每个句子包含多少token

d_model 模型的隐藏向量维度,一个token用多少个数字(特征)来表示,这里所说的特征指的是语义、语法、词性、上下文等信息,特征越多,表达能力越强

num_heads 单头注意力难以捕捉不同语义关系,多头让不同头专注不同子空间,增强表征能力

d_k = d_model // num_heads 单个头的维度

1.3.3 InputEmbedding → Positional Encoding → Encoder Input

位置编码的必要性:文本并行输入并没有先后输入顺序,为了区别文本的输入顺序确保语义正确,引入位置编码确定输入词向量的先后顺序

1.3.4 Encoder Input → Encoder

(1)Multi-Head self-attention,MHA (多头注意力)

MHA输入的X是经过PE处理后的embedding

MHA输入的三个矩阵QKV (这里QKV只是表示输入角色即query查询,key键,value值,与后续计算得到的QKV无关),如果是self-attention,则QKV来源相同,都来自同一个序列,如果是cross-attention,则QKV来源不同,来自不同序列

(2)残差连接和层归一化

残差连接:原来输入与变换后结果相加、作用:缓解梯度消失

层归一化:把token向量的数值拉回稳定范围,加快模型收敛速度

Post-LN:先残差再LN(原始transformer)、Pre-LN:先LN再残差(现代主流如GPT-3)

(3)前馈神经网络(FFN)

两层Linear线性变换+非线性激活函数ReLU,维度变化d_model → d_ff → d_model

作用:增加非线性变换,FFN 更多负责对每个 Token 自身的特征进行进一步变换

1.3.5 Decoder

(1)output embedding (Decoder input)

生成 Token→重新输入 Decoder→生成下一个 Token

这些输出 Token 通常会进行一次右移(Shifted Right),从而保证模型在预测当前位置的 Token 时,只能依赖当前位置之前已经知道的输出

(2)masked multi-head self-attention

在预测某一个 Token 时,只能使用它之前已经知道的 Token,而不能提前看到未来 Token

softmax(QK^T/sqrt{d_k})得到attention score矩阵,利用mask掩码掉未来token

(3)multi-head cross-attention

Encoder 的输出作为 Key 和 Value

Query 来自前一层 Masked Multi-Head Attention 的输出

Decoder 去"查询"Encoder 中哪些输入信息与当前生成的 Token 最相关

1.3.6 Decoder → Hidden State → Linear → Logits

这一层将 Decoder 最后一层的输出投影到一个更大的向量空间。

这个空间的维度通常等于:词表大小(Vocabulary Size)每一个数分别对应词表中一个 Token 的得分,通常称为 logits

logits此时不是概率,只是模型认为:"哪个 token 更可能作为next token" 的原始打分

1.3.7 Logits → Softmax → Probability

Softmax 函数作用于 Linear 层的输出,将这些得分转换成序列中下一个 Token 的概率分布

1.3.8 Probability → Sampling → Next Token

sampling strategy如何从这个概率里选一个token作为next token

常见sampling strategy

Greedy Search、Random Sampling、Top-k Sampling、Top-p Sampling

相关推荐
商业白皮书1 小时前
企业通过API调用大模型,推荐哪些具备数据隐私保护能力的平台?
大数据·人工智能·笔记
adinnet20261 小时前
流式输出:ai问答为什么是逐字蹦出来的
人工智能
howdoyoudo2026061 小时前
AI基建融资信用分层:谁被挤出GPU抵押市场?
大数据·人工智能·安全·microsoft·ai·语言模型
牛老师讲GIS1 小时前
透过 GeoLibre AI 助手,Agentic WebGIS 该如何架构与发展?
人工智能·geolibre ai 助手·agentic webgis
可信计算1 小时前
从单视口渲染到分支击穿:关于概率、脑神经与“创世启动器”的一些构想
人工智能·笔记
科技每日热闻1 小时前
大模型 API 调用遭遇限制时,推荐哪些支持弹性扩展和稳定调用的云平台?
大数据·网络·人工智能·ai
广州工博科技1 小时前
在咨询领域,AI 有哪些用途?
人工智能
AIHR数智引擎1 小时前
蚂蚁350亿换不来智能体飞轮?拆中台和流水线
人工智能·经验分享·职场和发展·ai-native·aihr
snakeshe10102 小时前
Python面向对象编程(OOP)与Lambda表达式入门实战
人工智能