基于 Encoder-Decoder 架构的大语言模型

devtools/2024/11/7 7:20:37/

基于 Encoder-Decoder 架构的大语言模型

Encoder-Decoder 架构

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

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

具体来说,解码器包含了输出编码、特征解码以及输出生成三个部分。

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

特征解码部分与特征编码部分在网络结构上也高度相似,包括掩码自注意力(MaskedSelf-Attention)模块,交叉注意力模块和全连接前馈模块。其中掩码自注意力模块确保模型只关注上文,不会“预见”未来的信息,从而可以在无“下文泄露”的条件下,进行“自回归”的训练和推理。而交叉注意力模块则负责处理从编码模块向解码模块传递相关信息。

输出生成部分则由一个线性层以及一个Softmax层组成,负责将特征解码后的向量转换为词表上的概率分布,并从这个分布中采样得到最合适的Token作为输出。
在这里插入图片描述
Encoder-Decoder 架构

上述的是一种典型的编码器-解码器(Encoder-Decoder)架构,这种架构广泛应用于序列到序列(Seq2Seq)的任务中,比如机器翻译、文本摘要、问答系统等。这种架构的核心思想是将输入序列编码成一个固定大小的上下文向量,然后解码器根据这个向量和部分输出序列来生成目标序列。

以下是描述的架构中各个组件的功能:

  1. 编码器(Encoder)

    • 由多个编码模块堆叠而成。
    • 每个编码模块包含:
      • 自注意力模块(Self-Attention Module):允许模型在编码时考虑输入序列中的所有位置,捕捉序列内部的依赖关系。
      • 全连接前馈模块(Feed-Forward Neural Network):对自注意力模块的输出进行进一步的处理,通常包含两个线性变换和激活函数。
  2. 上下文向量(Context Vector)

    • 编码器的输出,包含了输入序列的丰富语义信息,用于后续的解码过程。
  3. 解码器(Decoder)

    • 同样由多个解码模块堆叠而成。
    • 每个解码模块包含:
      • 带掩码的自注意力模块(Masked Self-Attention Module):通过掩码机制防止未来信息的“泄露”,确保解码过程的自回归特性。这意味着在生成当前词时,模型只能看到已经生成的词,而不能看到未来的词。
      • 交叉注意力模块(Cross-Attention Module):允许解码器关注编码器的输出,实现编码器与解码器之间的信息交互,这对于生成与输入序列高度相关的输出至关重要。
      • 全连接前馈模块(Feed-Forward Neural Network):对交叉注意力模块的输出进行进一步的处理。

T5 语言模型

1. T5 模型结构

T5 模型的核心思想是将多种 NLP 任务统一到一个文本转文本的生成式框架中。

通过不同的输入前缀,T5 能够指示模型执行不同的任务并生成相应的输出。这种方法类似于早期的提示(Prompt)技术,通过构造合理的输入前缀,T5 模型能够针对特定任务进行优化,而无需对模型架构进行根本性的改变。这种灵活性显著提高了模型的实用性,使其能够适应各类新的 NLP 任务。

在模型架构方面,T5 采用了与原始 Transformer 相同的编码器和解码器结构。每个编码器和解码器由多个编码模块和解码模块堆叠而成。T5 提供了多个版本,包括 T5-Small、T5-Base、T5-Large、T5-3B 和 T5-11B,参数数量从约 6000 万到 110 亿不等,适应不同的计算需求和应用场景。

2. T5 预训练方式

为了获取高质量的预训练数据集,Google Research 团队从大规模网页数据集 Common Crawl 中提取了大量网页数据,经过清理和过滤,最终生成了 C4 数据集(Colossal Clean Crawled Corpus),其规模约为 750GB。T5 提出的预训练任务名为 Span Corruption,模型需要对原始输入中选择的 15% 的连续 Token 进行预测,这些被掩码的片段可能包括短语或子句,要求模型理解更深层次的句子结构和上下文之间的复杂依赖关系。这一设计显著提升了 T5 在文本摘要、问答系统和文本补全等生成任务中的表现。

3. T5 下游任务

基于预训练阶段学到的知识,T5 模型能够在零样本(Zero-Shot)情况下,利用 Prompt 工程技术直接适配多种下游任务。同时,T5 也可以通过微调(Fine-Tuning)来适配特定任务,尽管微调需要更多的计算资源和训练时间,通常只在对精度要求较高的场景中应用。

BART(Bidirectional and Auto-Regressive Transformers)模型

