BART--详解

BART(Bidirectional and Auto-Regressive Transformers)是一种序列到序列(Seq2Seq)预训练模型。BART结合了BERT的双向编码能力和GPT的自回归解码能力,是一种灵活且强大的生成模型,擅长解决各种文本生成任务,如摘要生成、翻译、对话生成和文本填充。

BART的创新之处在于它能够在输入端通过破坏(例如添加噪声、遮蔽、打乱顺序等)对输入数据进行扰动,模型的任务是将扰动的数据还原为原始输入。它因此也被称为一种去噪自编码器(denoising autoencoder)。这种训练方式使得BART能够处理多种文本生成任务。

BART的基本结构

BART是典型的基于Transformer架构的序列到序列模型。它的核心结构与标准的Transformer相同,包含两个主要部分:

  1. Encoder(编码器)

    • 与BERT类似,BART的编码器是双向的,能捕捉输入文本的上下文信息。编码器将输入句子转化为一个隐状态表示。

  2. Decoder(解码器)

    • 与GPT类似,BART的解码器是自回归的,即每一步根据之前生成的词来预测下一个词。解码器接收编码器生成的隐状态,并生成目标序列(例如翻译后的文本或摘要)。

BART的训练方式为去噪自编码器任务,具体来说,它会对输入进行以下几种扰动:

  • Token Masking:像BERT一样,随机遮蔽一些词。

  • Token Deletion:随机删除输入序列中的一些词。

  • Sentence Permutation:打乱输入序列中句子的顺序。

  • Document Rotation:将输入文本的顺序进行旋转,改变句子的起始位置。

通过这些扰动,BART学会了如何在被破坏的输入上生成高质量的输出,这使它能够很好地应对生成类任务。

经典BART代码实现

使用Hugging Face的transformers库可以轻松加载预训练的BART模型并进行推理或微调。

1. 安装Hugging Face的Transformers库
pip install transformers
2. 加载预训练的BART模型和分词器
from transformers import BartTokenizer, BartForConditionalGeneration
​
# 加载BART分词器
tokenizer = BartTokenizer.from_pretrained('facebook/bart-large')
​
# 加载预训练的BART模型
model = BartForConditionalGeneration.from_pretrained('facebook/bart-large')
​
# 输入文本
text = "BART is a transformer model designed for text generation tasks."
# 对输入文本进行编码
inputs = tokenizer(text, return_tensors="pt")
​
# 使用模型进行生成任务
summary_ids = model.generate(inputs['input_ids'], max_length=50, num_beams=5, early_stopping=True)
​
# 解码生成的文本
output = tokenizer.decode(summary_ids[0], skip_special_tokens=True)
print(f"Generated Text: {output}")

BART处理文本生成任务的示例代码

BART非常适合处理文本生成任务,如摘要生成、翻译、对话生成等。下面的示例展示了如何使用BART生成文本摘要。

示例:文本摘要生成
from transformers import BartTokenizer, BartForConditionalGeneration
​
# 加载BART分词器和预训练的文本摘要模型
tokenizer = BartTokenizer.from_pretrained('facebook/bart-large-cnn')
model = BartForConditionalGeneration.from_pretrained('facebook/bart-large-cnn')
​
# 输入待生成摘要的长文本
text = """
BART is a transformer neural network that has been shown to be highly effective for a variety of natural language processing tasks. 
It is capable of generating coherent and contextually appropriate text and has been particularly useful in applications such as summarization, translation, and text completion.
By utilizing both a bidirectional encoder and an autoregressive decoder, BART can learn to generate text based on a noisy or disrupted input sequence.
"""
​
# 对输入文本进行编码
inputs = tokenizer(text, return_tensors="pt", max_length=1024, truncation=True)
​
# 使用BART进行文本摘要生成
summary_ids = model.generate(inputs['input_ids'], max_length=50, num_beams=4, length_penalty=2.0, early_stopping=True)
​
# 解码生成的摘要文本
summary = tokenizer.decode(summary_ids[0], skip_special_tokens=True)
print(f"Summarized Text: {summary}")
示例:文本翻译(使用多任务训练模型)
from transformers import BartTokenizer, BartForConditionalGeneration
​
# 加载BART分词器和预训练的翻译模型(注:BART可以作为翻译模型,如WMT翻译任务中使用)
tokenizer = BartTokenizer.from_pretrained('facebook/mbart-large-en-ro')
model = BartForConditionalGeneration.from_pretrained('facebook/mbart-large-en-ro')
​
# 输入英文文本
text = "BART is a powerful model for text generation."
inputs = tokenizer(text, return_tensors="pt", max_length=1024, truncation=True)
​
# 指定目标语言为罗马尼亚语(ro)
translated_ids = model.generate(inputs['input_ids'], max_length=50, num_beams=4, early_stopping=True)
​
# 解码生成的翻译文本
translated_text = tokenizer.decode(translated_ids[0], skip_special_tokens=True)
print(f"Translated Text: {translated_text}")

