BART: Bidirectional and Auto-Regressive Transformers

BART是结合BERT和GPT特性的双向序列到序列模型,用于自然语言生成、翻译和理解。它通过学习修复破坏文本来训练,包含双向encoder和自回归decoder。相比BERT,BART的decoder有额外的交叉注意力层,并且在预训练中采用多种文本噪声方式。在多项任务上,BART展现出优秀性能,特别是在生成任务上达到新的最佳状态。

1 简介

BART: Bidirectional and Auto-Regressive Transformers.

本文根据2019年《BART: Denoising Sequence-to-Sequence Pre-training for Natural
Language Generation, Translation, and Comprehension》翻译总结。

BERT是双向encoder,GPT是left-to-right decoder。BART可以说是既有encoder,又有decoder,即BERT和GPT结合体。如下图:
在这里插入图片描述

BART输入的损坏文本可以使用任意噪声函数,然后模型来学习回复原始文本。所以BART是一个去噪autoencoder。
BART是一个sequence-to-sequence model,包括双向encoder(接受损坏的文本)和left-to-right 自回归(autoregressive)decoder。

BART和BERT的差异是:(1)decoder的每一层会额外的对encoder的最后隐藏层进行cross-attention;(2)BERT在word预测前使用了feed-forward network,而BART没有使用。总体来说,BART比BERT多10%左右的参数。

BART在Discriminative Tasks上,达到了RoBERTa类似的表现;在text generation tasks.取得了new state-of-the-art结果。

2 预训练BART

各种不同的输入情况:
Text Infilling:文本片段的一部分是被一个单独的[mask]替换,片段的长度从0到3等。
Sentence Permutation:根据句号分割句子,重新排列组合。
Document Rotation:随机找到一个token作为开始位置。
在这里插入图片描述

3 Fine-tuning BART

下面是分类和翻译的模型示例。翻译任务增加了一个随机初始化的encoder。

在这里插入图片描述

4 实验结果

可以看到test infilling的效果不错。其中Language Model(类似GPT),Permuted Language Model(基于XLNet)

在这里插入图片描述

4.1 Discriminative Tasks

BART可以达到RoBERTa的效果。
在这里插入图片描述

4.2 Generation Tasks
BART表现很好。
在这里插入图片描述

### 安装 Hugging Face Transformers 库 安装 Hugging Face Transformers 库可以通过 Python 的包管理工具 `pip` 或者 `conda` 来完成。推荐使用 `pip` 安装,因为官方对 `pip` 的支持更为全面。以下是安装步骤: 1. **使用 pip 安装** 打开命令行工具(Windows 上可以使用 CMD 或 PowerShell),执行以下命令: ```bash pip install transformers ``` 该命令会自动从 PyPI 官方源下载并安装最新版本的 `transformers` 库 [^1]。 2. **使用 conda 安装** 如果用户使用的是 Anaconda 环境,也可以通过 `conda` 安装: ```bash conda install -c huggingface transformers ``` 3. **安装额外依赖** 如果需要训练模型或使用某些特定功能(如模型优化、可视化等),可以安装额外的依赖: ```bash pip install transformers[torch] # 安装 PyTorch 支持 pip install transformers[tf-cpu] # 安装 TensorFlow CPU 支持 ``` ### 配置使用预训练模型的环境 Hugging Face 提供了便捷的 API 来加载使用预训练模型。预训练模型的使用通常包括以下几个步骤: 1. **自动下载模型** 使用 `from_pretrained` 方法时,如果本地没有模型文件,库会自动从 Hugging Face 模型中心下载并缓存到默认目录。 - 在 Windows 上,默认缓存路径为: ``` C:\Users\username\.cache\huggingface\transformers ``` 该路径也可以通过环境变量 `TRANSFORMERS_CACHE` 自定义 [^2]。 示例代码如下: ```python from transformers import AutoTokenizer, AutoModel # 自动下载并缓存预训练模型 tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") model = AutoModel.from_pretrained("bert-base-uncased") ``` 2. **手动加载本地模型** 如果已经下载了预训练模型的权重文件,可以通过指定本地路径来加载模型。这种方式适用于没有网络连接或希望使用自定义模型的情况 [^3]。 示例代码如下: ```python from transformers import AutoTokenizer, AutoModel # 加载本地预训练模型 model_path = "/home/models/huggingface/gpt2" # Linux 系统路径 tokenizer = AutoTokenizer.from_pretrained(model_path) model = AutoModel.from_pretrained(model_path) ``` 3. **配置环境变量** 如果希望将模型缓存到其他路径,可以设置环境变量 `TRANSFORMERS_CACHE`。例如,在 Windows 上可以通过以下命令设置: ```bash set TRANSFORMERS_CACHE=D:\huggingface\models ``` 或者在 Linux/macOS 上: ```bash export TRANSFORMERS_CACHE=/mnt/data/huggingface/models ``` 4. **使用 GPU 加速** 如果安装了支持 GPU 的 PyTorch 或 TensorFlow 版本,并且系统中有可用的 GPU 设备,可以通过以下方式将模型移动到 GPU 上运行: ```python import torch from transformers import AutoTokenizer, AutoModel device = torch.device("cuda" if torch.cuda.is_available() else "cpu") tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") model = AutoModel.from_pretrained("bert-base-uncased").to(device) ``` ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值