ELMO,BERT和GPT简介

1.Contextualized Word Embedding

同样的单词有不同的意思,比如下面的几个句子,同样有 “bank” ,却有着不同的意思。但是用训练出来的 Word2Vec 得到 “bank” 的向量会是一样的。向量一样说明 “word” 的意思是一样的,事实上并不是如此。这是 Word2Vec 的缺陷。

下面的句子中,同样是“bank”,确是不同的 token,只是有同样的 type

我们期望每一个 word token 都有一个 embedding。每个 word token 的 embedding 依赖于它的上下文。这种方法叫做 Contextualized Word Embedding

2.EMLO

EMLO 是 Embeddings from Language Model 的缩写,它是一个 RNN-based 的模型,只需要有大量句子就可以训练。

我们可以把训练的 RNN 隐藏层的权重拿出来,把词汇经过隐藏层后输出的向量当做这个单词的 embedding,因为 RNN 是考虑上下文的,所以同一个单词在不同的上下文中它会得到不同的向量。上面是一个正向里的 RNN,如果觉得考虑到的信息不够,可以训练双向 RNN ,同样将隐藏层的输出作为 embedding。

如果我们的 RNN 有很多层,我们要拿那一隐藏层的输出作为 embedding?

在 ELMO 中,它取出每一层得到的向量,经过运算得到我们每一个单词的 embedding

比如上图,假设我们有2层,所以每个单词都会得到 2 个向量,最简单的方法就是把两个向量加起来作为这个单词的embedding。

EMLO中会把两个向量取出来,然后乘以不同的权重 $\alpha $,再将得到的我们得到的 embedding 做下游任务。

$\alpha $ 也是模型学习得到的,它会根据我们的下游任务一起训练得到,所以不同的任务用到的 $\alpha $ 是不一样的

比如我们的 embedding 可以有3个来源,如上图所示。分别是

  • 原来没有经过 contextualized 的 embedding,就是上面的 Token
  • Token 经过第一层抽出第一个 embedding
  • Token 经过第二层抽出第二个 embedding

颜色的深浅代表了权重的大小,可以看到不同的任务(SRL、Coref 等)有着不同的权重。

3.BERT

BERT 是 Bidirectional Encoder Representations from Transformers 的缩写,BERT 是 Transformer 中的 Encoder。它由许多个 Encoder 堆叠而成

在 BERT 里面,我们的文本是不需要标签的,只有收集到一堆句子就可以训练了。

BERT 是 Encoder,所以可以看成输入一个句子,输出 embedding,每个 embedding 对应一个 word

上图的例子我们是以 “词” 为单位,有时候我们以 “字” 为单位会更好。比如中文的 “词” 是很多的,但是常用的 “字” 是有限的。

在 BERT 中,有两种训练方法,一种是 Masked LM。另一种是 Next Sentence Prediction。但一般同时使用,会取得更好的效果。

3.1Masked LM

在 Masked LM 中,我们会把输入的句子中随机将15%的词汇置换为一个特殊的 token ,叫做 [MASK]

BERT 的任务就是猜出这些被置换掉的词汇的什么。

就像是一个填词游戏,挖去一句话中的某个单词,让你自己填上合适的单词

经过 BERT 后我们得到一个 embedding,再把置换为 [MASK] 的那个位置输出的 embedding 通过一个线性分类器,预测这个单词是什么

因为这个分类器是 Linear 的,所以它的能力非常非常弱,所以 BERT 要输出一个非常好的 embedding,才能预测出被置换掉的单词是什么

如果两个不同的词可以填在同一个句子,他们会有相似的embedding,因为他们语义相近

3.2Next Sentence Prediction

在 Next Sentence Prediction 中,我们给 BERT 两个句子,让 BERT 预测这两个句子是不是接在一起的

[SEP]:特殊的toekn,代表两个句子的交界处

[CLS]:特殊的token,代表要做分类

我们再把 [CLS] 输出的向量通过一个线性分类器,让分类器判断这两个句子应不应该接在一起。

BERT 是 Transformer 的 Encoder,它用到了 self-attention 机制,可以读到句子的全部信息,所以 [CLS] 可以放在开头

我们也可以直接把这个向量输入一个分类器中,判断文本的类别,比如下面判断垃圾邮件的实例

3.3ERNIE

ERNIE 是 Enhance Representation through Knowledge Integration 的缩写

ERNIE是专门为中文准备的,BERT的输入以中文的字为单位,随机盖掉一些字后其实是很容易被猜出来的,如上图所示。所以盖掉一个词汇比较合适。

4.GPT

GPT 是 Generative Pre-Training 的缩写,它的参数量特别大,如下图所示,它的参数量是 BERT 的4.5倍左右

BERT 是 Transformer 的 Encoder,GPT则是 Transformer 的 Decoder。GPT 输入一些词汇,预测接下来的词汇。其计算过程如下图所示。

我们输入单词 “潮水”,经过许多层的 self-attention 后得到输出 “退了”。再把 “退了” 作为输入,预测下一个输出。

GPT可以做阅读理解、句子或段落生成和翻译等NLP任务

参考资料:

http://jalammar.github.io/illustrated-bert/

李宏毅深度学习

原文地址:https://www.cnblogs.com/dogecheng/p/11615750.html

时间: 2024-10-31 22:56:32

ELMO,BERT和GPT简介的相关文章

BERT论文翻译:用于语言理解的深度双向Transformer的预训练

