【大模型基础_毛玉仁】2.2 大语言模型架构概览

news2025/3/10 11:25:32

【大模型基础_毛玉仁】2.2 大语言模型架构概览

    • 2.2 大语言模型架构概览
      • 2.2.1 主流模型架构的类别
        • 1)Encoder-only 架构
        • 2)Encoder-Decoder 架构
        • 3)Decoder-only 架构
      • 2.2.2 模型架构的功能对比
        • 1)注意力矩阵
        • 2)适用任务
      • 2.2.3 模型架构的历史演变
        • 1)早期发展阶段--Encoder-only
        • 2)中期发展阶段--Encoder-Decoder
        • 3)后期发展阶段--Decoder-only


2.2 大语言模型架构概览

Transformer框架的问世代表着一个划时代的转折点。对并行计算的支持极大地加速了模型的训练过程。其自注意力(Self-Attention)机制提升了模型对序列数据的处理能力,在捕捉长距离依赖关系方面表现出色。

以 Transformer 框架为核心,演化出了三种经典架构:

  • Encoder-only架构;

  • Decoder-only 架构;

  • Encoder-Decoder 架构。

2.2.1 主流模型架构的类别

1)Encoder-only 架构

Encoder-only 架构仅选取了 Transformer 中的编码器(Encoder)部分,用于接收输入文本并生成与上下文相关的特征。

Encoder-only架构包含三个部分:

  • 输入编码:包含分词、向量化以及添加位置编码。

  • 特征编码:多个相同的编码模块(Encoder Block),每个编码模块包含自注意力模块(Self-Attention)和全连接前馈模块

  • 任务处理:针对任务需求专门设计。

图2.3: Encoder-only 架构。
在这里插入图片描述

Encoder-only 架构模型的预训练阶段和推理阶段在输入编码和特征编码部分是一致的,而任务处理部分则需根据任务的不同特性来进行定制化的设计。

(1)输入编码部分

原始输入文本会被分词器(Tokenizer)拆解为Token序列,随后通过词表和词嵌入(Embedding)矩阵映射为向量序列,确保文本信息得以数字化表达。接着为了保留文本中单 词的顺序信息,每个向量序列会被赋予位置编码(PositionalEncoding)。

(2)特征编码部分

先前得到的向量序列会依次通过一系列编码模块,这些模块通过自注意力机制和前馈网络进一步提取和深化文本特征。

(3)任务处理部分

  • 预训练阶段,模型通常使用全连接层作为输出头,用于完成掩码预测等任务。

  • 下游任务适配阶段,输出头会根据具体任务需求进行定制。例如,对判别任务,只需添加分类器直接输出判别结果。但对生成任务,则需添加全连接层,逐个预测后续的Token。

但以这种形式来完成生成任务存在着诸多的限制,例如在每次生成新的Token时,都需要重新计算整个输入序列的表示,这增加了计算 成本,也可能导致生成的文本缺乏连贯性。

2)Encoder-Decoder 架构

为了弥补Encoder-only 架构在文本生成任务上的短板,Encoder-Decoder 架构在其基础上引入了一个解码器(Decoder),并采用交叉注意力机制来实现编码器与解码器之间的有效交互。

Encoder-Decoder 架构具体来说,编码器如Encoder-only 架构所示,解码器包含了:

  • 输出编码:包含分词、向量化以及添加位置编码 三个过程,将原始输入文本转换化为带有位置信息的向量序列。

  • 特征解码:与特征编码部分高度相似,包括掩码自注意力(MaskedSelf Attention)模块,交叉注意力模块和全连接前馈模块。掩码自注意力模块确保 模型只关注上文。交叉注意力模块则负责处理从编码模块向解码模块传递相关信息。

  • 输出生成:由一个线性层以及一个Softmax层组成,负责将特征解码后的向量转换为词表上的概率分布,并从这个分布中采样得到最合适的 Token 作为输出。

图2.4: Encoder-Decoder 架构。

其中分词器和输出文本只在训练阶段存在,而实现 “自回归”的红色虚线只在推理阶段存在。
在这里插入图片描述

