电竞比分网-中国电竞赛事及体育赛事平台

分享

李宏毅-ELMO、BERT、GPT視頻筆記

 LibraryPKU 2019-08-25

本文根據(jù)李宏毅老師2019最新的機(jī)器學(xué)習(xí)視頻整理。

視頻地址:https://www.bilibili.com/video/av46561029/?p=61
ppt下載地址:http://speech.ee./~tlkagk/courses_ML19.html

1、背景

機(jī)器是如何理解我們的文字的呢?最早的技術(shù)是1-of-N encoding,把每一個詞匯表示成一個向量,每一個向量都只有一個地方為1,其他地方為0。但是這么做詞匯之間的關(guān)聯(lián)沒有考慮,因為不同詞之間的距離都是一樣的。

所以,接下來有了word class的概念,舉例說dog、cat和bird都是動物,它們應(yīng)該是同類。但是動物之間也是有區(qū)別的,如dog和cat是哺乳類動物,和鳥類還是有些區(qū)別的。

后來有了更進(jìn)階的想法,稱作word embedding,我們用一個向量來表示一個單詞,相近的詞匯距離較近,如cat和dog。那word embedding怎么訓(xùn)練呢?比較熟知的就是word2vec方法。

但是呢,同一個詞是可能有不同的意思的,如下圖中的bank,前兩個指銀行,后兩個指河堤:

盡管有不同的意思,但使用傳統(tǒng)的word embedding的方法,相同的單詞都會對應(yīng)同樣的embedding。但我們希望針對不同意思的bank,可以給出不同的embedding表示。

根據(jù)上下文語境的不同,同一個單詞bank我們希望能夠得到不同的embedding,如果bank的意思是銀行,我們期望它們之間的embedding能夠相近,同時能夠與河堤意思的bank相距較遠(yuǎn)。

基于這個思想,首先有了ELMO。

2、ELMO

ELMO是Embeddings from Language Model的簡稱,ELMO是《芝麻街》中的一個角色。它是一個RNN-based的語言模型,其任務(wù)是學(xué)習(xí)句子中的下一個單詞或者前一個單詞是什么。

它是一個雙向的RNN網(wǎng)絡(luò),這樣每一個單詞都對應(yīng)兩個hidden state,進(jìn)行拼接便可以得到單詞的Embedding表示。當(dāng)同一個單詞上下文不一樣,得到的embedding就不同。

當(dāng)然,我們也可以搞更多層:

這么多層的RNN,內(nèi)部每一層輸出都是單詞的一個表示,那我們?nèi)∧囊粚拥妮敵鰜泶韱卧~的embedding呢?ELMO的做法就是我全都要

在ELMO中,一個單詞會得到多個embedding,對不同的embedding進(jìn)行加權(quán)求和,可以得到最后的embedding用于下游任務(wù)。要說明一個這里的embedding個數(shù),下圖中只畫了兩層RNN輸出的hidden state,其實輸入到RNN的原始embedding也是需要的,所以你會看到說右下角的圖片中,包含了三個embedding。

但不同的權(quán)重是基于下游任務(wù)學(xué)習(xí)出來的,上圖中右下角給了5個不同的任務(wù),其得到的embedding權(quán)重各不相同。

3、Bert

Bert是Bidirectional Encoder Representations from Transformers的縮寫,它也是芝麻街的人物之一。Transformer中的Encoder就是Bert預(yù)訓(xùn)練的架構(gòu)。李宏毅老師特別提示:如果是中文的話,可以把字作為單位,而不是詞。

只是Transformer中的Encoder,那Bert怎么訓(xùn)練呢?文獻(xiàn)中給出了兩種訓(xùn)練的方法,第一個稱為Masked LM,做法是隨機(jī)把一些單詞變?yōu)镸ask,讓模型去猜測蓋住的地方是什么單詞。假設(shè)輸入里面的第二個詞匯是被蓋住的,把其對應(yīng)的embedding輸入到一個多分類模型中,來預(yù)測被蓋住的單詞。

另一種方法是預(yù)測下一個句子,這里,先把兩句話連起來,中間加一個[SEP]作為兩個句子的分隔符。而在兩個句子的開頭,放一個[CLS]標(biāo)志符,將其得到的embedding輸入到二分類的模型,輸出兩個句子是不是接在一起的。

實際中,同時使用兩種方法往往得到的結(jié)果最好。

在ELMO中,訓(xùn)練好的embedding是不會參與下游訓(xùn)練的,下游任務(wù)會訓(xùn)練不同embedding對應(yīng)的權(quán)重,但在Bert中,Bert是和下游任務(wù)一起訓(xùn)練的:

如果是分類任務(wù),在句子前面加一個標(biāo)志,將其經(jīng)過Bert得到的embedding輸出到二分類模型中,得到分類結(jié)果。二分類模型從頭開始學(xué),而Bert在預(yù)訓(xùn)練的基礎(chǔ)上進(jìn)行微調(diào)(fine-tuning)。

文中還有很多其他的應(yīng)用,如單詞分類:

如自然語言推理任務(wù),給定一個前提/假設(shè),得到推論是否正確:

最后一個例子是抽取式QA,抽取式的意思是輸入一個原文和問題,輸出兩個整數(shù)start和end,代表答案在原文中的起始位置和結(jié)束位置,兩個位置中間的結(jié)果就是答案。

具體怎么解決剛才的QA問題呢?把問題 - 分隔符 - 原文輸入到BERT中,每一個單詞輸出一個黃顏色的embedding,這里還需要學(xué)習(xí)兩個(一個橙色一個藍(lán)色)的向量,這兩個向量分別與原文中每個單詞對應(yīng)的embedding進(jìn)行點(diǎn)乘,經(jīng)過softmax之后得到輸出最高的位置。正常情況下start <= end,但如果start > end的話,說明是矛盾的case,此題無解。

Bert一出來就開始在各項比賽中嶄露頭角:

這里李宏毅老師還舉例了百度提出的ERNIE,ERNIE也是芝麻街的人物,而且還是Bert的好朋友,這里沒有細(xì)講,感興趣的話大家可以看下原文。

Bert學(xué)到了什么呢?可以看下下面兩個文獻(xiàn)(給大伙貼出來:https:///abs/1905.05950 和https:///pdf?id=SJzSgnRcKX):

4、GPT-2

GPT是Generative Pre-Training 的簡稱,但GPT不是芝麻街的人物。GPT-2的模型非常巨大,它其實是Transformer的Decoder。

GPT-2是Transformer的Decoder部分,輸入一個句子中的上一個詞,我們希望模型可以得到句子中的下一個詞。

由于GPT-2的模型非常巨大,它在很多任務(wù)上都達(dá)到了驚人的結(jié)果,甚至可以做到zero-shot learning(簡單來說就是模型的遷移能力非常好),如閱讀理解任務(wù),不需要任何閱讀理解的訓(xùn)練集,就可以得到很好的結(jié)果。

GPT-2可以自己進(jìn)行寫作,寫得還是不錯的!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多