0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

是什么让BERT与众不同?如何使用BERT?

Tensorflowers 来源:未知 作者:李倩 2018-11-08 15:46 次阅读

缺少训练数据是自然语言处理(Natural Language Processing, NLP)面临的最大挑战之一。由于 NLP 是一个具备不同任务的多样化领域,因此大多数任务特定数据集仅包含几千或几十万个人类标签的训练样例。然而,基于深度学习的 NLP 模型可以从更大量的数据中获益,在数百万或数十亿的带标签的训练样例中学习得到改善。为了帮助缩小在数据方面的差距,研究人员开发了各种技术,使用网络上无标签的文本训练一个通用的语言表示模型(称为预训练)。用预训练模型在小数据的NLP 任务(如问答和情感分析)上进行微调,与从头开始训练相比,可以显著提高准确度。

本周我们开源了一种NLP 预训练新技术BidirectionalEncoderRepresentations fromTransformers(BERT)(https://github.com/google-research/bert)。此次发布的版本中,世界上任何人都可以在一个云 TPU上花费大约 30 分钟,或使用单个 GPU 在几个小时内训练他们自己最先进的问答系统(或各种其他模型)。该版本包括在 TensorFlow之上构建的源代码和许多预先训练的语言表示模型。在我们的相关论文中,展示了包括斯坦福问答数据集(SQUAD v1.1)在内 11 个 NLP 任务的最新结果。

是什么让 BERT 与众不同?

BERT 建立在最新的预训练与上下文相关的语言表示的工作之上 — 包括Semi-supervised Sequence Learning、Generative Pre-Training、ELMo和ULMFit。然而,与以前的模型不同,BERT 是第一个深度、双向、无监督的语言表示模型,仅使用无标签的文本语料库(在本例中为维基百科)进行预训练。

为什么这很重要?预训练表示可以是与上下文无关的或与上下文相关的。与上下文相关的表示又可以分成单向(只跟上文或下文相关)或双向的 (同时考虑上文和下文)。与上下文无关模型诸如word2vec或GloVe之类的对每个单词生成一个词嵌入表示,所以在这些模型下 “bank” 一词在 “bank account” 和 “bank of the river” 中会具有相同的表示。而与上下文相关模型则基于句子中其他单词来生成每个词的表示。例如,在句子 “I accessed the bank account” 中,一个单向的上下文相关模型表示 “bank” 会基于上文 “I accessed the” 而非下文 “account”。 然而,BERT 表示 “bank” 会同时使用它的上文和下文— “I accessed the ... account” — 从深层神经网络的最底层开始,成为双向的表示。

与先前工作中领先的上下文预训练方法相比,BERT 神经网络架构的示意图如下所示。箭头表示从一个层到下一个层的信息流。图示中顶部的绿色框对应每个输入词最终的上下文表示:

双向的力量

如果双向如此强大,为什么以前没有这样实现?在训练单向模型时,预测词时必须只能基于句子中上文的单词。然而,想要直接让模型同时根据上文和下文来预测词是不可能的,因为这将允许被预测的单词会随着多层模型间接地 “看见自己”。

为了解决这个问题,我们使用直接的蒙版技术来掩盖输入中的一些单词,然后模型就能同时根据上文和下文来预测被掩盖的单词。例如:

虽然这个想法由来已久,但是 BERT 首次把它成功应用到预训练深度神经网络中。

BERT 还学习如何建模句子之间的关系,通过预训练对任何文本语料库都可生成的一个很简单的任务来实现:给定两个句子 A和 B,判断 B 是在语料库中 A之后实际出现的下一个句子,或者只是一个随意的句子?例如:

使用云 TPU 进行训练

到目前为止,我们所描述的所有内容看起来都相当直观,那么还需要什么才能使 BERT 运行得如此良好?云 TPU。云 TPU 使我们可以自由地快速试验、调试和优化我们的模型,这对于我们超越现有的预训练技术至关重要。由 Google 的研究人员于 2017 年开发的Transformer 模型架构也为我们提供了使 BERT 成功所需的基础。Transformer 在我们的开源版本以及tensor2tensor 库中实现。

注:Transformer 模型架构 链接

https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html

开源版本 链接

https://github.com/google-research/bert

tensor2tensor 库 链接

https://github.com/tensorflow/tensor2tensor

BERT 的结果

为了评估性能,我们将 BERT 与其他最先进的 NLP 系统进行了比较。需要注意的是,在我们的实验中,我们几乎没有针对特定任务而对神经网络架构进行更改。在SQuAD v1.1上,BERT 获得了93.2% 的 F1 分数(一种准确度的衡量指标),超过了之前最高水准的分数 91.6% 和人类分数 91.2%:

BERT 还在极具挑战性的GLUE 基准测试中将准确性的标准提高了 7.6%。这个基准测试包含 9 种不同的自然语言理解(NLU)任务。在这些任务中,具有人类标签的训练数据跨度从 2,500 个样本到 400,000 个样本不等。BERT 在所有任务中都大大提高了准确性。

如何使用 BERT?

我们发布的模型可以在几个小时或更短的时间内在各种 NLP 任务上进行微调。开源版本还包括运行预训练的代码,我们相信大多数使用 BERT 的 NLP 研究人员永远不需要从头开始训练他们自己的模型。我们最初发布的 BERT 模型主要为英语模型。基于社区反馈,在开源代码和英语模型之后,我们发布了支持中文以及多语言的预训练基础模型BERT-Base,更好地帮助世界各国的研究人员和开发者解决相应的自然语言处理问题。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4572

    浏览量

    98720
  • 自然语言处理

    关注

    1

    文章

    509

    浏览量

    13100

原文标题:BERT 现已开源:最先进的 NLP 预训练技术,支持中文和更多语言

文章出处:【微信号:tensorflowers,微信公众号:Tensorflowers】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    BERT原理详解

    BERT原理详解
    发表于 07-02 16:45

    串行BERT软件安装指南

    7G / 13.5G 串行 BERT 固化软件和 GUI 软件的文档。
    发表于 09-10 11:05

    串行BERT用户指南

    A guide on using the Serial BERT
    发表于 09-23 11:01

    串行BERT编程指南

    A guide on programming the Serial BERT
    发表于 09-24 17:15

    J-BERT N4903A高性能串行BERT手册

    Brochure for the Keysight J-BERT N4903A High-Performance Serial BERT: 4 pages
    发表于 09-26 12:17

    N4906B的串行BERT用户指南

    A guide on using the N4906B Serial BERT
    发表于 09-27 14:31

    回收M8040A 64 Gbaud 高性能 BERT

    回收M8040A 64 Gbaud 高性能 BERT曾S:***;Q号:3140751627;M8040A 64 Gbaud 高性能 BERTM8030A 多通道比特误码率测试仪M8062A
    发表于 07-03 11:08

    BERT中的嵌入层组成以及实现方式介绍

    , therefore I am第一个“I”不应该与第二个“I”具有相同的向量表示。实现BERT被设计用来处理长度为512的输入序列。作者通过BERT学习每个位置的向量表示来包含输入序列的顺序特征。这
    发表于 11-02 15:14

    BERT模型的PyTorch实现

    BertModel是一个基本的BERT Transformer模型,包含一个summed token、位置和序列嵌入层,然后是一系列相同的self-attention blocks(BERT-base是12个blocks, BERT
    的头像 发表于 11-13 09:12 1.4w次阅读

    一篇BERT用于推荐系统的文章

    今天给大家介绍一篇BERT用于推荐系统的文章,题目是《BERT4Rec: Sequential Recommendation with Bidirectional Encoder
    的头像 发表于 11-03 17:11 2682次阅读
    一篇<b class='flag-5'>BERT</b>用于推荐系统的文章

    图解BERT预训练模型!

    BERT的发布是这个领域发展的最新的里程碑之一,这个事件标志着NLP 新时代的开始。BERT模型打破了基于语言处理的任务的几个记录。在 BERT 的论文发布后不久,这个团队还公开了模型的代码,并提供了模型的下载版本
    的头像 发表于 11-24 10:08 3289次阅读

    什么是BERT?为何选择BERT

    由于绝大多数 BERT 参数专门用于创建高质量情境化词嵌入,因此该框架非常适用于迁移学习。通过使用语言建模等自我监督任务(不需要人工标注的任务)训练 BERT,可以利用 WikiText 和 BookCorpus 等大型无标记数据集
    的头像 发表于 04-26 14:24 3595次阅读

    总结FasterTransformer Encoder(BERT)的cuda相关优化技巧

    FasterTransformer BERT 包含优化的 BERT 模型、高效的 FasterTransformer 和 INT8 量化推理。
    的头像 发表于 01-30 09:34 1331次阅读
    总结FasterTransformer Encoder(<b class='flag-5'>BERT</b>)的cuda相关优化技巧

    NLP入门之Bert的前世今生

    对于每个词只能有一个固定的向量表示,今天我们来介绍一个给NLP领域带来革新的预训练语言大模型Bert,对比word2vec和Glove词向量模型,Bert是一个动态的词向量语言模型,接下来将带领大家一起来聊聊Bert的前世今生,
    发表于 02-22 10:29 654次阅读
    NLP入门之<b class='flag-5'>Bert</b>的前世今生

    PyTorch教程15.10之预训练BERT

    电子发烧友网站提供《PyTorch教程15.10之预训练BERT.pdf》资料免费下载
    发表于 06-05 10:53 0次下载
    PyTorch教程15.10之预训练<b class='flag-5'>BERT</b>