Transformer1( 了解整体知识架构)

张开发
2026/5/11 21:54:07 15 分钟阅读

分享文章

Transformer1( 了解整体知识架构)
在人工智能和机器学习领域Transformer模型的出现无疑是一场革命。自从2017年Google的研究团队首次提出以来Transformer迅速成为了处理序列数据如文本、语音等的首选架构彻底改变了自然语言处理NLP的面貌。基于 Transformer 架构的 LLM 在复杂对话、代码编写、艺术创作等领域取得了卓越的表现比如OpenAI 的 GPT、谷歌的 BERT、 Athropic 的 Claude 、 Meta 的 Llama、阿里的通义千问、腾讯的混元等。接下来让我们对 Transformer 模型一探究竟。为了让同学们快速的透彻的理解Transformer 模型与之前一样我们不像其它文章开篇就是公无式脑推懵导逼的学习模式先从整体上了解 Transformer 是个什么东西以及它为什么能取得这么好的结果。既然你都想学习 Transformer了肯定多少有些深度学习的基础如果没有就不求甚解的看一下在场合上当个谈资也足够了。背景在 Transformer 出现之前 NLP的主流模型是RNNRNN 最致命的缺点是结构限制了并行计算能力而 Transformer 设计的初衷也是为了解决这一问题。你可以理解为Transformer 实现的功能和 RNN 是一样的但是实现了并行计算。RNN 通过训练的先后顺序体现了位置信息也正是这种架构必须一个词向量一个词向量的训练下去而 Transformer 将位置信息进行位置编码位置信息在矩阵中体现所有词向量能一起计算。举个例子“The animal didnt cross the street because it was too tired”it 指的是 animal 还是 streetRNN 必须把 it 前面词语按照先后顺序在模型中走一遍才能理解 it 指的是 animal而 Transformer 可以根据位置编码一次性直接理解 it 指的是 animal 。结构解读下面这幅图出自于 Google 发表 Transformer 的论文《Attention Is All You Need》当你第一眼看到的时候可能会觉得有点复杂而且看不懂什么意思不用担心当你看完这篇文章后能理解大概是怎么回事甚至能理解一些其中的妙用。为了方便理解假设我们正在用这个模型训练英译汉的翻译模型接下来我们顺着模型方向去学习和理解每个模块。Inputs模型的输入。英译汉建模肯定用英文和翻译后的中文去训练此处输入的只有英文训练数据。Input Embedding输入嵌入可以理解为量化。在英译汉建模中的作用是把输入的英文转换成数字矩阵。假设我们使用Google News Word2Vec 模型 Embedding 语句“I am a student”这句话可以拆解为4个词语“I”、“am”、“a”、“student”那么最终的输入矩阵就会是一个4×300的矩阵。拓展Input Embedding 常用的方法是 Word2Vec。Word2Vec是一个算法框架可以通过大量的文本数据来生成词语和向量的关系。我们可以选择自建Word2Vec模型也可以用公开的模型比如Google News Word2Vec 模型由Google基于1000 亿个单词的Google News数据集上训练的训练模型包含300 万个词向量每个词向量有300个维度。这 300 个维度并没有明确的意义你可以理解为深度学习的黑匣子每个节点也没法解释。尽管每个维度没有固定的意义但是可以用数学上的计算体现出不同词语之间的关系比如相似度 king 和 queen 之间的关系类似于 man 和 woman 之间的关系它们两两连线在 300 维空间内是平行的这就是数学神奇的魅力。Positional Encoding位置编码把位置通过正弦余弦函数量化也变成一个向量。符号对位相加你可以理解为把 Input Embedding 结果和 Positional Encoding 结果相加这样相加后的矩阵既包含了词语信息也包含了词语位置信息。Multi-Head Attention多头注意力是 Transformer 模型的核心。我们把它拆开理解多头和注意力注意力是前馈神经网络的进化版本可以体现出一句话中不同词语之间的权重关系。比如“The animal didnt cross the street, because it was too tired.” 假设这句话中 it 与其它词语 [The, animal, didnt, cross, street, because, was, too, tired] 之间的权重为 [0.1, 0.8, 0.1, 0.1, 0.4, 0.1, 0.1, 0.1, 0.1] 可以看出与 it 最相关的是 animal这样就能从数学的角度理解这句话it 就是指 animal。多头的意思表示多个就是有多个这样的权重向量也可能是 [0.1, 0.9, 0.1, 0.1, 0.5, 0.1, 0.1, 0.1, 0.1]多头可以从更多的空间或角度去理解这句话的含义避免一个歧义引起了整句话的理解错误。Add Norm残差网络相加和归一化。残差网络相加是为了解决梯度消失和梯度爆炸问题。归一化利用均值和方差减少异常值对模型的影响结果会更稳定更适合后续层的处理减少数据特征的偏差。Feed Forward前馈神经网络通过激活函数实现非线性变换从而捕捉更复杂的特征。Output Embedding输出嵌入和 Input Embedding 一样把输出量化成矩阵。在英译汉模型中指的是汉语的数据。Masked Multi-Head Attention掩码多头注意力。与多头注意力一样区别就在于掩码。这个地方需要借助英译汉建模来理解多头注意力的作用是理解文本而掩码多头注意力只用于 output 的理解也就是对汉语的理解。但我们输入的 output 是英文翻译后的中文这样就有作弊之嫌。就比如小明和小红同做一套试卷小明之前做过小红之前没做过俩人都考了 99 分请问谁的水平更高万一俩人都考了 80 分你觉得谁的水平更高然后如果重新做一套俩人都没做过的试卷谁的分数会更高这样你就理解了因为我们是英译汉模型所以要对还没翻译出来的汉字进行掩盖只让他去理解已经翻译出来的汉字这样最终翻译结果准确才能说明模型是真的好。拓展假设 1 表示允许关注-∞ 表示屏蔽那么由 4 个词语组成的句子的mask矩阵为Linear全连接层与前馈神经网络的区别就是没有引入激活函数所以只能实现线性变换这样做的目的是不改变数据分布的特性。Softmax将 Linear 的输出转化为概率分布以便于计算损失函数然后通过反向传播来更新模型参数。理解不够透彻的可以看看我的这篇博客。Softmax从小白到深度理解_softmax 为什么进行指数计算-CSDN博客文章浏览阅读1.4k次点赞7次收藏7次。大家在学习深度学习时肯定会遇到softmax这个知识点初学者大都一知半解没有理解透彻很多文章直接讲述softmax公式及求导忽略了其中的原因。初学者通过此文可以梳理知识结构高手可直接查看公式推导来巩固知识用来面试手推。softmax公式及理解在深度学习反向传播算法中为什么softmax求导如此重要softmax求导公式推导..._softmax 为什么进行指数计算https://blog.csdn.net/u014182497/article/details/115058389所有模块都已经讲完了接下来我们顺着结构图走一遍仍然用英译汉建模来套用。首先准备好英译汉的训练数据英文数据和英文翻译后汉语数据。为了方便理解我们只用 “I am a student” 和“我是一名学生” 这一对训练数据走一遍训练模型。先看结构图的左边首先会把 “I am a student” 量化为矩阵然后和位置编码相加这样矩阵就能同时体现出词语本身和词语位置的信息。然后用 Multi-Head Attention 去理解矩阵所代表 “I am a student” 的含义。再用残差网络相加和归一化处理 前面计算的矩阵减少数据特征偏差。再通过前馈神经网络捕捉到更多更复杂的数据特征然后再做一遍残差网络相加和归一化。再看结构右边首先把 “我是一名学生” 量化为矩阵然后和位置编码相加。接下来进入Masked Multi-Head Attention它会再给矩阵增加4 个维度因为“我是一名学生”可以拆分为“我”、“是”、“一名”、“学生” 4 个词然后再对 Masked Multi-Head Attention 计算后的矩阵进行残差网络相加和归一化处理。到目前位置模型已经对 “I am a student” 和 “我”、“我是”、“我是一名”“我是一名学生” 进行了充分的理解接下来把他们作为输入再做一遍 Multi-Head Attention 和残差网络相加、归一化。再通过前馈神经网络捕捉到更多更复杂的数据特征然后再做一遍残差网络相加和归一。最后做一次全连接层得到 “I am a student” 的翻译结果也许训练时翻译结果为 “我是一名教师”然后再将翻译结果用 softmax 转为概率和 “我是一名学生” 计算损失函数然后通过反向传播来更新模型参数。有个重要的点我需要拿出来再单独讲一下Transformer 用 “我” 预测 “是”用 “我是” 预测 “一名”用 “我是一名” 预测 “学生”它们可以同时预测这就是 Transformer 最精妙的地方不像 RNN 那样前后递进关系 必须等 “我” 预测 “是” 完成后才能用 “我是” 预测 “一名”...Transformer 由左右两个大模块组成左边叫编码器Encoder右边叫解码器Decoder。编码器的作用是将输入序列通过计算转换为高维度特征表示使模型能够理解输入中每个词的含义和它在上下文中的作用。解码器的作用是逐步生成目标序列的每个词。大模型发展史Transformer 问世以后研究方向分成了三种Encoder-Only只用编码器、 Decoder-Only只用解码器、 Encoder-Decoder编码器-解码器都用。Encoder-Only 模型代表模型: BERT、RoBERTa、DeBERTa工作方式: 只使用 Transformer 的编码器部分用于从输入序列中提取深层的上下文信息。适用场景: 主要用于自然语言理解任务如分类、情感分析、问答。优势:对整个输入序列进行双向编码擅长理解上下文信息。在文本分类和提取任务中效果突出。不足:无法生成新内容只能处理给定输入的理解任务。在生成任务如翻译、摘要中的表现较弱。Decoder-Only 模型代表模型: GPT 系列GPT-2、GPT-3、GPT-4、ChatGPT工作方式: 只使用 Transformer 的解码器部分通过自回归方式逐步生成文本。适用场景: 自然语言生成任务如对话系统、文本生成、补全。优势:善于生成连贯的长文本适合对话和生成式任务。能在少样本few-shot或零样本zero-shot学习中表现出色。不足:对输入的理解能力较弱没有双向上下文的深度解析。生成效率较低尤其在长序列生成时需逐步生成。Encoder-Decoder 模型代表模型: T5、BART、mT5工作方式: 同时使用编码器和解码器编码器对输入序列进行编码解码器生成输出序列。适用场景: 适用于需要输入和输出配对的任务如机器翻译、摘要、文本生成。优势:编码器能捕获输入的全局上下文解码器逐步生成输出结合了理解与生成能力。特别适合对输入进行变换、重构如翻译和摘要。不足:相比 Decoder-Only 模型架构更复杂计算成本更高。对简单的生成任务可能显得不够高效。归纳Encoder-Only强于理解适合分类、检索等任务。Decoder-Only强于生成适合对话、长文本生成等任务。Encoder-Decoder结合理解与生成能力适合输入输出需要配对的复杂任务如翻译和摘要。总结希望大家看完这篇文章后能够对 Transformer 有一个整体的认知能看懂结构图知道每个模块的作用和意义。本篇文章为了方便理解没有涉及公式下一篇会详细剖析 Multi-Head Attention 的公式。

更多文章