最新自然語(yǔ)言處理(NLP)四步流程:Embed->Encode->Attend->Predict

最新自然語(yǔ)言處理(NLP)四步流程:Embed->Encode->Attend->Predict

2016-11-22 21:57


http://www.17bigdata.com/%E4%B8%80%E5%A4%A9%E6%90%9E%E6%87%82%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0.html

過(guò)去半年以來(lái),自然語(yǔ)言處理領(lǐng)域進(jìn)化出了一件神器莹弊。此神器乃是深度神經(jīng)網(wǎng)絡(luò)的一種新模式磷箕,該模式分為:embed较坛、encode拙已、attend、predict四部分绪商。本文將對(duì)這四個(gè)部分娓娓道來(lái)坛掠,并且剖析它在兩個(gè)實(shí)例中的用法。

人們?cè)谡務(wù)?a target="_blank" rel="nofollow">機(jī)器學(xué)習(xí)帶來(lái)的提升時(shí)盗忱,往往只想到了機(jī)器在效率和準(zhǔn)確率方面帶給人們的提升酱床,然而最重要的一點(diǎn)卻是機(jī)器學(xué)習(xí)算法的通用性。如果你想寫一段程序來(lái)識(shí)別社交媒體平臺(tái)上的侮辱性帖子趟佃,就把問(wèn)題泛化為“需要輸入一段文本扇谣,預(yù)測(cè)出文本的類別ID”昧捷。這種分類與識(shí)別侮辱性帖子或是標(biāo)記電子郵件類別之類的具體任務(wù)無(wú)關(guān)。如果兩個(gè)問(wèn)題的輸入和輸出類型都一致罐寨,那我們就應(yīng)復(fù)用同一套模型的代碼靡挥,兩者的區(qū)別應(yīng)該在于送入的訓(xùn)練數(shù)據(jù)不同,就像我們使用同一個(gè)游戲引擎玩不同的游戲鸯绿。

筆者用spaCy和Keras實(shí)現(xiàn)了自然語(yǔ)言推理的可分解注意力模型跋破。代碼已經(jīng)上傳到github

假設(shè)你有一項(xiàng)強(qiáng)大的技術(shù),可以預(yù)測(cè)實(shí)數(shù)稠密向量的類別標(biāo)簽瓶蝴。只要輸入輸出的格式相同毒返,你就能用這項(xiàng)技術(shù)解決所有的問(wèn)題。與此同時(shí)舷手,你有另一項(xiàng)技術(shù)拧簸,可以用一個(gè)向量和一個(gè)矩陣預(yù)測(cè)出另一個(gè)向量。那么男窟,現(xiàn)在你手里就握著三類問(wèn)題的解決方案了盆赤,而不是兩類。為什么是三類呢歉眷?因?yàn)槿绻谌悊?wèn)題是通過(guò)矩陣和一個(gè)向量牺六,得到一個(gè)類別標(biāo)簽,顯然你可以組合利用前兩種技術(shù)來(lái)解決姥芥。大多數(shù)NLP問(wèn)題可以退化成輸入一條或多條文本的機(jī)器學(xué)習(xí)問(wèn)題兔乞。如果我們能將這些文本轉(zhuǎn)化為向量,我們就可以復(fù)用現(xiàn)有的深度學(xué)習(xí)框架凉唐。接下來(lái)就是具體的做法庸追。

文本類深度學(xué)習(xí)的四部曲

嵌入式詞語(yǔ)表示,也被稱為“詞向量”台囱,是現(xiàn)在最廣泛使用的自然語(yǔ)言處理技術(shù)之一淡溯。詞向量表示是一種既能表示詞本身又可以考慮語(yǔ)義距離的表示方法。然而簿训,大多數(shù)NLP問(wèn)題面對(duì)的不是單個(gè)詞語(yǔ)咱娶,而是需要分析更長(zhǎng)的文本內(nèi)容。現(xiàn)在有一個(gè)簡(jiǎn)單而靈活的解決方案强品,它在許多任務(wù)上都表現(xiàn)出了卓越的性能膘侮,即RNN模型。將文本用一個(gè)向量的序列表示之后的榛,使用雙向RNN模型將向量編碼為一個(gè)句子向量矩陣琼了。這個(gè)矩陣的每一行可以理解為詞向量 —— 它們對(duì)句子的上下文敏感。最后一步被稱為注意力機(jī)制。這可以將句子矩陣壓縮成一個(gè)句子向量雕薪,用于預(yù)測(cè)昧诱。

第一步:詞向量

詞向量表將高維的稀疏二值向量映射成低維的稠密向量。舉個(gè)例子所袁,假設(shè)我們收到的文本是一串ASCII字符盏档,共有256種可能值,于是我們把每一種可能值表示為一個(gè)256維的二值向量燥爷。字符’a’的向量只有在第97維的值等于1蜈亩,其它維度的值都等于0。字符’b’的向量只有在第98維的值等于1局劲,其它維度的值都等于0勺拣。這種表示方法稱為’one hot’形式。不同字符的向量表示完全不一樣鱼填。

