Jacob Devlin and Ming-Wei Chang, Research Scientists, Google AI Language作者吴金笛校对佟海宁翻译

谷歌发布NLP最先进预训练模型:开源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是第一个深度双向无监督的语言表示,仅使用纯文本语料库(在本例中为维基百科)进行预训练。

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

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

双向性的优点

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

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

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

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

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

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

BERT的具体应用结果

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

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

如何应用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

译者简介

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

THU数据派
THU数据派

THU数据派"基于清华,放眼世界",以扎实的理工功底闯荡“数据江湖”。发布全球大数据资讯,定期组织线下活动,分享前沿产业动态。了解清华大数据,敬请关注姐妹号“数据派THU”。

工程BERT预训练模型NLP谷歌
2
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

自然语言理解技术

自然语言理解是人工智能的核心课题之一,也被广泛认为是最困难和最具标志性的任务。最经典的两个人工智能思想实验——图灵测试和中文房间,都是围绕自然语言理解来构建的。自然语言理解在人工智能技术体系中的重要性不言而喻,它一方面承载着机器和人的交流,另一方面直达知识和逻辑。自然语言理解也是人工智能学者孜孜以求的圣杯,机器学习的巨擘 Michael I. Jordan 就曾经在 Reddit 上的 AMA(Ask Me Anything)栏目中畅想用十亿美元建立一个专门用于自然语言理解的实验室。

GloVe技术

Stanford开发的用于词向量表示的一个库/工具

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

词嵌入技术

词嵌入是自然语言处理(NLP)中语言模型与表征学习技术的统称。概念上而言,它是指把一个维数为所有词的数量的高维空间嵌入到一个维数低得多的连续向量空间中,每个单词或词组被映射为实数域上的向量。

数据科学技术

数据科学,又称资料科学,是一门利用数据学习知识的学科,其目标是通过从数据中提取出有价值的部分来生产数据产品。它结合了诸多领域中的理论和技术,包括应用数学、统计、模式识别、机器学习、数据可视化、数据仓库以及高性能计算。数据科学通过运用各种相关的数据来帮助非专业人士理解问题。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

语料库技术

语料库一词在语言学上意指大量的文本,通常经过整理,具有既定格式与标记;事实上,语料库英文 "text corpus" 的涵意即为"body of text"。

word2vec技术

Word2vec,为一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本。网络以词表现,并且需猜测相邻位置的输入词,在word2vec中词袋模型假设下,词的顺序是不重要的。 训练完成之后,word2vec模型可用来映射每个词到一个向量,可用来表示词对词之间的关系。该向量为神经网络之隐藏层。 Word2vec依赖skip-grams或连续词袋(CBOW)来建立神经词嵌入。Word2vec为托马斯·米科洛夫(Tomas Mikolov)在Google带领的研究团队创造。该算法渐渐被其他人所分析和解释。

自然语言处理技术

自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

问答系统技术

问答系统是未来自然语言处理的明日之星。问答系统外部的行为上来看,其与目前主流资讯检索技术有两点不同:首先是查询方式为完整而口语化的问句,再来则是其回传的为高精准度网页结果或明确的答案字串。以Ask Jeeves为例,使用者不需要思考该使用什么样的问法才能够得到理想的答案,只需要用口语化的方式直接提问如“请问谁是美国总统?”即可。而系统在了解使用者问句后,会非常清楚地回答“奥巴马是美国总统”。面对这种系统,使用者不需要费心去一一检视搜索引擎回传的网页,对于资讯检索的效率与资讯的普及都有很大帮助。从系统内部来看,问答系统使用了大量有别于传统资讯检索系统自然语言处理技术,如自然语言剖析(Natural Language Parsing)、问题分类(Question Classification)、专名辨识(Named Entity Recognition)等等。少数系统甚至会使用复杂的逻辑推理机制,来区隔出需要推理机制才能够区隔出来的答案。在系统所使用的资料上,除了传统资讯检索会使用到的资料外(如字典),问答系统还会使用本体论等语义资料,或者利用网页来增加资料的丰富性。

ELMo技术

ELMO 是“Embedding from Language Models”的简称, ELMO 本身是个根据当前上下文对 Word Embedding 动态调整的思路。ELMO 采用了典型的两阶段过程,第一个阶段是利用语言模型进行预训练;第二个阶段是在做下游任务时,从预训练网络中提取对应单词的网络各层的 Word Embedding 作为新特征补充到下游任务中。

推荐文章
暂无评论
暂无评论~