谷歌开源BERT不费吹灰之力轻松训练自然语言模型

雷锋网  •  扫码分享
我是创始人李岩:很抱歉!给自己产品做个广告,点击进来看看。  

谷歌开源BERT不费吹灰之力轻松训练自然语言模型

本文为 AI 研习社编译的技术博客,原标题 :

Google Open Sources BERT to Train Natural Language Models Without Breaking the Bank

作者 | Jesus Rodriguez

翻译 | micah壹路向北     校对 | 酱番梨

整理 | 菠萝妹

原文链接:

https://towardsdatascience.com/google-open-sources-bert-to-train-natural-language-models-without-breaking-the-bank-813ef38018fc


谷歌开源BERT不费吹灰之力轻松训练自然语言模型  


谷歌开源BERT不费吹灰之力轻松训练自然语言模型

KK

目前自然语言处理模型是人工智能的前沿科技,他们是很多AI系统与用户交互的接口。NLP 发展的主要阻碍来自于模型对于高质量标记数据的依赖。由于语言是一个任何事物都可以应用的普遍交流的机制,这也意味着很难找到一个特定领域的注解数据去训练模型。针对这个挑战, NLP 模型 决定先使用大量的没有标签的数据训练语言原理。非常有名的预训练模型包括 Word2Vec,Glove 或者FasText。然而 预训练模型有自己的挑战,对于大量数据的上下文关系的表达常常失败。最近来自GOOGLE AI 语言团队的研究者们开放了 BERT项目的源代码,一个为预训练语言表达而生的库,并且其训练结果达到了很不错的效果。

Bidirectional Encoder Representations from Transformers (BERT) 起源于Google内部的一篇研究,提出了一种在大量上下文相关的语言的预训练模型中获取数据的不同方法。这些表达方式可以被用于特定领域的NLP 任务,类似于问答式语句,情感分析。开源项目的发布,既是论文中提出的 TensorFlow 技术的实施, 也是一系列的预训练模型。 


    上下文检索与双向性

现在 你可能会想知道BERT与其他预训练模型不同的地方。理论上,NLP 预训练技术可以是上下文无关的,也可以是上下文互相检索的。上下文无关的模型,像 word2vec 或者 GloVegenerate 是以单个词汇嵌入词汇表的表达方式。例如,“足球”这个单词在以下语句中有相同的语义“我去了足球比赛”,“我遇到了一些来自皇家马德里的足球球员”。

上下文检索的模型并非由单个词汇生成表达语句,而是根据这句话不同方向上的其他其他单词来生成表达句。在我们的例子中,上下文检索式的模型中“足球”的含义根据短语“我去..”或者“我遇到了...”而生成 而不是根据“比赛”“皇家马德里的球员”。本质上,预训练模型可以是上下文无关的也可以是上下文检索式的,更深入的,可以是单向性的也可以是双向性的。

谷歌开源BERT不费吹灰之力轻松训练自然语言模型

BERT 通过根据前后单词的意思创建上下文检索表达语义, 延伸了之前的预训练模型方法,丰富了语言模型。在NLP模型中达成双向的,上下文检索的语义表达并不像听起来那么容易。双向性最大的困难在于,在训练模型中 不能简单的将单词的前一个和后一个单词作为上下文,可能会让单词间接的在多层模型中寻找 “自己 “。Google BERT 使用了非常聪明的架构来应对这一挑战。


    架构

BERT 的模型架构基于多层双向转换解码 ,与 tensor2tensor library 中的原理十分相似。BERT 有着与其他预训练模型 OpenAI GPT 或者 ELMo十分相似的网络架构。但是在转换器之间有着如下图所示的双向连接。

谷歌开源BERT不费吹灰之力轻松训练自然语言模型

BERT 最大的贡献在于使用了两个 奇异的非监督预测任务来解决之前提到的挑战。使得让单词在文章上下文里“认出自己”变为可能。BERT解决这个挑战使用了多种不同的预训练任务:屏蔽和下一句预测。第一个预处理模型遮蔽约15%的输入单词,在深度双向转换解码中运行整个语句,并且只预测被遮蔽的单词,例如:


第二个预处理任务通过语料库中随机生成的简单语句,学习语句之间的联系。
给出两个语句A 和B, B是A之后的语句吗?还是B 只是语料库中随机抽取的一句话?

谷歌开源BERT不费吹灰之力轻松训练自然语言模型

这两个预处理任务的结合使得 BERT在几乎所有的NLP任务中 得到了更加丰富的,双向的语义表达。

使用BERT有两个阶段:预训练 和 微调

  • 预训练:相当的昂贵(在 4~ 16 个 云 TPUs 上跑4天),但是对于每一个语言,只用跑一次。为了减缓任务的严峻性, Google 发布了好几款可以用于NLP 场景的预训练模型。

  • 微调:很便宜,所有在纸上可以完成的工作都可以在一个云端TPU的一小时之内完成,或者使用GPU 的话需要几个小时的时间。从相同的预训练模型开始。


    BERT 实践

Google以BERT 作为其他优秀的NLP 系统的基准,取得了引人瞩目的成就。 最重要的是,BERT 取得的所有的结果不需要根据任务改变神经网络的结构。
在 SQuAD v1.1 ,BERT 取得了93.2% 的F1 分数(精准度计算的分数),超越了之前模型的91.6%和人工翻译的91.2%。

谷歌开源BERT不费吹灰之力轻松训练自然语言模型

BERT 也提高了 GLUE benchmark 的基准的 7.6%, 一个9种的自然语言理解(NLU)集合任务。

谷歌开源BERT不费吹灰之力轻松训练自然语言模型

语言模型的迁移学习近期带来了大量的经验性提升表明了大量的,无监督的预训练模型是众多语言理解系统中的重要组成部分。BERT 表明了在NLP预处理模型中获取双向的,上下文语言的表达是可能的。目前实施BERT的TensorFlow 允许开发者将这个前沿技术应用于他们的NLP 场景的同时维护可管理的计算成本。 雷锋网 (公众号:雷锋网) 雷锋网雷锋网


想要继续查看该篇文章相关链接和参考文献?

长按链接点击打开:

https://ai.yanxishe.com/page/TextTranslation/1212


AI研习社每日更新精彩内容,观看更多精彩内容:

CVPR 2018摘要:第一部分

这 25 个开源机器学习项目,一般人我不告诉 Ta

如何极大效率地提高你训练模型的速度?

用 4 种卷积神经网络,轻松分类时尚图像


等你来译:

2018.11十大机器学习热门网文

如何在数据科学面试中脱颖而出 

25个能放到数据湖中的语音研究数据集 

一文带你读懂 WaveNet:谷歌助手的声音合成器  


随意打赏

谷歌bert模型机器学习十大算法谷歌bert不费吹灰之力自然语言处理爬虫工具自然语言
提交建议
微信扫一扫,分享给好友吧。