支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


零基础解码Transformer与大模型核心原理

发布日期:2025-06-16 17:31:31 浏览次数: 1532
作者:大淘宝技术

微信搜一搜,关注“大淘宝技术”

推荐语

深入浅出解析Transformer技术,助你轻松掌握大模型核心原理!

核心内容:
1. Transformer与大模型的关系解析
2. 自注意力机制与多头注意力机制详解
3. Encoder和Decoder结构的工作流程

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家



本文以通俗易懂的方式,为“大模型小白”解析Transformer的核心原理,包括其与大模型的关系、自注意力机制、多头注意力机制、位置编码、Encoder和Decoder的组成等内容,帮助读者全面理解这一支撑现代AI的语言模型基石。


图片
前言

鉴于ChatGPT、DeepSeek等AI应用的兴起,大模型的风暴很快席卷了整个互联网行业,各个部门或多或少都在学习大模型的相关知识,在这些学习过程中,很容易就发现怎么都绕不开一个词“Transformer”。相信很多同学在学习中,都和笔者最初有一样的困惑:到底什么是Transformer?Transformer对大模型真的如此重要么?

基于上面的疑问,本文旨在帮助和笔者一样的“大模型小白们”了解Transformer的核心技术,并尽量用通俗易懂的语言进行描述。最后,如文中有不对的地方,欢迎大家指正~

Transformer和大模型之间是什么关系?

首先,你可以把Transformer想象成一种“超级配方”,而大模型就是用这个配方做出来的“满汉全席”。举个例子:假设你想做一道超级复杂的菜(比如佛跳墙),但普通锅具(传统AI模型)只能炒炒青菜,火力不够、步骤也麻烦。而 Transformer 就像发明了一种“万能高压锅”:
  • 火力猛:能同时处理大量信息(比如一句话的所有词语一起分析,而不是逐个字看);
  • 步骤简:用“注意力机制”(Attention)自动找到关键信息(比如理解“猫吃鱼”时,自动关联“猫→吃→鱼”的关系);
  • 可复制:这套方法能无限扩展,锅越大(模型参数越多),菜越香(效果越好)。
所以关系就是:Transformer 是“方法论”,教会AI怎么高效学习;而大模型是“实践成果”,用这种方法练出来的“全能学霸”。

图片

Transformer到底是什么?


了解了大模型和Transformer的宏观关系后,现在就要开始真正了解transformer的内核架构了,下图就是经典的transformer架构图,相信很多同学都已经看到过无数次了~ 下面我们将真正开始介绍本文的重头戏transformer。
Transformer内部结构

首先在看transfomer的模型时,你可以将该模型图一分为二来看,左边是Encoder,在有一段语句输入后,编码器负责将输入的序列进行编码,它可以将输入语句的每个单词向量(emmbedding)和单词的位置信息(position)进行融合编码,最终会得到一个编码后的矩阵,随后将其喂给右侧的Decoder模块,进行解码,Decoder 依次会根据当前推理过的单词 1~ n 再进行推理下一个单词 n+1。

只看语言描述,有点抽象,举一个?来看:
首先,假如我们在做一个翻译类型的任务,比如我们有一句话:我喜欢编码,当我们把这句话喂给Transformer时,就会有如下的流程:
第一步:获取输入句子的每个单词的特征值,也就是常说的embedding,但是只获取单词的特征值是不够的,因为推理一个句子,还需要单词之间的依赖关系,所以需要对单词的具体位置进行编码,获取到位置的编码信息(即位置的embedding,后面会详细讲位置信息如何编码的~),随后将两个Embedding相加,即可得到拥有位置信息的编码矩阵,如下图所示。


Transformer输入句子处理

第二步:将上面带有位置信息的矩阵X(每一行代表一个单词的向量信息)输入到6个Encoder中进行编码,得到最后的矩阵E,如下图所示。矩阵E,用表示,其中n为句子中的单词数量,d为向量的维度,论文中的d=512