图2.4展示了Encoder-Decoder 架构的具体工作流程:

(1)在训练阶段:

  • 样本中同时包含了输入和真实(GroundTruth)输出文本。

  • 其中输入文本首先被输入编码部分转化为向量序列,接着在特征编码模块中被多个堆叠起来的编码模块进一步处理, 从而被转化为上下文表示。

  • 而输出文本之前会被添加特殊的开始标记 [START],然后在输出编码部分被分词、词嵌入和位置编码处理后,并行输入到特征解码模块中。

  • 接着解码模块使用TeacherForcing技术,在每轮预测时,使用真实输出文本中 的已知部分作为输入,并结合从最后一个编码块得到的上下文信息,来预测下一个 Token,计算预测的Token和真实Token之间的损失,通过反向传播更新模型参数。

(2)在推理阶段:

  • 由于缺少了真实的输出文本,所以输出序列原始状态只有开始 标记 [START],也不再需要分词器。

  • 模型需要通过自回归的方式,在每轮采样生成 Token 后,会将其拼接到输出序列中,用于下一轮预测。

  • 这个过程循环进行,直到生成特定的结束标记 [end]或达到模型设定的最大输出长度。

  • 在这一过程中,由于每轮的输入依赖于上一轮的采样结果,因此只能一步步地串行输出

3)Decoder-only 架构

为了有效缩减模型的规模以及降低整体的计算复杂度,Decoder-only架构摒弃了Encoder-Decoder 架构中的编码器部分以及与编码器交互的交叉注意力模块。

这种架构利用“自回归”机制, 在给定上文的情况下,生成流畅且连贯的下文。

图2.5: Decoder-only 架构
在这里插入图片描述

Decoder-only 架构同样包含了三个部分,分别是输入编码部分、特征解码部 分以及输出生成部分。

Decoder-only架构的核心特点在于省略了每个编码模块中的交叉注意力子模块,这也是其与Encoder Decoder 架构中解码器部分的主要区别。

2.2.2 模型架构的功能对比

上述Encoder-only、Encoder-Decoder 和 Decoder-only 三种架构在注意力矩阵上有着显著区别。

1)注意力矩阵

注意力矩阵(Attention Matrix)是 Transformer 中的核心组件,用于计算输入序列中各个Token之间的依赖关系。

通过注意力机制,模型可以在处理当前Token 时,灵活地关注序列中其他Token所携带的信息。

如图所示,三种架构在注意力矩阵上有着显著差异。

图2.6: 三种架构的注意力矩阵
在这里插入图片描述

Encoder-only 架构:

  • 注意力矩阵来自于自注意力模块,用于捕捉输入序列中各个Token之间的关系。

  • Encoder-only架构的注意力矩阵呈现出“完全”的注意力,即对于每个Token的理解都依赖于整个输入序列中的所有Token。体现了双向注意力机制

  • 例如,在将输入Token x_i 转换为上下文向量y_i的过程中,模型能够综合利用从x_1∼x_n的所 有输入信息,这就是所谓的双向注意力机制。在这种机制下,模型能同时利用前后文信息,深入理解复杂的语义联系和上下文依赖。

Encoder-Decoder 架构:

  • 注意力矩阵较复杂,它结合了编码器的自注意力、解码器的掩码自注意力以及交叉注意力三种机制。

  • 编码器的自注意力矩阵与 Encoder-only 架构类似,用于生成输入序列的全面上下文表示,呈现“完全”的注意力。

  • 而解码器的掩码自注意力矩阵则呈现出“下三角”的注意力,确保在生成当 前Token时,模型只关注之前生成的Token。

  • 此外,交叉注意力机制允许解码器始终能够动态地参考编码器生成的完整上下文表示,确保输出与输入序列高度相关 且连贯。

  • 例如,在编码器将输入x_i转化为上下文向量时,可以利用从x_1∼x_n的所有输入信息;当解码器在生成Token y_i的时候,可以参考由x_1∼x_n转化得到的上下文向量以及先前生成的Token序列 y 1 ∼ y i − 1 y_1∼y_{i−1} y1yi1的相关信息。

