BART模型简单介绍

news2025/6/19 17:06:22

目录

一、概要

二、深入扩展

2.1 预训练任务

2.2 模型精调


一、概要

BART(Bidirectional and Auto-Regressive Transformers)模型使用标准的基于Transformer的序列到序列结构,主要区别在于用GeLU(Gaussian Error Linerar Units)激活函数替换了原始结构中的 ReLU,以及参数根据正态分布进行初始化。BART 结合双向的 Transformer 编码器与单向的自回归Transformer解码器,通过对含有噪声的输入文本去噪重构进行预训练,是一种典型的 去噪自编码器 (Denoising autoencoder)。BART模型的基本结构如下图所示。
BART的预训练过程可以概括为以下两个阶段。首先,在输入文本中引入噪声,并使用双向编码器编码扰乱后的文本;然后,使用单向的自回归解码器重构原始文本。需要注意的是,编码器的最后一层隐含层表示会作为“记忆”参与解码器每一层的计算。BART模型考虑了多种不同的噪声引入方式,其中包括BERT模型使用的单词掩码。需要注意的是,BERT模型是独立地预测掩码位置的词,而BART模型是通过自回归的方式顺序地生成  除此之外,BART模型也适用于任意其他形式的文本噪声。

二、深入扩展

2.1 预训练任务

BART模型考虑了以下五种噪声引入方式:
(1)单词掩码。与BERT模型类似,在输入文本中随机采样一部分单词,并替换为掩码标记(如[MASK]);
(2)单词删除。随机采样一部分单词并删除。要处理这类噪声,模型不仅需要预测缺失的单词,还需要确定缺失单词的位置;
(3)句子排列变换。根据句号将输入文本分为多个句子,并将句子的顺序随机打乱。为了恢复句子的顺序,模型需要对整段输入文本的语义具备一定的理解能力;
(4)文档旋转变换。随机选择输入文本中的一个单词,并旋转文档,使其以该单词作为开始。为了重构原始文本,模型需要从扰乱文本中找到原始文本的开头;
(5)文本填充。随机采样多个文本片段,片段长度根据泊松分布(λ=3)进行采样得到。用单个掩码标记替换每个文本片段。当片段长度为0时,意味着插入一个掩码标记。要去除这类噪声,要求模型具有预测缺失文本片段长度的能力。
下图对这五类噪声进行了概括:

可以看出,预训练任务既包含单词级别的任务,又包含句子、文档级别的去噪任务。这些任务对于不同下游任务的表现各不相同。实验表明,基于文本填充任务得到的预训练模型在下游任务中表现普遍更好,在此基础上增加句子排列变换去噪任务能够带来小幅的额外提升。接下来,结合具体代码演示BART模型的文本填充能力。这里使用Facebook发布的预训练BART模型(bart-base)以及transformers库提供的调用接口BartForConditionalGeneration。具体代码如下:
from transformers import BartTokenizer, BartForConditionalGeneration
model = BartForConditionalGeneration.from_pretrained('facebook/bart-base')
tokenizer = BartTokenizer.from_pretrained("facebook/bart-base")
input = "UN Chief Says There Is <mask> in Syria"
batch = tokenizer(input, return_tensors = 'pt')
output_ids = model.generate(input_ids=batch['input_ids'], attention_mask = batch['attention_mask'])
output = tokenizer.batch_decode(output_ids, skip_special_tokens = True)
print(output)

# 输出:['UN Chief Says There Is No War in Syria']
在这个例子中,输入文本中的掩码标记(<mask>)处被填充为“No War ” ,在句子结构和语义上都较为合理。

2.2 模型精调

预训练的BART模型同时具备文本的表示与生成能力,因此适用于语言理解、文本生成等不同类型的下游任务。对于不同的任务,BART模型的精调方式有所不同。
(1)序列分类与序列标注。对于序列分类任务(如文本情感分类),BART模型的编码器与解码器使用相同的输入,将解码器最终时刻的隐含层状态作为输入文本的向量表示,并输入至多类别线性分类器中,再利用该任务的标注数据精调模型参数。与BERT模型的 [CLS] 标记类似,BART模型在解码器的最后时刻额外添加一个特殊标记,并以该标记的隐含层状态作为文本的表示,从而能够利用完整的解码器状态。
同样地,对于序列标注任务,编码器与解码器也是使用相同的输入。此时,解码器各个时刻的隐含层状态将作为该时刻单词的向量表示用于类别预测。
(2)文本生成。BART模型可以直接用于条件式文本生成任务,例如抽象式问答(Abstractive question answering)以及文本摘要 (Abstractive summarization)等。在这些任务中,编码器的输入是作为条件的输入文本,解码器则以自回归的方式生成对应的目标文本。
(3)机器翻译。当用于机器翻译任务时,由于源语言与目标语言使用不同的词汇集合,无法直接精调BART模型。因此,研究人员提出将BART模型编码器的输入表示层(Embedding layer)替换为一个小型 Transformer 编码器,用来将源语言中的词汇映射至目标语言的输入表示空间,从而适配BART模型的预训练环境(见图8-25)。由于新引入的源语言编码器参数是随机初始化的,而BART模型大部分的其他参数经过了预训练,使用同一个优化器对两者同时进行训练会出现“步调不一 致”的情况,可能无法取得很好的效果。因此,研究人员将训练过程分为两步。首先,固定 BART模型的大部分参数,只对源语言编码器、BART 模型位置向量和BART预训练编码器第一层的自注意力输入投射矩阵进行训练;然后,对所有的参数进行少量迭代训练。