Transformer编码图解

第三步得到Encoder的编码矩阵E后,会将E喂进Decoder进行解码处理,Decoder依次会根据当前已经翻译过的单词再推测下一个单词,比如当前翻译了“I” ,下次需要翻译“like”,模型会根据〈begin〉(起始符)和“I”综合推理翻译“like”这个单词。并且在这个推理过程中,存在Mask机制,比如你翻译到“I”,他会通过Mask盖住“I”之后的单词“like encoding”来进行预测,具体流程如下图所示

Transformer编码图解

图片

Encoder和Decoder的核心原理是什么?


了解了Transformer的大体流程后,肯定有很多同学会好奇,上文只说了编码和解码,那Transformer到底是如何做到的这些呢?先别急,我们再回到文章的一开始的Transformer架构图,可以看到在Encoder、Decoder内部都拥有着两个非常重要的模块,Multi-Head-Attention模块和Feed Forward模块。其中,Encoder包含一个Multi-Head-Attention模块,而Decoder则包含两个Multi-Head-Attention模块,不难发现,Transformer的核心其实就是这个多头注意力机制,那么下面我们就先从这个多头注意力机制进行攻克。

  4.1 Self-Attention机制

要理解多头注意力机制,首先要先搞明白注意力机制是什么。你可以把注意力机制想象成人类在阅读时用荧光笔标记重点的过程。比如你读这段话时,眼睛会自然聚焦在"荧光笔"这个关键词上,而忽略"比如""过程"这些辅助词。
在注意力机制中,当它处理一句话时,模型会给每个词分配不同的"关注值",比如翻译"那只猫舒服地趴在窗台上",生成"comfortably"这个词时
"舒服地"会获得最高关注值(90%)
"趴"获得中等关注(70%)
"窗台"只获得少量关注(30%)

这种动态权重分配让模型能灵活捕捉关键信息,就像我们读书时用荧光笔划重点一样,然后根据划线部分理解内容。而传统模型在处理这些任务时更像用手电筒看长文章,只能照亮当前位置附近;注意力机制则像同时打开整个房间的灯,还能自动调节每个区域的亮度。这种特性特别适合处理需要联系上下文的任务。

了解完Self-Attention大概是什么之后,我们接下来看一下Self-Attention具体是怎么运行的,接下来内容会偏硬核,需要一定的数学基础,笔者尽量描述的通俗易懂。

Self-Attention 流程图

上图是Self-Attention的总体机制流程,其实是对Attention计算公式的图形化描述,attention计算公式如下:

  • 4.1.1 公式含义

我们先抛开Q K V三个矩阵不谈,单论这个公式是什么含义呢?
首先要搞明白,一个矩阵乘它自身的转置矩阵代表了什么。我们知道矩阵本身就是一系列向量的集合,一个矩阵乘它自身的转置矩阵,就可以理解为这些向量分别和其他的向量做内积,而向量内积其实表示的是两个向量的夹角,表征一个向量在另一个向量上的投影,说人话就两个向量的内积是表示两个向量之间的相似度

用一个例子来看:





有一个“早上好”的特征矩阵,每一行代表这个字的特征向量,可以看出来在“早上好”矩阵和“早上好”的转置矩阵做计算时,“早”会跟自己以及其他两个字(“上”、“好”)的向量分别做内积,来得到一个新的向量。那这个新的向量有什么意义呢?结合我们上面对内积的解释,我们可以把它理解为这个值越大,说明两个向量的相似度越高,值越小说明两个向量之间关系越弱。进一步理解一下,这个向量是不是可以在一定程度上(不是完全)表示,在关注词A的时候,是不是应给予B词更多的关注。

那矩阵 的结果是一个矩阵,它里面保存了每个向量自己、以及其他向量进行内积的计算结果。至此,我们了解了一个矩阵乘它自己转置矩阵的含义,那我们再来看softmax的作用是什么?

