Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >从Transformer到BERT模型

从Transformer到BERT模型

作者头像
Datawhale
发布于 2020-03-05 06:59:36
发布于 2020-03-05 06:59:36
1.1K0
举报
文章被收录于专栏:Datawhale专栏Datawhale专栏

以下文章来源于Microstrong ,作者Microstrong

目录:

  1. ELMo与Transformer的简单回顾
  2. DAE与Masked Language Model
  3. BERT模型详解
  4. BERT模型的不同训练方法
  5. 如何把BERT模型应用在实际项目中
  6. 如何对BERT减肥
  7. BERT存在的问题

1. ELMo与Transformer的简单回顾

1.1 一词多义

1.2 ELMo

ELMo是一个语言模型,主要是做给定文本的Context,预测下一个词。ELMo最重要的一个特点是部分解决了一词多义的情况,没有完全解决哟!它为解决一词多义提供了一个很好的解决方案。像word2vec、glove提供的embedding是静态的,一旦训练完成embedding是不变的。而ELMo其实考虑更多的是Context的信息,对每一个词会给出3个embedding,这3个embedding可以看作是一个词的3个embedding特征,对3个embedding特征会添加三个位置,对于不同的任务会赋予不同的权重,最后根据权重把这三个embedding结合起来做向量平均,把合并后的embedding作为最后词的embedding。

ELMo用的是long contexts信息,而不是其他模型用到的window size contexts信息。ELMo用到的是Bi-LSTM,如果ELMo换成Transformer那就和BERT结构基本一样了。

1.3 Transformer

LSTM和Transformer的区别:

  • 基于RNN的LSTM训练是迭代的,当前这个字进入完LSTM单元后才能输入下一个字,是一个串行的过程。
  • Transformer的训练是并行的,它是所有的字都可以同时并行训练,大大的加快了计算效率。而且Transformer加入了位置嵌入,帮助模型理解语言的顺序。使用Self-Attention和全连接层来计算是Transformer的一个基本结构。

Transformer中最重要的就是Multi-Head Attention。

Transformer中Encoder的五个核心部分如下图:

Skip connections:反向传播的时候,防止梯度消失的问题。

2. DAE与Masked Language Model

2.1 什么是DAE与Masked Language Model

随着一些奇怪的高维数据出现,比如图像、语音,传统的统计学-机器学习方法遇到了前所未有的挑战。数据维度过高,数据单调,噪声分布广,传统的特征工程很难奏效。

为了解决高维度的问题,出现的线性学习的PCA降维方法,PCA的数学理论确实无懈可击,但是却只对线性数据效果比较好。于是,寻求简单的、自动的、智能的特征提取方法仍然是机器学习的研究重点。

于是,CNN另辟蹊径,利用卷积、降采样两大手段从信号数据的特点上很好的提取出了特征。对于一般非信号数据,该怎么办呢?

研究者提出了自动编码器(AutoEncoder),自动编码器基于这样一个事实:原始input(设为 )经过加权( 、 )、映射(Sigmoid)之后得到 ,再对 反向加权映射回来成为 。网络结构如下图:

自动编码器的过程很有趣,首先,它没有使用数据标签来计算误差update参数,所以是无监督学习。其次,利用类似神经网络的双隐层的方式,简单粗暴地提取了样本的特征。

为了缓解经典AutoEncoder容易过拟合的问题,一个办法是在输入中加入随机噪声,所以Vincent在2008年的论文《Extracting and Composing Robust Features with Denoising Autoencoders》中提出了AutoEncoder的改良版Denoising AutoEncoder(DAE)。

怎么才能使特征很鲁棒呢?就是以一定概率分布(通常使用二项分布)去擦除原始input矩阵,即每个值都随机置0, 这样看起来部分数据的部分特征是丢失了。以这丢失的数据 去计算 ,计算 ,并将 与原始 做误差迭代,这样,网络就学习了这个破损(Corruputed)的数据。网络结构如下图:

这个破损的数据是很有用的,原因有二:

  • 通过与非破损数据训练的对比,破损数据训练出来的Weight噪声比较小。 降噪因此得名。原因不难理解,因为擦除的时候不小心把输入噪声给擦掉了。
  • 破损数据一定程度上减轻了训练数据与测试数据的代沟。 由于数据的部分被擦掉了,因而这破损数据一定程度上比较接近测试数据。(训练、测试肯定有同有异,当然我们要求同舍异)。这样训练出来的Weight的鲁棒性就提高了。

2.2 BERT与DAE、Masked Language Model的关系

