self-attention
来源:李宏毅课程:https://www.bilibili.com/video/BV1Xp4y1b7ih/?spm_id_from=333.788.videocard.3
1.输入和输出长度相同task(sequence labeling):POS tagging,语音识别
2.输入一个句子输出一个label:sentiment analysis,语者辨认
3.机器决定输出多少:seq2seq翻译,语音辨识
sequence labeling问题
一种方法是全连接网络加window,问题是参数两太大,另一种技术就是
Self-attention
考虑整个Sequence输出每个向量。
全连接和FC交替使用,多次考虑一个sequence内关系。
self-attention工作原理:
输入可能是一个hidden layer或者input,输出是考虑了所有的input sequence.
multi-head self-attention
Positional Encoding:
之前的方法没有考虑位置关系,为每一个位置设置ei,ei加到ai上,有很多的做法。
很有趣的一个观点:
self-attention和RNN:都是seq2seq,RNN每个output只考虑了左边的输入(也可以是双向),RNN处理是没法平行化的,必须要按照顺序,self-attention是同时计算出来的。
Transformer
seq2seq:分为encoder,decoder
Encoder:
residual:直接把input和output加起来,layer normalization把输入向量不同dimension计算mean和方差(相比batch normalization)
Decoder:
autoregressive
Decoder把前一时刻的输出当作这时候的输入,
相比encoder:self-attention变成了masked-self-attention,b2不考虑a3,a4,因为对decoder来说还没有a3,a4,一个一个产生的不是parallel
输入和输出长度是不知道的
要输出“stop token" END和BEGIN
non-autoregressive (NAT)
NAT is usually worse than AT
Encoder-Decoder:
cross-attention工作机制:将encoder的最后一层所有输出和decoder的每一时刻输入做计算
训练Encoder-Decoder:
所有cross entropy总和(四个字,END的one hot相加)越小越好,每一次decoder产生一个中文字就类似于一个分类问题
decoder的输入是ground truth,teacher-forcing:把正确答案当作输入。
Embedding from Language Model(ELMO)
featured-based而不是finetunning,RNN-based language models:预测下一个token是什么,可以学到contexualized embedding,但是只能triain到前文。ELMO每一个hidden layer的embedding加权乘加
Bert=Encoder of Transformer
bidirectional encoder representation from transformers
训练bert不需要annotation, 给一个sequence,每一个token吐出来一个embedding
Approach1; masked LM
盖住15%词汇
approach2:next sentence prediction
为什么不放在句末?因为内部是sef-attention, 不是RNN,token的顺序不影响,天涯若比邻。
两个方法是要同时学的。
BERT和downstream(从头学)一起训练:
学两个向量决定s和e
有的时候s>e可能就是没有答案。
Enhanced representation through knowledge integration(ERNIE)
遮住中文的一个词
Generative pre-training(GPT)
=decoder of transformer,预测下一个token
GTP2不需要训练资料的情况下就可以做reading comprehension(bert也可以做但需要一些训练资料), summarization, translation