一文彻底读懂Transformer核心原理
今天,我们深入探讨Transformer——这一构成几乎所有尖端大语言模型核心的架构基石。在具体拆解之前,先带大家回顾自然语言处理(NLP)的一些基础概念,随后逐步剖析Transformer的运行机制。本文面向所有对NLP感兴趣的朋友,虽然涉及概念较多,但整体不算复杂;若你对标准神经网络、嵌入、编码
今天,我们深入探讨Transformer——这一构成几乎所有尖端大语言模型核心的架构基石。在具体拆解之前,先带大家回顾自然语言处理(NLP)的一些基础概念,随后逐步剖析Transformer的运行机制。本文面向所有对NLP感兴趣的朋友,虽然涉及概念较多,但整体不算复杂;若你对标准神经网络、嵌入、编码器和解码器已有基本认知,阅读体验会更流畅。
Transformer之前的NLP发展简史
在正式进入Transformer之前,有必要了解其出现的背景。如果你已经熟悉词向量嵌入、RNN、LSTM和注意力机制,可以直接跳到Transformer部分。
词向量嵌入是NLP的根基——将单个单词转化为数值向量,用数字表征其语义。你可以将最终的向量空间想象成一个遵循逻辑关系的“词空间”。单词本身在数学上难以直接运算,但向量及其关系却非常适合处理。

词汇向量嵌入器的核心任务就是把词汇映射为数字,并捕捉其通用含义。
这种转化过程通常称为“嵌入”。Word2Vec是NLP领域具有里程碑意义的论文,旨在生成具有特定实用特性的嵌入——研究者希望单词之间能进行代数运算。利用Word2Vec,当你嵌入“king”的向量,减去“man”的嵌入向量,再加上“woman”的嵌入向量,你会得到一个与“queen”语义相近的向量。

词汇嵌入的代数运算概念展示:如果将每个点视为从原点出发的向量,从“king”的向量中减去“man”,加上“woman”,结果向量会接近“queen”。实际嵌入空间的维度高得多,“接近度”的衡量方式也可能不太直观(如余弦相似度),但原理相通。
随着技术发展,词嵌入依然至关重要,GloVe、Word2Vec和FastText都是备受推崇的选项。子词嵌入通常比全词嵌入表现更强,但那是另一个话题了。
递归神经网络(RNNs)
有了数字化的词向量,我们就可以分析单词序列了。早期一种有效的策略是递归神经网络(RNN),它能在顺序输入上循环运行,捕捉序列中的依赖关系。

RNN的基本概念:一个普通的全连接神经网络,但会把输出反馈到自身。
与传统神经网络不同,RNN通过在循环连接中重用相同的参数,能处理任意长度的序列——无论长度是10还是100,参数数量都保持一致。这种灵活性使RNN被广泛应用于多种建模问题:序列到序列、序列到向量、向量到序列,以及序列到向量再到序列。

不同建模策略中RNN应用的概念图:序列到序列用于预测下一个单词;序列到向量用于评估评论满意度;向量到序列用于把图像压缩为向量再描述成文本;序列到向量再到序列用于翻译。
然而,RNN理论上能处理无限长序列,实际中却并不实用。由于每一层共享权重,长序列容易“遗忘”输入内容,所以通常只适用于非常短的单词序列。研究者尝试过引入“门控”和“泄露”机制来改进,其中最著名的就是长短期记忆网络(LSTM)。
长短期记忆(LSTMs)
LSTM的设计初衷是增强RNN在保留重要信息方面的能力。它具备短期和长期记忆功能,能在序列任意位置选择性地保留或遗忘信息到长期记忆中。

LSTM结构示意图
LSTM的三个关键子组件
LSTM的核心体现在三个子组件上:“遗忘门”负责筛选并遗忘部分旧的长期记忆信息,“输入门”负责将新信息加入长期记忆,“输出门”控制从长期记忆中提取信息,作为下一次迭代的短期记忆使用。

