深度學(xué)習(xí)概覽之自然語言處理:從基本概念到前沿研究
自然語言處理介紹
介紹
自然語言處理(NLP)研究的問題是關(guān)于如何構(gòu)建通過處理和理解語言來執(zhí)行某些任務(wù)的系統(tǒng)。這些任務(wù)可包括
- 問答(像 Siri、Alexa、Cortana 所做的那些)
- 情感分析(決定是否某句話包含積極或消極的內(nèi)涵)
- 圖像到文字的映射(生成一幅輸入圖像的注釋)
- 機(jī)器翻譯(將一段文字翻譯成另一種語言)
- 語音識(shí)別
- 詞性標(biāo)注
- 命名實(shí)體識(shí)別
傳統(tǒng)的 NLP 方法涉及很多語言學(xué)領(lǐng)域自身的知識(shí)。要理解諸如音位和語素這樣的術(shù)語是非?;镜囊?,就好像他們的研究統(tǒng)統(tǒng)都是語言學(xué)問題一樣。讓我們來看看傳統(tǒng) NLP 是如何嘗試?yán)斫庀旅娴脑挼摹?/p>
假設(shè)我們的目標(biāo)是收集關(guān)于這個(gè)詞的一些信息(表征其情感,找到它的定義等)。使用我們語言領(lǐng)域的知識(shí),我們可以把這個(gè)詞分成 3 部分。
我們知道前綴「un」表示反對(duì)或相反的想法,我們知道「ed」可以指定單詞的時(shí)間段(過去時(shí)態(tài))。通過識(shí)別詞干「興趣」的含義,我們可以很容易地推導(dǎo)出整個(gè)詞的定義和情感??雌饋砗芎唵伟?然而,當(dāng)考慮英語中所有不同的前綴和后綴時(shí),需要非常熟練的語言學(xué)家來理解所有可能的組合和意義。
深度學(xué)習(xí)如何很好地解決這些問題?
從最基礎(chǔ)層面來說,深度學(xué)習(xí)即是表征學(xué)習(xí)(representation learning)。通過卷積神經(jīng)網(wǎng)絡(luò)(CNN),我們可以看到不同的過濾器(filter)組合可以用來將各種物體分類。這里,我們將采用一種相似的方式,通過大數(shù)據(jù)集來創(chuàng)建對(duì)各種詞的表征。
本文概論
本文將以這樣的方式來組織文章的內(nèi)容結(jié)構(gòu):我們將首先瀏覽一下構(gòu)建 NLP 深度網(wǎng)絡(luò)的基本構(gòu)建塊,然后來談一談最近研究論文所能帶來的一些應(yīng)用。不知道我們?yōu)槭裁词褂?RNN 或者為什么 LSTM 很有效?這些疑問都很正常,但希望你在讀完下面的這些研究論文之后能更好地了解為什么深度學(xué)習(xí)技術(shù)能夠如此顯著地促進(jìn)了 NLP 的發(fā)展。
詞向量(Word Vectors)
由于深度學(xué)習(xí)愛用數(shù)學(xué)進(jìn)行工作,我們將把每個(gè)詞表示為一個(gè) d 維向量。讓我們使 d = 6。
[Image: https://quip.com/-/blob/cGAAAAubYyb/u9YfGL3mGnMUFhrXOfGArQ] 現(xiàn)在讓我們考慮如何填這些值。我們想要以這樣的方式填充值:向量以某種方式表示詞及其語境、含義或語義。一種方法是創(chuàng)建共生矩陣(coocurence matrix)。假設(shè)我們有以下句子:
從這句話,我們要為每個(gè)特定的詞都創(chuàng)建一個(gè)詞向量。
共生矩陣是包含了在語料庫(或訓(xùn)練集)中每個(gè)詞出現(xiàn)在所有其他詞之后的計(jì)數(shù)數(shù)目的矩陣。讓我們看看這個(gè)矩陣。
從該矩陣中提取行可以讓我們的詞向量簡單初始化。
請注意,通過這個(gè)簡單的矩陣,我們可以獲得一些非常有用的見解(insight)。例如,請注意「love」和「like」這兩個(gè)詞都包含 1,用于名詞(NLP 和狗)后的計(jì)數(shù)。它們與「I」的交集也是 1,因此表明這些詞必須是動(dòng)詞。對(duì)于遠(yuǎn)比一個(gè)句子更大的數(shù)據(jù)集,你可以想象這種相似性將變得更加清楚,因?yàn)椤竘ike」,「love」和其他同義詞將開始具有相似的單詞向量,因?yàn)樗鼈兌荚谙嗨频纳舷挛闹惺褂谩?/p>
現(xiàn)在,盡管這是一個(gè)了不起的起點(diǎn),但我們注意到每個(gè)詞的維數(shù)將隨著語料庫的大小線性增加。如果我們有一個(gè)百萬詞(在 NLP 標(biāo)準(zhǔn)中并不是很多),我們將有一個(gè)一百萬乘一百萬尺寸的矩陣,它將會(huì)非常稀疏(大量的 0)。從存儲(chǔ)效率上講這絕對(duì)不是最好的。在尋找表示這些詞向量的最優(yōu)方法方面已經(jīng)有許多進(jìn)步。其中最著名的是 Word2Vec。
Word2Vec
詞向量初始化技術(shù)背后的基本思想是,我們要在這種詞向量中存儲(chǔ)盡可能多的信息,同時(shí)仍然保持維度在可管理的規(guī)模(25 - 1000 維度是理想的)。Word2Vec 基于這樣一個(gè)理念來運(yùn)作,即我們想要預(yù)測每個(gè)單詞周圍可能的詞。讓我們以上一句話「I love NLP and I like dogs」為例。我們要看這句話的前 3 個(gè)詞。3 因此將是我們的窗口大小 m 的值。
現(xiàn)在,我們的目標(biāo)是找到中心詞,「love」,并預(yù)測之前和之后的詞。我們?nèi)绾巫龅竭@一點(diǎn)?當(dāng)然是通過最大化/優(yōu)化某一函數(shù)!正式地表述是,我們的函數(shù)將尋求給定當(dāng)前中心詞的上下文詞的最大對(duì)數(shù)概率。
讓我們對(duì)這一點(diǎn)再深入地探究。上面的成本函數(shù)(cost function)基本上是說我們要添加'I'和'love'以及'NLP'和'love'的對(duì)數(shù)概率(其中「love」是兩種情況下的中心詞)。變量 T 表示訓(xùn)練句子的數(shù)量。讓我們再仔細(xì)研究一下那個(gè)對(duì)數(shù)概率。
Vc 是中心詞的詞向量。每個(gè)詞由兩個(gè)向量表示(Uo 和 Uw),一個(gè)用于當(dāng)該詞用作中心詞時(shí),一個(gè)用于當(dāng)它用作外部詞(outer word)時(shí)。向量是用隨機(jī)梯度下降(SGD)來訓(xùn)練的。這絕對(duì)是一個(gè)理解起來更讓人困惑的方程之一,所以如果你仍然有疑問想了解到底發(fā)生了什么,你可以查看以下兩個(gè)資源:
- How does word2vec work?:https://www.quora.com/How-does-word2vec-work
- Word Embedding Explained and Visualized - word2vec and wevi:https://www.youtube.com/watch?v=D-ekE-Wlcds
一句總結(jié):Word2Vec 尋求通過最大化給定中心詞的上下文詞的對(duì)數(shù)概率并通過 SGD 修改向量來找到不同詞的向量表示。
(可選:論文《Distributed Representations of Words and Phrases and their Compositionality》的作者接著詳細(xì)介紹了如何使用頻繁詞的負(fù)采樣(negative sampling)和下采樣(subsampling)獲得更精確的詞向量。)
有人認(rèn)為,Word2Vec 最有趣的貢獻(xiàn)是使得不同詞向量之間表現(xiàn)出線性關(guān)系。經(jīng)過訓(xùn)練,詞向量似乎能捕獲不同的語法和語義概念。這些線性關(guān)系是如何能通過簡單的對(duì)象函數(shù)和優(yōu)化技術(shù)來形成的,這一點(diǎn)真是相當(dāng)難以置信。
額外補(bǔ)充:另一種很酷的詞向量初始化方法:GloVe(將共生矩陣與 Word2Vec 的思想結(jié)合在一起):http://nlp.stanford.edu/pubs/glove.pdf
循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)
好吧,那么現(xiàn)在我們有了我們的詞向量,讓我們看看它們?nèi)绾闻c循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)合在一起的。RNN 是當(dāng)今大多數(shù) NLP 任務(wù)的必選方法。RNN 的最大優(yōu)點(diǎn)是它能夠有效地使用來自先前時(shí)間步驟的數(shù)據(jù)。這是一小片 RNN 的大致樣子。
因此,在底層,我們有我們的詞向量(xt,xt-1,xt + 1)。每個(gè)向量在同一時(shí)間步驟(ht,ht-1,ht + 1)有一個(gè)隱藏狀態(tài)向量。讓我們稱之為一個(gè)模塊(module)。
RNN 的每個(gè)模塊中的隱藏狀態(tài)是在前一時(shí)間步驟的詞向量和隱藏狀態(tài)向量二者的函數(shù)。
如果你仔細(xì)看看上標(biāo),你會(huì)看到有一個(gè)權(quán)重矩陣 Whx,我們將它乘以我們的輸入,并且在上一個(gè)時(shí)間步驟中,用一個(gè)循環(huán)出現(xiàn)的權(quán)重矩陣 Whh 乘以隱藏狀態(tài)向量。請記住,這些循環(huán)出現(xiàn)的權(quán)重矩陣(recurrent weight matrix)在所有時(shí)間步驟上都是相同的。這是 RNN 的關(guān)鍵點(diǎn)。仔細(xì)考慮一下這一點(diǎn),它與傳統(tǒng)的(比如 2 層的神經(jīng)網(wǎng)絡(luò))非常不同。在這種情況下,我們通常對(duì)于每個(gè)層(W1 和 W2)都有不同的 W 矩陣。這里,循環(huán)權(quán)重矩陣在網(wǎng)絡(luò)中是相同的。
為了得到特定模塊的輸出(Yhat),將以 h 乘以 WS,這是另一個(gè)權(quán)重矩陣。
讓我們現(xiàn)在退一步并且來理解 RNN 的優(yōu)點(diǎn)是什么。與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的最明顯的區(qū)別是,RNN 接受輸入的序列(在我們的例子中是詞)。你可以將其與典型的 CNN 進(jìn)行對(duì)比,在 CNN 中你只需要一個(gè)單一的圖像作為輸入。然而,使用 RNN,輸入可以是從一個(gè)短句到一篇 5 段文章等各種長度。此外,該序列中的輸入的順序(order)可以極大地影響在訓(xùn)練期間權(quán)重矩陣和隱藏狀態(tài)向量的改變情況。在訓(xùn)練之后,隱藏狀態(tài)將有望捕獲來自過去的信息(以前的時(shí)間步驟)。
門控循環(huán)單位(GRU)
現(xiàn)在讓我們來看門控循環(huán)單元(GRU)。這種單元的目的是為計(jì)算 RNN 中的隱藏狀態(tài)向量提供一種更復(fù)雜的方法。這種方法得以使我們保留捕獲長距依賴(long distance dependencies)的信息。讓我們想想看為什么在傳統(tǒng) RNN 設(shè)置中長期依賴會(huì)成為一個(gè)問題。在反向傳播期間,誤差將流經(jīng) RNN,即從最近的時(shí)間步驟至最早的時(shí)間步驟。如果初始梯度是個(gè)小數(shù)字(例如<0.25),則通過第 3 或第 4 模塊,梯度實(shí)際上將會(huì)消失(鏈?zhǔn)揭?guī)則乘以梯度),因此較早時(shí)間步驟的隱藏狀態(tài)將無法更新。
在傳統(tǒng)的 RNN 中,隱藏狀態(tài)向量通過下面的公式計(jì)算得來。
GRU 提供了一個(gè)計(jì)算此隱藏狀態(tài)向量 h(t) 的不同方式。計(jì)算分為 3 個(gè)分量,一個(gè)更新門(update gate),一個(gè)重置門(reset gate)以及一個(gè)新的記憶容器(memory container)。兩個(gè)門均是前一時(shí)間步驟上輸入詞向量和隱藏狀態(tài)的函數(shù)。
關(guān)鍵區(qū)別在于每個(gè)門使用不同的權(quán)重。這種區(qū)別通過不同的上標(biāo)來表示。更新門使用 Wz 和 Uz,而重置門使用 Wr 和 Ur。
現(xiàn)在,通過以下方式計(jì)算新的記憶容器:
空心點(diǎn)表示Hadamard積
現(xiàn)在,如果你仔細(xì)看看公式,你將看到,如果重置門單元接近 0,那么整個(gè)項(xiàng)也變?yōu)?0,此時(shí)可以忽略來自之前時(shí)間步驟的 ht-1 的信息。在這種情況下,單元只是新的詞向量 xt 的函數(shù)。
h(t) 的最終公式寫為:
ht 是一個(gè)由三部分構(gòu)成的函數(shù):重置門、更新門和記憶容器。通過觀察當(dāng) zt 接近 1 和接近 0 時(shí)會(huì)發(fā)生什么是理解這點(diǎn)最好的方法。當(dāng) zt 接近 1 時(shí),新的隱藏狀態(tài)向量 ht 主要取決于先前的隱藏狀態(tài),且因?yàn)?1-zt)變?yōu)?0 使得我們會(huì)忽略當(dāng)前的存儲(chǔ)容器。當(dāng) zt 接近 0 時(shí),新的隱藏狀態(tài)向量 ht 主要取決于當(dāng)前的存儲(chǔ)容器,此時(shí)我們會(huì)忽略之前的隱藏狀態(tài)。觀察這三部分最直觀的方法可以總結(jié)如下。
- 更新門, 如果 zt〜1,則 ht 完全忽略當(dāng)前詞向量,且只復(fù)制上一個(gè)隱藏狀態(tài)(如果行不通,看看 ht 方程,并且注意當(dāng) zt〜1 時(shí) 1 - zt 項(xiàng)發(fā)生什么)。如果 zt〜0,則 ht 完全忽略上一時(shí)間步驟上的隱藏狀態(tài),且依賴新的記憶容器。此門讓模型控制著之前隱藏狀態(tài)中應(yīng)影響當(dāng)前隱藏狀態(tài)的信息的多少。
- 重置門, 如果 rt〜1,則存儲(chǔ)容器阻止來自之前隱藏狀態(tài)的信息。如果 rt〜0,則存儲(chǔ)容器忽略之前的隱藏狀態(tài)。如果該信息在將來不具有相關(guān)性,則此門會(huì)令模型刪除信息。
- 記憶容器:取決于重置門。
闡明 GRU 有效性的常見示例如下。假設(shè)你有以下語段。
和相關(guān)問題「2 個(gè)數(shù)字的和是什么?」。由于中間語句對(duì)手頭問題絕對(duì)沒有影響,重置門和更新門將允許網(wǎng)絡(luò)在一定意義上「忘記」中間語句,同時(shí)僅學(xué)習(xí)應(yīng)修改隱藏狀態(tài)的特定信息(這種情況下是數(shù)字)。
長短時(shí)記憶單元(LSTM)
如果你對(duì) GRU 感到滿意的話,那么 LSTM 并不會(huì)讓你更加滿意。LSTM 也是由一系列的門組成。
肯定有更多的信息需要采集。因?yàn)檫@可以被認(rèn)為是 GRU 背后的想法的延伸,我不會(huì)進(jìn)行深入地分析。如果你想對(duì)每一個(gè)門和每一步計(jì)算進(jìn)行深入地演算,請查看 Chris Olah 的一篇非常好的博客文章:http://colah.github.io/posts/2015-08-Understanding-LSTMs/。這是迄今為止,在 LSTM 上最受歡迎的教程,它一定會(huì)幫助你理解這些單元工作的這么好的原因和其工作方式。
LSTM 和 GRU 的比較
讓我們從兩者相似之處看起。這兩種單元具有能夠保持序列中字的長期依賴性的特殊功能。長期依賴性指兩個(gè)詞或者短語可能會(huì)在不同的時(shí)間段出現(xiàn)的情況,但是它們之間的關(guān)系對(duì)于解決最終目標(biāo)仍然至關(guān)重要。LSTM 和 GRU 能夠通過忽略或者保持序列中的某些信息的門來獲取這些依賴性。
兩個(gè)單元之間的差異在于它們所擁有的門的數(shù)量(GRU – 2, LSTM – 3)。這影響了輸入通過的非線性數(shù),并最終影響整體計(jì)算。GRU 也不具有與 LSTM 相同的記憶單元(ct)。
看論文之前
只是做一個(gè)快速的注釋。還有一些其他的深度模型在自然語言處理(NLP)當(dāng)中很有用。遞歸神經(jīng)網(wǎng)絡(luò)(recursive neural networks)和用于自然語言處理(NLP)的卷積神經(jīng)網(wǎng)絡(luò)(CNN)有時(shí)會(huì)在實(shí)踐中應(yīng)用,但不像循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent neural Network)那樣流行。循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)是在大多數(shù)深度學(xué)習(xí)自然語言處理(NLP)系統(tǒng)中的支柱。
好的?,F(xiàn)在我們對(duì)與自然語言處理(NLP)相關(guān)的深度學(xué)習(xí)有了不錯(cuò)的理解,讓我們來看一些論文。由于在自然語言處理(NLP)中有許多不同領(lǐng)域的問題(從機(jī)器翻譯到問題回答),我們可以研究許多論文,但是我發(fā)現(xiàn)其中有三篇論文有著獨(dú)到的見解。2016 年,在自然語言處理(NLP)方面有著巨大的進(jìn)步,但是讓我們從 2015 年的一篇論文看起。
- 論文:記憶網(wǎng)絡(luò)(Memory Networks)
- 鏈接:https://arxiv.org/pdf/1410.3916v11.pdf
簡介:第一篇文章,我們將要討論的是在問答(Queston Answering)子領(lǐng)域的一個(gè)非常有影響力的論文。作者是 Jason Weston、Sumit Chopra 和 Antoine Bordes,這篇論文介紹了一類稱為記憶網(wǎng)絡(luò)的模型。
記憶網(wǎng)絡(luò)的直觀思想是:為了準(zhǔn)確地回答關(guān)于一段文本的問題,你需要以某種方式記憶被提供的最初的信息。如果我問你「RNN 代表什么?」,(假設(shè)你已經(jīng)完全閱讀了這篇文章),你將會(huì)給我一個(gè)答案。因?yàn)槟阃ㄟ^閱讀這篇文章的第一部分所得到的信息,將會(huì)存儲(chǔ)在你記憶中的某個(gè)地方。你只需要幾秒鐘來找到這個(gè)信息,并用文字將其表述出來?,F(xiàn)在,我不知道大腦是如何作到這一點(diǎn)的,但是為信息保留存儲(chǔ)空間的想法仍然存在。
本文中描述的記憶網(wǎng)絡(luò)是唯一的,因?yàn)樗且环N能夠讀寫的關(guān)聯(lián)記憶(associative memory)。有趣的是,我們并沒有這種類型的卷積神經(jīng)網(wǎng)絡(luò)或者 Q 網(wǎng)絡(luò)(Q-Network)(應(yīng)用于強(qiáng)化學(xué)習(xí))或者傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)的記憶。這是因?yàn)閱柎鹑蝿?wù)很大程度上依賴于建模的能力或者保持追蹤長期依賴性的能力,比如追蹤故事中的角色或事件的時(shí)間線。使用卷積神經(jīng)網(wǎng)絡(luò)和 Q 網(wǎng)絡(luò),「記憶(memory)」是一種內(nèi)置在網(wǎng)絡(luò)的權(quán)重。因?yàn)樗梢詫W(xué)習(xí)從狀態(tài)到動(dòng)作的不同的篩選或者映射。首先,可以使用 RNN 和 LSTM,但是它們通常不能記憶來自過去的輸入(這在回答任務(wù)中中非常重要)。
網(wǎng)絡(luò)架構(gòu)
好的,現(xiàn)在讓我們來看一看這個(gè)網(wǎng)絡(luò)如何處理它給出的初始文本。就像大多數(shù)機(jī)器學(xué)習(xí)算法一樣,第一步是將輸入轉(zhuǎn)化為特征表示。這需要使用詞向量、詞性標(biāo)簽等。這真的取決于編程者。
下一步將采用特征表示 I(x),并允許更新我們的記憶 m 以反映我們接收到的最新的輸入 x。
你可以認(rèn)為記憶 m 是一種由單獨(dú)的記憶 mi 組成的數(shù)組。這些單獨(dú)的記憶 mi 中的每一個(gè)都可以作為整體的記憶 m,特征表示 I(x) 和/或者它本身。該函數(shù) G 可以簡單地將整個(gè)表示 I(x) 存儲(chǔ)在單獨(dú)的記憶單元 mi 中?;谛碌妮斎?,你可以修改函數(shù) G 來更新過去的記憶。第三和第四步包括基于問題讀取記憶以獲得特征表示 o,然后對(duì)其解碼以輸出最終答案 r。
R 函數(shù)可以用來將特征表示從記憶轉(zhuǎn)化為問題的即可靠又準(zhǔn)確的答案。
現(xiàn)在,讓我們來看第三步。我們希望這個(gè) O 模塊輸出一個(gè)特征表示,使其最佳地匹配給定問題 X 的一個(gè)可能的答案。現(xiàn)在這個(gè)問題將要與每個(gè)獨(dú)立的記憶單元進(jìn)行匹配并且基于記憶單元支持該問題的程度被「評(píng)分」。
我們使用評(píng)分函數(shù)的 argmax 值來找到支持問題的最佳輸出表示(你也可以取多個(gè)最高得分單位,不必限于 1)。評(píng)分函數(shù)是計(jì)算不同問題和選取存儲(chǔ)單元的不同嵌入之間的矩陣乘積的函數(shù)(更多細(xì)節(jié)請查看論文)。你也可以這樣認(rèn)為,你將兩個(gè)單詞的單詞向量相乘以找到他們的相似之處。然后將輸出表示 o 饋送入 RNN 或者 LSTM 或者另一個(gè)輸出可靠答案的評(píng)分函數(shù)。
該網(wǎng)絡(luò)以監(jiān)督的方式訓(xùn)練,其中訓(xùn)練數(shù)據(jù)包括原始文本、問題、支撐句(supporting sentences)、以及 ground truth 答案。這里是目標(biāo)函數(shù)。
對(duì)于那些感興趣的人,這是構(gòu)建這種記憶網(wǎng)絡(luò)方法的論文。
End to End Memory Networks:https://arxiv.org/pdf/1503.08895v5.pdf
Dynamic Memory Networks:https://arxiv.org/pdf/1506.07285v5.pdf
Dynamic Coattention Networks :https://arxiv.org/pdf/1611.01604v2.pdf
論文:用于情感分析的 LSTM 樹(Tree LSTMs for Sentiment Analysis)
鏈接:https://arxiv.org/pdf/1503.00075v3.pdf
簡介:下一篇文章討論了情感分析方面的進(jìn)步,確定短語是否有正面或者負(fù)面的含義/意義。更正式地說,情感可以被定義為「對(duì)于某個(gè)情況或事件的看法或者態(tài)度」。當(dāng)時(shí),LSTM 是情感分析網(wǎng)絡(luò)中最常用的單元。作者:Kai Sheng Tai、Richard Socher 和 Christopher Manning,本文介紹了以一種非線性的結(jié)構(gòu)將 LSTM 連接在一起的新方法。
這種非線性組合背后的動(dòng)機(jī)在于自然語言中表現(xiàn)出的將序列中的詞變成短語的特性。這些取決于詞的順序的短語可以有著與原始的組成詞不同的意義。為了表示這種特性,LSTM 單元的網(wǎng)絡(luò)被布置成樹狀結(jié)構(gòu),其中不同單元受其子節(jié)點(diǎn)的影響。
網(wǎng)絡(luò)架構(gòu)
LSTM 樹和標(biāo)準(zhǔn)樹之間的一個(gè)區(qū)別是,后者的隱藏狀態(tài)是當(dāng)前輸入和先前時(shí)間步長的隱藏狀態(tài)的一個(gè)函數(shù)。然而,對(duì)于 LSTM 樹,其隱藏狀態(tài)是當(dāng)前輸入和其子單元的隱藏狀態(tài)的函數(shù)。
有著新的基于樹的結(jié)構(gòu),一些數(shù)學(xué)變換,包括具有遺忘門(forget gates)的子單元。對(duì)于那些對(duì)細(xì)節(jié)感興趣的人,請查看論文獲取更多信息。然而,我想要關(guān)注的是為什么這些模塊比線性 LSTM 工作的更好。
使用 LSTM 樹,單個(gè)的單元能夠并入其所有子節(jié)點(diǎn)的隱藏狀態(tài)。這非常有趣,因?yàn)橐粋€(gè)單元可以不同地評(píng)價(jià)其每個(gè)子節(jié)點(diǎn)。在訓(xùn)練期間,神經(jīng)網(wǎng)絡(luò)可以實(shí)現(xiàn)特定詞(也許是在情感分析中的「not」或者「very」),這對(duì)句子的整體情感非常重要。將節(jié)點(diǎn)評(píng)價(jià)的更高為網(wǎng)絡(luò)提供了極高的靈活性,并可以提高其性能。
論文:神經(jīng)機(jī)器翻譯(Neural Machine Translation)
鏈接:https://arxiv.org/pdf/1609.08144v2.pdf
簡介:我們今天要討論的最后一篇論文描述了機(jī)器翻譯任務(wù)的另一種方法。作者為谷歌大腦的 Jeff Dean、Greg Corrado、Orial Vinyals 等人,本文介紹了一種機(jī)器翻譯系統(tǒng),該系統(tǒng)為谷歌流行的翻譯任務(wù)的支柱。與之前使用的谷歌生產(chǎn)系統(tǒng)相比,該系統(tǒng)平均減少了 60% 的翻譯錯(cuò)誤。
傳統(tǒng)的自動(dòng)翻譯方法包括基于短語匹配的變體。這種方法需要大量的語言領(lǐng)域的知識(shí),最終它的設(shè)計(jì)被證明太脆弱并且缺乏泛化能力。傳統(tǒng)方法的一個(gè)問題是它將嘗試逐個(gè)翻譯輸入的句子。結(jié)果,更有效的方法是(神經(jīng)機(jī)器翻譯(NMT)使用的方法)一次翻譯整個(gè)句子,從而允許上下文更加廣泛并且使語言重新排列的更加自然。
網(wǎng)絡(luò)架構(gòu)
本文作者介紹了一個(gè)深層 LSTM 網(wǎng)絡(luò),可以端對(duì)端的訓(xùn)練 8 個(gè)編碼器和解碼器層。我們可以將這個(gè)系統(tǒng)分為 3 個(gè)部分,編碼器 RNN、解碼器 RNN 和注意模塊。從更高的等級(jí),編碼器致力于將輸入的句子轉(zhuǎn)變?yōu)橄蛄康谋硎?,解碼器產(chǎn)生輸出表示,然后注意模塊告知解碼器在解碼任務(wù)期間要關(guān)注什么(這是一種使用句子的整體語境的思想)。
本論文的其余部分主要集中于大規(guī)模部署這樣的服務(wù)相關(guān)的挑戰(zhàn)。將詳細(xì)討論諸如計(jì)算資源量、延遲和大容量部署等主題。機(jī)器之心曾經(jīng)報(bào)道過對(duì)這項(xiàng)研究的解讀,請參閱《深度 | 逐層剖析,谷歌機(jī)器翻譯突破背后的神經(jīng)網(wǎng)絡(luò)架構(gòu)是怎樣的?》
結(jié)論
我們總結(jié)了關(guān)于深度學(xué)習(xí)幫助自然語言處理任務(wù)的方法。在我看來,該領(lǐng)域一些的未來目標(biāo)關(guān)注在改進(jìn)客戶服務(wù)聊天機(jī)器人、完善機(jī)器翻譯、并希望使問答系統(tǒng)能夠獲得對(duì)非結(jié)構(gòu)化或者冗長的文本(比如維基百科頁面)的更深入的了解。
【本文是51CTO專欄機(jī)構(gòu)機(jī)器之心的原創(chuàng)文章,微信公眾號(hào)“機(jī)器之心( id: almosthuman2014)”】