Jacob Devlin Ming-Wei Chang Kenton Lee kristina Toutanova Google AI Language {jacobdevlin, mingweichang, kentonl, kristout}@google.com 摘要 本文介绍了一种新的语言表示模型BERT,意为“来自transformer的双向编码器表示”(Bidirectional Encoder Representations from Transformers).与最近的语言表示模

BERT论文解读

本文尽量贴合BERT的原论文,但考虑到要易于理解,所以并非逐句翻译,而是根据笔者的个人理解进行翻译,其中有一些论文没有解释清楚或者笔者未能深入理解的地方,都有放出原文,如有不当之处,请各位多多包含,并希望得到指导和纠正. 论文标题 Bert:Bidirectional Encoder Representations from Transformers 一种从Transformers模型得来的双向编码表征模型. 论文地址 https://arxiv.org/pdf/1810.04805 Abstr

BERT+知识图谱: K-BERT Enabling Language Representation with Knowledge Graph 文献理解

参考文献:BERT+知识图谱:北大-腾讯联合推出知识赋能的K-BERT模型 地址:https://blog.csdn.net/c9Yv2cf9I06K2A9E/article/details/103790278 此前两篇关于知识图谱结合预训练的文章作为了解: ERNIE: Enhanced Representation through Knowledge Integration(百度) a.对实体概念知识的学习来学习真实世界的完整概念的语义表示(MASK词和知识图谱中的实体) b.对训练语料的扩

免费的中文深度学习全书:《深度学习理论与实战:提高篇》

在线阅读:深度学习理论与实战:提高篇 序言 16年9月的时候我在CSDN发了一些深度学习的文章,主要是面向没有太多经验的开发者.达文读了后觉得我的文章比较通俗易懂,邀请我写一本书,当时头脑一热就答应下来.虽然现在出版的书籍汗牛充栋,但是对我来说著书立言始终是一件非常严肃和重大的事情.立德.立功.立言乃儒家的三不朽,可见古人对于其重视.我的这本书只是关于深度学习的技术类书籍,远远谈不上立言,但是总归会有一些读者的,因此我希望这本书至少对读者有一些帮助,而不是误人子弟.从开始写下第一个字到现在,前后

李理:为什么说人工智能可以实现?

尽管市面上关于深度学习的书籍很多,环信 AI 负责人李理认为大部分只关注理论或只关注实践.于是,基于他对深度学习多年的理解,自己着整理手写了一本深度学习理论与实战书籍. ? 目前,作者已经将<深度学习理论与实战:提高篇>公开,读者可以免费阅读.这本开源书籍最大的特点是理论结合实战和内容的广度与深度,目标是使用通俗易懂的语言来介绍基础理论和最新的进展,同时也介绍代码实现,将理论知识用于指导实践. ? 从其目录就可以一目了然. <深度学习理论与实战:提高篇>阅读链接: https://

XLNet预训练模型,看这篇就够了!(代码实现)

1. 什么是XLNet XLNet 是一个类似 BERT 的模型,而不是完全不同的模型.总之,XLNet是一种通用的自回归预训练方法.它是CMU和Google Brain团队在2019年6月份发布的模型,最终,XLNet 在 20 个任务上超过了 BERT 的表现,并在 18 个任务上取得了当前最佳效果(state-of-the-art),包括机器问答.自然语言推断.情感分析和文档排序. 作者表示,BERT 这样基于去噪自编码器的预训练模型可以很好地建模双向语境信息,性能优于基于自回归语言模型的

百分点认知智能实验室出品:深度迁移学习十八问

编者按 深度迁移学习是基于深度神经网络的迁移学习方法,BERT通过预训练模型达到深度迁移学习的效果,自从2018年底BERT横空出世以来,就以势不可挡的姿态横扫了众多榜单,甚至在阅读理解任务SQuAD 中超越人类水平.BERT在公检法.媒体出版.军工.快消零售等工业界也迅速落地,如百分点智能对话系统.百分点智能审校系统和百分点智能翻译系统等.BERT几乎在所有的下游任务中效果都获得了明显提升,BERT自此开创了一个NLP的新时代,那就是pre-train + fine-tuning的时代. 基于

A Survey on Contextual Embeddings

论文信息:论文 1. 概述 分布式表示在诸多自然语言处理系统中应用十分广泛,比如wrod2vec中每个单词被转换为一个全局向量.但这种方式忽略了单词的上下文信息,同一单词在不同的上下文中表示相同.因此近年来上下文嵌入方法风生水起,获得了快速发展和普遍关注.该论文就是对这些上下文嵌入方法的一篇综述. 假定语料库由一个句子\(\mathcal{S}=\{t_1,t_2,\dots,t_N\}\)构成,\(t_i\)是句子中的的单词.传统词向量技术就是要学习一个矩阵\(\mathbf{E} \in \

机器学习高阶训练营知识点一览&lt;二&gt;

第三阶段 无监督学习与序列模型 [核心知识点] - K-means.GMM以及EM - 层次聚类,DCSCAN,Spectral聚类算法 - 隐变量与隐变量模型.Partition函数 - 条件独立.D-Separation.Markov性质 - HMM以及基于Viterbi的Decoding - Forward/Backward算法 - 基于EM算法的参数估计 - 有向图与无向图模型区别 - Log-Linear Model,逻辑回归,特征函数 - MEMM与Label Bias问题 - Li