LSTM中的参数。这个例子中LSTM期望输入向量维度为3,内部状态向量维度为2。每个门控后面的“S”和“T”分别代表sigmoid或tanh激活函数,用于将值压缩到一定范围(如0到1或-1到1),使得网络能够“忘记”和“记忆”。
LSTM及其类似架构(如GRU)相比经典RNN有很大改进——它们把记忆作为独立概念,能检查和提取关键信息,处理序列数据时更具优势。不过,即便LSTM能建模更长的序列,在许多语言建模任务中仍会面临记忆遗忘的问题。而且,LSTM和RNN一样依赖前序输入进行逐步计算,训练难以并行化,速度较慢。
通过对齐实现注意力机制
划时代的论文《通过联合学习对齐和翻译实现神经机器翻译》普及了注意力机制,也为Transformer中的多头自注意力奠定了基础。简单来说,注意力机制允许模型在生成输出时查看所有潜在输入,并选择性地关注与当前输出相关的部分——它赋予了模型决定哪些输入在特定时刻重要与否的能力。这种方法在翻译任务中效果显著。

正方形代表词向量嵌入,圆圈代表中间向量表示。红色和蓝色的圆圈是循环网络的隐藏状态,白色圆圈是通过对齐机制由注意力创建的隐藏状态。关键点在于,注意力机制能选择在任何给定步骤呈现给输出的正确输入。
Transformer架构详解
现在,我们终于来到了Transformer——一个集结前人智慧和全新思想的杰作,它彻底革新了NLP领域。

Transformer整体架构图
接下来,我们会逐步拆解Transformer的每个组成部分,深入探讨每个模块的工作原理。内容虽然丰富,但会尽量避免复杂的数学推导,确保概念易于理解。
架构概览
Transformer本质上是一种编码器/解码器模型,和我们前面提到的序列到向量再到序列模型类似。编码器接收输入并将其转化为一个紧凑表示,解码器基于这个嵌入递归地构建并生成输出。

简述序列到向量到序列任务中的Transformer:输入(如“我是一名经理”)被压缩成抽象表示,编码了整个输入的意义。解码器递归工作,类似RNN,构建输出。
输入嵌入和位置编码

原始图中的输入嵌入模块
Transformer的输入嵌入策略与之前讨论的类似,利用类似Word2Vec的词空间嵌入器将输入单词转换为向量。这些嵌入向量与模型一同训练,实际上是一个随学习不断优化的查找表。初始时每个单词对应随机向量,随着学习过程逐渐调整。
与RNN逐步处理序列不同,Transformer能一次性编码整个输入序列。但这样一来,编码器可能失去单词之间的顺序位置信息。为了弥补,Transformer引入了位置编码,确保模型识别序列中单词的顺序。
"""
Plotting positional encoding for each index.
A positional encoding for a single token would be a horizontal row in the image
inspired by https://machinelearningmastery.com/a-gentle-introduction-to-positional-encoding-in-transformer-models-part-1/
"""
import numpy as np
import matplotlib.pyplot as plt
sequence_length = 512
embedding_dimension = 1000
def gen_positional_encodings(sequence_length, embedding_dimension):
positional_encodings = np.zeros((sequence_length, embedding_dimension))
for i in range(sequence_length):
for j in np.arange(int(embedding_dimension/2)):
denominator = np.power(sequence_length, 2*j/embedding_dimension)
positional_encodings[i, 2*j] = np.sin(i/denominator)
positional_encodings[i, 2*j+1] = np.cos(i/denominator)
return positional_encodings
fig, ax = plt.subplots(figsize=(15,5))
ax.set_ylabel('Sequence Index')
ax.set_xlabel('Positional Encoding')
cax = ax.matshow(gen_positional_encodings(sequence_length, embedding_dimension))
fig.colorbar(cax, pad=0.01)

位置编码示例:Y轴代表后续单词,X轴代表特定单词位置编码内的值,每一行代表一个单词。
Transformer利用正弦和余弦函数联合编码位置,使得位置信息连续平滑地表达。你可能会担心这样的波形加到单词嵌入中会掩盖原始意义,但神经网络(尤其是Transformer)非常擅长处理平滑连续的函数。对于足够大的模型,这种编码不会造成负面影响,反而帮助模型更好地捕捉位置信息。
多头自注意力机制:核心组件解析
在Transformer架构中,多头自注意力是最关键的子组件。