Decoder-only 架构:

  • 注意力矩阵来自于掩码自注意力模块,其特点是呈现出“下三角”的注意力模式。

  • 这意味着在预测当前Token时,模型只能依赖于已经 生成的历史Token信息,体现了单向注意力机制

  • 例如,在生成Token y_i的时候, 模型只能考虑先前 y 1 ∼ y i − 1 y_1∼y_{i−1} y1yi1的信息,这样的设计确保了生成过程的顺序性和文本的连贯性。

2)适用任务

由于各自独特的模型设计以及注意力矩阵上的差异,在同等参数规模下,这三种架构的模型在适用任务上也都各有倾向。

Encoder-only 架构:

双向注意力机制允许模型在预测每个Token时都充分考虑序列中的前后文信息,捕捉丰富的语义和依赖关系。因此,Encoder-only架构的模型特别适合于自然语言理解(NaturalLanguageUnderstanding,NLU)任务,如情感分析或文本分类等判别任务。然而,由于缺少解码器组件,Encoder-only架 的模型无法直接生成所需目标序列,因此在自然语言生成任务(NaturalLanguage Generation, NLG)上可能表现不如专门设计的生成模型。

Encoder-Decode 架构:

在 Encoder-only 架构的基础上添加了解码器,使模型能够基于编码器输出的上下文表示逐步生成输出序列。这种编码器和解码器的结合,使得模型可以有效地处理复杂的输入条件,并生成相关且连贯的高质量内容。因此,Encoder-Decoder 架构的模型非常适合于处理各种复杂的有条件生成任务,例如机器翻译、文本摘要和问答系统等需要同时理解输入并生成相应输出的场景。但新添加解码器也同样带来了模型规模以及计算量庞大的问题。

Decoder-only 架构:

进一步删除了Encoder-Decoder 架构中的编码器部分,从而降低了模型本身的计算复杂度。这一架构的模型使用掩码(Mask)操作确保在每 个时间步生成当前Token时只能访问先前的Token,并通过自回归生成机制,从起 始Token 开始逐步生成文本。大规模预训练数据的加持使得Decoder-only架构的 模型能够生成高质量、连贯的文本,在自动故事生成、新闻文章生成此类不依赖 于特定的输入文本的无条件文本生成任务中表现出色。然而,在模型规模有限的 情况下(例如GPT-1以及GPT-2等模型),由于缺乏编码器提供的双向上下文信 息,Decoder-only 架构的模型在理解复杂输入数据时存在一定局限性,表现可能不如Encoder-Decoder 架构。

在不同的历史阶段,三种模型架构分别展现了自身的优势。随着模型规模以 及数据规模的显著增长,Decoder-only架构的模型逐渐占据上风,以其强大的任务泛化性能展现出成为“大一统”的架构的潜力。当前,以GPT-3、GPT-4等为代表的大型Decoder-only语言模型,已经发展出了与人类媲美甚至超越人类的记忆、推理以及执行复杂任务的能力。

2.2.3 模型架构的历史演变

随着时间的流逝,我们见证了上述三种架构的演变和流行趋势的更替。

1)早期发展阶段–Encoder-only

大语言模型的早期发展阶段(2018年左右),BERT和GPT-1分别作为Encoder-only和 Decoder-only 架构的代表几乎同时出现。但受限于当时的模型参数规模,BERT强大的上下文理解能力比GPT-1初阶的文本生成能力更为亮眼。使得Encoder-only架构到了更为广泛的探索和应用,而Decoder-only架构吸引得关注则相对关注较少。

然而,随着用户对机器翻译等生成任务需求的增加,缺乏解码组件的Encoder-only 架构逐渐无法满足直接生成的需求,因而被逐渐“冷落”。

2)中期发展阶段–Encoder-Decoder

同时,2019年末诞生了 一众Encoder-Decoder 架构的模型,由于其能够有效处理序列到序列(SequencetoSequence)的生成任务,逐渐成为主流。

到了2019年末,随着算力资源的急速发展,Decoder-only 架构下的模型参数量急剧扩充,文本生成能力大幅提升。

