Embeddings from Language Model (ELMO),做的是Contextualized Word Embedding
Bidirectional Encoder Representations from Transformers (BERT),其实就是Encoder of Transformer,训练方法,以及应用示例:Sentiment analysis, Document Classification, Slot filling, Natural Language Inference, QA
Generative Pre-Training (GPT),其实就是Transformer Decoder,推理后续句子,比如写作,对话,甚至可以做Zero-shot Learning(参数量巨大原因)
Word Embedding
回顾笔记:ML-LHY-14: Unsupervised Learning - Word Embedding
Count based Word Embedding:
Word Embedding虽然学习了大量文章句子,但是训练结束后word对应的vector被固定了,但是一个词在不同句子中结合上下文会有不同意思。期望可以做到Contextualized Word Embedding:
Embeddings from Language Model (ELMO)
ELMO在推理时也是从RNN的输出,比如“退了”的Context是“潮水”,同时为了考虑后续的输入,对反向的RNN输出做拼接。
ELMO是的DRNN,不同层之前做weigh sum,权重值通过网络学习
权重值在不同任务上会不一样。
Bidirectional Encoder Representations from Transformers (BERT)
以简单的self-attention为例:
encoder是不需要annotation可以直接做的,实际上还会加Positional Encoding,所以做的是Contextualized Word Embedding。BERT就是把self-attention layer换成transform中更复杂的模块了。
对于中文,用字输入会比较好,因为词的组合太多了。
Training of BERT
Approach 1: Masked LM
填充任务
把输入词随机mask,要BERT填回来,然后把mask掉的词的embedding输出输入到一个线性多分类器,由于是线性的,这就要求bert有足够能力可以在一个词mask情况下,用整个序列推测出这个词的深层含义(整个bert有比较好协调能力)。如果2个词都可以填在那个地方,什么2个词很近似。
Approach 2: Next Sentence Prediction
断句任务
在2个sequence中间插入表示边界的token:[sep],在任意位置插入[CLS]用来表示是否需要断句结果(对[CLS]做embedding,再输入到一个线性二元分类器,由于bert底层是self-attention,所以[CLS]位置可以是任意的)。是否需要断句训练时已知。
Approach1 和Approach 2需要同时使用。
How to use BERT – Case 1
Input: single sentence
output: class
Example: Sentiment analysis,Document Classification
一般BERT参数可以通过上面2中方法训练好,在新任务上只需要重新训练 linear classifier 参数和 微调 bert 参数就行。
How to use BERT – Case 2
Input: single sentence,
output: class of each word
Example: Slot filling
How to use BERT – Case 3
Input: two sentences
output: class
Example: Natural Language Inference
Given a “premise”, determining whether a “hypothesis” is T/F/ unknown
其实就有点像上面train Approch 2的是否需要断句,这里是3类:seq2在seq1下成立/不成立/未知。
How to use BERT – Case 4
Input: document and sentences
output: sentences
Example: Extraction-based Question Answering (QA) (E.g. SQuAD)
注意,answer来自document,而且是连续的,即answer实际上是开始和结束的索引。
核心思想就是一个question对应一个answer,所以改变question,再进行bert时,document的embedding结果也会发生改变。而上面红色和蓝色都是学习到固定的vector,用来输出answer开始和结束的索引。
Enhanced Representation through Knowledge Integration (ERNIE)
其实核心思想和bert差不多
中午任务上盖住单个字就很容易猜出来,所以提出ernie盖住词。
Generative Pre-Training (GPT)
GPT其实就是Transformer Decoder, 参数量巨大,但是性能很好
其实和上节课基于self-attention的decoder核心思想一样:
在decoder这边,不过词是直接输入,没有经过encoder,和基于RNN的decoder一样,输入包括上一时刻的输出。
很好玩的一个demo:https://app.inferkit.com/demo
笑死了🤣
不过好像现在GPT-3也出了
以上参考李宏毅老师视频和ppt,仅作为学习笔记交流使用