Transformer及其变种
Transformer
RNN无法并行计算-》Self Attention,每一个输出都保证看过所有的输入。
Attention: 吃两个向量,吐出这两个向量匹配的分数attention(q&k)=a。
为什么容易实现并行化(parallel)
Mutihead Attention:每个head都关注不同的地方
但是,截至到目前为止,并没有考虑到输入序列顺序(位置参数)的问题!!!
为什么位置编码是直接加上而不是concatenate的呢??见下图!这个Wp是谷歌自己用式子算出来的,见图二(但我不知道为啥要这么算)。
架构详解:
ELMO(Embedding from language Model):基于RNN,Decoder就是一个基于上下文的Embedding,可以使用双向RNN然后concat。
BERT:架构就是Transformer的Encoder,做的事情就是Sequence->输出每个单词的Embedding(Bert的每一层实际上是NLP的一些任务,例如词性分类,单词整合)
train bert的几种方法:第一种,随机mask掉一些word
第二种,判断输入是否是两个句子连接而成,CLS(YES|NO)放在开头或者尾部都一样,因为内部有Self-Attention
如何使用Bert:第一种,情感分类任务(句子)
第二种:单词词性分类任务(单词)
第三种:句子终止问题(判断两个句子是否是相连的)
第四种:QA问题(在文章中有直接出现的答案单词)
需要输出答案在文章中的位置。
当s和e矛盾的case,可以输出unknown
ERNIE:类似于Bert,不过一次是mask一个词汇
GPT:是transformer的Decoder,预测下一个词汇。(无需label)
下一个词汇。(无需label)