【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记

Putting Words into Computers——Introduction of ELMO、BERT、GPT

Review

  • 1-of-N Encoding:词和词之间没有任何关联,把每个词汇当作独立的东西来看显然是不够的。
  • Word Class
  • Word Embedding:相当于soft的word class,每一个词汇用一个向量来表示,向量的每个维度可能表示了词汇的某种含义,语义相近的词汇的向量会比较接近。训练方法:通过词汇上下文来得到。

【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记
【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记

A word can have multiple senses.

下图中bank是不同的token,同样的type。
过去在word embedding时候,每一个word type有一个embedding,所以不同的token属于同一个type时,他们的embedding vector是一模一样的。

【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记
但是这样是不合理的。
【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记
【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记

Contextualized 语境化 Word Embedding

期望每一个token都有一个embedding,根据token的上下文来实现

【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记

如何根据是上下文来为word token给出不同的word embedding呢?——ELMO

Embedding from Language Model(ELMO)

  • RNN-based language models
    收集很多的句子,就可以进行训练,训练过程所做的事情就是预测下一个token是什么。
    学习之后,就可以得到Contextualized 语境化 Word Embedding,RNN中的hidden layer就是现在输入的词汇的Contextualized Word Embedding(是根据前文来预测的,所以是语境化的)
    【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记

好像这样只考虑了前文,但是没有考虑后文

再训练一个反向的RNN。这样就考虑了上下文。

所以现在,要得到“退了”这个词的Contextualized Word Embedding,就要把“退了”在正向RNN与反向RNN的embedding拿出来拼接起来。
【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记

这个RNN可以是deep的,训练deep的时候,会遇到问题,有很多层,有很多层都要embedding,那么应该要用哪一层呢?同一个词汇要用哪一个embedding呢?
【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记
【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记

ELMO做法

现在每层都会给一个Contextualized Word Embedding,每个词放进去都会吐出来不止一个embedding,因为每一层RNN都会给出一个embedding,把这些embedding结合起来一起使用。

α1\alpha1α2\alpha2都是要学习的参数。
不同任务的α1\alpha1α2\alpha2是不同的。

Coref和SQuAD特别需要第一层的Contextualized Word embedding(颜色最浅,权重最大),而其他的任务就没那么需要(每一种不同的embedding的weight是比较平均的)
【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记

Bidirectional Encoder Representatioins from Transformers(BERT)

BERT = Encoder of Transformer

在BERT中,只需要收集很大数量的没有标注的文本。

虽然投影片上使用词作为单位,但是在实战中,用中文的字来作为单位更好。中文的字是有限的。
【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记

Training of BERT

Approach 1:Masked LM

给Bert的任务是把输入的句子随机有15%的词汇被置换为特殊的token——MASK。

BERT就需要对遮住的词汇进行猜测。

【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记

Approach 2:Next Sentence Prediction

让BERT做Next Sentence Prediction,给BERT两个句子,让BERT判断这两个句子是否是连接在一起的。

[SEP]代表两个句子中的边界。

[CLS] 在这个位置要输出分类结果,把他的输出传入到一个线性二元分类器中,让其输出这两个句子是否应该连接在一起。

【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记
两种方法是要同时使用的。
【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记
把BERT当作抽取feature的工具,拿产生的新的embedding去做想做的任务。

How to use BERT

在BERT论文中:把BERT模型和接下来要解决的任务一起做训练。给出了四个例子。

Case 1

  • 输入:一个单句子
  • 输入:类别
  • 例子: 文本分类,句子分析(正面/负面句子)

在训练的时候,线性分类器的参数是是随机初始化的,从头开始计算的。
BERT的参数可以跟着Fine-tune,即BERT的参数是可以和线性分类器一起学习的,线性分类器从头学,BERT只需要微调。

所以,实际上需要从头学的参数很少,多数参数都已经在BERT里训练好了。
【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记

Case 2

  • 输入:一个单句字
  • 输出:每个单词的类别
  • 例子:Slot filling,输入一个句子,得到句子中的每个词汇属于什么slot/class

BERT输入一个句子,每个词都会输出一个embedding,把每一个embedding丢入线性分类器中,输出class。

训练也是一起训练。线性分类器从头学,BERT微调。
【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记

Case 3

  • 输入:两个句子
  • 输出:类别
  • 例子:自然语言推断,给一个前提和一个假设,让机器判断是对还是错还是不知道。其实是一个只有三个类别的分类问题。

把第一个句子丢给BERT,再加入一个[SEP],再丢入第二个句子,在开头地方加入一个代表分类的符号[CLS],在开头的地方输出embedding,拿他去做分类,输入线性分类器,输出类别。

【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记

Case 4

用于解决Extraction-based Question Answering的问题。即,给模型读一篇文章,提出一个问题,希望模型得到正确答案,但是需要保证答案一定出现在文章里面。

给出文章和问题的token sequence,输出s和e两个整数,代表答案落在第s个token到第e个token之间。

【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记
输入问题,加入[SEP],再输入文章
再去另外训练两个embedding(红色和蓝色)

【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记

【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记
【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记

Enhance Representation through Knowledge Integration(ERNIE)

  • Designed for Chinese
    【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记

What does BERT learn?

【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记

Multilingual 多语言 BERT

使用104种语言训练,看过中文但是没有被教中文文章分类,只是被教英文文章分类,但是可以自动学到了中文文章的分类。
【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记

Generative Pre-Training(GPT)

GPT很大
BERT是Transformer的encoder
GPT是Transformer的decoder
【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记

Generative Pre-Training(GPT)

weighted sum
【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记

【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记

GPT2很巨大,所以功能很强大!
可以做到在完全没有训练资料的情况下,做到:

  • Reading Comprehension
    Reading Comprehension指的是QA,BERT也可以做,但是需要训练资料,而GPT2可以在完全没有与QA有关的训练资料的情况下,就可以硬做Reading Comprehension,输入文章和问题,就可以强行给出答案。
  • Summarization
    给GPT2一篇文章,输入“TL;DR”符号(too long;don’t read),GPT2自动输出文章摘要
  • Translation
    输入很多英文句子,写等号,后面接法语句子,重复两次,接下来给第三个英文句子,就可以自动输出他的法语翻译句子。

【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记

在GPT2中,右边图中,左边是下一层的结果,右边是前一层要被attention的对象。
左边图,是对不同层的不同head做分析。很多不同词汇都要看第一个词汇,可能在不知道要和谁做attention或者不需要attention的时候就看第一个词,所以也许或许可以在句子里加一个特殊词汇,在不知道attend到哪里就attend(append?听不清)到这里。
【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记
【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记

GPT太强了!可以做问答,编故事,写python和C的代码!!

其实很自然 因为它预训练的任务是预测下一个可能的词汇
训练过的,但是没用过针对性的语料数据,就迁移学习的思想
GPT 语料库很大,所以training data里面有很多类似的例子…

1、GPT很强!
2、BERT可以下载下来,但是GPT2是你无法得到的人。2333333
【李宏毅机器学习】Introduction of ELMO、BERT、GPT(p25) 学习笔记