赞
踩
RoBERTa模型是在RoBERTa中提出的:一种经过严格优化的BERT预训练方法, 由Yinhan Liu,Myle Ott,Naman Goyal,Dujingfei,Mandar Joshi,Danqi Chen,Omer Levy,Mike Lewis,Luke Zettlemoyer,Veselin Stoyanov提出。它基于2018年发布的Google BERT模型。
它建立在BERT的基础上,并修改了关键的超参数,消除了下一句的预训练目标,并以更大的迷你批次和学习率进行训练。
论文摘要如下:
语言模型的预训练已经带来了显着的性能提升,但是不同方法之间的仔细比较具有挑战性。训练在计算上很昂贵,通常是在不同大小的私人数据集上进行的,而且正如我们将显示的那样,超参数的选择对最终结果有重大影响。我们提出了BERT预训练的重复研究(Devlin等人,2019),该研究仔细衡量了许多关键超参数和训练数据量的影响。我们发现BERT的训练不足,并且可以匹配或超过它发布后的每个模型的性能。我们最好的模型在GLUE,RACE和SQuAD上获得了最先进的结果。这些结果突出了以前被忽略的设计选择的重要性,并引起了人们对最近报告的改进来源的质疑。我们发布我们的模型和代码。
提示:
此实现BertModel与微小的嵌入调整以及Roberta预训练模型的设置相同。
RoBERTa与BERT具有相同的体系结构,但是使用字节级BPE作为令牌生成器(与GPT-2相同),并且使用不同的预训练方案。
RoBERTa没有token_type_ids,您不需要指示哪个令牌属于哪个段。只需使用分隔令牌tokenizer.sep_token(或</ s>)分隔段即可
import tensorflow as tf
from transformers import RobertaTokenizer, TFRobertaModel
tokenizer = RobertaTokenizer.from_pretrained('roberta-base')
model = TFRobertaModel.from_pretrained('roberta-base')
input_ids = tf.constant(tokenizer.encode("Hello, my dog is cute", add_special_tokens=True))[None, :] # Batch size 1
outputs = model(input_ids)
last_hidden_states = outputs[0] # The last hidden-state is the first element of the output tuple
#config = RobertaConfig.from_pretrained(PATH+'config-roberta-base.json')
#bert_model = TFRobertaModel.from_pretrained(PATH+'pretrained-roberta-base.h5',config=config)
import tensorflow as tf
from transformers import RobertaTokenizer, TFRobertaForSequenceClassification
tokenizer = RobertaTokenizer.from_pretrained('roberta-base')
model = TFRobertaForSequenceClassification.from_pretrained('roberta-base')
input_ids = tf.constant(tokenizer.encode("Hello, my dog is cute", add_special_tokens=True))[None, :] # Batch size 1
labels = tf.constant([1])[None, :] # Batch size 1
outputs = model(input_ids)
logits = outputs[0]
import tensorflow as tf
from transformers import RobertaTokenizer, TFRobertaForTokenClassification
tokenizer = RobertaTokenizer.from_pretrained('roberta-base')
model = TFRobertaForTokenClassification.from_pretrained('roberta-base')
input_ids = tf.constant(tokenizer.encode("Hello, my dog is cute", add_special_tokens=True))[None, :] # Batch size 1
outputs = model(input_ids)
scores = outputs[0]
清华大学开源了一个名为 OpenCLaP 的项目,即多领域开源中文预训练语言模型库。它提供了几种中文预训练 BERT,并表示它们可以直接通过 huggingface 的 pytorch-transformers 项目调用。
OpenCLaP 项目地址:https://github.com/thunlp/OpenCLaP
百度也开源了预训练语言模型 ERNIE,不过目前只有 ERNIE 1.0 Base 提供了中文预训练模型,ERNIE 2.0 目前还只提供英文预训练模型。当然,如果要使用 ERNIE,我们需要了解 PaddlePaddle 框架,并通过 ernie_encoder.py 抽取句子与 Token 的隐藏向量表示。
国内开发者 brightmart 开源了最新的 RoBERTa 中文预训练语言模型
https://github.com/brightmart/roberta_zh
用TensorFlow实现了在大规模中文上RoBERTa的预训练,也会提供PyTorch的预训练模型和加载方式。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。