大部分神經(jīng)網(wǎng)絡(luò)模型首先都會(huì)把輸入文本切分成若干個(gè)詞語(yǔ),然后將詞語(yǔ)都用詞向量表示毅戈。另一些模型用其它信息擴(kuò)展了詞向量表示苹丸。比如,除了詞語(yǔ)的ID之外苇经,還會(huì)輸入一串標(biāo)簽赘理。然后可以學(xué)習(xí)得到標(biāo)簽向量,將標(biāo)簽向量拼接為詞向量扇单。這可以讓你將一些位置敏感的信息加入到詞向量表示中商模。然而,有一個(gè)更強(qiáng)大的方式來(lái)使詞語(yǔ)表示呈現(xiàn)出語(yǔ)境相關(guān)蜘澜。

第二步:編碼

假設(shè)得到了詞向量的序列施流,編碼這一步是將其轉(zhuǎn)化為句子矩陣,矩陣的每一行表示每個(gè)詞在上下文中所表達(dá)的意思鄙信。

這一步用到了雙向RNN模型瞪醋。LSTM和GRU結(jié)構(gòu)的模型效果都不錯(cuò)。每一行向量通過(guò)兩部分計(jì)算得到:第一部分是正向計(jì)算装诡,第二部分是逆向計(jì)算银受,然后拼接兩部分得到完整的向量。計(jì)算過(guò)程如下圖代碼所示:

我個(gè)人認(rèn)為雙向RNN會(huì)是今后的主流鸦采。RNN的主要應(yīng)用是讀入文本內(nèi)容宾巍,然后從中預(yù)測(cè)出一些信息。而我們是用它來(lái)計(jì)算一個(gè)中間表達(dá)狀態(tài)渔伯。最重要的一點(diǎn)是得到的表達(dá)能夠反映詞語(yǔ)在文中的意義顶霞。理論上應(yīng)該學(xué)到“pick up”與“pick on”這兩個(gè)詞語(yǔ)的意義有區(qū)別。這一直是NLP模型的巨大弱點(diǎn)≡酆担現(xiàn)在我們有了一個(gè)解決方案确丢。

第三步:注意力機(jī)制

這一步是將上一步的矩陣表示壓縮為一個(gè)向量表示绷耍,因此可以被送入標(biāo)準(zhǔn)的前饋神經(jīng)網(wǎng)絡(luò)進(jìn)行預(yù)測(cè)。注意力機(jī)制對(duì)于其它壓縮方法的優(yōu)勢(shì)在于它輸入一個(gè)輔助的上下文向量

Yang等人在2016年發(fā)表的論文提出了一種注意力機(jī)制鲜侥,輸入一個(gè)矩陣褂始,輸出一個(gè)向量。區(qū)別于從輸入內(nèi)容中提取一個(gè)上下文向量描函,該機(jī)制的上下文向量是被當(dāng)做模型的參數(shù)學(xué)習(xí)得到崎苗。這使得注意機(jī)制變成一個(gè)純粹的壓縮操作,可以替換任何的池化步驟舀寓。

第四步:預(yù)測(cè)

文本內(nèi)容被壓縮成一個(gè)向量之后胆数,我們可以學(xué)習(xí)最終的目標(biāo)表達(dá) —— 一種類別標(biāo)簽、一個(gè)實(shí)數(shù)值或是一個(gè)向量等等互墓。我們也可以將網(wǎng)絡(luò)模型看做是狀態(tài)機(jī)的控制器必尼,如一個(gè)基于轉(zhuǎn)移的解析器,來(lái)做結(jié)構(gòu)化預(yù)測(cè)篡撵。

有趣的是判莉,大部分的NLP模型通常更青睞淺層的前饋網(wǎng)絡(luò)。這意味著近期在機(jī)器視覺(jué)領(lǐng)域取得的重要技術(shù)至今為止并沒(méi)有影響到NLP領(lǐng)域育谬,比如residual connections 和 batch normalization券盅。

實(shí)例1:自然語(yǔ)言推測(cè)的可分解注意力模型

自然語(yǔ)言推測(cè)是給一對(duì)句子預(yù)測(cè)類別標(biāo)簽的問(wèn)題,類別標(biāo)簽則表示它們兩者的邏輯關(guān)系膛檀。斯坦福自然語(yǔ)言預(yù)測(cè)文本集使用三種類別標(biāo)簽:

1.推演(Entailment):如果第一句話是真的锰镀,那么第二句話一定為真。

2.矛盾(Contradiction):如果第一句話是真的咖刃,那么第二句話一定為假泳炉。

