Transformer&AR

本文最后更新于 2026年3月11日 晚上

北京大学信息科学技术学院 生成模型基础(2025秋)的课程笔记

第二部分:Transformer&AR

Transformer

nlp的挑战:
Long term dependency -> Attention
Sophisticated meaning -> Feed forward network
Word order matters a lot -> Positional encoding

Attention is all you need

老生常谈的话题了,ai引论我们曾经速通过,这里再次回顾一下
假设每个word被表示为$d$维词向量$x_{i}$,我们希望用注意力机制将每个$x_{i}$变为$z_{i}$,以更好获取上下文相关信息
Hash表是一种注意力机制,由(key,value)对组成,查询query到达时找出对应的key并返回value,若无法匹配则返回empty
Attention机制是一种软性的Hash表,给出query后每个key都要进行匹配计算,取其加权平均得出最终的value

上图即为经典的注意力机制的逐词计算过程,下面给出矩阵版本 总结起来就得到了那个改变了nlp历史的经典公式:

$Attn(Q,K,V)=softmax(\frac{QK^{T}}{\sqrt d_{k}})V$

典中典问题:这里$Q$与$K^{T}$相乘后为什么要除$\sqrt d_{k}$?

这里摘取了知乎上的解答,本质还是保证方差的稳定性,防止在维度$d$较大时点乘的结果也会很大,$Softmax$的输入就会很大,梯度会很小

FFN (feed-forward network)

严格来说Attention是一种非线性转换,仅负责信息的收集和组织,不进行信息处理,所以Attention之后还需要经过一层FFN

Add & Norm

利用residual残差神经网络进行连接,防止梯度爆炸

Layer Normalization进行层归一化

Two different structures

Transformer有两种不同的范式,Post-LN和Pre-LN,区别在于LayerNorm的位置不同,前者确保了任何输入都需要经历一个非线性变换,后者则并非如此,早期人们努力训练Post-LN,但训练起来难度极大,对于模型学习率这样的参数极为敏感,需要大量微调,现在更常用的是训练起来较为稳定的Pre-LN

positional encoding

无论在Attention还是FFN中,都没有考虑词汇的位置信息,这样会导致无法区分“屡败屡战”和“屡战屡败”,产生荒谬结果
所以我们需要添加位置编码,分为绝对、相对、旋转三种位置编码

绝对位置编码

直接将每个输入的词向量$x_{i}$替换为$x_{i}+p_{i}$,其中$p_{i}$为位置编码,一般采用关于$i$的正余弦函数来编。但是这个方法存在问题,不可学习的编码在长序列的泛化能力较差,可学习的编码无法应用到更长序列,也无法扩展到图像等多模态领域

相对位置编码

编码任意两个位置的相对距离 $b_{ij}=f(i-j)$

旋转位置编码

Autoregressive models

高维空间中的概率模型:
cv中判断两张图片相等是分别比较每个像素的RGB,nlp中判断两个句子相等则是分别比较每个单词

由条件概率公式,可以将每个元素分别相等的概率转化为以下的条件概率连乘形式,因此我们希望得到一个模型,可以在已知$x_{1},x_{2},…,x_{i-1}$的基础上预测$x_{i}$
此即为自回归模型,生成方式有左到右和右到左两种,我们在nlp中主要关注从左到右的生成,这种模型被称为language model!
(ps:这门课上不会涉及nlp的一些技术,如normalization,tokenization,segmentation等,想要进一步了解可以关注贺笛老师开设的nlp课程~)

语言模型的特点:给出一部分文本,预测next token

最古老的非参数模型:N-Gram language model

根据Markov假设,$x_{i}$不会依赖于很远的token,只会依赖于最近的k个token,所以我们可以利用条件概率公式将$x_{i}$出现的概率简化,并从频率估计概率,下面是一个简单的例子

存在的问题:当n变大时,需要更多上下文信息,空间消耗大,但是n减少又会导致准确度下降,形成了Sparsity, Memory和Accuracy的不可能三角!

fixed-window language model

使用神经网络来估计条件概率,优势在于没有内存和稀疏性问题,但由于window-size N被固定,使其语言理解能力不足

RNN

RNN不局限于fixed-window,而是对所有前向的文字信息全部考虑,将前一个hidden state与现在的输入融合形成新的hidden state,不断递归下去,处理长句子的效果好了不少,其缺点在于递归使得训练速度极慢,句子越长训的越慢,无法像Transformer那样实现并行计算 RNN的本质(递归)体现在了上面这个经典公式之中

Transformer(为代表的大语言模型)补充

训练

正是由于RNN的结构问题,我们希望用Transformer来训练,但是依旧要满足自回归性质,即next token只与前面已知token有关,与后文token无关(不能让模型“未卜先知”提前看到后文),所以需要引入attn_mask矩阵,下三角部分为0,上三角为-inf,-inf确保后文不想让模型看到的部分经过softmax后结果为0,就没有影响了,下三角部分结果仍然不变

Evaluation采用困惑度(perplexity)来评判

如果没有加mask会怎么样?这一点可能与我们惯性思维大不相同,loss会变得很低很低!这是由于模型只学会了copy,就是ctrlc ctrlv,简简单单把前一个位置的词往后复制,完全不会预测,更有趣的是这时的困惑度也会很低,只有当模型运用到现实场景中才能发现问题

推理

大模型在训练之后,推理时的方式也略有不同
一种是stochastic sampling,通过概率分布随机sample出next token,这里GPT是用了top-k sample,从$P_{\theta}$中挑出k个概率最大的,再均匀分布采样出结果,当然也可以直接top-1 sample,那就没有随机性,直接选概率最大的,这被称作greedy search
beam search ppt上没有,这里简单补充一下,大致就是设置束宽B,挑出Top-B组合,使用对数概率累加评分,再从上一步的B个候选继续展开,与greedy search相比优点在于B可控,可以保留多条候选路径,生成的句子更为合理,缺点在于速度较慢,B越大推理路径越多,消耗的计算资源越多,缺乏随机性,容易生成中规中矩的保守回答

Transformer与RNN的复杂度对比分析

训练阶段Transformer时间复杂度为$O(n^{2})$,RNN则为$O(n)$,但Transformer胜在可以并行计算,可以通过GPU优化,而RNN则只能串行计算,效率较低

推理时设序列长度d,Transformer复杂度与$d^{2}$成正比,RNN复杂度与$d$成正比,所以看起来确实RNN更为快捷,但无奈其训练太过缓慢

srds现在科学家又发明了KVcache的优化技术,通过缓存已算好的KV,可以将Transformer推理时的复杂度降到与$d$成正比,这样一来RNN的优势几乎已荡然无存,但不可否认,其在nlp的历史上留下了浓墨重彩的一笔~


Transformer&AR
http://example.com/2026/02/14/gen2/
作者
Yjy
发布于
2026年2月14日
更新于
2026年3月11日
许可协议