IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 2021李宏毅机器学习笔记--20 ELMO、BERT、GPT -> 正文阅读

[人工智能]2021李宏毅机器学习笔记--20 ELMO、BERT、GPT

摘要

机器是如何理解我们的文字的呢?或者说人类是怎么把文字输入电脑的呢?本文主要介绍三种技术ELMO、BERT、GPT。ELMO是一个RNN-based的语言模型,有些词可能有不同的意思,使用word embedding的方法,一个词只针对一种embedding,而ELMO会针对一个词不同的意思给出不同的embedding,其任务是学习句子中的下一个单词或者前一个单词是什么。BERT所做的事就是丢一个句子进去BERT,BERT会针对每个句子给出一个embedding。训练BERT有两种方法,一种是随机把一些单词变为Mask,让模型去猜测盖住的地方是什么单词,另一种是预训练任务NSP,即判断句子B是否是句子A的下文。ERNIE是BERT优化,是专门为中文设计的,中文中如果单纯的遮盖某一个字,很容易猜出来,所以ERNIE是遮盖中文中的一个词。GPT是一个硕大无朋的语言模型,GPT的主要作用就是给他一个词汇,它可以预测接下来的词汇。

一、背景介绍

最早的技术是1-of-N encoding,把每一个词汇表示成一个向量,每一个向量都只有一个地方为1,其他地方为0。但是这么做词汇之间的关联没有考虑,因为不同词之间的距离都是一样的。
所以,接下来有了word class的概念,举例说dog、cat和bird都是动物,它们应该是同类。但是动物之间也是有区别的,如dog和cat是哺乳类动物,和鸟类还是有些区别的。
后来有了更进阶的想法,称作word embedding,我们用一个向量来表示一个单词,相近的词汇距离较近,如cat和dog。
在这里插入图片描述
但是,有时候一个词可能有很多个不同的意思,比如下图的bank,前两个意思是银行,后两个意思是河堤。
在这里插入图片描述
即使一个单词有不同的意思,但使用传统的word embedding的方法,相同的单词都会对应同样的embedding。但我们希望针对不同意思的bank,可以给出不同的embedding表示。
在这里插入图片描述
根据上下文语境的不同,同一个单词bank我们希望能够得到不同的embedding,如果bank的意思是银行,我们期望它们之间的embedding能够相近,同时能够与河堤意思的bank相距较远。

基于这个思想,首先有了下面的ELMO。

二、ELMO

ELMO是Embeddings from Language Model的简称,它是一个RNN-based的语言模型,其任务是学习句子中的下一个单词或者前一个单词是什么。
在这里插入图片描述
它是一个双向的RNN网络,这样每一个单词都对应两个hidden state,进行拼接便可以得到单词的Embedding表示。当同一个单词上下文不一样,得到的embedding就不同。
当然,我们也可以搞更多层:

在这里插入图片描述这么多层的RNN,内部每一层输出都是单词的一个表示,那我们取哪一层的输出来代表单词的embedding呢?ELMO的做法就是全都要:
在ELMO中,一个单词会得到多个embedding,对不同的embedding进行加权求和,可以得到最后的embedding用于下游任务。要说明一个这里的embedding个数,下图中只画了两层RNN输出的hidden state,其实输入到RNN的原始embedding也是需要的,所以你会看到说右下角的图片中,包含了三个embedding。
在这里插入图片描述
但不同的权重是基于下游任务学习出来的,上图中右下角给了5个不同的任务,其得到的embedding权重各不相同。

三、BERT

Bert是Bidirectional Encoder Representations from Transformers的缩写,中文意思就是来自于转换器的双向编码表示。Transformer中的Encoder就是Bert预训练的架构。李宏毅老师特别提示:如果是中文的话,可以把字作为单位,而不是词。

在这里插入图片描述

3.1、Training of BERT

只是Transformer中的Encoder,那Bert怎么训练呢?文献中给出了两种训练的方法,第一个称为Masked LM,做法是随机把一些单词变为Mask,让模型去猜测盖住的地方是什么单词。假设输入里面的第二个词汇是被盖住的,把其对应的embedding输入到一个多分类模型中,来预测被盖住的单词。

3.1.1、 方法一、Masked LM

