资讯详情

datawhale:Happy-LLM 打卡-Task05:3.2与3.3(Encoder-Decoder架构、Decoder-only架构及相关模型)

📅 2026/10/22 7:08:47 | 华诺云谱 👁 阅读
datawhale:Happy-LLM 打卡-Task05:3.2与3.3(Encoder-Decoder架构、Decoder-only架构及相关模型)
前言该部分[1]主要是对Transformer的变体路线——Encoder-Decoder架构、Decoder-only架构仅解码器架构的描述介绍了2种主要的Encoder-Decoder架构模型T5、BART与3种主要的Decoder-only架构模型GPT、 LLaMA、GLM。所以首先对“多头放缩点积掩码自注意力机制”进行回顾然后对解码器模块进行分析然后以Encoder-Decoder、Decoder-only概念模型作为主要研究对象分析并梳理Encoder-Decoder、Encoder-only相关模型的研究。1 多头放缩点积掩码自注意力机制首先是注意力机制然后采用放缩点积的形式进行相似度计算采用多头的形式并行最后Q与K/V来自同一序列因此是“自注意力”。同时采用掩码来遮盖住未来的信息让模型只能通过“要预测目标”之前的token来预测当前目标token。为了便于称呼后续简称为“掩码自注意力”。代入Task2博客“2 多头点积注意力”datawhaleHappy-LLM 打卡-Task02注意力机制与Transformer的Encoder-Decoder架构《Attention Is All You Need》-CSDN博客中的具体计算过程可以得到如下计算过程2 解码器模块解码器模块由N个解码器层堆叠而成。每个解码器层由一个掩码多头自注意力层MMHA层、一个多头交叉注意力层MHCA层与一个前馈神经网络层FFN层构成。输入文本序列需要的输出是最后一层的向量表示作为以已生成序列为主体、充分融合了输入序列的信息。如下图所示可以看出解码器层先在已生成序列的token上对每个位置上之前的token进行信息融合MMHA层单向只能与当前及之前的token交互然后融合来自输入序列的信息再对每个token的特征进行非线性变换的语义提炼FFN层单个token特征变换。每一个token都与当前及之前的token、以及来自编码器的token进行了充分的交互最终得到只包含上文信息、输入序列信息的向量表示。每个位置的token向量目的是负责预测它右边那个token是什么根据上文、参考文预测下文。可以看出Transformer的解码器中有交叉注意力部分依赖于来自编码器的信息分为了“上文”、“参考文”、“下文”这与其定位的翻译问题密切相关。翻译正是需要不断对照原文根据已经翻译的内容继续翻译输出。实现了对“参考文”的充分理解以及对下文的生成。3 Encoder-Decoder架构Transformer在2017年提出本身就是Encoder-Decoder架构。2019年Google 提出了 T5Text-to-Text Transfer Transformer。按照Transformer的Encoder-Decoder架构即为“Encoder-Decoder 编码器-解码器”架构了其进展到预训练-微调范式反而在Encoder-only与Decoder-only之后了参数过多。对语言上的“Encoder-Decoder”架构给出概念定义由多层 Transformer 编码器与多层 Transformer 解码器堆叠组合构成通过去噪序列到序列重构类任务进行自监督预训练同时具备输入序列双向上下文建模与目标序列自回归生成能力的预训练语言模型。核心是“双向编码与自回归解码”。其特点包括架构符合Transformer典型结构多层 Transformer 编码器与多层 Transformer 解码器堆叠编码器层包含多头自注意力MHA与前馈神经网络FFN两个核心子层解码器层包含掩码多头自注意力MMHA、多头交叉注意力MHCA与前馈神经网络FFN三个核心子层并采用词嵌入token embedding与位置编码positional encoding也叫位置嵌入position embedding表示输入的内容。通过编码器保留了类似 BERT 的双向语义理解能力又通过解码器训练了类似 GPT 的自回归生成能力。预训练任务采用去噪序列到序列重构Denoising Sequence-to-Sequence Reconstruction的预训练任务可归纳为三步扰动加噪、双向编码、自回归重构。首先对原始文本施加某种形式的 “破坏 / 噪声”得到被扰动的输入序列然后将被扰动的序列送入编码器由编码器进行双向上下文建模提取完整的语义表示最后用解码器以自回归的方式基于编码器的语义输出还原出目标文本。下游适配编码器对完整输入文本进行双向语义编码得到全局语义表示解码器基于该表示自回归生成完整的目标输出文本通过“输入文本 - 输出文本”的形式进一步微调。“Transformer-Encoder-Decoder”的典型架构图就是Transformer的架构图了。将图中“Inputs”称为“参考文”“Outputs(shifted right)”称为“上文”“Output Probabilities”称为“下文”“Outputs”合称为“目标文”。对于只针对翻译任务的Transformer原始模型而言就是深度理解根据“参考文”根据“上文”不断生成“下文”从而实现将“参考文”翻译为“目标文”。对于预训练的“Encoder-Decoder”架构而言有所不同。在预训练阶段对文本进行扰动添加噪声说白了就是破坏完好的文本序列MLM其实也算。然后将破坏后的文本作为“参考文”送到编码器中提取深层次语义交给解码器进行预测得到对“下文”的概率预测矩阵P。解码器部分应该输入“上文”真正输入的是“目标文”。由于掩码自注意力的原因在内部将其掩码成了“上文”实际上就是对当前token及之前的token进行交互。真实标签也就是训练时候的“下文”来源于要输出的序列左移一位。概率预测矩阵P与真实标签进行交叉熵的损失函数计算只有在标签对应位置的 token 才会产生损失并求平均。输出头得到预测概率矩阵P即对象A的m个位置每个位置上是对下一个词的预测表现为对整个词表的概率分布p。注这里可以参考“Task03”中的“4 输出头”与“5 预测概率矩阵P的使用”。datawhaleHappy-LLM 打卡-Task032.3搭建一个Transformertokenizer分词器、Embedding 层token嵌入、位置编码、输出头-CSDN博客以Transformer与T5为例预训练的输入、输出如下图所示其中“pad”代表起始“EOS”与“/s”代表结束“X”与“Y”是T5使用的“哨兵标记”代表被遮盖了需要预测的位置。在下游任务阶段可以通过“输入文本-输出文本”的形式进一步微调。比如进行翻译任务“参考文”为待翻译的内容“上文”为译文“下文”也就是真实标签是译文左移一位。推理的时候根据“参考文”将起始标记作为最初的“上文”输入解码器便自回归地逐个输出“下文”并将已经输出的“下文”逐个拼接到“上文”直到输出结束标记或者达到最大长度。以翻译为例参考文为“I love learning.”上文先传入“pad”解码器输出预测概率矩阵P1只有一行p1取出得到“我”。然后将“我”拼接到上文成为“pad我”然后传入解码器输出预测概率矩阵P2有两一行p1、p2这时候要看预测概率矩阵P2的最后一行p2代表了对下一个词的预测应该取出得到“爱”。而p1没有变化因为掩码的机制“我”这个后面token的信息不会影响到第一个位置token的预测p1取出还是会得到“我”。结构非常好唯一的问题就是编码器-解码器架构“太沉重”了而且根据解码目标更新编码器个人感觉“太远”了。注可以看出解码器在生成的时候会参考来自编码器的深层含义。如果将“编码器”换成图像编码器、音频编码器然后通过交叉注意力进行融合就变成了“跨模态”。4 Decoder-only架构Transformer在2017年提出。2018年OpenAI 选择了 Decoder-only路线通过将 Decoder 层进⾏堆叠发布了GPT作为代表性模型。只使用解码器模块即为“Decoder-only仅解码器”架构了。需要注意的是由于没有了来自编码器的信息所以解码器模块就不需要交叉注意力层了。对语言上的“Decoder-only仅解码器”架构给出概念定义仅由多层 Transformer 解码器堆叠构成通过自回归语言模型Autoregressive Language ModelAR预训练任务或者叫因果语⾔模型Casual Language ModelCLM进行自监督预训练具备自回归预测下一个 token、逐词续写的预训练语言模型。核心是“因果建模”。其特点包括架构采用多层 Transformer 解码器堆叠每层包含掩码多头自注意力MMHA与前馈神经网络FFN两个核心子层并采用词嵌入token embedding与位置编码positional encoding也叫位置嵌入position embedding表示输入的内容。预训练任务采用自回归语言模型Autoregressive Language ModelAR或者叫因果语⾔模型Casual Language ModelCLM的预训练任务从左到右逐词预测根据上文生成下文然后把下文拼接到上文继续生成。下游适配就是进行下一个词的预测输出然后根据具体任务进行“文本到文本”的微调。参考Transformer编码器-解码器架构图给出“Transformer-Decoder-only仅解码器”的典型架构图如下注归一化当然可以放到前面Pre-Norm但是为了与“Transformer编码器-解码器架构图”呼应仍然保留了放在后面的形式Post-Norm不影响架构本质毕竟是概念模型。将图中“Inputs”称为“上文”“Output Probabilities”称为“下文”两者合称“目标文”。在预训练阶段将文本交给解码器进行预测得到对“下文”的概率预测矩阵P。解码器部分应该输入“上文”真正输入的是“目标文”。由于掩码自注意力的原因在内部将其掩码成了“上文”实际上就是对当前token及之前的token进行交互。对文本进行左移一位作为“真实标签”。概率预测矩阵P与真实标签进行交叉熵的损失函数计算。输出头得到预测概率矩阵P即对象A的m个位置每个位置上是对下一个词的预测表现为对整个词表的概率分布p。注这里可以参考“Task03”中的“4 输出头”与“5 预测概率矩阵P的使用”。datawhaleHappy-LLM 打卡-Task032.3搭建一个Transformertokenizer分词器、Embedding 层token嵌入、位置编码、输出头-CSDN博客预训练的输入、输出如下图所示在下游任务阶段可以通过“输入文本-输出文本”的形式进一步微调核心还是“预测下一个词”只是数据格式不同。比如进行翻译任务“上文”为待翻译的内容与译文拼接而成的完整序列“下文”也就是真实标签是译文左移一位训练时只会对目标输出部分译文、答案计算损失前面的输入前缀待翻译原文、问题不参与损失计算 。或者说进行问答对形式的监督学习。让模型学会遵循人类的指令格式、输出符合预期的回答。推理的时候将输入内容比如用户问的问题作为最初的“上文”输入解码器便自回归地逐个输出“下文”并将已经输出的“下文”逐个拼接到“上文”直到输出结束标记或者达到最大长度。对于问答问题最后返回给用户的就是输出的“下文”。注1可以看出这种架构与N-gram模型高度契合核⼼思想都是基于⻢尔可夫假设认为⼀个词的出现概率仅依赖于它前⾯的N-1个词就是通过前面的N-1个词去推断第N个词。注2在有的文献或者地方又被称为了语言建模Language Modeling, LM任务狭义上的但其实指的就是因果语言建模 CLM自左向右的语言建模。经典定义下的语言建模概念指的是根据前文预测文本序列中下一个词的概率分布语言模型就是实现这一任务的系统。但是由于有了“掩码语言模型”可能语言建模、语言模型的概念需要进一步延伸了。比如个人认为广义的文本语言建模应当是“学习大规模文本数据对自然语言序列的概率分布进行参数化建模”。定语越来越多了...毕竟语言学认为语言有声音和文本两种形式...具体而言“掩码自注意力”是核心它赋予了Decoder-only架构模型四大特点。1学习信号密集通过“上三角矩阵”方法遮蔽了未来信息能够把一个由m个token组成的序列变成m条监督数据。比如“我爱学习”假设是4个token那么就会有4条训练数据在训练的时候是并行的每个位置都预测下一个词然后计算损失函数训练数据利用率高。2KV能够缓存还有由于“上三角矩阵”方法遮蔽了未来信息历史 token 的 K 和 V 向量不会随后续新 token 的生成而改变。对于第4个token需要计算1-3个token的KV数据但是对于第5个token要计算1-4个token的KV数据但其实1-3个token的KV数据没有改变。有利于加快推理阶段生成速度用空间换时间。3注重生成通过预测下一个词的训练目标本身就是在不断进行生成基于前⾯的token来预测下⼀个 token不断重复。训练与推理的目标对齐架构本身天然适配生成性质的任务。4便于规模化通过基础模块堆叠扩大规模通过简单的上三角矩阵即可实现掩码有助于做“大”。5 Encoder-Decoder相关模型与经典的Tranformer架构相比在一些分词方法、网络维度、堆叠数量、训练数据、位置编码方式、激活函数使用等细节的不同就不提了。。。主要在预训练方法上差异较大。5.1 T5谷歌团队2019年10月份提出[2]。采用跨度损坏Span Corruption的预训练模式。随机选取文本中若干段连续 tokenspan将每段整体替换为一个唯一的哨兵特殊标记如 X、Y来进行噪声的添加。解码器按顺序输出所有被遮蔽的片段内容无需还原完整原文。采用 Pre-Norm 结构层归一化放在每个子层的输入之前并采用了RMSNorm。5.2BARTFacebook AI 2019年10月份提出[3]。采用全序列去噪重构的预训练模式。组合多种文本破坏策略包括单个 token 掩码、随机删除 token、打乱句子顺序、长文本旋转、文本片段填充等。解码器需要还原出完整的原始干净文本而非仅被破坏的部分。如摘要所言“采用基于Transformer的标准神经机器翻译架构”当然在一些细节上调整了It uses a standard Tranformer-based neural machine translation architecture6 Decoder-only相关模型6.1 GPT2018 年 6 月OpenAI 提出[4]《Improving Language Understanding by Generative Pre-Training》。其实是更早的“预训练-微调”范式“生成式”指的就是自回归地训练从左到右逐词预测。如下面的论文原图所示左边是预训练的自解码器架构右边是在分类、文本语义、相似性、多分类等问题上进行微调。蓝色的算是特殊标记辅助把结构化的数据转化为单个序列的形式。GPT1、2、3非常有意义推荐看原文。。或者这个总结GPT-1/GPT-2/GPT-3简介2019年《Language Models are Unsupervised Multitask Learners》https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf2020年《Language Models are Few-Shot Learners》[2005.14165] Language Models are Few-Shot Learners从“预训练-微调”到多任务、不需要微调再到0样本、单样本、少样本的上下文学习in-context learning。GPT3就基本算是“大语言模型”了准确的说是“大 自回归仅解码器 语言模型”。然后到2022年人类对齐22年底ChatGPT面向社会开放确立了“大 [自回归仅解码器] 语言模型”的技术主流地位与应用广泛落地。6.2 LLaMA2023年2月Meta原Facebook提出[5]。《LLaMA: Open and Efficient Foundation Language Models》最早复刻GPT并开源的而且有小规模版本。对于研究非常有意义开源可复现呐。归一化改进为RMSNorm位置编码改进为RoPE激活函数改进为SwiGLUAdamW优化器、学习率等等还有许多工程上的优化。6.3 GLM清华大学2022年提出[6]现在也可以叫智谱公司了《GLM: General Language Model Pretraining with Autoregressive Blank Infilling》22年10月论文《GLM-130B: An Open Bilingual Pre-trained Model》预训练语言模型[2210.02414] GLM-130B: An Open Bilingual Pre-trained Model23年3⽉发布了第⼀个中⽂开源大语言模型 LLM ChatGLM-6B。[2406.12793] ChatGLM: A Family of Large Language Models from GLM-130B to GLM-4 All Tools当然百度其实也挺早2019年3月ERNIE 1.0就是自编码架构2021年7月ERNIE 3.0就积累不少了。。。[2107.02137] ERNIE 3.0: Large-scale Knowledge Enhanced Pre-training for Language Understanding and Generation架构还属于自解码器主要是预训练方法很特殊叫做“自回归空白填充”Autoregressive Blank Infilling结合了MLM与CLM的思想。特别像T5的预训练方法放到自回归架构上...具体而言把文本进行破坏然后要求模型从被破坏的文本中以自回归方式预测片段中的缺失 token。在预测一个片段的缺失 token 时模型可以访问被破坏的文本和之前预测的片段。把Encoder-Decoder架构的“参考文”与“上文”放在了一起...然后为了遮蔽使用了二维位置编码和比较特殊的掩码自注意力处理方法。具体的中文翻译可以看这篇https://juejin.cn/post/73504828435334103426.4 其他2023 年 9 月阿里通义实验室Qwen技术报告以及后续极为丰富的生态。Deepseek从第一代的复刻到R1的训练方法。这些应当归于“大模型”的研究范畴了。。。预训练得到的是“预训练基础模型”日常使用的需要经过监督微调、强化学习对齐等等。[1]GitHub - datawhalechina/happy-llm: 从零开始构建大模型 · GitHub[2][1910.10683] Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer[3][1910.13461] BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension[4]https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf[5][2302.13971] LLaMA: Open and Efficient Foundation Language Models[6]GLM: General Language Model Pretraining with Autoregressive Blank Infilling - ACL Anthology
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