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

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

译者简介

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

翻译组招募信息

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

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

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

目录
相关文章
|
23天前
|
机器学习/深度学习 自然语言处理 PyTorch
从零开始构建nlp情感分析模型!
本教程介绍了如何使用PyTorch和Hugging Face的Transformers库构建一个情感分析模型。主要内容包括导入所需库、读取训练数据集、加载预训练的BERT模型和分词器、定义情感数据集类、划分训练集和验证集、创建数据加载器、设置训练参数、训练模型、评估模型性能以及定义和测试预测函数。通过这些步骤,可以实现一个简单而有效的情感分析模型。
65 2
|
2月前
|
自然语言处理 PyTorch 算法框架/工具
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
【10月更文挑战第1天】随着深度学习技术的进步,预训练模型已成为自然语言处理(NLP)领域的常见实践。这些模型通过大规模数据集训练获得通用语言表示,但需进一步微调以适应特定任务。本文通过简化流程和示例代码,介绍了如何选择预训练模型(如BERT),并利用Python库(如Transformers和PyTorch)进行微调。文章详细说明了数据准备、模型初始化、损失函数定义及训练循环等关键步骤,并提供了评估模型性能的方法。希望本文能帮助读者更好地理解和实现模型微调。
75 2
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
|
2月前
|
机器学习/深度学习 自然语言处理 并行计算
探索深度学习中的Transformer模型及其在自然语言处理中的应用
【10月更文挑战第6天】探索深度学习中的Transformer模型及其在自然语言处理中的应用
113 0
|
2月前
|
人工智能 自然语言处理
【NLP自然语言处理】NLP中的常用预训练AI模型
【NLP自然语言处理】NLP中的常用预训练AI模型
|
2月前
|
机器学习/深度学习 自然语言处理 异构计算
【NLP自然语言处理】初识深度学习模型Transformer
【NLP自然语言处理】初识深度学习模型Transformer
|
2月前
|
机器学习/深度学习 自然语言处理 算法
【NPL自然语言处理】带你迅速了解传统RNN模型
【NPL自然语言处理】带你迅速了解传统RNN模型
|
4月前
|
机器学习/深度学习 自然语言处理 PyTorch
PyTorch与Hugging Face Transformers:快速构建先进的NLP模型
【8月更文第27天】随着自然语言处理(NLP)技术的快速发展,深度学习模型已经成为了构建高质量NLP应用程序的关键。PyTorch 作为一种强大的深度学习框架,提供了灵活的 API 和高效的性能,非常适合于构建复杂的 NLP 模型。Hugging Face Transformers 库则是目前最流行的预训练模型库之一,它为 PyTorch 提供了大量的预训练模型和工具,极大地简化了模型训练和部署的过程。
202 2
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
【深度学习】探讨最新的深度学习算法、模型创新以及在图像识别、自然语言处理等领域的应用进展
深度学习作为人工智能领域的重要分支,近年来在算法、模型以及应用领域都取得了显著的进展。以下将探讨最新的深度学习算法与模型创新,以及它们在图像识别、自然语言处理(NLP)等领域的应用进展。
128 6
|
4月前
|
机器学习/深度学习 自然语言处理 数据处理
|
4月前
|
机器学习/深度学习 自然语言处理 并行计算

热门文章

最新文章