本文主要用于記錄Facebook AI研究中心于2017年提出的一種基于監(jiān)督學(xué)習(xí)的句向量表達(dá)方式。該文也是業(yè)界最先一批提出句向量預(yù)訓(xùn)練概念的論文崖面。本筆記主要為方便初學(xué)者快速入門唾糯,以及自我回顧柄驻。
論文鏈接:https://arxiv.org/pdf/1705.02364.pdf
Github:https://github.com/facebookresearch/InferSent
基本目錄如下:
- 摘要
- 核心思想
- 總結(jié)
------------------第一菇 - 摘要------------------
1.1 論文摘要
當(dāng)代比較成熟的NLP系統(tǒng)的底層特征都僅僅依賴于從大規(guī)模語料庫中訓(xùn)練出來的詞向量县习。而對于那些長句或是段落的特征向量的表達(dá)掘而,目前的研究還遠(yuǎn)遠(yuǎn)不夠迫悠。僅有的一些依賴于非監(jiān)督學(xué)習(xí)得到的句向量表達(dá)鹏漆,也因為未能達(dá)到預(yù)期效果而被棄用。本論文提出了一種基于SNLI語料庫預(yù)訓(xùn)練出來的通用的句向量的表達(dá)创泄,且經(jīng)過實驗驗證艺玲,該種方法訓(xùn)練得到的句向量,在多個NLP基礎(chǔ)任務(wù)中都表現(xiàn)出了卓越的效果鞠抑。同時饭聚,本論文還希望效仿ImageNet數(shù)據(jù)集(多數(shù)現(xiàn)今模型都在其上面預(yù)訓(xùn)練)在CV領(lǐng)域的地位一樣,基于推理的數(shù)據(jù)集(SNLI)搁拙,也能成為NLP領(lǐng)域的標(biāo)桿(即通用的預(yù)訓(xùn)練數(shù)據(jù)集)
------------------第二菇 - 核心思想------------------
2.1 句向量的表達(dá)
自從word2vec詞向量訓(xùn)練方法被提出以后秒梳,在NLP學(xué)術(shù)界就仿佛打開了潘多拉魔盒一般,各種基于分布式表達(dá)的詞向量的訓(xùn)練如雨后春筍一般冒出箕速,比較著名的都有(glove,fasttext酪碘。。等)盐茎。但是兴垦,如何去捕獲在一句話或一個段落中詞與詞之間的關(guān)聯(lián)關(guān)系,即如何去表達(dá)一個完整的句向量字柠,始終是一個未解決的問題探越。
本文就是想去嘗試,推出一種通用的句向量模型的有監(jiān)督的訓(xùn)練方法窑业。其中有倆個問題需要去解決钦幔,
1)選用哪一種神經(jīng)網(wǎng)絡(luò)模型?
2)選用哪一種數(shù)據(jù)集去訓(xùn)練該網(wǎng)絡(luò)模型常柄?
因此节槐,說白了搀庶,該論文就是用多種模型在多種數(shù)據(jù)集上去訓(xùn)練得到一個句向量模型,再將訓(xùn)練得到的句向量模型運用于其他各個NLP的下游任務(wù)铜异,通過比較在下游任務(wù)中的表現(xiàn)哥倔,來反推出,哪一種句向量模型是更具有通用性的~當(dāng)然揍庄,從論文的標(biāo)題我們也應(yīng)該能看出來咆蒿,訓(xùn)練的語料庫其實就是SNLI(該語料庫是斯坦福大學(xué)所維護(hù)的)。
簡單來說蚂子,該語料庫就是去推理判斷每一組句子的關(guān)系(一共有570k個句子對)沃测,其中,對應(yīng)的標(biāo)簽有3個食茎,分別為(entailment, contradiction, neutral)蒂破。相信,在讀的各位别渔,如果是對句向量或是句句匹配任務(wù)有研究的同學(xué)附迷,應(yīng)該對該數(shù)據(jù)集并不陌生(甚至可以說是,檢驗新的模型的必測數(shù)據(jù)集哈哈)哎媚。而論文中喇伯,對該數(shù)據(jù)集訓(xùn)練出來的句向量效果最佳的表現(xiàn),解釋為拨与,high-level understanding task that involves reasoning about the semantic relationship within sentences稻据。意思就是,必須要完全理解了句子的意思买喧,才能對倆句話的關(guān)系作出準(zhǔn)確的判斷捻悯。(而不像其他簡單的任務(wù),可能就是詞詞匹配淤毛,或是距離匹配)
2.2 預(yù)訓(xùn)練方法
有了訓(xùn)練語料秋度,那就是選擇神經(jīng)網(wǎng)絡(luò)模型的問題了。因為钱床,該SNLI語料庫中是句子對的形式,因此埠居,有兩種方式來生成最終的特征向量
1)單獨分別對每一個句子生成句向量查牌。
2)對倆個句子同時生成句向量。
基于本文的目標(biāo)滥壕,是提出一種通用的句向量的表達(dá)模型纸颜,顯然第一種方法更合適,而對于生成的每一組句向量绎橘,我們也會進(jìn)行concact處理胁孙,整合生成特征句子唠倦,再輸入到最后一層分類器中′探希基礎(chǔ)的訓(xùn)練模型架構(gòu)如下圖所示稠鼻,
因此,本文其實是著重實驗了多個(7個)句向量的生成模型架構(gòu)狂票。主要的模型架構(gòu)闡述如下
1)LSTM +GRU
該模型架構(gòu)就是最普通最簡單的LSTM模型候齿,當(dāng)然是雙向的。同時也參考了SkipThought中的方法闺属,即將BI-GRU的慌盯,前向最后時刻狀態(tài)與后向最后時刻狀態(tài)相疊加。
2)BiLSTM with mean/max pooling
這個就是取BiLSTM結(jié)果的時候的處理方式不同掂器,mean pooling就是把所有時刻的狀態(tài)值取平均亚皂,max pooling就是取最大值。具體的示意圖如下国瓮,也比較簡單灭必,
- Self-attentive network
該方法可以參考我的另一篇論文筆記。思路也比較簡單巍膘,就是對句子中對每一個詞都計算得出一個權(quán)重厂财,再相加得出句向量。
4)Hierarchical ConvNet
其實就是一個4層的卷積網(wǎng)絡(luò)峡懈,每一層經(jīng)過max pooling都會得到一個句向量的表達(dá)璃饱,最后將4層得出的concact就是最終的句向量表達(dá),思路也比較簡單肪康,示意圖如下荚恶,
2.3 實驗方法
之后,就是具體的實驗部分磷支,作者將上述訓(xùn)練得到的句向量谒撼,分別運用于12項NLP任務(wù)之中,在比較上述幾種模型的同時雾狈,也比較了其他各種生成句向量的方法廓潜。當(dāng)然,結(jié)論肯定是上述利用SNLI的句向量表達(dá)要優(yōu)于其他網(wǎng)絡(luò)訓(xùn)練出的句向量善榛,且最佳的模型為BiLSTM + Max Pooling辩蛋。具體的實驗過程本文不作展開,有興趣的同學(xué)可以參考原論文移盆,當(dāng)然本文也有開源代碼(基于pytorch)悼院,大家可以仔細(xì)研讀,作為入門的baseline也是相當(dāng)不錯的咒循。
------------------第三菇 - 總結(jié)------------------
3.1 總結(jié)
到這里据途,整篇論文的核心思想及其創(chuàng)新點已經(jīng)說清楚了绞愚。本文主要是推出了一種預(yù)訓(xùn)練句向量的思路,并且給出了最佳的預(yù)訓(xùn)練數(shù)據(jù)及最佳的預(yù)訓(xùn)練模型颖医,并且通過實驗論證了其可行性位衩。當(dāng)然,不得不承認(rèn)便脊,離通用的句向量模型還有很長的路要走~哈哈~
簡單總結(jié)一下本文就是先羅列了一下該論文的摘要蚂四,再具體介紹了一下本文作者的思路,也簡單表述了一下哪痰,其中的模型細(xì)節(jié)及訓(xùn)練細(xì)節(jié)遂赠。希望大家讀完本文后能進(jìn)一步加深對該論文的理解。有說的不對的地方也請大家指出晌杰,多多交流跷睦,大家一起進(jìn)步~??