独家 | 谷歌发布NLP最先进预训练模型:开源BERT

本文涉及的产品
NLP自然语言处理_高级版,每接口累计50万次
NLP自然语言处理_基础版,每接口每天50万次
NLP 自学习平台,3个模型定制额度 1个月
简介: 本文为你介绍谷歌最新发布的自然语言预训练模型BERT。

作者:Jacob Devlin and Ming-Wei Chang, Research Scientists, Google AI Language

翻译:佟海宁

校对:吴金笛

文章来源:微信公众号 数据派THU

本文约2000字,建议阅读9分钟。

本文为你介绍谷歌最新发布的自然语言预训练模型BERT。


简介

自然语言处理(NLP)面临的众多挑战之一是训练数据的短缺。由于NLP是一个具有许多不同任务的多样化领域,因此大多数针对特定任务的数据集仅包含了几千到几十万个人为标记的训练示例。然而,现代基于深度学习的NLP模型往往需要更大量的数据,在拥有在数以百万计甚至十亿计的带标注的训练样例上进行训练时性能将会得到极大改善。

为了帮助缩小数据差距,研究人员开发了各种技术用于使用网络上海量未标注的文本(称为预训练)来训练通用语言表示模型。然后,将其应用于小数据NLP任务(如问答和情感分析)微调预训练模型,与从头对数据集进行训练相比,使用预训练模型可以显著地提高准确度。

本周,我们公布了一项用于NLP预训练的新技术,称为双向编码器表示的变形器 (Bidirectional Encoder Representations Transformers),即BERT。通过这个模型,所有人都可以在大约30分钟内使用一个服务器上的TPU训练他们自己最先进的诸如问答系统等各种模型,或者使用单个GPU在几个小时内完成训练。在我们公布的源码中包括了在Tensorflow上构建的一系列语言表示模型。在我们的论文中,我们展示了11个NLP任务的最新结果,包括在极具竞争力的斯坦福问答数据集(SQUAD v1.1)上的测试结果。

BERT特点

BERT建立在包括半监督序列学习,预训练生成,ELMo和ULMFit等最新预训练上下文表示模型的基础上。然而与以前的模型不同的是,BERT是第一个深度双向无监督的语言表示,仅使用纯文本语料库(在本例中为维基百科)进行预训练。

深度双向无监督很重要的一个原因是: 预训练的表示既可以是上下文相关也可以是上下文无关的,并且上下文相关的可以进一步分成是单向的或双向的。诸如word2vec或GloVe之类的上下文无关模型为词汇表中的每个单词生成单个单词嵌入表示。例如,“银行”一词在“银行账户”和“河岸”中具有相同的无上下文表示。相反,上下文模型生成基于句子中其他单词的每个单词的表示。例如,在“我访问银行帐户”一句中,单向上下文模型将基于“我访问过”而不是“帐户”来表示“银行”。但是,BERT表示使用其上一个和下一个上下文的“银行” - “我访问了...帐户” - 从深层神经网络的最底层开始,使其成为双向的。

与先前最先进的上下文预训练方法相比,BERT神经网络架构的可视化如下所示。箭头表示从一层到下一层的信息流。顶部的绿色框表示每个输入词的最终语境化表示:

image.png

双向性的优点

既然双向性这么强大,为什么以前没有人实现呢? 为了理解其中原因,我们可以考虑这样的场景: 基于一个可以被有效训练的前向模型(只考虑每个单词之前的内容),我们无法将它简单的转换成基于它前后两个单词的双向内容。因为这将意味着被预测的单词需要在多层模型中间接地“看到自己”。

为了解决这个问题,我们使用单向的技术来屏蔽输入中的一些单词,然后双向调节每个单词以预测被屏蔽的单词。 例如:

image.png

所以虽然这个想法已经存在了很长时间,但BERT是它第一次被成功用于训练深度神经网络。

BERT还能够通过简单任务的预训练来学习对句子之间的关系进行建模,这个简单任务是可以从任何文本语料库中生成的。 比如给定两个句子A和B,B是在语料库中A之后出现的实际下一个句子还是只是一个随意的句子。例如:

image.png

如何使用服务器TPU进行训练

到目前为止我们所描述的所有内容看起来都相当简单,那么我们具体需要如何使用他呢? 答案就是使用服务器上的TPU。 TPU使我们可以自由快速的调试我们的模型,这对于我们区别于现有预训练技术至关重要。 由Google的研究人员于2017年开发的Transformer模型架构也为我们提供了使BERT成功所需的基础。 Transformer的具体实现可以参考我们发布的对应的开源版本以及tensor2tensor库。

BERT的具体应用结果

为了评估其性能,我们将BERT与其他几个最先进的NLP系统进行了比较。注意以下结果中, BERT几乎没有进行针对神经网络架构的任务特定更改就实现了如下中的结果。 在SQuAD v1.1上,BERT获得了93.2%的F1分数(精度的衡量标准),超过了之前的最高分91.6%和人工能达到的91.2%:

image.png

BERT还在非常具有挑战性的GLUE基准上提高了7.6%的绝对性,GLUE是一套9种不同的自然语言理解(NLU)任务。 这些任务中人工标记的训练数据的数量范围从2,500个到400,000个,BERT大大提高了所有这些数据的最新准确度:

image.png

如何应用BERT

