谷歌开源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不费吹灰之力轻松训练自然语言模型

KK

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

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

上下文检索与双向性

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

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

架构

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

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

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

这两个预处理任务的结合使得 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 也提高了 GLUE benchmark 的基准的 7.6%, 一个9种的自然语言理解(NLU)集合任务。

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

原文发布于微信公众号 - AI研习社(okweiwu)

原文发表时间:2018-11-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小小挖掘机

推荐系统遇上深度学习(二十)--贝叶斯个性化排序(BPR)算法原理及实战

排序推荐算法大体上可以分为三类,第一类排序算法类别是点对方法(Pointwise Approach),这类算法将排序问题被转化为分类、回归之类的问题,并使用现有...

19220
来自专栏人工智能

用神经模块网络学习推理

(与 Ronghang Hu, Marcus Rohrbach, Trevor Darrell, Dan Klein and Kate Saenko合作)

36560
来自专栏人工智能头条

深度学习常见问题、最新进展及诺亚方舟实验室的研究

16770
来自专栏新智元

【深度学习】深度学习的最新进展及诺亚方舟实验室的研究

深度学习是机器学习的一个领域,研究复杂的人工神经网络的算法、理论、及应用。自从2006年被Hinton等提出以来[1],深度学习得到了巨大发展,已被成功地应用到...

41150
来自专栏AI科技评论

业界|快9倍!Facebook开源机器学习翻译项目fairseq

Facebook的使命是让世界变得更加开放,让每个人都能以最高的准确性和最快的速度使用自己喜欢的语言来发帖子和视频进行互动,语言翻译对此十分重要。 今天,Fac...

37260
来自专栏小巫技术博客

深度学习,NLP和表征(译)

10730
来自专栏智能算法

模拟退火优化算法

一. 爬山算法 ( Hill Climbing ) 介绍模拟退火前,先介绍爬山算法。爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近...

38860
来自专栏大数据文摘

“未卜先知”、“自学成才”:GANs奇思妙想TOP10榜单

17130
来自专栏AI科技评论

业界 | 谷歌研究院在化学发力:应用机器学习技术预测分子性质

最近,机器学习在化学领域的应用有很大进展,特别是化学搜索问题,从药物筛选、电池设计到OLEDs设计,催化剂的发现。 历史上化学家使用薛定谔方程做数值近似来解决化...

41290
来自专栏专知

【干货】谷歌一个模型解决所有问题《One Model to Learn Them All》 论文深度解读

【导读】Google于2017发布论文《One Model to Learn Them All》(一个模型解决所有),文章一问世立刻引发各方关注。除了标题劲爆之...

43760

扫码关注云+社区

领取腾讯云代金券