关于ELMo,面试官们都怎么问
作者?|?Adherer 編輯?|?NewBeeNLP
面試錦囊之知識(shí)整理系列,持續(xù)更新中
寫在前面
以下是關(guān)于ELMo的若干問題整理記錄,自己在網(wǎng)上找了一些問題,對(duì)每個(gè)問題收集了一些資料,并做了整理,有些問題還寫了一些自己的看法,可能會(huì)有紕漏,甚至還有錯(cuò)誤,還請(qǐng)大家賜教????
1.ELMo的基本原理是什么?
ELMO采用了典型的兩階段過程,
「第一個(gè)階段是利用語言模型進(jìn)行預(yù)訓(xùn)練」;
「第二個(gè)階段是在做下游任務(wù)時(shí),從預(yù)訓(xùn)練網(wǎng)絡(luò)中提取對(duì)應(yīng)單詞的網(wǎng)絡(luò)各層的Word Embedding作為新特征補(bǔ)充到下游任務(wù)中。」
第一階段:利用語言模型進(jìn)行預(yù)訓(xùn)練
第一階段模型總覽:
ELMo第一階段,來源張俊林老師文章[2]上圖展示的是其預(yù)訓(xùn)練過程,它的網(wǎng)絡(luò)結(jié)構(gòu)采用了雙層雙向LSTM,其中單詞(token)特征這一塊采用的是單詞的embedding(是否是預(yù)訓(xùn)練好的論文中沒有告知)或者采用字符卷積得到其embedding表示
(論文原文中說的是:via token embeddings or a CNN over characters,字符卷積可以參考論文:Character-Aware Neural Language Models[1])
目前語言模型訓(xùn)練的任務(wù)目標(biāo)是根據(jù)單詞? 的上下文去正確預(yù)測(cè)單詞?,? 之前的單詞序列Context-before稱為上文,之后的單詞序列Context-after稱為下文。
上圖中左端的前向雙層LSTM代表正方向編碼器,輸入的是從左到右順序的除了預(yù)測(cè)單詞外? 的上文Context-before;右端的逆向雙層LSTM代表反方向編碼器,輸入的是從右到左的逆序的句子下文Context-after;每個(gè)編碼器的深度都是兩層LSTM疊加。
「需要注意的是上述殘差結(jié)構(gòu)是在訓(xùn)練深層LSTM網(wǎng)絡(luò)時(shí)常用的結(jié)構(gòu),簡(jiǎn)單做法就是將LSTM層的輸入加到輸出上,在官方tensorflow源碼中token的embedding沒有加到第一層LSTM的輸出上」
使用這個(gè)網(wǎng)絡(luò)結(jié)構(gòu)利用大量語料做語言模型任務(wù)就能預(yù)先訓(xùn)練好這個(gè)網(wǎng)絡(luò),如果訓(xùn)練好這個(gè)網(wǎng)絡(luò)后,輸入一個(gè)新句子?,句子中每個(gè)單詞都能得到對(duì)應(yīng)的三個(gè)Embedding:
最底層是單詞的Word Embedding
往上走是第一層雙向LSTM中對(duì)應(yīng)單詞位置的Embedding,這層編碼單詞的句法信息更多一些;
再往上走是第二層LSTM中對(duì)應(yīng)單詞位置的Embedding,這層編碼單詞的語義信息更多一些。
也就是說,ELMO的預(yù)訓(xùn)練過程不僅僅學(xué)會(huì)單詞的Word Embedding,還學(xué)會(huì)了一個(gè)雙層雙向的LSTM網(wǎng)絡(luò)結(jié)構(gòu),而這兩者后面都有用。
第二階段:下游任務(wù)利用預(yù)訓(xùn)練好的embedding
第二階段模型總覽:
ELMo第二階段,來源張俊林老師文章[2]以QA問題為例,展示下游任務(wù)如何利用預(yù)訓(xùn)練好的embedding。
對(duì)于問句X,我們可以先將句子X作為預(yù)訓(xùn)練好的ELMO網(wǎng)絡(luò)的輸入,這樣句子X中每個(gè)單詞在ELMO網(wǎng)絡(luò)中都能獲得對(duì)應(yīng)的三個(gè)Embedding;
之后給予這三個(gè)Embedding中的每一個(gè)Embedding一個(gè)權(quán)重a,這個(gè)權(quán)重可以學(xué)習(xí)得來,根據(jù)各自權(quán)重累加求和,將三個(gè)Embedding整合成一個(gè);
然后將整合后的這個(gè)Embedding作為X句在自己任務(wù)的那個(gè)網(wǎng)絡(luò)結(jié)構(gòu)中對(duì)應(yīng)單詞的輸入,以此作為補(bǔ)充的新特征給下游任務(wù)使用。
對(duì)于上圖所示下游任務(wù)QA中的回答句子Y來說也是如此處理。因?yàn)镋LMO給下游提供的是每個(gè)單詞的特征形式,所以這一類預(yù)訓(xùn)練的方法被稱為"Feature-based Pre-Training"。
2.ELMo的訓(xùn)練過程是什么樣的?損失函數(shù)是什么?
ELMo的訓(xùn)練過程實(shí)際上指的是其第一階段的預(yù)訓(xùn)練過程,第一階段實(shí)際上就是在訓(xùn)練一個(gè)雙向語言模型,假設(shè)給定一個(gè)序列,該序列含有? 個(gè)token? ,那么:
前向語言模型通過在給定上文?(Context-before)的情況下對(duì)token? 的概率建模來計(jì)算序列出現(xiàn)的概率:
許多主流的神經(jīng)語言模型都會(huì)先給序列中的token計(jì)算一個(gè)「上下文無關(guān)」的token表示?,然后將它傳遞給L層前向LSTM。這樣的話,在每個(gè)位置?,每個(gè)LSTM層輸出一個(gè)「上下文相關(guān)」的表示?,其中?(在ELMo中L取2)
后向語言模型與前向類似,但是它是“從后往前建模的”,通過在給定下文?(Context-after)的情況下對(duì)token? 的概率建模來計(jì)算序列出現(xiàn)的概率:
與前向語言模型類似,后向語言模型在每個(gè)位置?,每個(gè)LSTM層同樣會(huì)輸出一個(gè)「上下文相關(guān)」的表示?,其中?
需要注意的是,上述「上下文無關(guān)」的token表示? 是前后向語言模型共享的
因此,由于ELMo結(jié)合了前后向語言模型,故其目標(biāo)是同時(shí)最大化前后向語言模型的對(duì)數(shù)似然:
其中:
為token表示的參數(shù)(前后向語言模型共享)
為softmax分類的參數(shù)(前后向語言模型共享)
分別表示前后向語言模型LSTM層的參數(shù)
綜上所述,ELMo的訓(xùn)練過程即為一個(gè)前后向語言模型的訓(xùn)練過程,通過上述描述則一目了然,而其損失函數(shù)即為簡(jiǎn)單的分類損失,取決于源碼實(shí)現(xiàn),不同源碼中的實(shí)現(xiàn)可能略有不同。
3.ELMo訓(xùn)練好了之后如何使用?
ELMo訓(xùn)練好了該如何使用實(shí)際上指的是其第一階段的預(yù)訓(xùn)練過程訓(xùn)練完畢,下游任務(wù)如何利用預(yù)訓(xùn)練好的embedding,在問題1中已經(jīng)有了比較詳細(xì)的解讀,在該問題則對(duì)其進(jìn)行公式化的說明。首先由1可知,對(duì)于序列中的每個(gè)token,一個(gè)L層的雙向語言模型就會(huì)得到其「2L+1個(gè)表示」,即為:
其中, 為token的表示(即?), 為每個(gè)雙向LSTM層得到的表示。
「需要注意的是,這里是將整個(gè)句子輸入到雙向語言模型(這里用的是雙向LSTM網(wǎng)絡(luò))中,正向和反向LSTM網(wǎng)絡(luò)共享token embedding的輸入,源碼中token embedding、正向、反向LSTM的hidden state均為512維度,一個(gè)長(zhǎng)度為nsentences的句子,經(jīng)過ELMo預(yù)訓(xùn)練網(wǎng)絡(luò),最后得到的embedding的維度為:(n_sentences, 3, max_sentence_length, 1024)」
那么下游任務(wù)如何利用這些表示呢?下游任務(wù)將所有表示都利用起來,并給他們分配權(quán)重,即為:
其中, 是經(jīng)過softmax歸一化之后的權(quán)重,標(biāo)量參數(shù)? 允許任務(wù)模型縮放整個(gè)ELMo向量。需要注意的是, 是一個(gè)超參數(shù),實(shí)際上這個(gè)參數(shù)是經(jīng)驗(yàn)參數(shù),一定程度上能夠增強(qiáng)模型的靈活性。總結(jié)起來,整個(gè)為下游任務(wù)獲取embedding的過程即為:
下游任務(wù)獲取embedding4.ELMo的優(yōu)點(diǎn)是什么?ELMo為什么有效?
ELMo利用了深度上下文單詞表征,該模型的優(yōu)點(diǎn):
引入雙向語言模型,其實(shí)是 2 個(gè)單向語言模型(前向和后向)的集成;
通過保存預(yù)訓(xùn)練好的 2 層 biLSTM,通過特征集成或 finetune 應(yīng)用于下游任務(wù);
總結(jié)來說,通過上述結(jié)構(gòu),ELMo能夠達(dá)到區(qū)分多義詞的效果,每個(gè)單詞(token)不再是只有一個(gè)上下文無關(guān)的embedding表示。
那么ELMo為什么有效呢?我認(rèn)為主要原因有以下幾點(diǎn):
首先,ELMo的假設(shè)前提是一個(gè)詞的詞向量不應(yīng)該是固定的,所以在多義詞區(qū)分方面ELMo的效果必然比word2vec要好。
另外,ELMo通過語言模型生成的詞向量是通過特定上下文的“傳遞”而來,再根據(jù)下游任務(wù),對(duì)原本上下文無關(guān)的詞向量以及上下文相關(guān)的詞向量表示引入一個(gè)權(quán)重,這樣既在原來的詞向量中引入了上下文的信息,又能根據(jù)下游任務(wù)適時(shí)調(diào)整各部分的權(quán)重(權(quán)重是在網(wǎng)絡(luò)中學(xué)習(xí)得來的),因此這也是ELMo有效的一個(gè)原因。
5.ELMo為什么能夠達(dá)到區(qū)分多義詞的效果?
在ELMo第一階段訓(xùn)練完成之后,將句子輸入模型中在線提取各層embedding的時(shí)候,每個(gè)單詞(token)對(duì)應(yīng)兩邊LSTM網(wǎng)絡(luò)的對(duì)應(yīng)節(jié)點(diǎn),那兩個(gè)節(jié)點(diǎn)得到的embedding是動(dòng)態(tài)改變的,會(huì)受到上下文單詞的影響,周圍單詞的上下文不同應(yīng)該會(huì)強(qiáng)化某種語義,弱化其它語義,這樣就達(dá)到區(qū)分多義詞的效果了。需要注意的是,第一個(gè)單詞和最后一個(gè)單詞也是有上下文的,譬如說第一個(gè)單詞的上文是一個(gè)特殊的token <BOS>,下文是除第一個(gè)單詞外的所有單詞,最后一個(gè)單詞的下文是一個(gè)特殊的token <EOS>,上文是除最后一個(gè)單詞外的所有單詞。
論文中也舉例說明了這個(gè)問題,圖示如下:
多義詞問題,來源張俊林老師文章[2]上圖對(duì)于Glove訓(xùn)練出的word embedding來說,多義詞比如play,根據(jù)它的embedding找出的最接近的其它單詞大多數(shù)集中在體育領(lǐng)域,這很明顯是因?yàn)橛?xùn)練數(shù)據(jù)中包含play的句子中體育領(lǐng)域的數(shù)量明顯占優(yōu)導(dǎo)致;而使用ELMo,根據(jù)上下文動(dòng)態(tài)調(diào)整后的embedding不僅能夠找出對(duì)應(yīng)的“演出”的相同語義的句子,而且還可以保證找出的句子中的play對(duì)應(yīng)的詞性也是相同的,這是超出期待之處(當(dāng)然也可能是因?yàn)檎撐闹薪o出的例子都是比較好的例子,不過ELMo這樣的做法是值得學(xué)習(xí)的)。
6.ELMo把三種不同的向量疊加的意義是什么?這樣做能達(dá)到什么樣的效果?
因?yàn)橥ㄟ^ELMo模型,句子中每個(gè)單詞都能得到對(duì)應(yīng)的三個(gè)Embedding:
最底層是單詞的Word Embedding;
往上走是第一層雙向LSTM中對(duì)應(yīng)單詞位置的Embedding,這層編碼單詞的句法信息更多一些;
再往上走是第二層LSTM中對(duì)應(yīng)單詞位置的Embedding,這層編碼單詞的語義信息更多一些。
「需要注意的是,這里得到的結(jié)論是通過實(shí)驗(yàn)驗(yàn)證的,是在這樣的模型設(shè)計(jì)中,能夠得到上述結(jié)論,可能不同模型結(jié)構(gòu),得到的結(jié)論又是不一樣的。」
ELMo把三種不同的向量疊加的意義主要體現(xiàn)在以下兩個(gè)點(diǎn):
一是之前很多方法都只用了最頂層LSTM的hidden state,但是通過實(shí)驗(yàn)驗(yàn)證,在很多任務(wù)中,將每一層hidden state融合在一起會(huì)取得更好的效果;
二是在上述實(shí)驗(yàn)中得到結(jié)論,每一層LSTM得到單詞的embedding所蘊(yùn)含的信息是不一樣的,因此將所有信息融合起來,會(huì)讓單詞embedding的表達(dá)更豐富。
這樣做能夠起到區(qū)分多義詞的效果,如問題5,而且在論文展示的6個(gè)任務(wù)中都取得了SOTA的效果。參考:[2][3][4][5]
本文參考資料
[1]
Character-Aware Neural Language Models: https://arxiv.org/abs/1508.06615
[2]從Word Embedding到Bert模型—自然語言處理中的預(yù)訓(xùn)練技術(shù)發(fā)展史: https://zhuanlan.zhihu.com/p/49271699
[3]The Illustrated BERT, ELMo, and co. (How NLP Cracked Transfer Learning): http://jalammar.github.io/illustrated-bert/
[4]ELMo-TensorFlow源碼: https://github.com/allenai/bilm-tf
[5]機(jī)器學(xué)習(xí)之路: https://zhuanlan.zhihu.com/Adherer-machine-learning
-?END?-
往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)在線手冊(cè)深度學(xué)習(xí)在線手冊(cè)AI基礎(chǔ)下載(pdf更新到25集)本站qq群1003271085,加入本站微信群請(qǐng)回復(fù)“加群”獲取一折本站知識(shí)星球優(yōu)惠券,請(qǐng)回復(fù)“知識(shí)星球”喜歡文章,點(diǎn)個(gè)在看
總結(jié)
以上是生活随笔為你收集整理的关于ELMo,面试官们都怎么问的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 强化学习和最优控制的《十个关键点》81页
- 下一篇: 关于Transformer,面试官们都怎