BERT是一种基于Transformer Encoder来构建的一种模型,它整个的架构其实是基于DAE(Denoising Autoencoder,去噪自编码器)的,这部分在BERT文章里叫作Masked Lanauge Model(MLM)。MLM并不是严格意义上的语言模型,因为整个训练过程并不是利用语言模型方式来训练的。BERT随机把一些单词通过MASK标签来代替,并接着去预测被MASK的这个单词,过程其实就是DAE的过程。 BERT有两种主要训练好的模型,分别是BERT-Small和BERT-Large, 其中BERT-Large使用了12层的Encoder结构。整个的模型具有非常多的参数。

虽然BERT有很好的表现,但本身也有一些问题。比如,BERT并不能用来生成数据。 由于BERT本身是依赖于DAE的结构来训练的,所以不像那些基于语言模型训练出来的模型具备很好地生成能力。之前的方法比如NNLM、ELMo是基于语言模型生成的,所以用训练好的模型可以生成出一些句子、文本等。但基于这类生成模型的方法论本身也存在一些问题,因为理解一个单词在上下文里的意思的时候,语言模型只考虑了它的上文,而没有考虑下文!

BERT在2018年提出,当时引起了爆炸式的反应,因为从效果上来讲刷新了非常多的记录,之后基本上开启了这个领域的飞速的发展。

3. BERT模型详解

3.1 BERT简介

Bidirection:BERT的整个模型结构和ELMo类似,都是双向的。

Encoder:是一种编码器,BERT只是用到了Transformer的Encoder部分。

Representation:做词的表征。

Transformer:Transformer是BERT的核心内部元素。

BERT的基本思想和Word2Vec、CBOW是一样的,都是给定context,来预测下一个词。BERT的结构和ELMo是相似的都是双向结构。第一个利用Transformer的并不是BERT,而是GPT。

3.2 BERT的模型结构

BERT的模型结构是Seq2Seq,核心是Transformer encoder,而Transformer encoder里面又包含前面介绍的五个很重要的部分。

3.3 BERT的输入

接下来看一下BERT的输入,BERT的输入包含三个部分:Token Embeddings、Segment Embeddings、Position Embeddings。这三个部分在整个过程中是可以学习的。

特殊字符介绍:

  • CLS,全称是Classification Token(CLS),是用来做一些分类任务。“CLS”token为什么会放在第一位?因为本身BERT是并行结构,“CLS”放在尾部也可以,放在中间也可以。放在第一个应该是比较方便。
  • SEP,全称是Special Token(SEP),是用来区分两个句子的,因为通常在train BERT的时候会输入两个句子。从下面图片中,可以看出SEP是区分两个句子的token。
  • Token Embedding: 就是对输入的每次单词进行Embedding。
  • Segment Embedding: 标记输入的Token是属于句子A还是句子B。
  • Position Embedding: 具体标记每一个Token的位置。

最后,把这三个Embedding的对应位置加起来,作为BERT最后的输入Embedding。

4. BERT模型的不同训练方法

4.1 BERT的预训练

BERT是如何做预训练的?有两个任务:一是Masked Language Model(MLM);二是Next Sentence Predicition(NSP)。在训练BERT的时候,这两个任务是同时训练的。所以,BERT的损失函数是把这两个任务的损失函数加起来的,是一个多任务训练。

BERT官方提供了两个版本的BERT模型。一个是BERT的BASE版,另一个是BERT的LARGE版。BERT的BASE版有12层的Transformer,隐藏层Embedding的维度是768,head是12个,参数总数大概是一亿一千万。BERT的LARGE版有24层的Transformer,隐藏层Embedding的维度是1024,head是16个,参数总数大概是三亿四千万。

4.2 BERT-Masked Language Model

什么是Masked Language Model?它的灵感来源于完形填空。具体在BERT中,掩盖了15%的Tokens。这掩盖了15%的Tokens又分为三种情况:一是,有80%的字符用“MASK”这个字符替换;二是,有10%的字符用另外的字符替换;三是,有10%的字符是保持不动。最后在计算损失时,只计算被掩盖的这些Tokens,也就是掩盖了15%的Tokens。

4.3 BERT-Next Sentence Prediction

Next Sentence Prediction是更关注于两个句子之间的关系。与Masked Language Model任务相比,Next Sentence Prediction更简单些。

4.4 BERT-Training Tips

4.5 BERT-What it looks like?

