机器学习笔记: ELMO BERT

Embeddings from Language Model (ELMO)

1.1 Contextualized Word Embedding

在之前的word embedding中,同一个单词(同样type的内容),会被表示成相同的embedding。

但是一个单词会有很多的意思(token),比如下图中的”bank“,就有不同的含义 

 所以我们需要给不同的token,以不同的embedding

 

 1.2 ELMO

基于RNN的language model

给这个RNN-based model 很多个句子,让他学。

中间的这个蓝色的hidden layer,就是考虑了前文的 embedding

当然可以不止学习前向顺序,还可以学习反向顺序,将二者的embedding拼起来 

 这种基于RNN的模型也可以叠很多层,那么就会有很多的中间hidden state,那么,如何选择/如何合理利用这些hidden state呢

 ELMO的做法是,学一组加权系数,将这些hidden 都考虑进来

 右下方是一个例子,Token表示没有经过一层RNN,也就是原始的embedding,LSTM 1表示经过了一层RNN,LSTM2表示经过了2层RNN。加权的系数α1和α2是根据下游任务学出来的

2  Bidirectional Encoder Representations from Transformers (BERT)

2.0 简单的理解

简单但不严谨的理解,可以把Bert看成是Transformer的encoder部分

 我喂入Bert一句句子,输出的是句子中每个单词的embedding

2.0.1 BERT的输入 

 2.0.2 BERT的特点

  • Pre-train:这是个预训练的语言模型
  • Deep
  • Bidirectional Transformer:Transformer的encoder部分
  • Language Understanding:Contextualized Word Embedding

2.1 Bert的训练

2.1.1 Masked LM 

        把输入句子中一定比例(论文中是15%)的词汇替换为MASK(也就是被遮住),让BERT猜测被盖住的地方是一个什么词汇【注:原论文中,这些被选中的单词80%的概率被替换成MASK,10%的概率替换成随机别的单词,10%的概率不变】

 

         每一个词经过BERT得到一个相应的embedding。把被遮住部分的embedding未入一个线性分类器,预测被MASK掉的词是哪个词。

        由于线性的分类器能力非常有限,所以需要BERT学出非常好的embedding(分类预测的词和实际遮住的词是一样/相近的)

2.1.2 Next Sentence Prediction

给两个句子,判断这两个句子是接在一起的还是不接在一起的

CLS表示特殊的token,代表要做分类

【注:原始论文中,50%的是相邻的两句话,50%的不是相邻的两句话】

为什么CLS在开头呢?

如果是正向RNN,那CLS确实应该放在末尾,这样才能看到整个句子的内容

但是BERT的内部是transformer的encoder,也就是self-attention。不考虑positional encoding的话, CLS无论放在开头还是结尾,差别都不会很大。

2.2 BERT应用

 BERT+downstream task BERT参数微调,downstream从零开始训练

——》由于大部分参数BERT都学过了,所以实际上要学的参数非常少

2.2.1 句子分类

 

这边的CLS代表分类的符号

这里的BERT的初始化权重为预训练BERT模型的权重,而全连接层的权重随机初始化

2.2.2 每个单词属于那个类

 2.2.3 根据前提,是否能得到某个假设

  • 利用语言模型来判断句子间的关系,这种关系是以类别形式呈现
    • 给定两个句子,一个句子是前提(premise),一个句子是假设(hypothesis)
    • 将这两个句子同时输入到模型中,判断这两个句子的关系,是矛盾、蕴涵还是中性的

 2.2.4 Extraction-based Question Answering (QA)

  • 给定一个文档(稍微长一些的文字序列),给定一个问题(稍微短一些的文字序列),然后在文档中找到能够回应这个问题答案
    • 需要注意的是,这个答案是可以直接在文档中找到的

给出文本回答问题(问题的答案一定在文本中出现过)

 输入文本和问题,输出两个整数s,e,表示答案就在qs到qe之间

 那么怎么实现呢?除了BERT之外,我们还需要学习两个向量(一红一蓝)

红色的向量和BERT输出的embedding 分别做内积,然后进行softmax,选择结果最大的,作为s

蓝色的向量做的事情和红色的向量做的是一致的,不过蓝色向量学习的是e

 

 这里会存在一个问题,如果学出来的s在e后面咋办?那么说明这个问题无解

2.3 BERT的改进

2.3.1 BART——降噪自编码器的引入

  • MLM 将原文中的词用[MASK]标记随机替换,这本身是对文本进行了破坏,相当于在文本中添加了噪声,然后通过训练语言模型来还原文本,消除噪声。
  • BART引入了降噪自编码器,丰富了文本的破坏方式
    • 例如随机掩盖(同 MLM 一致)某些词、随机删掉某些词或片段、打乱文档顺序等
    • 将文本输入到编码器中后,利用一个解码器生成破坏之前的原始文档,通过这种方式进行预训练

2.3.2 ELECTRA——替代词检测

  • MLM 对文本中的[MASK]标记的词进行预测,以试图恢复原始文本。
    • 其预测结果可能完全正确,也可能预测出一个不属于原文本中的词。
  • ELECTRA引入了替代词检测,来预测一个由语言模型生成的句子中哪些词是原本句子中的词,哪些词是语言模型生成的且不属于原句子中的词。
    • 使用一个小型的 MLM 模型作为生成器(Generator),来对包含[MASK]的句子进行预测
    • 另外训练一个基于二分类的判别器(Discriminator)来对生成器生成的句子进行判断

2.3.3  DistilBERT——与虚拟连接段蒸馏

DistilBERT在预训练阶段蒸馏,其学生模型具有与BERT相似的结构,但层数减半

3 GPT

可以在一定程度上看成是Transformer的 Decoder

在完全没有训练资料的情况下硬做

给定一些词汇,预测接下来的词汇。

和已经看到过的词汇做attention

 

 3.1 GPT应用

3.1.1 Reading Comprehension

将如下内容送入GPT中,获得输出 

3.1.2 summarization

3.1.3 Translation

 

参考文献:干货丨Bert算法:语言模型-BERT详细介绍 (baidu.com) 

ELMO, BERT, GPT - YouTube

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值