通過(guò)NMT訓(xùn)練的通用語(yǔ)境詞向量:NLP中的預(yù)訓(xùn)練模型?
自然語(yǔ)言處理(NLP)這個(gè)領(lǐng)域目前并沒(méi)有找到合適的初始化方法,它不能像計(jì)算機(jī)視覺(jué)那樣可以使用預(yù)訓(xùn)練模型獲得圖像的基本信息,我們?cè)谧匀徽Z(yǔ)言處理領(lǐng)域更常用的還是隨機(jī)初始化詞向量。本文希望通過(guò) MT-LSTM 先學(xué)習(xí)一個(gè)詞向量,該詞向量可以表征詞匯的基本信息,然后再利用該詞向量輔助其它自然語(yǔ)言處理任務(wù)以提升性能。本文先描述了如何訓(xùn)練一個(gè)帶注意力機(jī)制的神經(jīng)機(jī)器翻譯,其次描述了如何抽取該模型的通用詞向量與將其應(yīng)用于其它任務(wù)的性能。
對(duì)于自然語(yǔ)言處理中的大多數(shù)問(wèn)題而言,理解語(yǔ)境是很有必要的。為了生成一句英文的德語(yǔ)翻譯,翻譯模型需要理解英文句子中的單詞是如何組織在一起的。為了知道哪些單詞是最重要的,文本摘要模型也需要語(yǔ)境。執(zhí)行語(yǔ)義情感分析的模型需要理解如何挑選出能夠改變一句話的情感的關(guān)鍵詞。問(wèn)答模型依賴于對(duì)「問(wèn)題中的詞匯分布如何改變答案中的詞匯分布」的理解。因?yàn)檫@些模型都需要理解語(yǔ)境是如何影響一個(gè)單詞的意思的,所以,只要能夠與一個(gè)學(xué)會(huì)了如何將單詞語(yǔ)境化的模型相結(jié)合,上述每個(gè)模型都能夠從中獲益。
一、在自然語(yǔ)言處理(NLP)中模仿 IMAGENET-CNN 模式
機(jī)器視覺(jué)在尋求可重用的表征方面比自然語(yǔ)言處理更加成功。在大型圖像分類數(shù)據(jù)集 ImageNet 上訓(xùn)練的深度卷積神經(jīng)網(wǎng)絡(luò)(CNN)經(jīng)常被用作其他模型的組成部分。為了將圖像分類做得更好,卷積神經(jīng)網(wǎng)絡(luò)通過(guò)逐漸構(gòu)建一個(gè)更加復(fù)雜模型,而去理解像素是如何與其他像素關(guān)聯(lián)的。模型可以在這些表征的基礎(chǔ)上去解決看圖說(shuō)話問(wèn)題、人臉識(shí)別問(wèn)題以及目標(biāo)檢測(cè)問(wèn)題,而不是一切都從零開(kāi)始。自然語(yǔ)言處理也應(yīng)該做一些類似的表征去解決單詞和語(yǔ)境之間的關(guān)聯(lián)。
為了教會(huì)神經(jīng)網(wǎng)絡(luò)理解單詞在語(yǔ)境中的含義,我們首先教它如何將英文翻譯成德語(yǔ)。然后,我們展示了可以重用該翻譯任務(wù)的神經(jīng)網(wǎng)絡(luò)就像模仿機(jī)器視覺(jué)中在 ImageNet 上訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)的方式那樣。我們是這樣來(lái)做的:通過(guò)將神經(jīng)網(wǎng)絡(luò)的輸出(也就是我們所說(shuō)的語(yǔ)境向量(CoVe))作為其它自然語(yǔ)言處理任務(wù)的神經(jīng)網(wǎng)絡(luò)的新輸入。在我們的實(shí)驗(yàn)中,給這些網(wǎng)絡(luò)提供 CoVe 的情況總會(huì)改善模型的性能,這十分令我們振奮,所以所以我們公布了這個(gè)能夠生成 CoVe 的可訓(xùn)練神經(jīng)網(wǎng)絡(luò),以進(jìn)一步探索自然語(yǔ)言處理中的可重用表征。
二、詞向量
今天大多數(shù)用于自然語(yǔ)言處理的深度學(xué)習(xí)模型都依賴詞向量來(lái)代表單個(gè)單詞的含義。對(duì)于不太熟悉這領(lǐng)域的人而言,可以這樣簡(jiǎn)單的理解:我們把每一種語(yǔ)言中的每一個(gè)單詞都與一串被叫做向量的數(shù)字聯(lián)系起來(lái)了。
圖 1
圖 1是深度學(xué)習(xí)中將單詞表示成向量是很普遍的情況。深度學(xué)習(xí)模型以詞向量序列的形式讀取序列化的單詞,而不是以文本的形式。
1. 預(yù)訓(xùn)練的詞向量
有時(shí)候在為特定任務(wù)訓(xùn)練模型之前,詞向量會(huì)被初始化成隨機(jī)數(shù),但是,也有其他很常見(jiàn)的方式,例如,使用 word2vec、GloVe 或者 FastText 等方法來(lái)初始化詞向量。前兩個(gè)方法會(huì)逐漸和這一假設(shè)結(jié)合起來(lái):至少一個(gè)單詞的部分含義是和它的用法有關(guān)的。
Word2Vec 會(huì)訓(xùn)練出能夠預(yù)測(cè)局部語(yǔ)境窗(local context window)的模型;這個(gè)模型在發(fā)現(xiàn)一個(gè)單詞之后就會(huì)去預(yù)測(cè)它附近的單詞。
圖 2
圖 2是像 word2vec 和 GloVe 一樣的算法能夠生成一些相互關(guān)聯(lián)的詞向量,這些詞向量在自然語(yǔ)言中通常也是相關(guān)的。就像像圖中描述的一樣,「Word vectors are lists of numbers」這句話中,「vector」的向量就在「lists」、「of」「numbers」這三個(gè)詞的周圍。
GloVe 采用了相似的方法,它還顯式地附加了每個(gè)單詞和其他單詞一起出現(xiàn)的統(tǒng)計(jì)信息。在這兩種方法中,每個(gè)單詞都由一個(gè)對(duì)應(yīng)的詞向量來(lái)表示,訓(xùn)練過(guò)程會(huì)將詞向量之間的關(guān)聯(lián)與單詞在自然語(yǔ)言中的使用方式聯(lián)系起來(lái)。
2. 預(yù)訓(xùn)練的詞向量的天然特性
將這些詞向量看作空間中的點(diǎn),我們就會(huì)發(fā)現(xiàn)一些非常有趣的關(guān)聯(lián),它可以讓人回想起自然語(yǔ)言中單詞之間的語(yǔ)義關(guān)聯(lián)。
圖 3. 男性-女性詞對(duì)在向量分布的不同(Pennington 等人 2014)
圖 4. a-b,c:d 這種關(guān)系指的是:c+(a-b) 會(huì)生成一個(gè)距離 d 最近的向量(Mikolov 等人,2013)
圖 5. 比較級(jí)和最高級(jí)之間的向量的差別
顯而易見(jiàn),對(duì)于目標(biāo)任務(wù),使用由 word2vec 或者 GloVe 的中間結(jié)果作為預(yù)訓(xùn)練詞向量去初始化任務(wù),會(huì)給目標(biāo)任務(wù)的模型帶來(lái)一些優(yōu)勢(shì)。由此,由 word2vec 或者 GloVe 生成的詞向量也就找到了在很多自然語(yǔ)言處理任務(wù)中進(jìn)行廣泛實(shí)驗(yàn)的方式。
三、隱向量
這些預(yù)訓(xùn)練的詞向量表現(xiàn)出了很有趣的性質(zhì),并且相對(duì)隨機(jī)初始化的詞向量而言,有著顯著的性能提升。但是正如之前提及的,單詞很少獨(dú)立出現(xiàn)。使用預(yù)訓(xùn)練詞向量的模型必須學(xué)習(xí)如何去使用它們。在該項(xiàng)工作中,我們通過(guò)訓(xùn)練中間任務(wù)獲得環(huán)境詞向量,該環(huán)境詞向量是通過(guò)截?cái)鄬ふ冶入S機(jī)初始化方法更好的向量而得出。
1. 編碼器
將詞向量語(yǔ)境化的一個(gè)常用方法就是使用循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)。循環(huán)神經(jīng)網(wǎng)絡(luò)是能夠處理可變長(zhǎng)度向量序列的深度學(xué)習(xí)模型。這一特性使得它們很適合來(lái)處理詞向量序列。為了更好地處理長(zhǎng)序列,我們使用了一種特定種類的 RNN,即長(zhǎng)短期記憶(LSTM)網(wǎng)絡(luò)。在處理過(guò)程的每一步中,LSTM 輸入一個(gè)詞向量,輸出一個(gè)被稱作隱向量的新向量。這個(gè)過(guò)程常常被稱之為對(duì)序列的編碼,完成編碼過(guò)程的神經(jīng)網(wǎng)絡(luò)就被稱為編碼器。
圖 6. LSTM 將詞向量序列作為輸入,輸出一個(gè)新的隱向量
2. 雙向編碼器
隱向量并不包含出現(xiàn)在當(dāng)前輸入序列之后的單詞的信息,但是這個(gè)很容易被改進(jìn)。我們可以反向運(yùn)行一個(gè) LSTM 以得到一些反向的輸出向量。我們將這一對(duì)前向-反向 LSTM 看做一個(gè)單元,通常被稱作雙向 LSTM。它以一個(gè)詞向量序列作為輸入,運(yùn)行了前向和反向 LSTM,并將每個(gè) LSTM 對(duì)應(yīng)的輸出連接成一個(gè)輸出,然后返回最終得到的隱向量。
圖 7. 包含每個(gè)單詞之前和之后信息的雙向編碼器。
我們將兩個(gè)雙向 LSTM 堆疊在一起作為一個(gè)編碼器。第一個(gè)雙向 LSTM 處理整個(gè)序列,然后將輸出作為作為第二個(gè)雙向 LSTM 的輸入。
四、機(jī)器翻譯中的隱向量
因?yàn)榻Y(jié)果證明預(yù)訓(xùn)練的詞向量對(duì)于很多自然語(yǔ)言處理任務(wù)來(lái)說(shuō)都是很有用的表征,所以我們要預(yù)訓(xùn)練我們的編碼器,這樣的話,它就能夠輸出普遍有用的隱向量。為了預(yù)訓(xùn)練,我們選擇機(jī)器翻譯作為我們的第一個(gè)任務(wù)。較之于其他的自然語(yǔ)言處理任務(wù),機(jī)器翻譯擁有更大的數(shù)據(jù)集。并且,對(duì)于訓(xùn)練通用的語(yǔ)境向量而言,翻譯任務(wù)的本質(zhì)看上去更加吸引人。例如,與其他的類似于文本分類的任務(wù)相比,翻譯貌似更需要那種能夠理解語(yǔ)言的語(yǔ)感。
1. 解碼器
我們通過(guò)教編碼器如何將英文翻譯成德文來(lái)教它生成有用的隱向量。解碼器生成了針對(duì)英文句子的隱向量,另一個(gè)叫做解碼器的神經(jīng)網(wǎng)絡(luò)就會(huì)在生成德語(yǔ)句子的時(shí)候參考這些隱向量。
正因?yàn)?LSTM 是我們編碼器的基礎(chǔ),所以 LSTM 也在解碼器中起著非常重要的作用。與編碼器一樣,我們?cè)诮獯a器中也使用兩層的 LSTM。用編碼器的最終狀態(tài)來(lái)初始化解碼器,讀入一個(gè)德語(yǔ)詞向量來(lái)啟動(dòng)解碼器,然后就會(huì)生成解碼狀態(tài)向量。
圖 8. 解碼器使用一個(gè)單向的 LSTM 來(lái)從輸入詞向量創(chuàng)建解碼器狀態(tài)。
2. 注意力機(jī)制
為了決定下一步翻譯英語(yǔ)句子中的哪一部分,注意力機(jī)制需要從隱向量向前回溯。它使用狀態(tài)向量來(lái)判別每一個(gè)隱向量的重要性,為了記錄它的觀察值,注意力機(jī)制會(huì)生成一個(gè)新的向量,我們可以稱之為語(yǔ)境調(diào)整狀態(tài)(context-sdjusted state)。
圖 9. 注意力機(jī)制使用隱狀態(tài)和解碼狀態(tài)來(lái)生成語(yǔ)境調(diào)整狀態(tài)
3. 生成模型
然后,生成器會(huì)根據(jù)語(yǔ)境調(diào)整狀態(tài)來(lái)決定要生成哪個(gè)德語(yǔ)單詞,接下來(lái)語(yǔ)境調(diào)整狀態(tài)會(huì)回傳到解碼器中,讓解碼器對(duì)其翻譯的結(jié)果有一個(gè)準(zhǔn)確的感知。解碼器一直重復(fù)這個(gè)過(guò)程,直至它完成所有翻譯。這就是一個(gè)標(biāo)準(zhǔn)的基于注意力機(jī)制的編碼器-解碼器結(jié)構(gòu),它被用來(lái)學(xué)習(xí)像機(jī)器翻譯一樣的序列到序列任務(wù)。
圖 10. 生成器使用語(yǔ)境調(diào)整狀態(tài)來(lái)選擇一個(gè)輸出單詞
4. 預(yù)訓(xùn)練的機(jī)器翻譯--長(zhǎng)短期記憶網(wǎng)絡(luò)(MT-LSTM)中的語(yǔ)境向量
當(dāng)訓(xùn)練過(guò)程結(jié)束之后,我們可以將我們訓(xùn)練好的 LSTM 提取出來(lái)作為編碼器用于機(jī)器翻譯。我們將這個(gè)預(yù)訓(xùn)練的 LSTM 稱作機(jī)器翻譯 LSTM(MT-LSTM),并使用它生成新句子的隱向量。當(dāng)我們把這些機(jī)器翻譯隱向量用于其它的自然語(yǔ)言處理模型時(shí),我們就把它們稱作語(yǔ)境向量(CoVe)。
圖 11. 兩種通用架構(gòu):a). 我們?nèi)绾斡?xùn)練一個(gè)編碼器;b). 我們?nèi)绾螌⒂?xùn)練好的編碼器用在新的特定任務(wù)的模型上
五、使用 CoVe 進(jìn)行的實(shí)驗(yàn)
我們的實(shí)驗(yàn)探索了在文本分類和問(wèn)答模型中使用預(yù)訓(xùn)練的 MT-LSTM 生成語(yǔ)境向量(CoVe)的優(yōu)點(diǎn),但是 CoVe 可以被用在任何將向量序列作為輸入的模型中。
1. 文本分類
圖 12. 雙注意力機(jī)制(biattention)的分類網(wǎng)絡(luò)
我們?cè)趦煞N不同種類的文本分類任務(wù)上做了實(shí)驗(yàn)。第一種是任務(wù)使用單一輸入,它包括情感分析和問(wèn)答分類。第二種擁有兩個(gè)輸入,但它僅包括蘊(yùn)含分類。在兩種任務(wù)上我們都使用雙注意力分類網(wǎng)絡(luò)(BCN)。如果僅有一個(gè)輸入,我們會(huì)將其進(jìn)行復(fù)制,以呈現(xiàn)出雙輸入的形式,但是同時(shí)要讓模型知道避免做一些冗余的計(jì)算。不需要理解 BCN 的細(xì)節(jié),我們就可以理解 CoVe 以及使用它的好處。
2. 問(wèn)答實(shí)驗(yàn)
在問(wèn)答實(shí)驗(yàn)中我們使用了動(dòng)態(tài)協(xié)同注意力網(wǎng)絡(luò)(DCN)。而在分析機(jī)器翻譯(MT)數(shù)據(jù)集對(duì)其他模型的性能影響時(shí),我們使用了輕度修正的 DCN,然而在測(cè)試 CoVe 以及 CoVe 結(jié)合字符向量時(shí)的全局效果時(shí),我們使用了修正的 DCN+。
表 1: 我們實(shí)驗(yàn)中所有的數(shù)據(jù)集和任務(wù)
3. Glove+CoVe
對(duì)于每一個(gè)任務(wù),我們都用表征輸入序列的不同方式進(jìn)行實(shí)驗(yàn)。我們可以使用隨機(jī)初始化的詞向量,也可以使用 Glove,或者使用 Glove 和 CoVe 聯(lián)合得出的詞向量。在最后一種情況下,我們通過(guò)一個(gè)預(yù)訓(xùn)練的 MT-LSTM 來(lái)運(yùn)行它,以得到 CoVe 序列,我們用對(duì)應(yīng)的 Glove 序列來(lái)擴(kuò)展每一個(gè) CoVe 序列。MT-LSTM 和 Glove 都沒(méi)有作為分類任務(wù)或者問(wèn)答模型訓(xùn)練過(guò)程的一部分。
實(shí)驗(yàn)結(jié)果表明:包括 CoVe 和 Glove 的情況總是比隨機(jī)初始化的詞向量和單獨(dú)使用 Glove 的情況具有更好的性能。
圖 13. 結(jié)合 Glove 和 CoVe 能夠改善驗(yàn)證性能。
4. 更多的機(jī)器翻譯-->更好的語(yǔ)境向量
改變訓(xùn)練 MT-LSTM 時(shí)所用的數(shù)據(jù)量表明:更大規(guī)模的數(shù)據(jù)集會(huì)得到更高質(zhì)量的 MT-LSTM,這里的更高質(zhì)量的模型意味著用它生成的 CoVe 通常會(huì)在分類任務(wù)和問(wèn)答任務(wù)上產(chǎn)生更好的性能。
結(jié)果表明,在較小的機(jī)器翻譯數(shù)據(jù)集上使用 CoVe 訓(xùn)練得到的 MT-LSTM 帶來(lái)的性能提升是較小的。在一些情況中,使用小規(guī)模的機(jī)器翻譯數(shù)據(jù)集訓(xùn)練的到的 MT-LSTM 會(huì)生成有損于模型性能的 CoVe。這也許意味著使用 CoVe 得到的性能提升是來(lái)自于強(qiáng)勁的 MT-LSTM 模型。這也意味著機(jī)器翻譯訓(xùn)練集所在的領(lǐng)域會(huì)影響到最終 MT-LSTM 給其它任務(wù)帶來(lái)性能提升。
圖 14
圖 14. 訓(xùn)練 MT-LSTM 的數(shù)據(jù)集規(guī)模會(huì)對(duì)使用 CoVe 的模型的驗(yàn)證性能產(chǎn)生明顯地影響。在這里,MT-Small 是 2016 年的 WMT 多模數(shù)據(jù)集,MT-Medium 是 2016 IWSLT 訓(xùn)練集,MT-Large 是 2017 年的 WMT 新聞追蹤數(shù)據(jù)集
5. 語(yǔ)境向量和字符向量
在這些實(shí)驗(yàn)中,我們嘗試著在 Glove 和 CoVe 中添加字符向量。結(jié)果表明,對(duì)于一些任務(wù),字符向量會(huì)和 Glove 以及 CoVe 一起產(chǎn)生更好的性能。這意味著 CoVe 給字符級(jí)別以及單詞級(jí)別的信息帶來(lái)了補(bǔ)充信息。
圖 15. CoVe 與字符級(jí)別以及單詞級(jí)別的信息是互補(bǔ)的
6. 測(cè)試性能
我們最好的模型都使用了 Glove、CoVe 以及字符級(jí)別的向量。我們對(duì)每種任務(wù)中驗(yàn)證性能最高的模型在測(cè)試集上做了測(cè)試。上圖表明添加 CoVe 總能夠從起點(diǎn)開(kāi)始就提升性能,下表表明,我們的模型足以在 7 個(gè)任務(wù)測(cè)試集中的 3 個(gè)上達(dá)到目前最高水平。
表 2. 在測(cè)試的時(shí)候(2017.7.12),我們的模型與其他機(jī)器學(xué)習(xí)方法的性能對(duì)比
有一個(gè)有趣之處值得注意,就像我們使用機(jī)器翻譯數(shù)據(jù)來(lái)改善我們的模型一樣,SST-2 和 IMDb 任務(wù)的目前最先進(jìn)水平的模型也使用外部的監(jiān)督訓(xùn)練集來(lái)改善模型。對(duì)于 SST-2 任務(wù),最好的模型使用了 8200 萬(wàn)條無(wú)標(biāo)簽的亞馬遜評(píng)論,IMDb 任務(wù)的最好模型使用了 50000 條無(wú)標(biāo)簽的 IMD 評(píng)論,以及 22500 條監(jiān)督訓(xùn)練樣本。這兩種方法都用了比機(jī)器翻譯數(shù)據(jù)集更加相似的數(shù)據(jù)來(lái)擴(kuò)展數(shù)據(jù)。這些模型的優(yōu)點(diǎn)可能會(huì)突出附加數(shù)據(jù)的種類和有益額外數(shù)據(jù)之間的聯(lián)系。
六、結(jié)論
我們展示了如何訓(xùn)練神經(jīng)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)機(jī)器翻譯,如何讓模型去學(xué)習(xí)語(yǔ)境中單詞的表征,我們還展示了能夠使用一部分網(wǎng)絡(luò)(MT-LSTM)去幫助網(wǎng)絡(luò)學(xué)習(xí)其他的自然語(yǔ)言處理任務(wù)。MT-LSTM 給分類任務(wù)和問(wèn)答模型提供的語(yǔ)境向量(也就是 CoVe),并令它們得到了性能提升。我們?cè)谟?xùn)練 MT-LSTM 時(shí)使用的數(shù)據(jù)越多,模型性能的提升就越大,這或許和使用其他形式的預(yù)訓(xùn)練向量表征帶來(lái)的性能提升是互補(bǔ)的。通過(guò)結(jié)合來(lái)自于 Glove、CoVe、字符向量的信息,我們能夠在很多自然語(yǔ)言處理任務(wù)上提升基準(zhǔn)模型的性能。
1. 代碼發(fā)布
我們希望我們最好的 MT-LSTM 模型(就是那個(gè)我們用來(lái)生成 CoVe 的最佳模型)能夠進(jìn)一步激發(fā)對(duì)自然語(yǔ)言處理中可重用表征的探索。代碼包括在 PyTorch 上如何生成 CoVe 的例子(代碼請(qǐng)參見(jiàn)原文鏈接)。
原文:https://einstein.ai/research/learned-in-translation-contextualized-word-vectors
【本文是51CTO專欄機(jī)構(gòu)“機(jī)器之心”的原創(chuàng)譯文,微信公眾號(hào)“機(jī)器之心( id: almosthuman2014)”】