训练好BERT之后,我们来研究BERT内部的机制。BERT的BASE版本有12个head,每一个head是否有相同的功能?如下图所示,第一个head的连线非常的密集,它是Attends broadly;对于第3个head到第1个head,更关注的是下一个单词;对于第8个head到第7个head,更关注的是句子的分割符(SEP);对于第11个head到第6个head,更关注的是句子的句号。

所以,对于每一个head来说,代表的意义是不一样的,这也是BERT强大的原因。BERT本身的Multi-Headed结构可以抓住不一样的特征,包括全局的特征、局部的特征等。

BERT的BASE版有12层的Transformer,下图中的每一个颜色代表一层的Transformer,相同颜色会聚集的比较近。相同层的head是非常相近的!

针对上面两幅图进行总结,对于含有12层+12个Head的BERT模型,对于每一层来说,它的Head的功能是相似的;对于每一个Head里面的Attention表现出的功能是完全不一样的。

4.6 BERT-What it learns?

在论文“ Tenney I, Das D, Pavlick E. Bert rediscovers the classical nlp pipeline[J]. arXiv preprint arXiv:1905.05950, 2019.”中研究了BERT的LARGE版本中每层Transformer在不同NLP任务中所做的贡献。

从上图可知,蓝色部分越长表示改层Transformer对该NLP任务所起的作用更大。在Coref.任务中,可以看到18、19、20层所起的作用更大。

4.7 BERT-Multilingual Version

相关的GitHub地址:https://github.com/google-research/bert/blob/master/multilingual.md

5. 如何把BERT模型应用在实际项目中

我们有了BERT模型,也已经把BERT模型预训练好了,那么我们能用BERT模型做哪些NLP的任务呢?

  • Classification
  • Questions & Answering
  • Named Entity Recognition(NER)
  • Chat Bot(Intent Classification & Slot Filling)
  • Reading Comprehension
  • Sentiment Analysis
  • Reference Resolution
  • Fact Checking
  • etc.

5.1 Classification

BERT论文提到: 【1】Devlin J, Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectional transformers for language understanding[J]. arXiv preprint arXiv:1810.04805, 2018.

5.2 Questions & Answering

BERT论文提到: 【1】Devlin J, Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectional transformers for language understanding[J]. arXiv preprint arXiv:1810.04805, 2018.

我们来看一下如何在QA系统中应该BERT:

具体信息可以参看:Bert时代的创新(应用篇):Bert在NLP各领域的应用进展 - 张俊林的文章 - 知乎 https://zhuanlan.zhihu.com/p/68446772

5.3 Named Entity Recognition(NER)

BERT论文提到: 【1】Devlin J, Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectional transformers for language understanding[J]. arXiv preprint arXiv:1810.04805, 2018.

5.4 Chat Bot(Intent Classification & Slot Filling)

相关论文: 【1】Chen Q, Zhuo Z, Wang W. Bert for joint intent classification and slot filling[J]. arXiv preprint arXiv:1902.10909, 2019.

5.5 Reading Comprehension

6. 如何对BERT减肥

BERT表现的非常好,但是它参数太多了。我们能不能把BERT模型进行压缩一下,方便我们使用呢?压缩模型常用方法如下:

  • Pruning-remove parts from the model
  • Quantization-covert Double to Int32
  • Distillation-teach a small model

6.1 知识蒸馏

7. BERT存在的问题

相关论文: 【1】Niven T, Kao H Y. Probing neural network comprehension of natural language arguments[J]. arXiv preprint arXiv:1907.07355, 2019. 该论文指出,现存的数据集不能很好的评估BERT模型的表现。 【2】Si C, Wang S, Kan M Y, et al. What does BERT Learn from Multiple-Choice Reading Comprehension Datasets?[J]. arXiv preprint arXiv:1910.12391, 2019. 该论文在数据集中添加干扰文本,结果显示BERT的表现非常差。

8. Reference

