

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開發(fā)出來的模型
3、結構是雙向的,如同ELMo





靈感來自于完形填空,一句話挖掉一部分,根據(jù)其他部分把這部分填入
Bert一共mask15%的token,其中80%用mask特殊字符取代,10%用其他詞取代,剩下10%不變。最后計算loss時,只針對被mask的token,其他不關注。


Bert設置了最大句子長度,對于超長的可以在開頭或結尾隨機去掉一些token。

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

Base版有12個layer,同一層里的head相互之間很接近
每一層之間的head都差不多,head內部卻很不一樣

Bert學到了什么呢?
指標高代表在這個任務中該layer發(fā)揮的作用大
Base版會學12個embedding,加強版學24個,最后加權平均,藍色越大代表權重越大
例子:北京天氣怎么樣?上海呢?? ?其實是指天氣
他是誰?川普,他的妻子是誰?? ???他指的是川普
多語言混合訓練效果更好:

BERT的應用:






Bert的問題,模型太大了,不方便使用:



DistilBERT:學了一半
TinyBERT:從里到外把老師全學了,效果好而且參數(shù)少
使用teacher-student模式壓縮模型規(guī)模,用老師訓練出很多學生,規(guī)模小且越來越接近老師的水平


