赞
踩
【论文链接】:https://aclanthology.org/2020.acl-main.747.pdf
【代码链接】:https://github.com/facebookresearch/XLM
【来源】:由Facebook AI Research团队发表在ICLR 2019上的论文。
Adversarial Training (对抗训练) 是一种训练神经网络的方法,旨在提高模型的鲁棒性,使其能够在输入数据被添加扰动的情况下仍然能够正确地分类。该方法通过在训练期间向输入数据中添加对抗性扰动来实现。
Adversarial Training已经被应用到很多领域中,下面列举几个常见的应用:
Adversarial Training的优势包括:
Adversarial Training的劣势包括:
Robert模型,全称Robustly Optimized BERT Pretraining Approach,是一种基于BERT模型的改进,旨在提高预训练模型的鲁棒性和泛化能力。与BERT模型类似,Robert模型也采用了Transformer模型结构,并在大规模语料库上进行预训练,然后在各种下游自然语言处理任务中进行微调。与BERT模型相比,Robert模型的主要改进点在于以下三个方面:
Robert模型已经在各种NLP任务中取得了优秀的性能表现,并在不同语言和不同领域的数据集上进行了广泛的测试和验证。
《Unsupervised Cross-lingual Representation Learning at Scale》是一篇由Facebook AI团队在2019年ACL会议上发表的论文,介绍了一种用于跨语言表示学习的新模型:XLM-R。该模型通过大规模的无监督多语言数据预训练,使得它可以在多种自然语言处理任务上达到最先进的效果,包括翻译、问答、文本分类等。
XLM-R模型主要的贡献可以总结如下:
综上所述,XLM-R的主要贡献是提出了一种高效、可扩展的跨语言表示学习方法,可以有效地处理来自不同语言的自然语言处理任务。
Unsupervised Cross-lingual Representation Learning at Scale(XLM-R)是一个基于Transformer的跨语言预训练模型,主要分为两个部分:预训练和微调。:
总的来说,该论文提出的XLM-R模型采用了一种跨语言表示学习的方法,可以在大规模跨语言文本语料库上进行无监督的训练,从而学习到高质量的跨语言表示,具有很强的泛化能力。
无监督跨语言表征规模学习(XLM-R)论文的方法包括以下步骤:
总的来说,XLM-R的方法包括在大量的单语和平行数据上进行预训练,然后在特定的下游任务上进行微调。关键的创新是使用无监督的预训练技术,即使在低资源环境下,也能实现跨语言的有效迁移学习。
综上,XLM-R模型在数据集规模、训练策略、跨语言表示和跨语言下游任务表现等方面都有一定的创新点和优势。
Unsupervised Cross-lingual Representation Learning at Scale(XLM-R)的主要应用是跨语言自然语言处理任务,如机器翻译、文本分类、命名实体识别等。由于该模型可以学习多语言之间的共享表示,因此可以在不同语言的任务之间进行迁移学习,减少了对标注数据的需求。另外,XLM-R也可以用于跨语言信息检索、跨语言信息聚合等应用场景。
总之,尽管XLM-R在跨语言自然语言处理任务中表现出色,但仍需要更多的工作来解决其在应用过程中面临的局限性。
XLM-R和XLM都是针对跨语言表示学习的模型,但它们之间存在一些区别。以下是一些可能的区别:
训练数据规模:XLM-R使用更大规模的数据进行训练,可以处理更多的语言和更多的文本数据。
XLM-R模型是在大规模跨语言数据上进行训练的,包括了100种语言,总共约23TB的文本数据,其中包含了超过2.5亿个句子。这个规模远远超过了以往的跨语言预训练模型,使得XLM-R在跨语言任务上表现出色。
模型结构:XLM-R与XLM采用不同的模型结构,XLM-R使用了更深的神经网络结构。
XLM-R(Cross-lingual Language Model based on RoBERTa)是一个预训练的跨语言语言模型,其结构与 RoBERTa 模型非常相似,但是在训练数据和模型结构上有一些区别。XLM-R 模型采用了 RoBERTa 模型的基本结构,即由多层 Transformer 编码器组成,其中每个编码器由两个子层组成:多头自注意力机制和前馈神经网络。每个编码器的输出将被馈送到下一层编码器中,并经过一些额外的正则化和扰动技术进行改进。与 RoBERTa 不同的是,XLM-R 模型使用了两种额外的训练策略:1)跨语言数据的大规模无监督预训练;2)在训练过程中使用了多语言训练目标。此外,XLM-R 模型还采用了一种特殊的初始化方法,即通过对来自多个语言的训练数据的平均嵌入进行初始化,从而增强了跨语言信息的表示能力。
训练方式:XLM-R使用了更加高效的训练方法,如数据并行、半精度训练等,以加速训练过程。
XLM-R模型的训练方式是无监督预训练,采用了两个阶段的训练方式。在第一阶段,模型以单语数据作为输入,在不同语言的语料上进行预训练,以学习多语言表示。在第二阶段,模型以双语数据作为输入,在具有相同语义的句子对上进行对齐训练,以学习跨语言的表示。整个训练过程是端到端的,并在大规模的多语言语料库上进行,以提高泛化性能。
任务和性能:XLM-R在各种跨语言任务上都取得了优异的表现,如跨语言文本分类、机器翻译等。与XLM相比,XLM-R在某些任务上表现更好。
需要注意的是,XLM-R是在XLM的基础上进行改进和优化的,两者之间也存在很多共同点。
Unsupervised Cross-lingual Representation Learning at Scale(XLM-R)是基于PyTorch实现的,并使用了Facebook AI Research(FAIR)的Fairseq工具包。具体来说,论文中的XLM-R模型是在预训练和微调阶段使用Fairseq实现的。预训练和微调的代码实现都可以在Fairseq的GitHub代码库中找到。
总的来说,XLM-R模型的实现基于现有的深度学习框架和工具包,利用了大规模的单语和多语数据集,并使用了各种微调技巧来提高跨语言自然语言处理任务的性能。
这个论文中的XLM-R模型主要用于学习跨语言的文本表示,其输入和输出形式如下:
输入:
输出:
举例来说,对于英文和法语两种语言,给定一对源语言句子和目标语言句子(分别用原始文本表示),XLM-R模型将输出这两个句子的固定长度向量表示,这些向量可以用于各种下游自然语言处理任务,如机器翻译、文本分类等。
import torch from transformers import XLMRobertaTokenizer, XLMRobertaModel # 加载预训练的XLM-RoBERTa模型和tokenizer tokenizer = XLMRobertaTokenizer.from_pretrained('xlm-roberta-base') model = XLMRobertaModel.from_pretrained('xlm-roberta-base') # 输入文本 input_text = "Hello, how are you doing today?" # 使用tokenizer将输入文本转化为token ids和attention mask input_ids = torch.tensor([tokenizer.encode(input_text)]) attention_mask = torch.ones_like(input_ids) # 将token ids和attention mask输入模型 output = model(input_ids=input_ids, attention_mask=attention_mask) # 获取模型输出的last hidden state和pooler output last_hidden_state = output.last_hidden_state pooler_output = output.pooler_output # 输出模型的last hidden state和pooler output print("Last Hidden State Shape: ", last_hidden_state.shape) print("Pooler Output Shape: ", pooler_output.shape)
此代码加载了预先训练好的XLM-R模型并使用Tensorflow Datasets加载了一个数据集(multi30k)。在训练函数中,它首先将输入序列编码为输入ID,然后使用XLM-R模型计算输出,并计算损失。最后,使用反向传播更新模型权重以最小化损失。
import tensorflow as tf import tensorflow_datasets as tfds import numpy as np from transformers import XLMRobertaTokenizer # 加载XLM-R模型和tokenizer xlmr = tf.keras.models.load_model("xlmr.h5") tokenizer = XLMRobertaTokenizer.from_pretrained('xlm-roberta-base') # 加载数据集 ds = tfds.load('multi30k', split='train[:1%]', shuffle_files=True) ds = ds.batch(32) # 定义优化器和损失函数 optimizer = tf.keras.optimizers.Adam(learning_rate=5e-5) loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True) # 定义训练函数 @tf.function def train_step(inputs, targets): with tf.GradientTape() as tape: # 获取模型输出 outputs = xlmr(inputs) # 计算损失 loss = loss_fn(targets, outputs) # 计算梯度 gradients = tape.gradient(loss, xlmr.trainable_variables) # 反向传播 optimizer.apply_gradients(zip(gradients, xlmr.trainable_variables)) return loss # 训练模型 for batch in ds: inputs = tokenizer(batch['en'], padding=True, truncation=True, return_tensors='tf')['input_ids'] targets = batch['de'] loss = train_step(inputs, targets) print(loss.numpy())
本文表明,大规模预训练多语言语言模型可以显着提高各种跨语言迁移任务的性能。我们使用超过 2 TB 的过滤 CommonCrawl 数据,在一百种语言上训练基于 Transformer 的屏蔽语言模型。我们的模型称为 XLM-R,在各种跨语言基准测试中明显优于多语言 BERT (mBERT),包括 XNLI 的平均准确率 +14.6%,MLQA 的平均 F1 得分 +13%,NER 的 F1 得分平均 +2.4% . XLM-R 在低资源语言上表现特别出色,与之前的 XLM 模型相比,斯瓦希里语的 XNLI 准确度提高了 15.7%,乌尔都语的准确度提高了 11.4%。我们还对实现这些收益所需的关键因素进行了详细的实证分析,包括 (1) 正迁移和容量稀释与 (2) 大规模高资源语言和低资源语言的性能之间的权衡。最后,我们首次展示了在不牺牲每种语言性能的情况下进行多语言建模的可能性; XLM-R 在 GLUE 和 XNLI 基准测试中与强大的单语言模型相比非常有竞争力。我们将公开我们的代码、数据和模型。1
在本节中,我们介绍了训练目标、语言和我们使用的数据。我们尽可能地遵循 XLM 方法(Lample 和 Conneau,2019 年),只引入可大规模提高性能的更改。
Masked Language Models.掩码语言模型:我们使用 Transformer 模型(Vaswani 等人,2017 年),该模型仅使用单语数据进行多语言 MLM 目标(Devlin 等人,2018 年;Lample 和 Conneau,2019 年)训练。我们对每种语言的文本流进行采样,并训练模型以预测输入中的屏蔽标记。我们使用 Sentence Piece (Kudo and Richardson, 2018) 和 unigram 语言模型 (Kudo, 2018) 将子词标记化直接应用于原始文本数据。我们使用与 Lample 和 Conneau (2019) 相同的抽样分布对不同语言的批次进行抽样,但 α = 0.3。与 Lample 和 Conneau (2019) 不同,我们不使用语言嵌入,这使我们的模型能够更好地处理语码转换。我们使用 250K 的大词汇量和完整的 softmax 并训练两个不同的模型: X L M − R B a s e XLM-R_{Base} XLM−RBase(L = 12,H = 768,A = 12,270M 参数)和 XLM-R(L = 24,H = 1024 , A = 16, 550M 参数)。对于我们所有的消融研究,我们使用 B E R T B a s e BERT_{Base} BERTBase架构和 150K 令牌的词汇表。附录 B 详细介绍了本文中引用的不同模型的架构。扩展到一百种语言。
Scaling to a hundred languages.:XLM-R 接受了 100 种语言的训练;我们在附录 A 中提供了完整的语言列表和相关统计数据。图 1 指定了 XLM-R 和 XLM-100 共享的 88 种语言的 iso 代码,Lample 和 Conneau (2019) 的模型在 100 种维基百科文本上进行了训练语言。
Scaling the Amount of Training Data:继 Wenzek 等人之后。 (2019) 2,我们构建了一个干净的 100 种语言的 CommonCrawl 语料库。我们将内部语言识别模型与来自 fastText 的模型结合使用(Joulin 等人,2017)。我们训练每种语言的语言模型,并使用它来过滤文档,如 Wenzek 等人所述。 (2019)。我们考虑一个用于英语的 CommonCrawl 转储和十二个用于所有其他语言的转储,这显着增加了数据集的大小,尤其是对于像缅甸语和斯瓦希里语这样的低资源语言。
图 1 显示了 mBERT 和 XLM100 使用的维基百科语料库与我们使用的 CommonCrawl 语料库在大小上的差异。正如我们在第 5.3 节中展示的那样,单语维基百科语料库太小而无法实现无监督表示学习。根据我们的实验,我们发现几百 MiB 的文本数据通常是学习 BERT 模型的最小尺寸。
我们考虑四个评价基准。对于跨语言理解,我们使用跨语言自然语言推理、命名实体识别和问答。我们使用 GLUE 基准来评估 XLM-R 的英语性能,并将其与其他最先进的模型进行比较。
在本节中,我们对多语言掩码语言模型进行了全面分析。我们对 XNLI 进行了大部分分析,我们发现它代表了我们在其他任务上的发现。然后我们展示 XLM-R 在跨语言理解和 GLUE 方面的结果。最后,我们比较了多语言和单语言模型,并展示了低资源语言的结果。
在理解 mBERT 或 XLM 的跨语言有效性方面所做的大部分工作(Pires 等人,2019 年;Wu 和 Dredze,2019 年;Lewis 等人,2019 年)侧重于分析修复了下游任务的预训练模型。在本节中,我们将全面研究对预训练大规模多语言模型很重要的不同因素。当我们扩展到一百种语言时,我们强调了这些模型的权衡和局限性。转移稀释权衡和多语言诅咒。
基于这些结果,我们调整了 Lample 和 Conneau (2019) 的设置,并使用具有 24 层和 1024 个隐藏状态、250k 词汇量的大型 Transformer 模型。我们使用多语言 MLM 损失并训练我们的 XLM-R 模型在 500 个 32GB Nvidia V100 GPU 上进行 150 万次更新,批量大小为 8192。我们利用来自 CommonCrawl 的 100 种语言和示例语言的 SPM 预处理文本数据,α = 0.3。在本节中,我们展示了它在跨语言基准测试中优于所有以前的技术,同时在 GLUE 基准测试中获得与 RoBERTa 相当的性能。
在本节中,我们将展示多语言 XLM 模型与单语言 BERT 模型的对比结果。
我们在表 5 中观察到,维基百科上斯瓦希里语和乌尔都语的预训练与随机初始化模型的表现相似;很可能是因为这些语言的数据量很小。另一方面,在 CC 上进行预训练可将性能提高多达 10 个百分点。这证实了我们的假设,即 mBERT 和 XLM-100 严重依赖跨语言迁移,但不像 XLM-R 那样对低资源语言建模。具体来说,在 translate-train-all 设置中,我们观察到在 CC 上训练的 XLM 模型与其维基百科对应物相比的最大收益是在低资源语言上;斯瓦希里语和乌尔都语分别提高了 7% 和 4.8%。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。