3.中性(Neutral):上述兩者都不是。

Bowman等人在論文中給出了幾條例子:

文本內(nèi)容假設(shè)內(nèi)容標(biāo)簽

某人正在檢查一位來(lái)自中亞國(guó)家人士的服裝此人正在睡覺(jué)矛盾

一位長(zhǎng)者和一位青年在微笑兩個(gè)人在笑僵缺,嘲笑地板上玩耍的貓中性

一輛黑色賽車在人群前面啟動(dòng)一個(gè)男人正沿著一條孤獨(dú)的路行駛矛盾

一種多個(gè)男性玩的足球游戲幾位男性正在進(jìn)行體育運(yùn)動(dòng)推演

一位微笑盛裝打扮的女性拿著一把傘一位快樂(lè)的女性在一個(gè)童話服裝會(huì)上握著一把傘中性

這份語(yǔ)料庫(kù)的目的之一是為我們提供一個(gè)新的胡桃、規(guī)模合適的語(yǔ)料庫(kù)用于研發(fā)將句子編碼為向量的模型。例如磕潮,Bowman在2016年發(fā)表的論文介紹了一種基于轉(zhuǎn)移的模型翠胰,它依次讀入句子,構(gòu)建一種樹形結(jié)構(gòu)的內(nèi)部表達(dá)自脯。

Bowman他們的準(zhǔn)確率達(dá)到了83.2%之景,比之前的工作成果提升了一大截。過(guò)了不到半年膏潮,Parikh的論文提出的模型取得了86.8%的準(zhǔn)確率锻狗,而使用的模型參數(shù)數(shù)量只有Bowman模型的10%。不久之后,Chen等人發(fā)表的論文提出了一種效果更好的系統(tǒng)轻纪,準(zhǔn)確率達(dá)到88.3%油额。當(dāng)我第一次閱讀Parikh的論文時(shí),我無(wú)法理解他們的模型如何取得這么好的效果刻帚。原因在于他們的模型用獨(dú)特的注意力機(jī)制融合了兩個(gè)句子矩陣:

關(guān)鍵的優(yōu)勢(shì)是他們講句子轉(zhuǎn)為向量的壓縮步驟合并完成潦嘶,而Bowman他們則是分別將兩個(gè)句子轉(zhuǎn)為向量。請(qǐng)記住Vapnik的原則:

“當(dāng)解決一個(gè)關(guān)鍵問(wèn)題時(shí)崇众,不要解決一個(gè)更一般的問(wèn)題作為中間步驟”

—— VLADIMIR VAPNIK

Parikh的論文將自然語(yǔ)言推測(cè)任務(wù)當(dāng)做是關(guān)鍵問(wèn)題掂僵。他們想辦法直接解決這個(gè)問(wèn)題,因此比單獨(dú)給句子編碼有巨大的優(yōu)勢(shì)顷歌。Bowman等人則更關(guān)注問(wèn)題的泛化锰蓬,也是針對(duì)此構(gòu)建模型。他們的模型適用的場(chǎng)景也就比Parikh的模型更廣泛眯漩。比如說(shuō)芹扭,利用Bowman的模型,你可以緩存句子向量赦抖,使得計(jì)算句子相似度的效率更高冯勉。

實(shí)例2:文檔分類的分層注意力網(wǎng)絡(luò)

給文檔分類是我接觸到的第一個(gè)NLP項(xiàng)目。澳大利亞的類似證券交易所的機(jī)構(gòu)資助了一個(gè)項(xiàng)目摹芙,爬取澳大利亞的網(wǎng)站頁(yè)面,并且自動(dòng)檢測(cè)金融詐騙宛瞄。盡管這個(gè)項(xiàng)目已經(jīng)過(guò)去了一段時(shí)間浮禾,但是文檔分類的方法在之后的十年中幾乎沒(méi)有變化。這也是我看到Y(jié)ang等人發(fā)表的分層注意力網(wǎng)絡(luò)模型之后如此興奮的原因份汗。這是繼詞袋模型之后盈电,我看到的第一篇真正有通用性改進(jìn)的論文。下面是它的原理杯活。

該模型接收一篇文檔作為輸入匆帚,文檔由句子的序列組成,其中每個(gè)句子是一個(gè)詞語(yǔ)的序列旁钧。每句話的每個(gè)詞語(yǔ)分別編碼吸重,生成兩個(gè)詞向量序列,每個(gè)序列表示一個(gè)句子歪今。這兩個(gè)序列分別編碼成兩個(gè)句子矩陣嚎幸。然后由注意力機(jī)制將句子矩陣壓縮為句子向量,多個(gè)句子向量又組成文本矩陣寄猩。最后一步注意力操作將文本矩陣壓縮為文本向量嫉晶,然后送入最終的預(yù)測(cè)網(wǎng)絡(luò)來(lái)預(yù)測(cè)類別標(biāo)簽。