总结

  • BART模型概述:BART是结合了BERT和GPT优势的序列到序列生成模型,广泛用于文本生成任务,如摘要、翻译、对话生成等。

  • 基本结构:由双向编码器(类似BERT)和自回归解码器(类似GPT)组成。通过多种扰动输入的方法进行去噪自编码器训练。

  • 经典代码:使用Hugging Face的transformers库,加载预训练模型并进行推理。

  • 文本生成任务示例:展示了如何使用BART进行文本摘要和翻译任务。

BART(大型型号)

 https://huggingface.co/facebook/bart-large

BART 模型预先训练了英语。它已在 Lewis 等人的论文 [BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension](https://arxiv.org/abs/1910.13461) 中引入,并首次在此[存储库](https://github.com/pytorch/fairseq/tree/master/examples/bart)中发布。

型号描述

BART 是一个变压器编码器-解码器 (seq2seq) 模型,具有一个双向(类似 BERT)编码器和一个自回归(类似 GPT)解码器。BART 的预训练方式是(1)使用任意噪声函数破坏文本,以及(2)学习模型来重建原始文本。

BART 在针对文本生成(例如摘要、翻译)进行微调时特别有效,但也适用于理解任务(例如文本分类、问答)。

预期用途和限制

可以使用 Raw 模型进行文本填充。但是,该模型主要用于在监督数据集上进行微调。

如何使用

以下是在 PyTorch 中使用此模型的方法:
from transformers import BartTokenizer, BartModel

tokenizer = BartTokenizer.from_pretrained('facebook/bart-large')
model = BartModel.from_pretrained('facebook/bart-large')

inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
outputs = model(**inputs)

last_hidden_states = outputs.last_hidden_state

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十一章:规划过程组(11.18规划风险管理--11.24规划干系人参与)

前面几次考试几乎都考了风险管理的相关内容和试题~!尤其是下午题所以感觉还是挺重要的! 11.18 规划风险管理 11.18.1 风险基本概念 每个项目都在两个层面上存在风险:一是每个项目都有会影响项目达成目标的单个风险;二是由单个风险和不确定性的其他来源联…

一文了解,ARM 工业计算机的发展历程

ARM 工业计算机的发展历程主要经历了以下几个阶段: 早期探索阶段(20 世纪 80 年代 - 90 年代初): 起源背景:20 世纪 80 年代,计算机工业蓬勃发展,英国的 Acorn 公司在这一时期积极探索芯片技术…

VRRP协议个人理解+报文示例+典型配置-RFC2338/RFC3768/RFC5798/RFC9568

个人认为,理解报文就理解了协议。通过报文中的字段可以理解协议在交互过程中相关传递的信息,更加便于理解协议。 因此本文将在VRRP协议报文的基础上进行介绍。 VRRP协议发展 关于VRRPv2基本原理,可重点参考2004年发布的RFC3768-Virtual Ro…

Qt5.15.2静态编译 MinGW with static OpenSSL

如果想用VS2017编译,可参考:Qt5.15.2静态编译 VS2017 with static OpenSSL 一.环境 系统:Windows 10 专业版 64位 编译器:MinGW 8.1.0 第三方工具:perl,ruby和python PS:经验证,用MinGW 12.1.0来编译Qt5.15.2会报错 我用Phthon 2.7.18虽然可以编过,但是强烈建议Pyth…

CSS响应式布局

CSS 响应式布局也称自适应布局,是 Ethan Marcotte 在 2010 年 5 月份提出的一个概念,简单来讲就是一个网站能够兼容多个不同的终端(设备),而不是为每个终端做一个特定的版本。这个概念是为解决移动端浏览网页而诞生的。…

可以让你干一辈子的10大项目,想赚钱的别错过!

1、卖项目 很多想要创业、或者从事自由职业的小伙伴,都经常会因为找不到合适的项目而苦恼,所以那些即靠谱又赚钱的好项目,一直都是人们的刚性需求,而且还是可持续的需求,倘若谁能解决这个问题,那么自然就可以赚到大钱,毕竟现在原因付费买项目的大有人在! 2、卖技术 掌…

win10电脑导航栏经常卡死改善方法

我成功使用的一个方法:关闭资讯(需要正版的win10,如果是盗版需要激活) 有两个入口 1.在任务栏上点击右键,选择“资讯和兴趣”,然后关闭它。这可能会解决任务栏卡顿的问题 在Windows 10中,任务栏…

提高ROI:低代码平台如何助力企业实现成本效益最大化

引言:成本效益与ROI的重要性 在当今竞争异常激烈的商业环境中,企业面临着前所未有的挑战。如何在有限的资源下,最大化投资回报率(ROI),已经成为企业管理者不可忽视的关键课题。ROI不仅仅是衡量投资回报的指…

战略会牺牲眼前利益

战略需要解决能力和目标之间的差异,必然要投入资源,牺牲眼前的利益,目的是获取更长远更全面的利益和价值。 很多基层员工,单独从企业利润角度来讲,是排斥战略的,因为战略投入资源会影响分红、影响奖金。 …

考研笔试/上机经典编程题集合(持续更新并完善解题思路)

目录 一、程序设计经典编程题(C语言实现)1.1 判断一个字符串是否由另一个字符串旋转得到1.2 字符串左旋1.3 求最大公约数以及最小公倍数 二、力扣2.1 面试题 17.04. 消失的数字 三、牛客网3.1 OR62 倒置字符串 一、程序设计经典编程题(C语言实现) 1.1 判断一个字符串是否由另一…

C++ | Leetcode C++题解之第467题环绕字符串中唯一的子字符串

题目&#xff1a; 题解&#xff1a; class Solution { public:int findSubstringInWraproundString(string p) {vector<int> dp(26);int k 0;for (int i 0; i < p.length(); i) {if (i && (p[i] - p[i - 1] 26) % 26 1) { // 字符之差为 1 或 -25k;} els…

“Flash闪存”基础 及 “SD NAND Flash”产品的测试

本篇除了对flash闪存进行简单介绍外&#xff0c;另给读者推荐一种我本人也在用的小容量闪存。 自带坏块管理的SD NAND Flash&#xff08;贴片式TF卡&#xff09;&#xff0c;尺寸小巧&#xff0c;简单易用&#xff0c;兼容性强&#xff0c;稳定可靠&#xff0c;标准SDIO接口&a…

Elasticsearch基础_5.ES聚合功能

文章目录 一、数据聚合1.1、桶聚合1.1.1、单维度桶聚合1.1.2、聚合结果排序1.1.3、限定聚合范围 1.2、Metric聚合 二、聚合总结 本文只记录ES聚合基本用法&#xff0c;后续有更复杂的需求可以查看相关书籍&#xff0c;如《Elasticsearch搜索引擎构建入门与实战》 一、数据聚合…

Mybatis-plus的基础用法

文章目录 1. 核心功能1.1 配置与编写规则1.2 条件构造器1.3 自定义SQL1.4 IService接口1.4.1 Lambda方法1.4.2 批量新增 1.5 分页查询 2. 拓展功能2.1 代码生成器2.2 DB静态工具2.3 逻辑删除2.4 枚举处理器 参考 1. 核心功能 1.1 配置与编写规则 Maven依赖&#xff1a; <…

基于IOU匹配的DeepSort目标跟踪与匈牙利算法解析

在多目标跟踪任务中&#xff0c;如何将检测框与已有轨迹进行关联&#xff0c;进而维持目标的连续跟踪&#xff0c;是一个关键问题。DeepSort&#xff08;Deep Simple Online and Realtime Tracking&#xff09;是一种常用的多目标跟踪算法&#xff0c;它结合了IOU&#xff08;交…

用GPT-4o打造LLM+OS(10+实用技能),代码开源,指令曝光,科技演示惊艳全场!

目录 前言 LLM操作系统能力概况&#xff08;phidata中前5个已经实现&#xff09;&#xff1a; 可以读取/生成文本 拥有比任何单个人类更全面的知识 可以浏览互联网 可以使用现有的软件基础设施&#xff08;计算器、Python、鼠标/键盘&#xff09; 可以与其他LLMs通信 可…

无人机之飞控仿真技术篇

一、无人机飞控仿真技术的定义 无人机飞控仿真技术主要是指飞行控制系统仿真&#xff0c;它是以无人机的运动情况为研究对象&#xff0c;面向对象的复杂系统仿真。通过该技术&#xff0c;可以模拟无人机的飞行过程&#xff0c;评估飞行控制系统的性能&#xff0c;优化飞行参数&…

快速区分 GPT-3.5 与 GPT-4

问&#xff1a;鲁迅为什么暴打周树人&#xff1f; GPT3.5回答 各种稀奇古怪的理由 GPT4回答 正确区分鲁迅和周树人是同一个人 国内GPT入口 https://ai-to.cn/url/?ulihaimao

Java中注解与反射的详细介绍

注解和反射 一、注解 什么是注解&#xff1f;Annotation Override &#xff1a;表示一个方法声明打算重写超类的另一个方法声明Deprecated&#xff1a;表示不鼓励程序员使用这样的元素&#xff0c;&#xff08;此注释可以用于修饰方法&#xff0c;属性&#xff0c;类&#xf…

如何利用phpstudy创建mysql数据库

phpStudy诞生于2007年&#xff0c;是一款老牌知名的PHP开发集成环境工具&#xff0c;产品历经多次迭代升级&#xff0c;目前有phpStudy经典版、phpStudy V8&#xff08;2019版&#xff09;等等&#xff0c;利用phpstudy可以快速搭建一个mysql环境&#xff0c;接下来我们就开始吧…