这里不再对softamax公式进行详细介绍,只简单介绍意义。softmax的作用就是归一化,简单来说,经过归一化后,会将单行向量的值的和变为1,如上图的结果矩阵将由[11,11,10],变为[0.4,0.4,0.2]。

归一化的这个结果,其实就相当于我们后续乘的X的权重系数。用人话来讲就是,当我们关注“早”这个字的时候,我们应分配0.4的权重关注它自身,分配0.4的权重关注“上”,0.2的权重关注“好”。
我们理解完了,那最后的乘X是什么作用呢?如下图所示
观察上图,行向量X与第一个列向量相乘,得到了第一个新的行向量[1.4],且这个行向量与X的的维度相同。那么新的行向量的每一个数值,都是由三个词向量在这一维度加权求和后得到的,这个新的行向量就代表“早”字经过注意力加权求和后的表示

理解了公式整体的含义之后,再看一个细节,为什么要除呢?其实这个操作只是为了防止QK的结果过大,所以会除一个尺度标度,而表示query和key的向量的维度,如果不对softmax的输入做缩放,那么万一输入的数量级很大,softmax的梯度就会趋向于0。

  • 4.1.2 Q K V含义

理解了上面自注意力机制公式的含义后,其实Q(Query),K(Key),V(Value)只是一个公式的入参,本质是根据输入矩阵X跟线性矩阵WQ、WK、WV做内积得到的,而输入矩阵X则是之前单词的特征向量矩阵X或者上一个Encoder block的输出,具体的计算过程如下图所示。

Q K V矩阵计算

看到这里,可能有些同学会有疑问,既然都是通过线性矩阵得到的Q、K、V,那为什么不使用X矩阵本身呢?这个答案其实并不难想,本质上使用线性矩阵是为了提升模型的拟合能力,因为矩阵W都是可以训练得到的,从而起到一个缓冲的效果。
一句话总结Q、K、V在自注意力机制里做的事情:通过query和key的相似程度来计算出value的权重分布

  4.2 Multi-Head Attention机制

其实理解了注意力机制后,多头注意力机制也是非常好理解的,简单来说它是对单层注意力机制的一个叠加模型,通过多层计算Q、K、V,再将各部分结果拼接,最后通过线性化处理得到一个与输入同等维度的结果矩阵,多头注意力机制架构图如下所示。


Multi-Head Attention机制
将上述过程展开叙述:首先通过权重矩阵 将Q、K、V分割,每个Head单独计算self-attention,同时因为训练出的 也各不相同,所以得出的Q、K、V也是不同的,因此我们说每个Head的关注点也各有侧重。最后将每个Head得出的结果进行Concat(拼接)操作,然后通过总体权重矩阵决定对每个Head结果的关注程度(注意最后的Z矩阵维度和最初输入的X维度相同),从而能够做到在不同语境下对相同句子的不同理解。具体图解如下图所示。


Multi-Head Attention计算流程

图片
位置编码

从Transfomer架构图可以看到,其实在Encoder之前还有一个模块,即位置编码模块。不免有同学好奇,为什么需要在Encoder输入之前要进行位置的编码呢?其实这也不难理解,通过上面的学习,我们可以发现在做自注意力机制时,它是跟每一个输入的词向量进行内积,在这个过程中,并没有考虑到词向量的顺序,所以这最后得到的结果一定是缺失原来文本的顺序信息的。

Transformer内部结构

