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

澳门新葡萄京官网首页 1

5月13日上午消息,谷歌今天开放了自然语言理解软件SyntaxNet的源代码,将其作为该公司TensorFlow开源机器学习库的一部分。这款软件可以用于自动分析语句含义,而此次公布的包括训练新模型的代码,以及英语文本分析的预训练模型。

开源部分包括:

翻译:佟海宁

谷歌表示,这个名为Parsey
McParseface
的句法分析程序可以自动判断某个单词是名词、动词还是形容词,它是目前全球同类程序中准确度最高的一款,甚至可以与人类语言学家媲美。

  • TensorFlow GraphDef proto buffer 文本文件

  • TensorFlow 预训练 checkpoint shards

  • 评估预训练模型的代码

  • 词汇表

  • LM-1B 评估测试

校对:吴金笛

这种技术在自然语言研究领域拥有极其重要的意义。但对谷歌本身而言同样意义重大。

代码支持 4 种评估模式:

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

“我们内部评估技术的方法非常不同。我们不太关心基准,更加关心对下游系统性能的影响。我们的目标是改善用户体验。”谷歌研究院产品经理戴夫·奥尔说。

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

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

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

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

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

与TensorFlow一样,SyntaxNet主要使用C++执行。它现在实现了开源,使得外部程序员也可以对其加以改进,从而帮助该公司寻找新的人才并改进产品。整体而言,语句分析与产品评论有关,包括应用评论以及餐馆和购物点评,这项技术与互联网搜索和Google
Now On Tap功能也有关系。

更多详情查看:开源地址

简介

“这非常重要,因为语言有的时候很微妙,未必能直接理解人们的意思,有些内容与上下文关系很紧密。”谷歌研究院团队主管塔尼亚·拜德拉克斯-维斯说。

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

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

奥尔表示,与传统的机器学习算法相比,深度学习技术在语言理解方面更加擅长。这种方法通常需要通过大量数据对人工神经网络进行训练,然后让其对新数据进行推断。谷歌还将深度学习技术用于图片识别和语音识别。事实上,神经网络是SyntaxNet的关键所在,该项目的开发代号为“神经官能症”。

为了帮助缩小数据差距,研究人员开发了各种技术用于使用网络上海量未标注的文本来训练通用语言表示模型。然后,将其应用于小数据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进行训练

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

BERT的具体应用结果

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

澳门新葡萄京官网首页 5

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

澳门新葡萄京官网首页 6

如何应用BERT

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

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

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

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

原文标题:

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

原文链接:

译者简介

澳门新葡萄京官网首页 7

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

— 完 —

关注清华-青岛数据科学研究院官方微信公众平台“THU数据派”及姊妹号“数据派THU”获取更多讲座福利及优质内容。