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

近日,谷歌宣布开源大规模语言建模模型库,这项名为“探索RNN极限”的研究今年2月发表时就引发激论,如今姗姗来迟的开源更加引人瞩目。研究测试取得了极好的成绩,另外开源的数据库含有大约10亿英语单词,词汇有80万,大部分是新闻数据。这是典型的产业研究,只有在谷歌这样的大公司才做得出来。这次开源也应该会像作者希望的那样,在机器翻译、语音识别等领域起到推进作用。

澳门新萄京官方网站 1

开源部分包括:

翻译:佟海宁

  • TensorFlow GraphDef proto buffer 文本文件

  • TensorFlow 预训练 checkpoint shards

  • 评估预训练模型的代码

  • 词汇表

  • LM-1B 评估测试

校对:吴金笛

代码支持 4 种评估模式:

澳门新萄京官方网站,本文约2000字,建议阅读9分钟。

  • 提供数据库,计算模型的 perplexity

  • 提供前缀,预测后面一个单词

  • softmax 嵌入项,字符级别的 CNN 单词嵌入项

  • 输入句子,将转存 LSTM 状态的嵌入项

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

更多详情查看:开源地址

简介

文章转载自:开源中国社区 []    

自然语言处理面临的众多挑战之一是训练数据的短缺。由于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神经网络架构的可视化如下所示。箭头表示从一层到下一层的信息流。顶部的绿色框表示每个输入词的最终语境化表示:

澳门新萄京官方网站 2

双向性的优点

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

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

澳门新萄京官方网站 3

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

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

澳门新萄京官方网站 4

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

网站地图xml地图