ELMO
ELMO 簡(jiǎn)介
-
ELMo(Embeddings from Language Models)是一個(gè)在2018年由Allen AI研究所開發(fā)的新型深度語義詞嵌入(word embedding)。ELMo詞嵌入是基于上下文的,這意味著對(duì)于任何給定的詞,它的表示都會(huì)根據(jù)它出現(xiàn)的上下文而變化。 這是一個(gè)重要的進(jìn)步,因?yàn)閭鹘y(tǒng)的詞嵌入,如Word2Vec或GloVe,為每個(gè)詞提供一個(gè)固定的表示,不考慮詞在特定上下文中可能有的不同含義。
-
ELMo的嵌入是通過訓(xùn)練一個(gè)**雙向的語言模型(bi-directional language model)并使用模型的隱藏狀態(tài)作為詞的嵌入來產(chǎn)生的。**這個(gè)語言模型是一個(gè)雙向的長(zhǎng)短期記憶網(wǎng)絡(luò)(Bi-LSTM),它從左到右(正向)和從右到左(反向)閱讀文本,然后將兩個(gè)方向的隱藏狀態(tài)拼接在一起,得到每個(gè)詞的嵌入。
ELMO 優(yōu)點(diǎn)
相較于以往的方法,ELMo具有幾個(gè)重要的優(yōu)點(diǎn):
-
上下文感知:由于ELMo是基于上下文的,它能夠捕捉到詞義消歧的信息,例如詞“play”的不同含義在不同的上下文中。
-
預(yù)訓(xùn)練:和其他詞嵌入一樣,ELMo是預(yù)訓(xùn)練的,這意味著它可以被用作各種NLP任務(wù)的輸入,從而提高模型的性能。
-
深度表示:由于ELMo使用了深度神經(jīng)網(wǎng)絡(luò)(在這種情況下是Bi-LSTM),它可以捕捉到詞的復(fù)雜語義信息。
然而,與此同時(shí),ELMo模型需要大量的計(jì)算資源和時(shí)間來訓(xùn)練,這是它的主要缺點(diǎn)。但一旦訓(xùn)練完成,可以將訓(xùn)練得到的模型用于各種NLP任務(wù)。
利用了多層的 hidden 表示
- 在傳統(tǒng)的RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))或者LSTM(長(zhǎng)短期記憶網(wǎng)絡(luò))中,通常會(huì)使用一個(gè)堆疊的結(jié)構(gòu),也就是多層的LSTM。在這種結(jié)構(gòu)中,底層LSTM捕捉了一些局部和語法方面的信息,而頂層LSTM捕捉了一些更全局、更抽象的語義信息。這是因?yàn)榈讓拥腖STM處理的是原始的輸入詞,而頂層的LSTM處理的是底層LSTM的輸出,因此,頂層LSTM有更高層次的、更全局的視角。
- 然而,在傳統(tǒng)的多層LSTM中,我們通常只使用最頂層的隱藏狀態(tài),忽略了底層的隱藏狀態(tài)。這可能會(huì)損失一些有用的信息。
- ELMo的一個(gè)重要的創(chuàng)新就是使用了所有層次的隱藏狀態(tài)。 對(duì)于每個(gè)詞,ELMo的表示是所有層次隱藏狀態(tài)的加權(quán)平均。權(quán)重是通過訓(xùn)練學(xué)習(xí)的,不同的任務(wù)可能會(huì)賦予不同層次的隱藏狀態(tài)不同的權(quán)重。 這意味著,對(duì)于不同的任務(wù),我們可能會(huì)更關(guān)注不同層次的隱藏狀態(tài)。 例如,命名實(shí)體識(shí)別可能更關(guān)注底層的語法信息,而情感分析可能更關(guān)注頂層的語義信息。
- 通過這種方式,ELMo能夠捕捉到詞的深層次的語義信息,同時(shí)也考慮了詞的上下文信息。這使得ELMo在很多自然語言處理任務(wù)上都取得了非常好的效果。
ELMO 缺點(diǎn)
-
但是由于
ELMO
是基于RNN
原理的模型,因此受制于RNN
的幾個(gè)缺點(diǎn): -
值得注意的是:ELMo模型使用的是雙向長(zhǎng)短期記憶網(wǎng)絡(luò)(Bi-LSTM)模型,它在兩個(gè)方向上分別訓(xùn)練模型——從左到右和從右到左。這兩個(gè)方向的LSTM是獨(dú)立的,它們沒有共享參數(shù)。 然后,ELMo將兩個(gè)方向的隱藏狀態(tài)進(jìn)行拼接或者加權(quán)平均來得到詞的表示。
-
同時(shí) ELMO 還有以下缺陷:
-
計(jì)算成本高: Bi-LSTM需要在兩個(gè)方向上 分別進(jìn)行前向傳播和反向傳播,這使得它的計(jì)算成本比單向LSTM更高。 此外,LSTM模型本身就有很多參數(shù),需要大量的計(jì)算資源和時(shí)間來訓(xùn)練。
-
無法并行化: 由于LSTM是一種循環(huán)神經(jīng)網(wǎng)絡(luò),它需要**按照時(shí)間步驟的順序進(jìn)行計(jì)算,**這使得它無法進(jìn)行并行化計(jì)算。這也是為什么訓(xùn)練LSTM模型需要大量時(shí)間的原因。
-
可能損失長(zhǎng)距離信息: 雖然LSTM設(shè)計(jì)成可以處理梯度消失問題,從而捕捉到一定程度的長(zhǎng)距離依賴,但在實(shí)際應(yīng)用中,如果序列過長(zhǎng),LSTM仍然可能無法捕捉到太長(zhǎng)距離的信息。
-
BERT
-
為了解決 ELMO 模型存在的諸多問題,BERT 應(yīng)運(yùn)而生
BERT (Bidirectional Encoder Representations from Transformers) 是一個(gè)基于Transformer的模型,與ELMo相比,有一些重要的改進(jìn)和優(yōu)點(diǎn): -
全方位的上下文感知: 雖然ELMo是一個(gè)上下文敏感的模型,但是它通過兩個(gè)單向的LSTM來分別捕獲上下文信息。BERT通過使用Transformer的自注意力機(jī)制,在每個(gè)位置都能捕獲雙向的上下文信息。 這使得BERT在理解上下文中的詞語時(shí)更為全面。
- 在ELMo中,雙向上下文信息的獲取是通過兩個(gè)獨(dú)立的、單向的長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)完成的。一個(gè)LSTM從左到右讀取序列,另一個(gè)從右到左讀取。每個(gè)LSTM只能獲取單向的上下文信息,然后將兩個(gè)方向的信息結(jié)合起來得到最后的詞表示。這種方式雖然能夠捕獲到雙向的上下文信息,但是因?yàn)閮蓚€(gè)方向的信息是獨(dú)立處理和結(jié)合的,所以被認(rèn)為是"淺"的雙向表示。
- 相比之下,BERT使用的是基于Transformer的模型,該模型采用自注意力機(jī)制(self-attention mechanism)來獲取雙向上下文信息。在自注意力機(jī)制中,每個(gè)詞的表示都會(huì)考慮到整個(gè)序列中所有詞的信息,而且這個(gè)過程是同時(shí)進(jìn)行的,不需要像LSTM那樣一步一步地處理。 這樣,每個(gè)詞的表示都是在同時(shí)考慮到雙向上下文信息的情況下得到的,因此被認(rèn)為是"深"的雙向表示。
-
并行計(jì)算: BERT使用的 Transformer 結(jié)構(gòu)允許在計(jì)算時(shí)進(jìn)行并行化,相比于ELMo中使用的RNN(Recurrent Neural Network,如LSTM),BERT在訓(xùn)練和預(yù)測(cè)時(shí)都能更有效地利用硬件資源。
-
預(yù)訓(xùn)練任務(wù)的設(shè)計(jì): BERT使用了兩種預(yù)訓(xùn)練任務(wù),Masked Language Model (MLM) 和 Next Sentence Prediction (NSP)。MLM任務(wù)允許模型在預(yù)測(cè)被遮蔽(masked)的詞時(shí)考慮到整個(gè)上下文,而NSP任務(wù)則讓模型理解句子間的關(guān)系。這兩種任務(wù)都使BERT在處理下游任務(wù)時(shí)具有更強(qiáng)的理解能力。
-
更強(qiáng)的性能: 在多種NLP任務(wù)上,BERT都比ELMo展現(xiàn)出了更好的性能。比如在閱讀理解、情感分類、命名實(shí)體識(shí)別等任務(wù)上,BERT都設(shè)立了新的性能標(biāo)準(zhǔn)。
雖然BERT在以上方面都優(yōu)于ELMo,但值得注意的是,BERT模型相比于ELMo更加復(fù)雜和參數(shù)更多,因此需要更多的計(jì)算資源和時(shí)間進(jìn)行訓(xùn)練。不過,和ELMo一樣,BERT模型一般也是預(yù)訓(xùn)練好后,用于各種下游任務(wù),而不需要在每個(gè)特定任務(wù)上從頭開始訓(xùn)練。
BERT V.S. ELMO
- 從這張圖中清晰看出,對(duì) ELMO, E 1 E_1 E1? 分別輸入兩個(gè) LSTM,在左邊的 LSTM 的第一層 E 1 E_1 E1? 被隱層編碼,然后到第二個(gè)時(shí)間步 E 2 E_2 E2? 的信息也被納入進(jìn)來,由此 E 1 E_1 E1? 和 E 2 E_2 E2? 的信息被模型綜合考慮、表示;對(duì)于逆向的 LSTM 也是如此
- 然而,雖然這種方法可以獲取雙向的上下文信息,但是由于正向和反向的信息是獨(dú)立處理的,具體來說,我們并沒有在同一時(shí)間考慮左右兩個(gè)方向的上下文。也就是說,**正向LSTM在處理序列時(shí),并不知道反向LSTM的輸出,反之亦然。**因此,這種雙向表示可能沒有充分利用雙向上下文信息,只是生硬地拼接了雙向的上下文的表示使得表示更加豐富了。
- 但是 BERT 不同,BERT 沒有時(shí)間步的概念,因此,BERT通過使用Transformer的自注意力機(jī)制,在每個(gè)位置都能同時(shí)考慮整個(gè)輸入序列中的所有詞。從圖中可以看出,每個(gè)詞向量的表示都是結(jié)合所有的上下文信息。
兩種預(yù)訓(xùn)練任務(wù)
Object1: Masked Language Model
- 在 MLM 中,輸入序列的一部分詞會(huì)被替換為一個(gè)特殊的 [MASK] 標(biāo)記,然后模型的任務(wù)是預(yù)測(cè)這些被遮蔽的詞。這使得模型必須理解上下文,才能準(zhǔn)確地預(yù)測(cè)被遮蔽的詞。
Object2: Next sentence prediction
- 在 NSP 任務(wù)中,模型需要預(yù)測(cè)兩個(gè)句子是否是連續(xù)的,這使得模型必須理解句子間的關(guān)系。
訓(xùn)練細(xì)節(jié)
如何使用 BERT
BERT 應(yīng)用——垃圾郵件分類
- 只需要使用 [cls] 位置的信息進(jìn)行分類即可
Transformer
self-attention
- 具體的計(jì)算過程請(qǐng)參考我的另一篇博客:Transformer解讀之:Transformer 中的 Attention 機(jī)制
Multi-head Attention
Transformer Block
Position encoding
Transformer模型是一種處理序列數(shù)據(jù)的模型,它完全依賴于自注意力(Self-Attention)機(jī)制。這種機(jī)制允許模型為序列中的每個(gè)元素生成一個(gè)上下文相關(guān)的表示,這一表示不僅考慮到該元素本身,而且還考慮到其他元素。
然而,自注意力機(jī)制本身是不包含順序信息的,也就是說,它對(duì)輸入序列的順序不敏感。這在自然語言處理等需要考慮元素順序的任務(wù)中是一個(gè)問題。
為了解決這個(gè)問題,Transformer引入了位置編碼(Position Encoding)來加入序列中元素的位置信息。這種編碼是將每個(gè)位置 i i i 編碼為一個(gè)向量,然后將這個(gè)向量加到對(duì)應(yīng)位置的元素的表示上。文章來源:http://www.zghlxwxcb.cn/news/detail-487829.html
位置編碼的設(shè)計(jì)需要滿足兩個(gè)條件:一是,不同位置的編碼需要不同;二是,它需要能夠表示出位置之間的相對(duì)關(guān)系。文章來源地址http://www.zghlxwxcb.cn/news/detail-487829.html
到了這里,關(guān)于NLP——ELMO;BERT;Transformers的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!