值得注意的是,虽然BART模型是为生成任务设计的,但是它在判别任务上的表现也很优异,甚至可以与 RoBERTa 持平。关于BART模型的更多细节以及在相关任务上的表现,感兴趣的读者请自行参考文献,本文不再展开。

 

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

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

相关文章

西安石油大学C++上机实验 上机二:友元和运算符重载程序设计(2学时)

上机二&#xff1a;友元和运算符重载程序设计&#xff08;2学时&#xff09; 实验目的&#xff1a; 了解友元函数的概念。 掌握友元函数的定义和使用方法。 了解运算符重载的概念和使用方法。 掌握几种常用的运算符重载的方法。 实验内容 编写一个时间类&#xff0c;实现…

【面试】记一次中小公司某一次面试题

文章目录1. MySQL中explain执行计划你比较关注哪些字段&#xff1f;2.char、varchar 和 text的区别&#xff1f;3. int(3)和int(11)查询的区别&#xff1f;4. 字段里NULL和空值的区别&#xff1f;5. spring中怎么解决循环依赖问题&#xff1f;5.1 重新设计5.2 使用注解 Lazy5.3…

ESP32设备驱动-HDC2080温湿度传感器驱动

HDC2080温湿度传感器驱动 文章目录 HDC2080温湿度传感器驱动2、硬件准备3、软件准备4、驱动实现HDC2080 器件是一款集成式湿度和温度传感器,可在小型 DFN 封装中以极低的功耗提供高精度测量。基于电容的传感器包括新的集成数字功能和用于消散冷凝和湿气的加热元件。 HDC2080 数…

虹科新闻 | 冲击记录仪ASPION G-Log 2荣获行业领袖奖-Best of Industry Award

虹科ASPION G-Log 2 荣获 行业领袖奖 “2022 Best of Industry Award” 创新的运输冲击数据记录仪虹科ASPION G-Log 2荣获2022年行业领袖奖。经过5个月的投票和近2万张选票&#xff0c;G-Log 2在传感器 由冲击或振动&#xff0c;甚至是温度或相对湿度等气候因素引起的运输损坏…

ERTEC200P-2 PROFINET设备完全开发手册(5-3)

5.3 标识和维护数据&#xff08;I&M&#xff09; 标识和维护数据是一类特殊的数据记录&#xff0c;其中 “I&M0”&#xff08;“16#AFF0”&#xff09;用于有关模块或设备的常规信息。包含的信息例如&#xff1a;订货号/Order-ID, 硬件软件版本/hard- and software v…

强化学习之蒙特卡罗(MC)、动态规划(DP)、时间差分(TD)

强化学习笔记1.马尔可夫决策过程(MDP)1.马尔可夫性质2.马尔可夫过程3.马尔可夫奖励过程(MRP)4.马尔可夫决策过程(MDP)2.蒙特卡罗&#xff08;MC&#xff09;、动态规划&#xff08;DP&#xff09;、时间差分&#xff08;TD&#xff09;1.蒙特卡罗(MC)2.动态规划(DP)3.时间差分(…

【C】Function

系列连载 【python / C / C】 参考 《C语言程序设计&#xff08;第四版&#xff09;谭浩强》【C语言】C语言视频教程《郝斌 C 语言自学教程》 文章目录为什么需要函数什么叫函数如何定义函数函数的分类注意的问题常用的系统函数为什么需要函数 避免重复性操作 有利于程序模…

23种设计模式之建造者模式(黑马程序员)

建造者模式一、概述二、结构三、实现四、总结五、模式扩展在最后一、概述 将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 分离了部件的构造&#xff08;由Build来负责&#xff09;和装配&#xff08;Director负责&#xff09;。从而可以…

Spring 的创建和使用

