李宏毅-ELMO、BERT、GPT视频笔记
本文根據李宏毅老師2019最新的機器學習視頻整理。
視頻地址:https://www.bilibili.com/video/av46561029/?p=61
ppt下載地址:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML19.html
1、背景
機器是如何理解我們的文字的呢?最早的技術是1-of-N encoding,把每一個詞匯表示成一個向量,每一個向量都只有一個地方為1,其他地方為0。但是這么做詞匯之間的關聯沒有考慮,因為不同詞之間的距離都是一樣的。
所以,接下來有了word class的概念,舉例說dog、cat和bird都是動物,它們應該是同類。但是動物之間也是有區別的,如dog和cat是哺乳類動物,和鳥類還是有些區別的。
后來有了更進階的想法,稱作word embedding,我們用一個向量來表示一個單詞,相近的詞匯距離較近,如cat和dog。那word embedding怎么訓練呢?比較熟知的就是word2vec方法。
但是呢,同一個詞是可能有不同的意思的,如下圖中的bank,前兩個指銀行,后兩個指河堤:
盡管有不同的意思,但使用傳統的word embedding的方法,相同的單詞都會對應同樣的embedding。但我們希望針對不同意思的bank,可以給出不同的embedding表示。
根據上下文語境的不同,同一個單詞bank我們希望能夠得到不同的embedding,如果bank的意思是銀行,我們期望它們之間的embedding能夠相近,同時能夠與河堤意思的bank相距較遠。
基于這個思想,首先有了ELMO。
2、ELMO
ELMO是Embeddings from Language Model的簡稱,ELMO是《芝麻街》中的一個角色。它是一個RNN-based的語言模型,其任務是學習句子中的下一個單詞或者前一個單詞是什么。
它是一個雙向的RNN網絡,這樣每一個單詞都對應兩個hidden state,進行拼接便可以得到單詞的Embedding表示。當同一個單詞上下文不一樣,得到的embedding就不同。
當然,我們也可以搞更多層:
這么多層的RNN,內部每一層輸出都是單詞的一個表示,那我們取哪一層的輸出來代表單詞的embedding呢?ELMO的做法就是我全都要:
在ELMO中,一個單詞會得到多個embedding,對不同的embedding進行加權求和,可以得到最后的embedding用于下游任務。要說明一個這里的embedding個數,下圖中只畫了兩層RNN輸出的hidden state,其實輸入到RNN的原始embedding也是需要的,所以你會看到說右下角的圖片中,包含了三個embedding。
但不同的權重是基于下游任務學習出來的,上圖中右下角給了5個不同的任務,其得到的embedding權重各不相同。
3、Bert
Bert是Bidirectional Encoder Representations from Transformers的縮寫,它也是芝麻街的人物之一。Transformer中的Encoder就是Bert預訓練的架構。李宏毅老師特別提示:如果是中文的話,可以把字作為單位,而不是詞。
只是Transformer中的Encoder,那Bert怎么訓練呢?文獻中給出了兩種訓練的方法,第一個稱為Masked LM,做法是隨機把一些單詞變為Mask,讓模型去猜測蓋住的地方是什么單詞。假設輸入里面的第二個詞匯是被蓋住的,把其對應的embedding輸入到一個多分類模型中,來預測被蓋住的單詞。
另一種方法是預測下一個句子,這里,先把兩句話連起來,中間加一個[SEP]作為兩個句子的分隔符。而在兩個句子的開頭,放一個[CLS]標志符,將其得到的embedding輸入到二分類的模型,輸出兩個句子是不是接在一起的。
實際中,同時使用兩種方法往往得到的結果最好。
在ELMO中,訓練好的embedding是不會參與下游訓練的,下游任務會訓練不同embedding對應的權重,但在Bert中,Bert是和下游任務一起訓練的:
如果是分類任務,在句子前面加一個標志,將其經過Bert得到的embedding輸出到二分類模型中,得到分類結果。二分類模型從頭開始學,而Bert在預訓練的基礎上進行微調(fine-tuning)。
文中還有很多其他的應用,如單詞分類:
如自然語言推理任務,給定一個前提/假設,得到推論是否正確:
最后一個例子是抽取式QA,抽取式的意思是輸入一個原文和問題,輸出兩個整數start和end,代表答案在原文中的起始位置和結束位置,兩個位置中間的結果就是答案。
具體怎么解決剛才的QA問題呢?把問題 - 分隔符 - 原文輸入到BERT中,每一個單詞輸出一個黃顏色的embedding,這里還需要學習兩個(一個橙色一個藍色)的向量,這兩個向量分別與原文中每個單詞對應的embedding進行點乘,經過softmax之后得到輸出最高的位置。正常情況下start <= end,但如果start > end的話,說明是矛盾的case,此題無解。
Bert一出來就開始在各項比賽中嶄露頭角:
這里李宏毅老師還舉例了百度提出的ERNIE,ERNIE也是芝麻街的人物,而且還是Bert的好朋友,這里沒有細講,感興趣的話大家可以看下原文。
Bert學到了什么呢?可以看下下面兩個文獻(給大伙貼出來:https://arxiv.org/abs/1905.05950?和https://openreview.net/pdf?id=SJzSgnRcKX):
4、GPT-2
GPT是Generative Pre-Training 的簡稱,但GPT不是芝麻街的人物。GPT-2的模型非常巨大,它其實是Transformer的Decoder。
GPT-2是Transformer的Decoder部分,輸入一個句子中的上一個詞,我們希望模型可以得到句子中的下一個詞。
由于GPT-2的模型非常巨大,它在很多任務上都達到了驚人的結果,甚至可以做到zero-shot learning(簡單來說就是模型的遷移能力非常好),如閱讀理解任務,不需要任何閱讀理解的訓練集,就可以得到很好的結果。
GPT-2可以自己進行寫作,寫得還是不錯的!
好了,筆記就整理到這里了!點擊閱讀原文,觀看李宏毅老師的視頻喲~~
關于本站
“機器學習初學者”公眾號由是黃海廣博士創建,黃博個人知乎粉絲23000+,github排名全球前110名(32000+)。本公眾號致力于人工智能方向的科普性文章,為初學者提供學習路線和基礎資料。原創作品有:吳恩達機器學習個人筆記、吳恩達深度學習筆記等。
往期精彩回顧
那些年做的學術公益-你不是一個人在戰斗
適合初學者入門人工智能的路線及資料下載
吳恩達機器學習課程筆記及資源(github標星12000+,提供百度云鏡像)
吳恩達深度學習筆記及視頻等資源(github標星8500+,提供百度云鏡像)
《統計學習方法》的python代碼實現(github標星7200+)
精心整理和翻譯的機器學習的相關數學資料
首發:深度學習入門寶典-《python深度學習》原文代碼中文注釋版及電子書
備注:加入本站微信群或者qq群,請回復“加群”
加入知識星球(4300+用戶,ID:92416895),請回復“知識星球”
總結
以上是生活随笔為你收集整理的李宏毅-ELMO、BERT、GPT视频笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何看待瘦身成功版BERT——ALBER
- 下一篇: ML 自学者周刊:第 5 期