

Bank在前两句是银行,后两行是河床(river bank)

ELMo:用长文本训练词向量,而不是窗口;使用了CNN建立词的表达
一个词给出三个Embedding,不是固定的,则可以很好地解决一词多义,可以理解成一个词给三个意思,最后将三个加权平均在一起,看选哪个

将ELMo中的LSTM换成transformer之后就是BERT
LSTM:迭代的,顺序的,一个词接着一个词进行训练的
Transformer:并行的,全部词同时训练。所以会缺少位置信息,需要增加位置信息,理解词间关系(谁在前谁在后)
其中最重要的是多头注意力机制。
Transformer回顾:


即给定一个Q,找到K,算出Q、K的相关度,即注意力多少,再用V表示。

BERT:使用transformer的双向编码器词向量表达,只用到了transformer的编码器部分。
Google于2018年提出
由两部分组成:预训练模型+fine-tuning。第一部分从非常大量的文本中做预训练,第二部分是针对某一种具体的任务(如QA)进行微调
是一种站在巨人肩膀上的模型,及众家之所长:
1、给上下文预测下一个词,如word2vec
2、GPT:第一个使用transformer的,openAI开发出来的模型
3、结构是双向的,如同ELMo





灵感来自于完形填空,一句话挖掉一部分,根据其他部分把这部分填入
Bert一共mask15%的token,其中80%用mask特殊字符取代,10%用其他词取代,剩下10%不变。最后计算loss时,只针对被mask的token,其他不关注。


Bert设置了最大句子长度,对于超长的可以在开头或结尾随机去掉一些token。

Base版有12个head,不同的head可以抓住不同的特征,包括全局的和局部的

Base版有12个layer,同一层里的head相互之间很接近
每一层之间的head都差不多,head内部却很不一样

Bert学到了什么呢?
指标高代表在这个任务中该layer发挥的作用大
Base版会学12个embedding,加强版学24个,最后加权平均,蓝色越大代表权重越大
例子:北京天气怎么样?上海呢? 其实是指天气
他是谁?川普,他的妻子是谁? 他指的是川普
多语言混合训练效果更好:

BERT的应用:






Bert的问题,模型太大了,不方便使用:



DistilBERT:学了一半
TinyBERT:从里到外把老师全学了,效果好而且参数少
使用teacher-student模式压缩模型规模,用老师训练出很多学生,规模小且越来越接近老师的水平


