什么是transformer
GPT的全称叫做Generative Pre-trained trandformer.
Generative代表生成,Pre-trained代表预训练,trandformer代表网络结构。
这个trandformer可以说是AI最重要的网络架构
, 它让GPT走入了真正的大众视野,也支撑起了
整个的大语言模型。今天就讲一下trandformer
的基础原理。包括它怎么去处理语言,解决序列
建模,甚至去推导一下公式,让你不再只是去听
说trandformer,而是真正的去懂它。
我们都知道,语言,它是一个序列。所谓序列,
就是每一个词的意义,都可能依赖上下文。比如
这句话,我以为今天要放假了,老师说,别做梦
了。这句话的前后,出现了长距离的语义依赖,
和情绪转折,需要模型去记住,放假这个设想,
以及别做梦了这个否定态度。
在早期的模型里,去处理序列问题,主要是两大
类,一类叫做RNN,循环神经网络;一类叫LSTM
,长短期记忆网络,他们适合天生去处理序列,
但存在三个问题,第一个问题叫做信息遗忘,这
个概念是指序列在逐步处理的时候,早期的概念
会随着实践的推移而慢慢衰减,比如前100个词
的某个细节,到了第200个词的时候,模型可能
就完全忘记了。
第二个概念,叫做并行效率低。传统的RNN模型
,它只能一个词一个词的去处理,当前的这个词
还没处理完时,它还不能去处理下一个词,这就
导致了它在训练和推理过程中,他的速度非常慢
,尤其是在长序列任务里面,他的问题格外明显
。
第三个问题呢,就是长距离的依赖弱。尽管LSTM
引入了记忆机制,但它在记忆远距离关系词的时
候,依然很弱,比如要让模型理解前面是原因,
后面是结果,但它呢只能捕捉局部的上下文,很
难去捕捉全局的上下文。
因此trandformer的提出和出现,正是为了解决
这三个问题。
第一,它用self-attention去替代循环的结构
,让当前的词能够去看到其他所有的词,不再受
距离的限制。第二个,它完全是基于矩阵运算,
能够去高度的并行,支持GPU的大规模并行训练
。第三,它通过多层的堆叠,去捕捉复杂的语义
信息,实现对长文档的全局建模能力。
trandformer的架构呢,可以看成是由相同的多
个层堆叠而成的,每个模块呢,包含三个大的核
心组件。第一个叫做词向量嵌入和位置编码,第
二个叫多头的自注意力机制,第三个叫前馈的神
经网络加残差连接。
经过这三个组件以后,它才最后得到一个输出。
那我现在,给大家详细去拆解下这每一个组件的
内部逻辑。
trandformer和传统的RNN,它的最大不同在于
,它的词是没有顺序的,所有的词,都是平行的
,去送入模型的。比如一句话,我爱AI。它会转
成三个向量,因为这些词是平行地输入模型,模
型是不知道顺序的,所以,我们需要去加上位置
编码,位置编码呢,通常是由正弦函数或余弦函
授去得到的,它为每个位置去生成一个向量,代
表这个位置的特征。最终的输入呢,就是xinput
等于X的嵌入向量,加上位置编码。
第二个组件,叫做self-attention。它是
trandformer最核心最灵魂的模块,每个词都是
通过QKV来进行信息的交换。首先,会有三个额
外的参数矩阵,把原始的输入X转换成QKV,然后
会通过Q*K的点积的形式,去判断每个词之间的
相似度,判断当前词应该去关注谁。这一步,可
以让每个词去看见其他的词,并根据语义的相关
性去进行加权组合,更直观的去描述的话,Q就
代表每一个词,它都在问,我应该去关注谁,而
K呢,就代表一个词在回答。你应该去注意我吗
,V呢,就是Value,如果你关注我,那你就参考
这个信息。
还是这个例子,我爱AI。
它前面可能还有其他的文字,下面也有其他的文
字,模型会让爱,它只关注在我和AI身上。而不
会去关注其他词。
最后,多头的注意力就是指我有很多的自注意力
模块,每个模块,关注的是不同的信息,比如,
这个模块,关注的是我,这个模块,可能关注在
语法上,这个模块,可能关注在上下文上,这个
模块,可能关注在语言的类型上。
通过拆解不同的自注意力模块,以及让每一个模
块去关注不同的类型,来提升我整个模型对于任
务的建模和表达能力。进而来提升模型的泛化能
力。
经过完自注意力已有,我们会进入前馈的神经网
络,前馈的神经网络的公式可以写成这样,FFN
X=我的激活函数,X*W1+b,再乘以我的参数,最
后加上一个偏置,另外,也会通过残差连接和层
归一化,来提升模型的稳定性。
残差连接呢,主要是跳过路径,来加快我的梯度
传播。层归一化呢,主要是保证我的训练稳定。
这三个,就是我一个子什么是transformer的模
块。
最终的输出呢,可能会给到下一个什么是
transformer block。也可能会进入输出层,进
行生成或者判别等任务。
之前,我们一直在说,GPT是由什么是
transformer构成的,那接下里,我们来讲一讲
GPT的架构。
GPT不是使用完整的Encoder-Decoder的结构,
而是只保留了什么是transformer的Dcoder部分
,我们叫做Decoder-only,也就是说,它不再
是输入再去生成输出,而是通过一个自回归的形
式,逐词去生成序列。比如给定前n个词,去预
测n+1个词,但是我之前有提到过,什么是
transformer的自注意力机制,它是默认每个词
都能看到其他位置的词的,这对翻译或者分类的
任务,可能是没有问题的,但对于生成的任务,
可能会有很大的问题。如果你想生成一句话,叫
我喜欢看电影,当模型生成我喜欢的时候,它就
不应该看到看和电影,否者,这就不是生成了,
而是一种作弊,那怎么让模型实现不去看到未来
呢,这个过程的核心,就是掩码自注意力,也可
以叫因果注意力。我用一个表来给大家讲清楚,
因果注意力的一个实现方式。
假设一句话,我喜欢看电影,有这4个字表示,0
表示我,1表示喜欢,2表示看,3表示电影。
纵向序列呢,代表我当前在处理的词,横向序列
呢,代表我当前处理的词,它能够看到的词是多
少。
0我,它只能看到的就是我,打×的就是它看不
到的信息,也就是被他给遮住的信息,1呢,就
能看到我和看,2呢,看我就能看到我喜欢看,3
呢,电影,它能够看到所有的前面的词。
那它怎么实现呢,就是把这个×给设成负无穷大
,那经过自注意力的时候,经过softmax,它的
输出会自动变成0,这样就完全忽略了未来词的
影响,同时,也还是能够去保证矩阵处理的形式
,不影响它的并行效率。
最后,我们再总结一下
为什么是transformer会这么强?主要是分成4
块,第一块,并行效率快;它是完全的矩阵操作
的,可以用GPU高效的去做并行;第二块,它的
全局建模能力强,任意两个词都能相互注意,第
三块,它的架构通用,能用于文本、图像、视频
、语音,真正意义上的去实现了跨模态;第四,
它也完成了标准化,像GPT Diffusion Vit这些
,都是靠着transformer能够起飞。
所以,我觉得transformer就是AI世界的一个发
动机,给所有的智能应用去提供强大的动力。它
是AI架构的摩尔定律时刻,虽然不是一步到位的
通用智能,但它是踏上AGI的最关键的一步,