3)后期发展阶段–Decoder-only

自2021 年之后,在GPT-3等模型的推动下,Decoder-only架构开始占据主流,甚至逐渐主导了大语言模型的发展。

.

Encoder-only 架构:生成能力则不尽如人意。缺少专门用于生成输出的组件。

Encoder-Decoder架构:模型参数规模更为庞大,显著增加的计算复杂度。沉重的计算负担。

Decoder-only架构:计减少了模型的参数量和计算需求。

.


其他参考:【大模型基础_毛玉仁】系列文章


声明:资源可能存在第三方来源,若有侵权请联系删除!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2311783.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pt-archiver删除数据库的数据表/各种报错类型

这篇帖子是前面文的一部分延申 mysqlimport导入一亿数据的csv文件/一行命令删除表-CSDN博客 如需转载,标记出处 目录 pt-archiver命令格式 如果执行后出现下面报错 1)Cannot find an ascendable index in table at /usr/bin/pt-archiver line 3233. …

LLM 学习(一 序言)

文章目录 LLM 学习(一 序言)知识点1:“Embedding” 在人工智能领域:知识点2:Embedding 引入位置信息的原因知识点3:在 Transformer 的 Decoder 翻译第 i 个单词时进行 Mask 第 i1 个单词的操作 LLM 学习&am…

STM32-HAL库初始化时钟

使能和失能外设GPIOA 时钟信号初始化函数 HAL_RCC_OscConfig函数: HAL_StatusTypeDef是该函数的返回值类型,最顶上的那句话只是这个函数的原型 HAL_RCC_ClockConfig函数: 因为FLASH实际上只能支持24MHz的时钟信号所以如果用高于24MHz的信号输入则要用到等…

批量将 Word 拆分成多个文件

当一个 Word 文档太大的时候,我们通常会将一个大的 Word 文档拆分成多个小的 Word 文档,在 Office 中拆分 Word 文档是比较麻烦的,我们需要将 Word 文档的页面复制到另外一个 Word 文档中去,然后删除原 Word 文档中的内容。当然也…

【算法系列】桶排序算法介绍及实现

文章目录 桶排序算法介绍及实现桶排序的基本原理算法实现步骤Java代码实现性能优化结论 桶排序算法介绍及实现 桶排序的基本原理 桶排序(Bucket Sort)是一种基于分组的排序算法,其核心思想是将一组数据按某种 规则分配到多个桶中&#xff0…

13.数据结构(软考)

13.数据结构(软考) 13.1:线性表 13.1.1 顺序表 顺序存储方式:数组的内存是连续分配的并且是静态分配的,即在使用数组之前需要分配固定大小的空间。 时间复杂度: 读:O(1) 查询:1,(n1)/2&#x…

拉拉扯扯adfda

