Neil Zhu峦朗,簡書ID Not_GOD丧失,University AI 創(chuàng)始人 & Chief Scientist半沽,致力于推進世界人工智能化進程。制定并實施 UAI 中長期增長戰(zhàn)略和目標(biāo)到忽,帶領(lǐng)團隊快速成長為人工智能領(lǐng)域最專業(yè)的力量橄教。
作為行業(yè)領(lǐng)導(dǎo)者,他和UAI一起在2014年創(chuàng)建了TASA(中國最早的人工智能社團), DL Center(深度學(xué)習(xí)知識中心全球價值網(wǎng)絡(luò))喘漏,AI growth(行業(yè)智庫培訓(xùn))等颤陶,為中國的人工智能人才建設(shè)輸送了大量的血液和養(yǎng)分。此外陷遮,他還參與或者舉辦過各類國際性的人工智能峰會和活動,產(chǎn)生了巨大的影響力垦江,書寫了60萬字的人工智能精品技術(shù)內(nèi)容帽馋,生產(chǎn)翻譯了全球第一本深度學(xué)習(xí)入門書《神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)》,生產(chǎn)的內(nèi)容被大量的專業(yè)垂直公眾號和媒體轉(zhuǎn)載與連載比吭。曾經(jīng)受邀為國內(nèi)頂尖大學(xué)制定人工智能學(xué)習(xí)規(guī)劃和教授人工智能前沿課程绽族,均受學(xué)生和老師好評。
前面的系列文章中衩藤,我介紹了一種用來做機器翻譯的簡單的編碼解碼器模型吧慢。這個模型在英法翻譯任務(wù)上效果很好。但是在本文中赏表,我們會簡要討論這個模型自身的缺點检诗,給出近期出現(xiàn)的引入軟注意力機制來克服這些缺點并給出了顯著性能提升的模型。
另外瓢剿,我還會列出一些近期的推廣這種神經(jīng)網(wǎng)絡(luò)機器翻譯模型的方法到其他的場景的嘗試的研究成果逢慌,比如說圖像描述生成和視頻描述生成。最后我會對未來的研究方向做一個展望间狂,并給出一些關(guān)于文中提及的模型開源實現(xiàn)攻泼。
簡單的編碼器-解碼器架構(gòu)存在的問題
編碼器將輸入序列壓縮成一個定長的向量,然后從這個定長向量來產(chǎn)生全句的翻譯。簡言之忙菠,定長向量(也稱上下文向量)何鸡,必須包含源語句中的每一個細(xì)節(jié)都包含進去。直覺上看牛欢,這意味著由編碼器近似的真實函數(shù)必須是非常地非線性和復(fù)雜的骡男。而且,上下文向量的維度必須足夠大使得任意長度的句子都可以被壓縮氢惋。
在我的這篇 On the Properties of Neural Machine Translation: Encoder-Decoder Approaches 文章中洞翩,我們通過實驗確認(rèn)了在編碼器-解碼器模型規(guī)模很小的時候,翻譯質(zhì)量會隨著源語句長度增加而急劇下降焰望。加上 Sutskever et al. (2014) 的更好的結(jié)果骚亿,使用了同樣類型的編碼器-解碼器架構(gòu),指出編碼器的表示能力需要被擴展熊赖,也就是說模型必須變很大来屠,來解決長句子的問題。
當(dāng)然了震鹉,更大的模型帶來的是更多的計算和內(nèi)存需求俱笛。使用諸如 NVIDIA Titan X 這樣的高級 GPU,可以幫助我們處理計算的問題传趾,不過也還是不足以解決內(nèi)存問題(至少現(xiàn)在是這樣)∮ぃ現(xiàn)在能夠達(dá)到的內(nèi)存通常限制在幾個 G 的規(guī)模,這就帶來對模型大小的限制浆兰。(注意:使用多 GPU磕仅,并將單一模型分布置于這些 GPU 上是可以解決這個問題的。但是這里我們簡化場景為單一 GPU 機器簸呈,存在著空間榕订,計算能力和其他物理上的限制)
接著,問題就是:“我們能夠做得比簡單的 編碼器-解碼器 模型更好么蜕便?”
用于神經(jīng)機器翻譯軟注意力機制
簡單編解碼模型的最大問題就是任意長度的句子需要被壓縮成定長向量劫恒。當(dāng)你思考我們一般處理壓縮任務(wù)的方法時能體會到這個問題的詭異。當(dāng)我們壓縮文件時轿腺,壓縮后的文件長度一般是和原始文件的長度成比例的两嘴。(這也說得不準(zhǔn)確,應(yīng)該是族壳,壓縮后的文件大小和原始文件中的信息量成比例溶诞,而不是簡單的長度。然而决侈,我們再簡化一下螺垢,原始文件的長度反應(yīng)了文件中的信息量喧务。)
繼續(xù)類比數(shù)字計算機,我們不會按照定長向量來存放整個句子枉圃,而是根據(jù)源句子的長度來放置句子到內(nèi)存單元中功茴。通過BiRNN 來做到這一點。這是一種雙向的 RNN孽亲,從正向和反向來閱讀源語句坎穿。
現(xiàn)在我們記來自 正向 RNN 的隱藏狀態(tài)為
而 反向 RNN 的隱藏狀態(tài)記為
正如我們在前面的文章中討論的那樣,RNN 通過一次讀取一個符號來總結(jié)序列返劲。所以
是對源語句從開頭到第 j 個詞的總結(jié)玲昧,而
就是對源語句從結(jié)尾到反向第 j 個詞的總結(jié)。見下圖篮绿,理解這兩個狀態(tài)的含義孵延。
但是,在每個詞處的總結(jié)并不是關(guān)于整個輸入語句的最優(yōu)總結(jié)亲配。由于序列化的特性尘应,RNN 傾向于記住出現(xiàn)更近的符號。換言之吼虎,輸入符號越遠(yuǎn)離 j犬钢,RNN 的隱藏狀態(tài)就越不可能記起這個符號。用來表示隱藏狀態(tài)的連接的注解向量能夠最好地表示當(dāng)前詞思灰。
這肯定不是一個已被認(rèn)可的假設(shè)玷犹,但是為了更好地理解,我將注解向量看做是 上下文依賴的詞表示洒疚。而且箱舞,我們可以將這個上下文依賴的詞表示方法看成變長存儲源語句的一種機制,而非簡單的編解碼器那樣的定長定維度的表示拳亿。
借助這樣的變長表示,解碼器需要能夠?qū)γ總€目標(biāo)詞選擇性地集中在一個或者多個上下文依賴的詞表示(或者注解向量)上愿伴。所以肺魁,每次我們需要選擇哪個注解向量呢?
假設(shè)隔节,你正在翻譯一個給定的源語句鹅经,已經(jīng)寫了前 i-1 個目標(biāo)詞序 (y_1, y_2, ..., y_{i-1}),下一步就是確定哪個目標(biāo)詞作為第 i 個目標(biāo)詞怎诫。此時瘾晃,你如何決定翻譯哪個源詞呢?
一種典型的翻譯器是看每個源詞 x_j(或者它的上下文依賴表示 h_j)幻妓,將其與前面 i-1 個已翻譯的詞序 (y_1, y_2, ..., y_{i-1})合在一起蹦误,確定源詞 x_j 是否已經(jīng)被翻譯過了(等價地看,就是源詞 x_j 對下一個目標(biāo)詞有多相關(guān))。然后對在源語句中的每個詞重復(fù)這樣的過程强胰。
Dzmitry bahdanau 和我跟Yoshua Bengio在去年夏天提出了一個將小神經(jīng)網(wǎng)絡(luò)包含進解碼器中的方法實現(xiàn)了這個想法舱沧。小的神經(jīng)網(wǎng)絡(luò),我們稱之為 注意力機制(圖 3. 中紫色的部分)使用前面的解碼器的隱藏狀態(tài) z_i (已經(jīng)翻譯過了的)和一個源 上下文依賴的詞表示 h_j 作為輸入偶洋。注意力機制使用單隱藏層的神經(jīng)網(wǎng)絡(luò)實現(xiàn)熟吏,其輸出是一個標(biāo)量
參見圖 4.
一旦我們已經(jīng)計算出了每個源詞的相關(guān)分?jǐn)?shù),我們要保證歸一化玄窝。這個通過 softmax 歸一化就可以了
可以參看圖 5的圖形化解釋牵寺。
我們?yōu)楹涡枰@樣的歸一化?這里其實有很多的原因恩脂,但是我最喜歡的解釋是帽氓,這樣的方式讓我們可以用概率框架來解釋通過注意力機制分配的分?jǐn)?shù)。從概率上看东亦,我們可以將注意力權(quán)重
看做是解碼器從所有 T 個源詞中選擇第 j 個上下文依賴的源詞表示的概率杏节。所以,我們可以計算在這個由
確定的分布下源詞表示期望值
這個期望值向量
總結(jié)了整個源語句的信息典阵,但是包含了對不同位置的詞的重要性的考量奋渔。任何注解向量(上下文依賴向量)通過注意力機制確定為相關(guān)的(更高的注意力權(quán)重)比那些低注意力權(quán)重的表示得更好。
一旦歹啼,向量
計算好了玄渗,每個步驟 i 其實就跟前面的解碼器過程相同了,只需要把前面的
改成
軟注意力機制給出什么啟示狸眼?
引入注意力機制的方法已經(jīng)成為深度學(xué)習(xí)領(lǐng)域最熱門的話題之一(見Cho et al., 2015)而對引入注意力在神經(jīng)網(wǎng)絡(luò)中的后果的討論——是否可以將我們帶到另一個層次的成功藤树,也是非常有趣的事情,這些討論超過了一篇博文的篇幅了拓萌∷甑觯看看圖 6,這是一個沒有任何相鄰信息的考慮的學(xué)到的注意力例子微王。(盡管弱監(jiān)督通常被用來表示強化學(xué)習(xí)屡限,我任務(wù)這類模型同樣是弱監(jiān)督的。除了最終目標(biāo)的翻譯炕倘,其他部分都沒有監(jiān)督的過程(內(nèi)部對應(yīng)钧大、注意力、相鄰)存在)
很棒眶诈,這個模型已經(jīng)自動找出了兩個語言之間的對應(yīng)結(jié)構(gòu)。我很確定劣挫,如果你說法語或者德語的話册养,會比較認(rèn)可它的效果。但是問題是压固,這樣的注意力機制是不是能夠提升翻譯的性能球拦?
是的,當(dāng)然帐我!而且效果很顯著坎炼。特別在 [Bahdandau et al., 2015] 中,我們看到拦键,引入注意力機制谣光,翻譯的質(zhì)量不會隨著語句的長度增加而下降,甚至是模型的規(guī)模也不發(fā)生太大的情況下芬为,正如圖 7所示萄金。
最后的問題時媚朦,這看起來非常難以實現(xiàn)氧敢。那么,現(xiàn)在又是 Theano 表現(xiàn)的時刻了询张!僅僅需要寫出一個前向的過程(參見here)孙乖,使用
theano.tensor.grad
就搞定了。
神經(jīng)圖靈機(Neural Turing Machine)和記憶網(wǎng)絡(luò)(Memory Networks)
讀者 Zzzz 在我這系列之前的文章評論中說:
你們試過神經(jīng)圖靈機或者記憶網(wǎng)絡(luò)進行這項任務(wù)么份氧?這些方法是不是需要更多的訓(xùn)練數(shù)據(jù)才能得到更好的結(jié)果唯袄?
我本打算當(dāng)時想給出回答,不過等到現(xiàn)在才給出來蜗帜。為什么恋拷?因為,這兩個模型可以被看成是軟注意力機制的神經(jīng)網(wǎng)絡(luò)機器翻譯的變體或者擴展厅缺。想想上下文依賴的詞表示
作為記憶中的內(nèi)容蔬顾,注意力機制作為神經(jīng)圖靈機的讀頭,而解碼器就是神經(jīng)圖靈機的控制器店归。他們是很像的!
實際上酪我,如果你閱讀了關(guān)于記憶網(wǎng)絡(luò)最新論文Sukhbaatar et al. (2015)消痛,對于基于注意力的神經(jīng)網(wǎng)絡(luò)機器翻譯模型就很清楚了,NTM 和記憶網(wǎng)絡(luò)或多或少是等價的都哭,除了一些細(xì)節(jié)和相應(yīng)的應(yīng)用場景的變化外秩伞。我逞带,可能你也會,想知道這些觀點最終極的推廣形式纱新,以及在未來這種終極模型能夠給我們帶來究竟什么樣的效果展氓。
超越翻譯:圖像/視頻描述生成
關(guān)于整個神經(jīng)網(wǎng)絡(luò)機器翻譯工作中最為讓人吃驚的和重要的一點是方法并沒有限制在語言這個場景上。特別地脸爱,這樣的方法可以對任何類型的輸入數(shù)據(jù)進行處理遇汞,只要數(shù)據(jù)本身能夠?qū)?yīng)某些合適的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),或者返回定長的向量表示或者它的注解向量簿废。
蒙特利爾大學(xué)和多倫多大學(xué)最近發(fā)布的工作展示了設(shè)計基于注意力的編碼器-解碼器模型來通過用卷及網(wǎng)絡(luò)替代解碼器來描述圖像的可能性空入,如圖 8 所示。類似觀點在[Donahue et al., 2014; Fang et al., 2014; Karpathy and Li, 2014; Kiros et al., 2014; Mao et al., 2014]也都有提及族檬。
Li et al. (2015) 工作將該模型的能力又向前推進了一步歪赢,用來進行視頻的描述生成,讓解碼器使用視頻的時態(tài)結(jié)構(gòu)单料。類似地埋凯,使用簡單的編碼-解碼器進行的視頻描述生成也已經(jīng)成功了,見 [Li et al., 2015; Venugopalan et al., 2015] 扫尖。
而且白对,類似的引入注意力的進行結(jié)構(gòu)化輸入輸出的映射已經(jīng)被廣泛地應(yīng)用在眾多應(yīng)用中了。我最喜歡的是Vinyals et al. (2015) 對離散優(yōu)化問題的應(yīng)用藏斩,其中使用了這種基于注意力的神經(jīng)網(wǎng)絡(luò)來近似地解決旅行商問題躏结!想要參看更多最新的應(yīng)用,請看看我這篇綜述文章paper狰域。
看到所有這些近期的研究工作媳拴,我不禁想知道未來會發(fā)生什么?讀者朋友兆览,您又是怎么想的呢屈溉?歡迎在評論中給出你們的想法。
下一步
我在文章中介紹了近期深度學(xué)習(xí)領(lǐng)域中最新的發(fā)展抬探,聚焦于神經(jīng)網(wǎng)絡(luò)翻譯子巾。然而,仍然存在眾多于機器翻譯相關(guān)的問題小压。我列舉如下:
- 超越?語句建模:語句线梗,常表示為詞的序列,是非常短的怠益。用于RNN 的 BP 算法需要與語句成比例的時間仪搔。未來會否有適用于非常長的序列(篇章或者文檔)的算法呢斗塘?學(xué)習(xí)過程也可能是局部洗搂,而權(quán)重應(yīng)該可以在處理序列時候在線更新罪既。
- 超越自然語言:神經(jīng)網(wǎng)絡(luò)機器翻譯在語言上行得通酪耳,但是在其他方面能不能發(fā)揮作用?可能是在基因表達(dá)式序列上煮嫌,蛋白質(zhì)結(jié)構(gòu)預(yù)測笛谦,圖或者網(wǎng)絡(luò)上,甚至天氣數(shù)據(jù)昌阿?
天氣數(shù)據(jù)彩云天氣已經(jīng)做的很棒了饥脑,歡迎使用彩云天氣。
- 多模態(tài)學(xué)習(xí):我們能夠借助其他的信息資源來達(dá)到更好的翻譯效果宝泵?什么才是自然地引入多源信息的有效途徑呢好啰?
代碼在哪兒?
本系列文章直到現(xiàn)在儿奶,我一直在避免對實際實現(xiàn)的討論框往。然而,我們在蒙特利爾大學(xué)已經(jīng)在積極地推進代碼的公開了闯捎,因為我們相信開源鼓勵大家對代碼進行試用和定制開發(fā)椰弊,這樣會加速研究的進程。
近幾年來瓤鼻,我們作出的重要貢獻之一就是 Theano秉版。這是一種使用 python 語言來符號化創(chuàng)建任意神經(jīng)網(wǎng)絡(luò)的工具。它對內(nèi)部的計算架構(gòu)進行了抽象茬祷,可以在平常的 CPU 機器上執(zhí)行清焕,也可以使用 GPU 計算架構(gòu)運行。而且祭犯,Theano 實現(xiàn)了符號化的求微分的過程秸妥,這是訓(xùn)練神經(jīng)網(wǎng)絡(luò)的關(guān)鍵,也就使得我們可以快速地構(gòu)建出復(fù)雜的神經(jīng)網(wǎng)絡(luò)(諸如 基于注意力的神經(jīng)網(wǎng)絡(luò)機器翻譯模型)沃粗。不過粥惧,Theano 只提供了基本的原語操作,我們需要組合這些原語來設(shè)計神經(jīng)網(wǎng)絡(luò)最盅,這也是比較困難的突雪。
我們(Razvan Pascanu, Caglar Gulcehre, myself, Dzmitry Bahdanau and Bart van Merrienboer)發(fā)布了GroundHog,實現(xiàn)了構(gòu)建一個神經(jīng)網(wǎng)絡(luò)機器翻譯模型所有必須的部分涡贱。不過這個項目的代碼咏删,可用性和可讀性都不好。現(xiàn)在Orhan Firat, Dzmitry Bahadanu and Bart van Merrienboer在一個新的框架Blocks下重新給出了相關(guān)的腳本问词。然而督函,這同樣只是一個例子罷了。
今年10月份,我在DL4MT Winter School上于都柏林城市大學(xué)會給出關(guān)于神經(jīng)網(wǎng)絡(luò)機器翻譯的報告侨核。為了讓這個課程更有價值和實用性更強,我正準(zhǔn)備一個基于 Theano 的更加深入的神經(jīng)網(wǎng)絡(luò)機器翻譯實現(xiàn)灌灾。代碼here在這里搓译,叫做 dl4mt-material,大家可以查看锋喜,還在著力準(zhǔn)備中些己。
當(dāng)前,代碼包含:session0, session1 and session2 三個部分嘿般。session 0 包含了使用 Gated recurrent units 的 recurrent neural network language model的實現(xiàn)段标;session1 則是簡單的神經(jīng)網(wǎng)絡(luò)機器翻譯模型的實現(xiàn)。在 session 2 中炉奴,你可以看到基于注意力的神經(jīng)網(wǎng)絡(luò)機器翻譯模型逼庞。未來還會有更多的部分,保持關(guān)注瞻赶!
在我結(jié)束本章內(nèi)容和整個系列之前赛糟。我明確地指出一點:永遠(yuǎn)使用 GPU 來進行訓(xùn)練!為了得到一個良好訓(xùn)練的模型砸逊,需要用 GeForce GTX Titan X 訓(xùn)練 3 到 12 天璧南;而用 CPU,我并不知道合理的估計是多少天师逸。當(dāng)然你可能已經(jīng)構(gòu)建了一個跟 Google 差不多的計算集群司倚,使用分布式的優(yōu)化算法,但是我堅信這不是最有效的進行模型訓(xùn)練的途徑(除非你是微軟篓像,F(xiàn)acebook或者IBM)动知。
致謝
I’ve covered a lot of recent research in this series of Parallel Forall posts on Neural Machine Translation. Hopefully I didn’t make it sound like I did all this work on my own. Any work introduced here has been done by all the authors in the cited papers including those at the University of Montreal as well as other institutes. Furthermore, most of my work in the past few years wouldn’t have been possible without the availability of Theano, and I’d like to thank all the contributors to Theano, and especially, Fred Bastien, Pascal Lamblin and Arnaud Bergeron.
Note that any error in the text is my own, and feel free to contact me if you found anything suspicious here.
參考文獻
- Bahdanau, Dzmitry, Kyunghyun Cho, and Yoshua Bengio. “Neural machine translation by jointly learning to align and translate.” arXiv preprint arXiv:1409.0473 (2014).
- Bastien, Frédéric et al. “Theano: new features and speed improvements.” arXiv preprint arXiv:1211.5590 (2012).
- Bergstra, James et al. “Theano: a CPU and GPU math expression compiler.” Proceedings of the Python for scientific computing conference (SciPy) 30 Jun. 2010: 3.
- Bridle, J. S. (1990). Training Stochastic Model Recognition Algorithms as Networks can lead to Maximum Mutual Information Estimation of Parameters. In Touretzky, D., editor, Advances in Neural Information Processing Systems, volume 2, (Denver, 1989).
- Brown, Peter F et al. “The mathematics of statistical machine translation: Parameter estimation.” Computational linguistics 19.2 (1993): 263-311.
- Cho, Kyunghyun et al. “Learning phrase representations using RNN encoder-decoder for statistical machine translation.” arXiv preprint arXiv:1406.1078 (2014).
- Cho, Kyunghyun, Aaron Courville, and Yoshua Bengio. “Describing Multimedia Content using Attention-based Encoder–Decoder Networks.” arXiv preprint arXiv:1507.01053 (2015).
- Denil, Misha et al. “Learning where to attend with deep architectures for image tracking.” Neural computation 24.8 (2012): 2151-2184.
- Donahue, Jeff et al. “Long-term recurrent convolutional networks for visual recognition and description.” arXiv preprint arXiv:1411.4389 (2014).
- Fang, Hao et al. “From captions to visual concepts and back.” arXiv preprint arXiv:1411.4952 (2014).
- Forcada, Mikel L, and ?eco, Ramón P. “Recursive hetero-associative memories for translation.” Biological and Artificial Computation: From Neuroscience to Technology (1997): 453-462.
- Graves, Alex, Greg Wayne, and Ivo Danihelka. “Neural Turing Machines.” arXiv preprint arXiv:1410.5401 (2014).
- Graves, Alex, Greg Wayne, and Ivo Danihelka. “Neural Turing Machines.” arXiv preprint arXiv:1410.5401 (2014).
- Gregor, Karol et al. “DRAW: A recurrent neural network for image generation.” arXiv preprint arXiv:1502.04623 (2015).
- Gulcehre, Caglar et al. “On Using Monolingual Corpora in Neural Machine Translation.” arXiv preprint arXiv:1503.03535 (2015).
- Kalchbrenner, Nal, and Phil Blunsom. “Recurrent Continuous Translation Models.” EMNLP 2013: 1700-1709.
- Karpathy, Andrej, and Li, Fei-Fei. “Deep visual-semantic alignments for generating image descriptions.” arXiv preprint arXiv:1412.2306 (2014).
- Kingma, D. P., and Ba, J. “A Method for Stochastic Optimization.” arXiv preprint arXiv:1412.6980 (2014).
- Kiros, Ryan, Ruslan Salakhutdinov, and Richard S Zemel. “Unifying visual-semantic embeddings with multimodal neural language models.” arXiv preprint arXiv:1411.2539 (2014).
- Koehn, Philipp. Statistical machine translation. Cambridge University Press, 2009.
- Mao, Junhua et al. “Deep Captioning with Multimodal Recurrent Neural Networks (m-RNN).” arXiv preprint arXiv:1412.6632 (2014).
- Mnih, Volodymyr, Nicolas Heess, and Alex Graves. “Recurrent models of visual attention.” Advances in Neural Information Processing Systems 2014: 2204-2212.
- Pascanu, Razvan et al. “How to construct deep recurrent neural networks.” arXiv preprint arXiv:1312.6026 (2013).
- Schwenk, Holger. “Continuous space language models.” Computer Speech & Language 21.3 (2007): 492-518.
- Sukhbaatar, Sainbayar et al. “End-To-End Memory Networks.”
- Sutskever, Ilya, Oriol Vinyals, and Quoc V. Le. “Sequence to sequence learning with neural networks.” Advances in Neural Information Processing Systems 2014: 3104-3112.
- Venugopalan, Subhashini et al. “Sequence to Sequence–Video to Text.” arXiv preprint arXiv:1505.00487 (2015).
- Weston, Jason, Sumit Chopra, and Antoine Bordes. “Memory networks.” arXiv preprint arXiv:1410.3916 (2014).
- Xu, Kelvin et al. “Show, Attend and Tell: Neural Image Caption Generation with Visual Attention.” arXiv preprint arXiv:1502.03044 (2015).
- Yao, Li et al. “Video description generation incorporating spatio-temporal features and a soft-attention mechanism.” arXiv preprint arXiv:1502.08029 (2015).
- Zeiler, Matthew D. “ADADELTA: an adaptive learning rate method.” arXiv preprint arXiv:1212.5701 (2012).