我们发布的模型可以在几小时或更短的时间内在通过调试应用到各种NLP任务中。 尽管我们相信使用BERT的大多数NLP研究人员并不需要从头开始预训他们自己的模型 ,我们依然把运行预训练的代码一并包含在了开源代码中。 我们今天发布的BERT模型仅限英语,但我们希望在不久的将来发布其他多种语言的预训练的模型。

可以在下面链接中找到开源TensorFlow实现和预训练BERT模型的介绍:

https://goo.gl/language/bert

或者,您也可以通过Colab开始使用BERT,对应的notebook可以使用如下链接:

https://colab.sandbox.google.com/github/tensorflow/tpu/blob/master/tools/colab/bert_finetuning_with_cloud_tpus.ipynb

您还可以阅读我们的对应论文“BERT: Pre-training of Deep Bidirectional Transformers for Language derstanding“:

https://arxiv.org/abs/1810.04805

原文标题:

Open Sourcing BERT: State-of-the-Art Pre-training for Natural Language Processing

原文链接:

https://ai.googleblog.com/2018/11/open-sourcing-bert-state-of-art-pre.html

译者简介

佟海宁,哥本哈根大学计算机硕士在读,主修数据科学。之前的学习生活中,总会发现各种有趣技术的背后都有机器学习的影子。希望自己能在大数据的浪潮中踏实深耕,行远自迩。

翻译组招募信息

工作内容:将选取好的外文前沿文章准确地翻译成流畅的中文。如果你是数据科学/统计学/计算机专业的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友,数据派翻译组欢迎你们加入!

你能得到:提高对于数据科学前沿的认知,提高对外文新闻来源渠道的认知,海外的朋友可以和国内技术应用发展保持联系,数据派团队产学研的背景为志愿者带来好的发展机遇。

其他福利:和来自于名企的数据科学工作者,北大清华以及海外等名校学生共同合作、交流。

目录
相关文章
|
12天前
|
自然语言处理
【NLP】如何实现快速加载gensim word2vec的预训练的词向量模型
本文探讨了如何提高使用gensim库加载word2vec预训练词向量模型的效率,提出了三种解决方案:保存模型以便快速重新加载、仅保存和加载所需词向量、以及使用Embedding工具库代替word2vec原训练权重。
32 2
|
18天前
|
机器学习/深度学习 存储 自然语言处理
【NLP-新闻文本分类】3 Bert模型的对抗训练
详细介绍了使用BERT模型进行新闻文本分类的过程,包括数据集预处理、使用预处理数据训练BERT语料库、加载语料库和词典后用原始数据训练BERT模型,以及模型测试。
19 1
|
5天前
|
机器学习/深度学习 自然语言处理
自然语言处理 Paddle NLP - 预训练语言模型及应用
自然语言处理 Paddle NLP - 预训练语言模型及应用
6 0
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | 秒懂 AI - 深度学习五大模型:RNN、CNN、Transformer、BERT、GPT 简介
**RNN**,1986年提出,用于序列数据,如语言模型和语音识别,但原始模型有梯度消失问题。**LSTM**和**GRU**通过门控解决了此问题。 **CNN**,1989年引入,擅长图像处理,卷积层和池化层提取特征,经典应用包括图像分类和物体检测,如LeNet-5。 **Transformer**,2017年由Google推出,自注意力机制实现并行计算,优化了NLP效率,如机器翻译。 **BERT**,2018年Google的双向预训练模型,通过掩码语言模型改进上下文理解,适用于问答和文本分类。
87 9
|
17天前
|
数据采集 人工智能 数据挖掘
2021 第五届“达观杯” 基于大规模预训练模型的风险事件标签识别】3 Bert和Nezha方案
2021第五届“达观杯”基于大规模预训练模型的风险事件标签识别比赛中使用的NEZHA和Bert方案,包括预训练、微调、模型融合、TTA测试集数据增强以及总结和反思。
18 0
|
17天前
|
数据采集 机器学习/深度学习 存储
【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–5 Bert 方案
在讯飞英文学术论文分类挑战赛中使用BERT模型进行文本分类的方法,包括数据预处理、模型微调技巧、长文本处理策略以及通过不同模型和数据增强技术提高准确率的过程。
17 0
|
1月前
|
自然语言处理 PyTorch API
`transformers`库是Hugging Face提供的一个开源库,它包含了大量的预训练模型和方便的API,用于自然语言处理(NLP)任务。在文本生成任务中,`transformers`库提供了许多预训练的生成模型,如GPT系列、T5、BART等。这些模型可以通过`pipeline()`函数方便地加载和使用,而`generate()`函数则是用于生成文本的核心函数。
`transformers`库是Hugging Face提供的一个开源库,它包含了大量的预训练模型和方便的API,用于自然语言处理(NLP)任务。在文本生成任务中,`transformers`库提供了许多预训练的生成模型,如GPT系列、T5、BART等。这些模型可以通过`pipeline()`函数方便地加载和使用,而`generate()`函数则是用于生成文本的核心函数。
|
1月前
|
数据采集 自然语言处理 PyTorch
AIGC之BERT模型
7月更文挑战第5天
|
2月前
|
机器学习/深度学习 自然语言处理 TensorFlow
使用Python实现深度学习模型:BERT模型教程
使用Python实现深度学习模型:BERT模型教程
80 0
|
2月前
|
机器学习/深度学习 自然语言处理 PyTorch
【自然语言处理NLP】Bert预训练模型、Bert上搭建CNN、LSTM模型的输入、输出详解
【自然语言处理NLP】Bert预训练模型、Bert上搭建CNN、LSTM模型的输入、输出详解
58 0