原始图中的多头自注意力机制
不过,称它为“注意力”可能有点误导,它实际更多地扮演“关联”和“情境化”的角色——让单词之间相互交互,把输入单词的嵌入向量列表转化为一个矩阵,全面表达整个输入序列的深层含义。

简单来说,多头自注意力通过数学方式将不同单词的向量组合起来,形成一个编码了更深层次意义的矩阵。
运行过程分为四个步骤:
步骤1:创建查询(Query)、键(Key)和值(Value)
首先理解“查询”“键”“值”这三个概念。它们只是嵌入输入的不同变换形式,用于后续的关联计算。

将嵌入输入转换为查询、键和值。输入维度是单词数量乘以嵌入大小,查询、键和值的维度都与输入相同。本质上,一个密集网络将输入投影到特征数量是输入三倍的张量中,同时保持序列长度不变。
这个密集网络包含了多头自注意力中所有可学习参数。模型通过学习如何调整这些参数来优化输入在最终任务中的表现。
步骤2:分割成多个头(Heads)
在计算自注意力之前,将查询、键和值分割成多个“头”,以增加模型的表示能力。核心思想是通过多个不同的“头”捕捉输入数据中不同维度的关联信息,而不是只依赖单一的关联方式。

例子中有3个注意力头,查询、键和值被分为3部分,沿特征轴分割(而不是单词轴),每个单词在每个注意力头中仍然存在。
步骤3:注意力头计算
现在每个头拿到了分割后的子组件,如何生成情境化结果?论文中通过矩阵乘法实现。

矩阵乘法:一个矩阵的行与另一个矩阵的列逐对点积运算,生成结果矩阵。在注意力机制中,查询和键相乘产生一个“注意力矩阵”。

使用查询和键计算注意力矩阵。键被转置以允许矩阵乘法产生正确的形状。
这个步骤使每个单词的表示都能与其他单词的表示交互。由于查询和键由密集网络定义,注意力机制学会了如何调整它们以优化注意力矩阵的内容。得到注意力矩阵后,再与值矩阵相乘。这一步有三个目的:引入输入的另一种表示增加情境化信息;创建系统使查询和键的功能成为对值的一种变换(允许自注意力或交叉注意力,取决于来源);确保输出与输入大小相同,简化处理。
重要的修正:Softmax归一化
在注意力矩阵与值矩阵相乘前,还要经过Softmax运算——按行进行。这个细节至关重要,因为它把注意力矩阵的每一行转化为概率分布,每个元素表示对应位置上的权重。这种概率化与对齐注意力概念高度吻合,增强了模型的解释性,使其更精准地捕捉关键信息。

从“注意力对齐”文章可以看到,每一行都是概率分布,总和为1,强制最重要的事物与其他重要事物相关联。
这个细节常被忽略,但它是Transformer架构中至关重要的一环——将模糊的关联性转化为稀疏且富含意义的选择。

注意力矩阵(查询和键的矩阵乘法结果)乘以值矩阵,得出注意力机制的最终结果。由于注意力矩阵的形状,结果与值矩阵形状相同。这是来自单个注意力头的结果。
步骤4:构建最终输出
每个注意力头输出不同的结果矩阵,把它们沿特征轴拼接起来。

每个注意力头的结果被连接在一起
最终输出矩阵与原始输入矩阵形状完全一致,但每行经过了多头自注意力处理,包含了更抽象丰富的信息。简而言之,注意力机制将嵌入输入转换为富含抽象上下文的表示。
Add and Norm 层