位置信心的Embedding通常有两种方式获得,一种是通过训练得到,另一种是直接使用公式,而Transformer中的位置信息则是采用了后者——公式获得。计算公式如下:
针对上面的公式,进行解释一下:pos代表单词的位置,2i和2i+1则分别代表偶数位置和奇数位置,d则代表向量维度(和前面单词的embedding维度相同),使用该公式有以下几个好处:
  • 使用公式法能够适应比训练集里所有句子更长的句子场景,这么说可能有点绕,举一个例子,假设我们训练的时候,训练集里最长的句子只有100个单词,但是现实中我们在推理的时候,可能会存在101个单词的场景,这时候呢根据公式就可以计算出101单词的位置信息。
  • 可以让模型更容易地计算出相对位置。举一个例子,假设A单词的位置是pos, B单词和A单词之间的位置距离为L,那么PE(pos+L)则可以由PE(pos)计算得到。因为Sin(A+B) = Sin(A)Cos(B) + Cos(A)Sin(B)Cos(A+B) = Cos(A)Cos(B) - Sin(A)Sin(B)

根据公式得到位置信息后,将单词的Embedding信息和位置Embedding相加,就可以得到带有位置信息和单词特征信息的向量,而这个向量也正是Encoder的输入。

图片

Encoder的组成


可以看到Encoder的内部除了Multi-Head Attention模块,还有Feed Forward Network、Add & Norm模块,这两个模块都是跟在Multi-Head Attention模块之后做“加强表现”效果的。
Encoder架构

  6.1 FFN模块

首先,可以看到不论Encoder还是Decoder,在做完Multi-Head Attention后,都会接一个FFN网络,那这个FFN网络到底有什么用呢?要搞清这个问题,还是要先从原理入手。
FFN的计算公式:通过公式,其实不难得出,FFN是由全连接层(FC)和激活函数Relu组成。其实通过分析公式,已经可以得出FFN的作用,即对矩阵进行空间的变换,引入非线性特征,来增强模型的表现能力。

FFN模块架构图

可能有些同学会存在疑问,在Multi-Head Attention的最后其实有线性矩阵的计算,已经将结果映射成和输入X相同维度了,为什么这里还要增加一个FFN模块?笔者认为这里是把向量先线性变化到高维空间再重新变换回来可以得到更加抽象的数据,泛化效果更好。当然把FFN模块去掉也可以使用,但是效果差了很多。(笔者观点,有待讨论~)

  6.2 Add & Norm模块

Add & Norm 层由 Add 和 Norm 两部分组成,其计算公式如下:
从公式开始分析,X为Multi-Head Attention 或者 Feed Forward 的输入(从架构图中更能清晰得出),MultiHeadAttention(X) 和 FeedForward(X) 则表示输出 。有些同学会疑问这两者是否可以直接相加?其实我们看前面所有的技术介绍时,可以发现所有的模块在最后都经过了线性的变换从而保证输出和输入的X矩阵维持同样的维度,比如在Multi-Head Attention模块,最后乘了矩阵保证了输出和输入相同维度。

Add是指X + MultiHeadAttention(X)和X + FeedForward(X),这是一种残差网络,通常用于解决深度学习中多层网络训练的问题,通过将前一层的信息无差别的传递到下一层,从而可以让网络只关注当前差异的部分。(具体残差网络的知识不在此展开)

残差网络

Norm模块则代表了Layer Normalization,简单来说它的作用是规范优化空间加速训练的收敛
当我们使用梯度下降算法做优化时,我们可能会对输入数据进行归一化,但是经过网络层作用后,我们的数据已经不是归一化的了。随着网络层数的增加,数据分布不断发生变化,偏差越来越大,导致我们不得不使用更小的学习率来稳定梯度。Layer Normalization 的作用就是保证数据特征分布的稳定性,将数据标准化到ReLU激活函数的作用区域,可以使得激活函数更好的发挥作用。

图片
Decoder模块的组成 

从Decoder的架构图中,我们可以看到和Encoder层会有一些相似之处,但也存在一些差异:
  • Decoder存在两个Multi-Head Attention模块,而Encoder只有一个
  • Decoder的第一个Multi-Head Attention模块采用了Mask操作
  • Decoder的第二个Multi-Head Attention模块的输入,并不止依赖于第一个Multi-Head Attention模块的结果,同时依赖了Encoder的输出(后面会详细解释)