read -p "请输入一个成绩:" sorce if [ "$sorce" -ge 90 -a "$sorce" -le 100 ] thenecho A elif [ "$sorce" -ge 80 -a "$sorce" -lt 90 ] thenecho B elif [ "$sorce" -ge 70 -a "$sorce"…

【计算机网络】TCP

1.基本概念及报文格式 基本概念: TCP的中文全称为传输控制协议(Transmission Control Protocol),是一种可靠的,面向连接的,基于字节流的传输层通信协议。 报文格式: 序号 :占32⽐…

关于tomcat使用中浏览器打开index.jsp后中文显示不正常是乱码,但英文正常的问题

如果是jsp文件就在首行加 “<% page language"java" contentType"text/html; charsetUTF-8" pageEncoding"UTF-8" %>” 如果是html文件 在head标签加入&#xff1a; <meta charset"UTF-8"> 以jsp为例子&#xff0c;我们…

pytest结合allure

Allure 一、文档二、指令三、装饰器3.1 allure.step装饰器3.2 allure.description装饰器3.3 allure.title装饰器3.4 allure.link、allure.issue 和 allure.testcase装饰器3.5 allure.epic、allure.feature 和 allure.story装饰器3.6 allure.severity装饰器 一、文档 allure文档…

vue2升vue3,uniapp兼容鸿蒙app踩坑记录

前提&#xff1a;最近鸿蒙势头很好&#xff0c;公司的 uniapp vue2 项目&#xff0c;要兼容鸿蒙app。就开始了我的uniapp转鸿蒙踩坑之旅&#xff0c;请看下文&#xff08;注意下文都是在uniapp开发基础上&#xff09; 1. 首先鸿蒙开发只支持Vue3&#xff0c;不支持Vue2、不支持…

DeepSeek × 豆包深度整合指南:工作流全解析

DeepSeek 豆包深度整合指南&#xff1a;工作流全解析 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;可以分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/ccc 文章目录 DeepSeek 豆包深度整合指南&#xff1a;工…

海思Hi3516DV300交叉编译opencv

OpenCV是一个开源的跨平台计算机视觉库&#xff0c;支持C、Python等多种语言&#xff0c;适用于图像处理、目标检测、机器学习等任务。其核心由C编写&#xff0c;高效轻量&#xff0c;提供实时视觉处理功能&#xff0c;广泛应用于工业自动化、医疗影像等领域。 1 环境准备 1…

[FE] React 初窥门径(五):React 组件的加载过程(commit 阶段)

1. 回顾 前一篇文章我们看到&#xff0c;ReactDOM.render 总共包含这些步骤&#xff0c; 然后介绍了 performSyncWorkOnRoot 做的事情&#xff0c;它主要做了两件事&#xff0c; renderRootSync 可称之为 render 阶段&#xff1a;创建了一颗 Fiber Tree&#xff08;包含 html …

java环境部署

java环境部署 一、准备工作 jrejdkeclipse jdk下载&#xff1a;21和1.8-----官网&#xff1a;Oracle&#xff1a;Java 下载 |神谕 该处选择要依据自身的系统类型选择下载 idea的下载安装&#xff1a;IntelliJ IDEA | Other Versions 二、安装 三、环境配置 四、使用 五、i…

100天精通Python(爬虫篇)——第115天:爬虫在线小工具_Curl转python爬虫代码工具(快速构建初始爬虫代码)

文章目录 一、curl是什么&#xff1f;二、爬虫在线小工具&#xff08;牛逼puls&#xff09;三、实战操作 一、curl是什么&#xff1f; 基本概念&#xff1a;curl 支持多种协议&#xff0c;如 HTTP、HTTPS、FTP、SFTP 等&#xff0c;可用于从服务器获取数据或向服务器发送数据&a…

python-leetcode-解决智力问题

2140. 解决智力问题 - 力扣&#xff08;LeetCode&#xff09; 这道题是一个典型的 动态规划&#xff08;Dynamic Programming, DP&#xff09; 问题&#xff0c;可以使用 自底向上 的方式解决。 思路 定义状态&#xff1a; 设 dp[i] 表示从第 i 题开始&#xff0c;能获得的最高…

SpireCV荣获Gitee 最有价值开源项目称号

什么是GVP&#xff1f; GVP全称Gitee Valuable Project&#xff0c;意思为Gitee最有价值开源项目。作为GVP称号的获得者&#xff0c;SpireCV在开源社区中展现出了卓越的实力和影响力&#xff0c;为开源软件的发展和推广做出了积极的贡献。 这一荣誉不仅充分肯定了过去阿木实验…

数据结构基础(一)

文章目录 1 数据结构基础1.1 什么是程序&#xff1f;1.2 数据、数据元素、数据项、数据对象1.3 基本的逻辑结构 2 算法效率2.1 时间复杂度2.1.1 循环执行次数2.1.2 大O(n)表示法 2.2 空间复杂度 1 数据结构基础 1.1 什么是程序&#xff1f; ​ 程序 数据结构 &#xff0b; 算…

⭐算法OJ⭐N-皇后问题 II【回溯剪枝】(C++实现)N-Queens II

⭐算法OJ⭐N-皇后问题【回溯剪枝】&#xff08;C实现&#xff09;N-Queens 问题描述 The n-queens puzzle is the problem of placing n n n queens on an n n n \times n nn chessboard such that no two queens attack each other. Given an integer n, return the num…