原始图中的Add and Norm
Add and Norm操作在Transformer编码器的每个子层中应用两次,效果相同。核心是两个概念:残差连接(Residual Connections)和层归一化(Layer Normalization)。
残差连接在深度学习中很常见(比如U-Net架构)。简单说,当模型进行复杂计算时,有时会“迷失方向”。通过残差连接重新引入输入数据,可以帮助模型保持一些简单结构,防止它偏离正确方向。在Transformer中,“Add”就是实现这种残差连接,确保信息从前一层顺利传递到下一层。
层归一化则约束数据偏差。深度网络经过多层计算后,数据可能出现极值,导致训练不稳定。层归一化计算当前层激活值的均值和标准差,将数据标准化到合理分布范围,确保模型稳定性和训练效率。
前馈神经网络(Feed Forward)

原始图中的前馈网络
注意力机制处理后,输出通过一个简单的密集网络(前馈网络)。这一步可以看作一种投影,模型学习如何将注意力机制的输出转换为对解码器更合适的格式。随后,前馈网络的输出再通过加法操作和归一化层,得到最终的解码器输入表示。
解码器的主要功能
我们已经了解了编码器的工作机制,得到了高度上下文化的表示。接下来看解码器如何利用这些表示生成输出序列。

编码器输出与解码器之间关系的高级表示:解码器在每次递归输出循环时都会参考编码后的输入。
解码器与编码器结构上有很多相似之处,但也有关键变化。解码器采用了与编码器相同的词嵌入方法和位置编码技术,但自注意力机制中使用了“掩码”。此外,解码器还包含另一个多头注意力块,这个块使用编码器的输出作为键和值,查询基于解码器的输入。通过这种方式,解码器综合考虑编码器和解码器输入的信息。通过多头注意力块后,输出再经过前馈网络、加法归一化层、线性层以及Softmax函数,输出一个概率分布,表示每个可能输出单词的概率。
掩码多头自注意力(Masked Multi-Head Self-Attention)
解码器的独特之处在于“掩码”注意力机制。这与训练方式紧密相关。

掩码多头自注意力中掩码的工作方式(以英语到法语翻译为例)。输入是“I am a manager”,期望输出是“Je suis directeur”。为了简化,忽略功能标记。
传统RNN需要按顺序训练,预测下一步高度依赖前一步分析,速度较慢。通过对注意力机制进行巧妙修改,Transformer克服了这一限制,实现并行训练。训练时我们知道所需的输出序列,可以把整个输出序列(包括尚未预测的部分)同时输入解码器,并用掩码隐藏尚未预测的输出。这使得模型能同时对序列中所有位置进行训练,大大提高了训练效率。
以上就是Transformer模型的技术创新和工作原理——从编码器-解码器架构到多头自注意力、输入嵌入、位置编码、残差连接和层归一化,特别是解码器中的掩码注意力机制,它让并行训练成为可能。
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:一文彻底读懂Transformer核心原理要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
相关热点面壁智能聚焦端侧AI,不拼参数大小,而是通过知识密度提升与模型风洞技术,将大模型压缩至手机、汽车等设备。其MiniCPM以2B参数超越同期8B对手。CTO曾国洋22岁主导训练中国首个大语言模型CPM-1。端侧AI追求“默契系统”,在用户开口前预判需求,已在吉利、上汽大众等车型落地应用。
印度IT巨头HCLTech投资最高350亿卢比建设AI数据中心,容量可扩展至50MW,提供从设计到运营的端到端服务,旨在满足政府及企业日益增长的算力需求,抢占印度快速增长的数据中心市场,并推动AI基础设施布局。
小米具身机器人在汽车工厂自攻螺母上件工站实现双侧作业成功率98%,接近人工水平。同时在新工站分别达到90%成功率,从单一操作拓展至多工站协同,验证了具身智能在复杂工业环境的落地能力。
全球AI行业正迎来新的财富格局,DeepSeek创始人梁文锋凭借其公司的迅猛发展,个人财富急剧膨胀,一举超越多位硅谷知名人物,成为全球AI公司领域的新首富。以下将详细解析其身价飙升背后的关键因素及公司发展历程。 一、身价飙升至360亿美元,超越多位AI大佬 根据最新彭博亿万富豪指数,DeepSeek
- 日榜
- 周榜
- 月榜
热点快看