【1】本文是Microstrong在观看葛瀚骋在B站上讲解的直播课程《从Transformer到BERT模型》的笔记。直播地址:https://live.bilibili.com/11869202 【2】从BERT, XLNet, RoBERTa到ALBERT - 李文哲的文章 - 知乎 https://zhuanlan.zhihu.com/p/84559048 【3】降噪自动编码器(Denoising Autoencoder),地址:https://www.cnblogs.com/neopenx/p/4370350.html 【4】 【自然语言处理】NLP免费直播(贪心学院),地址:https://www.bilibili.com/video/av89296151?p=3

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Datawhale 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Transformer结构及其应用详解——GPT、BERT、MT-DNN、GPT-2
为了缓解传递间的梯度和遗忘问题,设计了各种各样的RNN cell,最著名的两个就是LSTM和GRU了
新智元
2023/08/05
7250
Transformer结构及其应用详解——GPT、BERT、MT-DNN、GPT-2
【NLP】从word2vec, ELMo到BERT
还记得不久之前的机器阅读理解领域,微软和阿里在SQuAD上分别以R-Net+和SLQA超过人类,百度在MS MARCO上凭借V-Net霸榜并在BLEU上超过人类。这些网络可以说一个比一个复杂,似乎“如何设计出一个更work的task-specific的网络"变成了NLP领域政治正确的研究方向。而在这种风向下,不管word2vec也好,glove也好,fasttext也好,都只能充当一个锦上添花的作用。说好的迁移学习、预训练呢?在NLP似乎始终没成主角。
yuquanle
2020/02/21
9250
通俗讲解从Transformer到BERT模型!
在学会 Transformer 和 Bert 之前,我们需要理解Attention和Self-Attention机制。Attention的本质是要找到输入的feature的权重分布,这个feature在某一个维度有一个长度的概念,如果我们输入一个长为 n 的 feature,那么 Attention 就要学习一个长为 n 的分布权重,这个权重是由相似度计算出来的,最后返回的得分就将会是权重与feature的加权和。
Datawhale
2020/08/28
1.8K0
通俗讲解从Transformer到BERT模型!
NLP大魔王 · BERT 全解读
BERT(Bidirectional Encoder Representations from Transformers)来自谷歌人工智能语言研究人员发表的论文
NewBeeNLP
2022/04/14
7930
NLP大魔王 · BERT 全解读
【NLP】XLNet详解
BERT本身很有效,但它也存在一些问题,比如不能用于生成、以及训练数据和测试数据的不一致(Discrepancy)。在本文中,我们重点介绍比BERT更强大的预训练模型XLNet,它为了达到真正的双向学习,采用了Permutation语言模型、以及使用了双流自注意力机制,并结合了Transformer-XL的相对位置编码。
yuquanle
2020/03/13
1.3K0
机器学习|7种经典预训练模型原理解析
目前无论在CV领域还是NLP领域,预训练都是一个很普遍和普适的方法。我们都知道深度学习的模型越庞大,模型参数越多,为了避免过拟合就需要相应大规模的数据集,但对于很多任务而言,样本标注的成本昂贵。相反,大规模无标签数据库相对容易建立,为了充分利用这些无标记数据,我们可以先使用它们在其他一些任务上学习一个好的特征表示,再用于训练目标任务。
智能生信
2021/02/04
5.5K0
虽被BERT碾压,但还是有必要谈谈BERT时代与后时代的NLP
2018年是NLP的收获大年,模型预训练技术终于被批量成功应用于多项NLP任务。之前搞NLP的人一直羡慕搞CV的人,在ImageNet上训练好的模型,居然拿到各种任务里用都非常有效。现在情形有点逆转了。搞CV的人开始羡慕搞NLP的人了。CV界用的还是在有监督数据上训练出来的模型,而NLP那帮家伙居然直接搞出了在无监督数据上的通用预训练模型!要知道NLP中最不缺的就是无监督的文本数据,几乎就是要多少有多少。还有个好消息是目前NLP中通用预训练模型的效果还远没达到极限。目前发现只要使用更多的无监督数据训练模型,模型效果就会更优。这种简单粗暴的优化方法对大公司来说实在再经济不过。而且,算法本身的效果也在快速迭代中。NLP的未来真是一片光明啊~
AI科技大本营
2019/07/03
1.5K0
虽被BERT碾压,但还是有必要谈谈BERT时代与后时代的NLP
一文读懂深度学习:从神经元到BERT
自然语言处理领域的殿堂标志 BERT 并非横空出世,背后有它的发展原理。今天,蚂蚁金服财富对话算法团队整理对比了深度学习模型在自然语言处理领域的发展历程。从简易的神经元到当前最复杂的BERT模型,深入浅出地介绍了深度学习在 NLP 领域进展,并结合工业界给出了未来的 NLP 的应用方向,相信读完这篇文章,你对深度学习的整体脉络会有更加深刻认识。
统计学家
2019/05/27
1.3K0
​迁移学习在NLP中的演化:从基础到前沿
论文标题:Evolution of Transfer Learning in Natural Language Processing
AI科技评论
2019/10/31
8920
​迁移学习在NLP中的演化:从基础到前沿
BERT论文解读
BERT的设计是通过在所有层中对左右上下文进行联合调节,来预先训练来自未标记文本的深层双向表示。
程序员一一涤生
2019/10/10
1.2K0
BERT论文解读
BERT_Paper_Chinese_Translation: BERT论文中文翻译版
Google发布的论文《Pre-training of Deep Bidirectional Transformers for Language Understanding》,提到的BERT模型刷新了自然语言处理的11项记录。算是NLP的里程碑事件,也开始了大公司之间的数据和算力的装备竞赛。放一篇比较好的中文论文翻译。
AINLP
2019/07/10
2K0
BERT_Paper_Chinese_Translation: BERT论文中文翻译版
【论文阅读】BERT:Pre-training of deep bidirectional transformers for language understanding
authors:: Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova container:: Proceedings of the 2019 conference of the north American chapter of the association for computational linguistics: Human language technologies, volume 1 (long and short papers) year:: 2019 DOI:: 10.18653/v1/N19-1423 rating:: ⭐⭐⭐⭐⭐ share:: false comment:: 经典bert的模型
EmoryHuang
2022/10/31
1.8K0
【论文阅读】BERT:Pre-training of deep bidirectional transformers for language understanding
【综述专栏】超详细的NLP预训练语言模型总结清单!
在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可谓万木争荣,日新月异。对于AI从业者来说,在广袤的知识森林中,系统梳理脉络,才能更好地把握趋势。为此,我们精选国内外优秀的综述文章,开辟“综述专栏”,敬请关注。
马上科普尚尚
2021/03/17
1.4K0
【综述专栏】超详细的NLP预训练语言模型总结清单!
关于BERT,面试官们都怎么问
BERT 来自 Google 的论文Pre-training of Deep Bidirectional Transformers for Language Understanding[1],BERT 是“Bidirectional Encoder Representations from Transformers”的首字母缩写,整体是一个自编码语言模型(Autoencoder LM),并且其设计了两个任务来预训练该模型。
NewBeeNLP
2020/08/26
4.1K0
关于BERT,面试官们都怎么问
NLP之从word2vec到ELMO GPT再到BERT与attention transformer过程笔记与详解
在NLP自然语言处理学习或者发展过程中,在13年word2vec word embedding后,人们发现一个单词通过Word Embedding表示,很容易找到语义相近的单词,但单一词向量表示,不可避免一词多义问题。于是迎来Google的ELMO transformer BERT等动态表征模型,BERT模型更是刷新了GLUE benchmark的11项测试任务最高记录。
大鹅
2021/02/21
3.4K0
【Pre-Training】BERT:一切过往,皆为序章
今天我们学习的是谷歌的同学 2018 年的论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》,目前引用量超 3800 次。
yuquanle
2020/04/20
1.4K0
【Pre-Training】BERT:一切过往,皆为序章
BERT模型介绍
BERT(Bidirectional Encoder Representations from Transformers)是Google在2018年提出的一种预训练语言模型,它在自然语言处理(NLP)领域引起了广泛的关注和应用。BERT的核心思想是通过双向Transformer编码器(双向的编码器部分
@小森
2024/12/25
1.6K0
BERT模型介绍
跨界出圈 | 谈谈BERT跨模态预训练
BERT以及BERT后时代在NLP各项任务上都是强势刷榜,多模态领域也不遑多让。前几天我们刚分享了复旦邱锡鹏老师的报告:复旦邱锡鹏教授 | 『语言+X』预训练模型,今天就来详细整理一些代表性工作。
NewBeeNLP
2021/03/03
1.2K0
跨界出圈 | 谈谈BERT跨模态预训练
「课代表来了」跟李沐读论文之——BERT
BERT:Pre-trainingof Deep Bidirectional Transformers for Language Understanding
beyondGuo
2022/01/04
8510
「课代表来了」跟李沐读论文之——BERT
生成式预训练模型之BART
每天给你送来NLP技术干货! ---- 写在前面 在文本理解任务(Natural Language Understanding)上,预训练模型已经取得了质的飞跃,语言模型预训练+下游任务fine-tune基本上已经成为标配。 很多人曾经尝试将 BERT 等预训练语言模型应用于文本生成任务(Natural Language Generation),然而结果并不理想。究其原因,是在于预训练阶段和下游任务阶段的差异。 BART这篇文章提出的是一种符合生成任务的预训练方法,BART的全称是Bidirectional
zenRRan
2022/08/31
2.9K0
生成式预训练模型之BART
相关推荐
Transformer结构及其应用详解——GPT、BERT、MT-DNN、GPT-2
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档