目录 一. 创建 Spring项目 二. 存储 Bean 对象到Spring中 1. 添加Spring配置文件 2. 创建一个 Bean 对象 3. 将 Bean 存储到 Spring 容器中 三. 从 Spring 中获取并使用 Bean 对象 1. 创建 Spring 上下文 1.1 使用 ApplicationContext 作为Spring上下文 1.2 使用 Bea…

ONLYOFFICE 邀请您一起创建插件

文档编辑器中的插件具有高度的便捷性和实用性&#xff0c;这对工作效率的提高至关重要&#xff0c;ONLYOFFICE 功能的强大也离不开丰富的插件资源。 现在&#xff0c;您可以自己制作插件并上架到 ONLYOFFICE&#xff0c;一起帮助广大用户更高效地办公&#xff0c;并获得相应的…

KDMP真实案例之主机 I/O 请求没有正常结束导致系统重启

目录 查看kdump文件 导致系统崩溃的寄存器指向的内存地址 导致重启的汇编指令 导致重启的源码 block/blk-core.c文件简介 导致重启的blk_finish_request函数源码 函数源码解读 系统重启原因 处理意见 查看kdump文件 各字段意思说明 KERNEL&#xff1a;显示内核文件的路…

你真的会用iPad吗,如何使iPad秒变生产力工具?在iPad上用vscode写代码搞开发

目录 前言 视频教程 1. 本地环境配置 2. 内网穿透 2.1 安装cpolar内网穿透(支持一键自动安装脚本) 2.2 创建HTTP隧道 3. 测试远程访问 4. 配置固定二级子域名 4.1 保留二级子域名 4.2 配置二级子域名 5. 测试使用固定二级子域名远程访问 6. iPad通过软件远程vscode…

通俗举例讲解动态链接】静态链接

参考动态链接 - 知乎 加上我自己的理解&#xff0c;比较好懂&#xff0c;但可能在细节方面有偏差,但总体是一致的 静态链接的背景 静态链接使得不同的程序开发者和部门能够相对独立的开发和测试自己的程序模块&#xff0c;从某种意义上来讲大大促进了程序开发的效率&#xf…

Mybatis【环境搭建】

目录 一、Maven 环境配置 1、配置 pom.xml 1.1、依赖的 jar包 1.2、防止资源导出失败 2、在resources下编写 Mybatis核心配置文件 二、搭建结构 1、编写mybatis工具类&#xff08;utils&#xff09; 2、编写实体类&#xff08;pojo&#xff09; 3、Mybatis 的实现&…

一篇搞定Lambda和Stream流

一、Lambda表达式 jdk8中的语法糖&#xff0c;优化某些匿名内部类的写法&#xff0c;函数式编程的重要体现&#xff0c;不再关注对象是什么&#xff0c;更关注数据进行了什么操作 1、练习 练习1 练习2 练习3 练习4 练习5 2、省略规则 参数类型可以省略方法体只有一句代码时…

【Leetcode】消失的数字 [C语言实现]

&#x1f47b;内容专栏&#xff1a;《Leetcode刷题专栏》 &#x1f428;本文概括&#xff1a; 面试17.04.消失的数字 &#x1f43c;本文作者&#xff1a;花 碟 &#x1f438;发布时间&#xff1a;2023.4.10 目录 思想1&#xff1a;先排序再查找 思想2&#xff1a;异或运算 代…

TensorFlow 图像深度学习实用指南:1~3 全

原文&#xff1a;Hands-On Deep Learning for Images with TensorFlow 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 深度学习 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 不要担心自己的形象&#xf…

移动版OpenAI,手机的杀手还是救星?

AI登陆手机&#xff0c;难度因人而异。 原本小编还以为「2023年是属于元宇宙的一年」&#xff0c;实在没想到以ChatGPT为代表的AI技术能在这么短的时间内抢走元宇宙的风头&#xff0c;成为2023年的技术关键词。从OpenAI到搜索引擎、从绘图工具到游戏公司&#xff0c;几乎所有「…

跨境电商的行业现状与发展趋势分析

随着互联网的不断发展&#xff0c;跨境电商作为一种全新的商业模式已经逐渐崭露头角。跨境电商的出现&#xff0c;让越来越多的商家看到了扩大市场的机会&#xff0c;也为消费者提供了更加便利、更加优质的购物体验。本文将从跨境电商的定义、行业现状、发展趋势等方面进行探讨…

windows下的wsl2如何进行docker数据卷挂载

这是数据卷挂载命令 docker run -it -v /宿主机绝对路径目录: /容器内目录 镜像名 在Linux中我们可以直接使用该命令进行挂载&#xff0c;那在windows如何把我们c盘d盘下的目录挂载到容器呢&#xff0c;其实只要在路径前面加上/mnt就好了&#xff0c;下面来演示一下 首先拉取一…