BART模型结构
  • 架构:BART遵循原始的Transformer架构,包含编码器和解码器,每个部分由多个编码模块和解码模块堆叠而成。
  • 版本:BART有两个版本,BART-Base和BART-Large。
    • BART-Base:包含6个编码模块和6个解码模块,隐藏层维度为768,自注意力头的数量为12,总参数数量约为1.4亿。
    • BART-Large:包含12个编码模块和12个解码模块,隐藏层维度为1024,自注意力头的数量为16,总参数数量约为4亿。
BART预训练方式
  • 数据来源:BART使用了与RoBERTa相同的语料库,包括BookCorpus、英语维基百科、CC-News、OpenWebText和Stories等,总数据量达到约160GB。
  • 预训练任务:BART通过破坏文本的方式进行预训练,包括Token Masking、Token Deletion、Text Infilling、Sentence Permutation和Document Rotation等任务,以训练模型恢复原始文本的能力。
预训练任务的具体形式
  1. Token Masking:随机替换部分Token为[MASK],训练模型推断被删除的Token。
  2. Token Deletion:随机删除部分Token,训练模型推断被删除Token的位置和内容。
  3. Text Infilling:选择连续的Token段替换为[MASK],训练模型推断span及其长度。
  4. Sentence Permutation:打乱句子顺序,训练模型推理前后句关系。
  5. Document Rotation:随机选取Token作为新起点,训练模型找到合理起始点。

Encoder-Decoder 架构代表模型参数和语料大小表

模型发布时间参数量(亿)语料规模
T52019.100.6-110750GB
mT52020.103-1309.7TB
T02021.1030-110约 400GB
BART2019.101.4-4约 20GB
mBART2020.060.4-6.1约 1TB

http://www.ppmy.cn/devtools/131949.html

相关文章

pycharm 使用

前期配置 1、检查 Python 安装路径: 确保 E:\tools\Pyn392_EN_x64\python.exe 是你正确的 Python 安装路径。你可以在终端或命令提示符中运行这个命令,确保能正常找到Python。 E:\tools\Pyn392_EN_x64\python.exe --version2、检查 pip 是否正确安装&…

【论文解读】EdgeYOLO:一种边缘实时目标检测器(附论文地址)

论文地址:https://arxiv.org/pdf/2302.07483 这篇文章的标题是《EdgeYOLO: An Edge-Real-Time Object Detector》,由中国北京理工大学的Shihan Liu、Junlin Zha、Jian Sun、Zhuo Li和Gang Wang共同撰写。这篇论文提出了一个基于最新YOLO框架的高效、低复…

【计算机视觉】深入浅出SLAM技术原理

引言 SLAM(Simultaneous Localization and Mapping,同步定位与建图)是机器人学和计算机视觉中的一个重要技术,它允许机器人在未知环境中自主导航,同时构建环境的地图并确定自身的精确位置。本文将详细介绍SLAM技术的基…

ThingsBoard规则链节点:Push to Edge节点详解

引言 1. Push to Edge 节点简介 2. 节点配置 2.1 基本配置示例 3. 使用场景 3.1 边缘计算 3.2 本地数据处理 3.3 实时响应 4. 实际项目中的应用 4.1 项目背景 4.2 项目需求 4.3 实现步骤 5. 总结 引言 ThingsBoard 是一个开源的物联网平台,提供了设备管…

Django替换现有用户模型(auth_user)

当Django现有的用户模型信息不满足我们的需求时,可以建立另一个数据模型来替代现有的。 一、设置settings文件 AUTH_USER_MODELaccounts.User 在settings文件中配置上述信息,引号内为:模块名.数据模型名 二、继承AbstractUser 在要替代au…

ServletContext,Cookie,HttpSession的使用

ServletContext对象 ServletContext对象官方也称servlet上下文。服务器会为每一个Web应用创建一个ServletContext对象,这个对象全局唯一,而且Web应用中所有的Servlet都共享这个对象。 ServletContext对象的作用 相对路径转绝对路径 servletContext.g…

RabbitMQ自动发送消息工具(自动化测试RabbitMQ)

点击下载《RabbitMQ自动发送消息工具(自动化测试RabbitMQ)》 1. 前言 在现代分布式系统中,消息队列扮演着至关重要的角色,用于在不同的服务或组件之间传递数据。RabbitMQ作为一个流行的开源消息代理软件,被广泛用于实现异步通信、负载均衡和…

【系统架构设计师】2024年上半年真题论文: 论云上自动化运维级其应用(包括解题思路和素材)

更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 真题题目(2024年上半年 试题4)解题思路1、CloudOps 的定义与主要衡量指标2、衡量 CloudOps 成熟度的五大维度论文素材参考真题题目(2024年上半年 试题4) 云上自动化运维是传统IT运维和DevOps的延伸,通过云原生…