由于BERT需要通过上下文信息,来预测中心词的信息,同时又不希望模型提前看见中心词的信息,因此提出了一种 Masked Language Model 的预训练方式,即随机从输入预料上 mask 掉一些单词,然后通过的上下文预测该单词,类似于一个完形填空任务。

在预训练任务中,15%的 Word Piece 会被mask(掩盖),这15%的 Word Piece(词条) 中,80%的时候会直接替换为 [Mask] ,10%的时候将其替换为其它任意单词,10%的时候会保留原始Token。

1、没有100%mask的原因
如果句子中的某个Token100%都会被mask掉,那么在fine-tuning的时候模型就会有一些没有见过的单词
2、加入10%随机token的原因
Transformer要保持对每个输入token的分布式表征,否则模型就会记住这个[mask]是token ’hairy‘
另外编码器不知道哪些词需要预测的,哪些词是错误的,因此被迫需要学习每一个token的表示向量
3、另外,每个batchsize(批量大小)只有15%的单词被mask的原因,是因为性能开销的问题,双向编码器比单项编码器训练要更慢。

在这里插入图片描述

如果两个词填在同一个地方没有违和感那它就有类似的embedding。

3.1.2、 方法二、Next Sentence Prediction(NSP)

仅仅一个Masked LM 任务是不足以让 BERT 解决阅读理解等句子关系判断任务的,因此添加了额外的一个预训练任务,即 Next Sequence Prediction。

具体任务即为一个句子关系判断任务,即判断句子B是否是句子A的下文,如果是的话输出’IsNext‘,否则输出’NotNext‘。
训练数据的生成方式是从平行语料中随机抽取的连续两句话,其中50%保留抽取的两句话,它们符合IsNext关系,另外50%的第二句话是随机从预料中提取的,它们的关系是NotNext的。

先把两句话连起来,中间加一个[SEP]作为两个句子的分隔符。而在两个句子的开头,放一个[CLS]标志符,将其得到的embedding输入到二分类的模型,输出两个句子是不是接在一起的。

在这里插入图片描述

3.2、应用

3.2.1、classification

如果现在的任务是 classification,首先在输入句子的开头加一个代表分类的符号 [CLS],然后将该位置的 output,丢给 Linear Classifier,让其 predict 一个 class 即可。整个过程中 Linear Classifier(线性分类器) 的参数是需要从头开始学习的,而 BERT 中的参数微调(fine-tuning)就可以了。

在这里插入图片描述

3.2.2、Slot Filling槽填充(classification)

如果现在的任务是 Slot Filling,将句子中各个字对应位置的 output 分别送入不同的 Linear,预测出该字的标签。其实这本质上还是个分类问题,只不过是对每个字都要预测一个类别。
在这里插入图片描述

3.2.3、NLI(自然语言推理)

如果现在的任务是 NLI(自然语言推理)。即给定一个前提,然后给出一个假设,模型要判断出这个假设是 正确、错误还是不知道。这本质上是一个三分类的问题,和 Case 1 差不多,对 [CLS] 的 output 进行预测即可。

在这里插入图片描述

3.2.4、QA(问答)

如果现在的任务是 QA(问答),举例来说,如上图,将一篇文章,和一个问题(这里的例子比较简单,答案一定会出现在文章中)送入模型中,模型会输出两个数 s,e,这两个数表示,这个问题的答案,落在文章的第 s 个词到第 e 个词。具体流程我们可以看下面这幅图

在这里插入图片描述
首先将问题和文章通过 [SEP] 分隔,送入 BERT 之后,得到下图中黄色的输出。此时我们还要训练两个 vector,即下图中橙色和蓝色的向量。首先将橙色和所有的黄色向量进行 dot product,然后通过 softmax,看哪一个输出的值最大,例如下图中 d 2 d_2 d2? 对应的输出概率最大,那我们就认为 s=2。

在这里插入图片描述
同样地,我们用蓝色的向量和所有黄色向量进行 dot product,最终预测得 d 3 d_3 d3?的概率最大,因此 e=3。最终,答案就是 s=2,e=3

在这里插入图片描述
Bert一出来就开始在各项比赛中崭露头角,排行榜前几名就是用bert做的:

在这里插入图片描述

3.3、BERT优化–Enhanced Representation through Knowledge Integration(ERNIE)