Decoder架构

  7.1 Masked Multi-Head Attention模块

首先我们要了解什么是Mask,在深度学习中Mask通常表示掩码的意思,即它会对某些值进行掩盖处理,使在训练中进行参数更新时不会产生效果。而在Transformer模型中,它是对未来的内容进行了掩盖处理,在t时刻时,我们的解码输出只能依赖于t时刻之前的产出,而不能依赖t时刻之后的输出。举一个例子,我喜欢写代码的翻译是“I like encoding”,在t时刻我们预测了“<begin> I”,这时候在需要预测"like"时,只能依赖“<begin> I” 而不能依赖“like encoding”进行。所以,在transformer里需要想了一个办法,把t时刻之后的信息全部给隐藏起来。

具体的做法其实也很简单,它产生一个上三角的矩阵,上三角的值全部为0。把这个矩阵和我们的目标矩阵相乘时,便可以做到将t时刻之后的特征全部隐藏。
举一个例子:

假如我们有一个 0 1 2 3 4的单词向量矩阵,那它的Mask同样也得是一个5*5的矩阵,按照设定,我们将上三角的区域全部置为0(即绿色区域为非掩盖区,黄色为0值区),这样在注意力机制算得矩阵后,再将其与Mask矩阵进行按位相乘,即可得到一个带有掩码的矩阵结果(黑色部分为0值),后续再乘V矩阵即可得到最终的self-attention的结果。

  7.2 Decoder的两个Multi-Head Attention模块

从Decoder架构图中,我们不难看出,第一个Multi-Head Attention模块的query key value均来自前一层的Decocder的输出,但是加入了Mask操作,从而让模型只能attend到前面已经推理过的词语,因为在真正推理过程中我们当前是不知道下一个输出词语,这是我们之后才会推测到的。

而第二级的Multi-Head Attention模块,即它的query来自于之前一级的Decoder层的输出,但其key和value则来自于Encoder的输出,这使得decoder的每一个位置都可以attend到输入序列的每一个位置。这样做的好处是在 Decoder 的时候,每一位单词都可以利用到 Encoder 所有单词的信息 (这些信息无需 Mask)

Decoder架构

图片
Transformer如何根据Decoder结果实现预测的

解码组件的输出是一个实数的向量,我们如何能够把这些浮点数变成一个单词?这便是后面的linear+softmax模块需要做的。

线性变换层是一个简单的全连接层神经网络,它可以把Decoder产生的向量矩阵投射到一个比它大的多的一个被称为对数几率的向量里(logits,维度为vocab_size),表示模型对每个词汇的“原始分数”例如,词表有 30000 个词,则输出一个 30000 维的向量,并且每个单元格里都对应某一个单词的分数。

最后会通过softmax层,把这些分数转换成概率信息,概率最高的单元格则会被选中,并且它对应的单词作为这个时间步的输出,具体流程如下图所示。


图片
总结

1. Transformer由Encoder、Decoder、位置编码模块组成
  1. Encoder用来对输入序列进行高纬度特征提取,并生成编码后的向量信息
  2. 因为Encoder获取不到序列之间的位置信息,所以需要位置编码模块对其进行位置特征的补充,从而让模型能够拥有语义信息+位置信息的特征
  3. Decoder基于已生成的结果和Encoder的输入进行生成最终目标序列
2. Self-Attention 可以同时关注序列中的所有元素,而不像传统的 RNN 或 LSTM 那样需要逐步处理。这使得它能够并行计算,训练速度更快,同时也能更好地捕捉长距离依赖关系。
3. Multi-Head Attention 实际是多个Self-Attention机制的叠加,它的作用是让模型能够同时从多个角度捕捉输入序列中不同位置之间的依赖关系,从而更全面地理解上下文信息
4. 一句话总结Transformer的作用:可以处理序列数据(如文本、语音等),并能够高效地捕捉序列中元素之间的依赖关系,从而完成各种复杂的语言任务。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询