該模型使用注意機(jī)制作為一個(gè)純粹的壓縮步驟:它學(xué)會(huì)了把矩陣作為輸入,然后將其概括成一個(gè)向量替废。這種學(xué)習(xí)過(guò)程是通過(guò)學(xué)習(xí)上下文向量的兩個(gè)注意力轉(zhuǎn)換箍铭,我們可以將這種轉(zhuǎn)換理解為表示模型認(rèn)為相關(guān)的詞語(yǔ)或者句子,該模型會(huì)找到理想相關(guān)椎镣≌┗穑或者,你也可以把整個(gè)壓縮過(guò)程看做是特征提取的過(guò)程衣陶。按照這種觀點(diǎn)柄瑰,上下文向量只是另一個(gè)不透明的參數(shù)。

作者方法YELP ‘13YELP ‘14YELP ‘15IMDB

Yang et al. (2016)HN-ATT68.270.57149.4

Yang et al. (2016)HN-AVE6769.369.947.8

Tang et al. (2015)Paragraph Vector57.759.260.534.1

Tang et al. (2015)SVM + Bigrams57.661.662.440.9

Tang et al. (2015)SVM + Unigrams58.96061.139.9

Tang et al. (2015)CNN-word59.76161.537.6

將yang等人的模型與卷積神經(jīng)網(wǎng)絡(luò)做比較剪况,可以得到有意思的結(jié)果教沾。兩個(gè)模型都能自動(dòng)提取位置敏感特征。然而译断,CNN模型既不通用授翻,效率也較低。而雙向RNN模型只需要對(duì)每個(gè)句子讀入兩次 ——正向一次孙咪,反向一次堪唐。LSTM編碼還能提取任意長(zhǎng)度的特征,因?yàn)榫渥由舷挛牡娜魏涡畔⒍加锌赡鼙蝗嗳朐~語(yǔ)的向量表示翎蹈。將句子矩陣壓縮成向量的步驟簡(jiǎn)單并且有效的淮菠。要構(gòu)建文檔向量,只需要對(duì)句子向量再進(jìn)行一次同樣的操作荤堪。

提升模型準(zhǔn)確率的主要因素是雙向LSTM編碼器合陵,它創(chuàng)建了位置敏感的特點(diǎn)。作者通過(guò)將注意力機(jī)制替換為平均池化澄阳,證明了上述觀點(diǎn)拥知。使用平均池化的方法,該模型在所有測(cè)試數(shù)據(jù)上仍然優(yōu)于以前的最好模型碎赢。然而低剔,注意力機(jī)制進(jìn)一步普遍地提高了性能。

后續(xù)內(nèi)容

我已經(jīng)用我們自己的NLP庫(kù)spaCy實(shí)現(xiàn)了第一個(gè)例子肮塞,我正在實(shí)現(xiàn)文本分類的系統(tǒng)襟齿。我們還計(jì)劃開發(fā)一個(gè)SpaCy版的通用雙向LSTM模型,能夠方便地將預(yù)訓(xùn)練的詞向量用于實(shí)際問(wèn)題中峦嗤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蕊唐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子烁设,更是在濱河造成了極大的恐慌替梨,老刑警劉巖钓试,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異副瀑,居然都是意外死亡弓熏,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門糠睡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)挽鞠,“玉大人,你說(shuō)我怎么就攤上這事狈孔⌒湃希” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵均抽,是天一觀的道長(zhǎng)嫁赏。 經(jīng)常有香客問(wèn)我,道長(zhǎng)油挥,這世上最難降的妖魔是什么潦蝇? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮深寥,結(jié)果婚禮上攘乒,老公的妹妹穿的比我還像新娘。我一直安慰自己惋鹅,他們只是感情好则酝,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著闰集,像睡著了一般堤魁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上返十,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音椭微,去河邊找鬼洞坑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蝇率,可吹牛的內(nèi)容都是我干的迟杂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼本慕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼排拷!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起锅尘,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤监氢,失蹤者是張志新(化名)和其女友劉穎布蔗,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浪腐,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纵揍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了议街。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泽谨。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖特漩,靈堂內(nèi)的尸體忽然破棺而出吧雹,到底是詐尸還是另有隱情,我是刑警寧澤涂身,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布雄卷,位于F島的核電站,受9級(jí)特大地震影響访得,放射性物質(zhì)發(fā)生泄漏龙亲。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一悍抑、第九天 我趴在偏房一處隱蔽的房頂上張望鳄炉。 院中可真熱鬧,春花似錦搜骡、人聲如沸拂盯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)谈竿。三九已至,卻和暖如春摸吠,著一層夾襖步出監(jiān)牢的瞬間空凸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工寸痢, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留呀洲,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓啼止,卻偏偏與公主長(zhǎng)得像道逗,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子献烦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容