ERNIE整个模型专门用于中文。
ERNIE是百度在2019年4月的时候,基于BERT模型,做的进一步的优化,在中文的NLP任务上得到了state-of-the-art的结果。它主要的改进是在mask的机制上做了改进,它的mask不是基本的word piece的mask,而是在pretrainning阶段增加了外部的知识,由三种level的mask组成,分别是basic-level masking(word piece词条)+ phrase level masking(短语WWM style) + entity level masking(实体)。在这个基础上,借助百度在中文的社区的强大能力,中文的ernie还是用了各种异质(Heterogeneous)的数据集。此外为了适应多轮的贴吧数据,所以ERNIE引入了DLM (Dialogue Language Model) task。
因为用BERT来做的时候,只猜单个字太简单,于是有了ERNIE来猜整个词的。

在这里插入图片描述

竖向是一个个NLP任务,然后横着的是通过BERT和对应任务进行联动训练以后,把BERT的24层每个单独抽取出来,进行加权相加(和ELMO一样的操作)得到的结果,可以看到各个NLP任务对应的BERT层有哪些最敏感,例如最上面的POS(词性分析)第11到13层的向量贡献最大。
在这里插入图片描述

四、GPT

4.1、GPT

GPT是Generative Pre-Training 的简称,从名字上就可以看出其是一个生成式的预训练模型,即与ELMo类似,是一个自回归语言模型。与ELMo不同的是,其采用多层Transformer Decoder作为特征抽取器,多项研究也表明,Transformer的特征抽取能力是强于LSTM的。它的思想也很简单,使用单向 Transformer 学习一个语言模型,对句子进行无监督的 Embedding,然后根据具体任务对 Transformer 的参数进行微调。

1、由于GPT仍然是一个生成式的语言模型,因此需要采用Mask Multi-Head Attention的方式来避免预测当前词的时候会看见之后的词,因此将其称为单向Transformer,这也是首次将Transformer应用于预训练模型,预测的方式就是将position-wise的前向反馈网络的输出直接送入分类器进行预测
2、此外整个GPT的训练包括预训练和微调两个部分,或者说,对于具体的下游任务,其模型结构也必须采用与预训练相同的结构,区别仅在于数据需要进行不同的处理

GPT2 与 GPT 的大致模型框架和预训练目标是一致的,而区别主要在于以下几个方面:
1、其使用了更大的模型
2、使用了数量更大、质量更高、涵盖范围更广的预训练数据
3、采用了无监督多任务联合训练的方式,即对于输入样本,给予一个该样本所属的类别作为引导字符串,这使得该模型能够同时对多项任务进行联合训练,并增强模型的泛化能力

在这里插入图片描述

4.2、过程

GPT的作用是输入一个句子中的上一个词,我们希望模型可以得到句子中的下一个词。如下图所示,输入“潮水”,希望可以预测出“退了”这个词。
在这里插入图片描述
在”退了“之后希望可以输出“就”这个词。
在这里插入图片描述
由于GPT-2的模型非常巨大,它在很多任务上都达到了惊人的结果,甚至可以做到zero-shot learning(简单来说就是模型的迁移能力非常好),如阅读理解任务,不需要任何阅读理解的训练集,就可以得到很好的结果。

在这里插入图片描述
GPT-2可以自己进行写作,写得还是不错的!

在这里插入图片描述

总结

本文主要介绍了三种技术可以让机器看懂人类的文字。有时一个单词可能会有多个不同的意思,我们希望模型针对每一种意思都有一个embedding,这就是ELMO。BERT所做的事就是丢一个句子进去BERT,BERT会针对每个句子给出一个embedding,BERT可以用于句子的classification,还可以Slot Filling,将句子中的各个子进行分类,也可以进行 NLI(自然语言推理),当给出一个前提,再给出一个假设,模型就可以判断这个假设是正确、错误还是不知道,BERT也可以进行问答,给一篇文章以及一个问题,模型可以给出答案所在的范围。BERT训练时所使用的方法是掩盖一些单词,但是当语言为中文时,掩盖某一个字很容易猜出来,所以针对中文有一个另外的模型就是ERNIE。GPT相较于其他的模型而言,一个最重要的特征就是他是一个硕大无朋的语言模型,它的作用是输入一个句子中的上一个词,我们希望模型可以得到句子中的下一个词。而进阶版的GPT-2更为巨大,他可以自己写作,并且它可以在不进行任何训练的情况下就可以得到很好的结果。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-22 13:32:41  更:2021-08-22 13:35:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 18:27:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码