1. 程式人生 > >深度學習,NLP和表徵(譯:小巫)

深度學習,NLP和表徵(譯:小巫)

介紹

在過去的幾年裡,深度神經網路主導了模式識別。它們將先前的藝術狀態浮出水面,用於許多計算機視覺任務。語音識別也在以這種方式發展。

但是,儘管有這樣的結果,我們不得不懷疑,為什麼它們工作得這麼好?

這篇文章回顧了將深層神經網路應用於自然語言處理(NLP)的一些非常顯著的結果。

在這樣做的過程中,我希望能給出易理解的一個有希望的答案,來解釋為什麼深神經網路能夠起作用。我認為這是一個非常優雅的視角。

單隱層神經網路

具有隱層的神經網路具有普遍性:給定足夠的隱單元,它可以逼近任意函式。這是一個經常引用的——甚至更頻繁地被誤解和應用——定理。

確實如此,本質上是因為隱藏層可以用作查詢表。

為了簡單起見,讓我們考慮一個感知器網路。感知器是一個非常簡單的神經元,當它超過某個閾值試就會發出訊號,如果沒有達到這個閾值就不會發出訊號。感知器網路獲得二進位制(0和1)輸入並給出二進位制輸出。

請注意,可能的輸入數量有限。對於每一個可能的輸入,我們可以在隱層中構造一個神經元來激發輸入,並且只在那個特定的輸入上。然後,我們可以使用該神經元和輸出神經元之間的連線來控制特定情況下的輸出。

這裡寫圖片描述

因此,一個隱層神經網路確實是通用的。但這並沒有什麼特別令人印象深刻或令人興奮的地方。說您的模型可以做與查詢表相同的事情並不是非常有力的論據。這只是意味著你的模型並不是不可能完成任務的。

通用性意味著一個網路可以適應你給它的任何訓練資料。這並不意味著它將以合理的方式插值到新的資料點。

不是的,通用性並不能解釋為什麼神經網路如此有效。真正的原因似乎是一些更微妙的…。為了理解它,我們首先需要了解一些具體的結果。

詞嵌入

我想從一個特別有趣的深度學習研究開始:單詞嵌入。在我個人看來,儘管它們最初是由Bengio等人在十多年前提出的,但目前仍是深度學習中最令人興奮的研究領域之一。除此之外,我認為它們獲得直覺關於為什麼深度學習如此有效是最好的地方之一。

一個字嵌入 W:wordsRn 是一種將某些語言中的單詞對映到高維向量(可能是200-500維)的引數化函式。例如,我們可能會發現:

W(cat")

=(0.2,-0.4,0.7,...)
W(mat")=(0.0,0.6,-0.1,...)

(通常,函式是一個查詢表,由一個矩陣θ引數化,每一個單詞都有一行: Wθ(wn)=θn)

W 被初始化為每個單詞都有隨機向量。它學習擁有意義的向量來執行某些任務。

例如,我們可以訓練一個網路的一個任務是預測一個5-gram(五個單詞的序列)是否是“有效的”。我們可以很容易地從維基百科得到很多5-grams(例如:”cat sat on the mat”),然後用一個隨機單詞(例如:“cat sat song the mat”)換掉其中的一半,因為這幾乎肯定會使我們的5-gram變得毫無意義。

我們訓練的模型將執行每一個在5-gram的單詞通過W去得到一個表示它的向量,並將這些向量輸入另外一個名為R的“模組”,該模型試圖預測5-gram是“有效的”還是“中斷的”。那麼,我們想:

R(W(cat"),W(sat"),W(on"),W(the"),W(mat"))=1

R(W(cat"),W(sat"),W(song"),W(the"),W(mat"))=0

這裡寫圖片描述

為了準確地預測這些值,網路需要學習WR良好的引數。

現在,這個任務不是很有趣。也許這對發現文字或者其他東西中的語法錯誤很有幫助。但最有趣的是W
(事實上,對我們來說,整個任務的重點是學習W。我們本可以做幾個其他的任務——另一個常見的任務是預測句子的下一個單詞。但我們並不在乎。在本節的其餘部分中,我們將討論許多單詞嵌入結果,而不會區分不同的方法。)

我們可以做的一件事是用t-SNE視覺化它們,這是一種用於視覺化高維資料的複雜技術,可以讓我們對單詞嵌入空間有個直觀的感覺。

這裡寫圖片描述

這種文字的“地圖”對我們來說有很多直觀的意義。相似的詞是相近的。另一種方法是檢視哪個單詞在嵌入中與給定的單詞最接近。再說一遍,這些詞往往很相似。

這裡寫圖片描述

What words have embeddings closest to a given word? From Collobert et al. (2011)

對於一個網路來說,讓具有相似含義的詞具有相似的向量似乎是很自然的。如果你用一個詞換一個同義詞(eg. “a few people sing well” -> “a couple people sing well”),句子的有效性就不會改變。然而,從天真的角度來看,輸入句已經發生了很大的變化,如果W 把同義詞(例如”few”和”couple”)精密地聯絡在一起,那麼從R的角度來看,變化不大。

這是非常強大的。5-grams的數量可能是巨大的,我們有相對較少的資料點去試圖學習。相似的詞放在一起使我們可能把一個句子概括為一類相似的句子。這不僅意味著將一個單詞轉換為同義詞,還意味著在類似的型別中將一個單詞轉換為一個單詞(例如,”the wall is blue” -> “the wall is red”)。此外,我們還可以更改多個單詞(例如. “the wall is blue” -> “the ceiling is red”)。這對單詞數量的影響是指數級的。

所以,很明顯,這對W來說是一件非常有用的事情。但它是如何學會這樣做的呢?似乎在很多情況下,它看到像 “the wall is blue” 這樣的句子,並且在看到 “the wall is red”這樣的句子之前就知道它是有效的。因此,將”red” 向 “blue”移動一點會對網路表現更好。

我們仍然需要看到每一個詞被使用的例子,但類比允許我們將其推廣到新的單詞組合。你看過所有你以前理解的單詞,但你沒有看過你以前理解的所有句子。神經網路也是如此。

單詞嵌入顯示了一個更顯著的特性:單詞之間的類比似乎被編碼在單詞之間的差異向量中。例如,似乎存在一個恆定的male-female 差異向量:

W(woman")W(man")W(aunt")W(uncle")

W(woman")W(man")W(queen")W(king")

這裡寫圖片描述

這似乎並不太令人驚訝。畢竟,性別代詞意味著轉換一個單詞會使句子在語法上不正確。你寫道,“she is the aunt”,但“he is the uncle。”類似地,“he is the King”,但“she is the Queen”。如果有人看到“she is the uncle”,最有可能的解釋是語法錯誤。如果有一半的時間是隨機轉換的話,很有可能發生在這裡。

“當然!” 事後我們說:“嵌入這個詞將學會以一致的方式編碼性別。事實上,可能有一個性別層面。單數和複數也是一樣的。很容易找到這些瑣碎的關係!”

然而,事實證明,更復雜的關係也是用這種方式編碼的。簡直是奇蹟!

這裡寫圖片描述

Relationship pairs in a word embedding. From Mikolov et al. (2013b).

認識到W的所有這些性質都是副作用是很重要的。我們並沒有試圖把相似的詞放在一起。我們沒有嘗試不同的向量進行編碼。我們所要做的只是執行一個簡單的任務,比如預測一個句子是否有效。這些屬性或多或少地出現在優化過程中。

這似乎是神經網路的一大優勢:它們學會了更好的自動錶示資料的方法。反過來,很好地表示資料似乎是許多機器學習問題成功的關鍵。詞嵌入只是學習表示法的一個特別引人注目的例子。

共享表示

單詞嵌入的屬性當然是有趣的,但是我們能用它們做一些有用的事情嗎?除了預測一些愚蠢的事情,比如5-gram是否“有效”?

我們學習單詞嵌入是為了更好地完成一個簡單的任務,但是根據我們在單詞嵌入中觀察到的良好特性,您可能會懷疑它們在NLP任務中通常是有用的。事實上,像這樣的單詞表示是非常重要的:

近年來,在許多NLP系統的成功中,使用word表示已經成為一種關鍵的“祕製”,包括命名實體識別、詞性標記、解析和語義角色標記。(Luong et al. (2013))

這種通用策略——學習任務A的良好表現,然後將其用於任務B——是深度學習工具箱中的主要技巧之一。根據細節的不同,它有不同的名稱:預訓練、遷移學習和多工學習。這種方法最大的優點之一是它允許從多種資料中學習表示。

這裡寫圖片描述

W and F learn to perform task A. Later, G can learn to perform B based on W.

有一個對應的技巧。我們不需要學習一種方法來表示一種資料並使用它來執行多種任務,我們可以學習一種方法,將多種資料對映到一個單一的表示中!

其中一個很好的例子是在Socher等人(2013a)中製作的雙語單詞嵌入。我們可以學習在一個單獨的共享空間中嵌入兩個不同語言的單詞。在這種情況下,我們學習在相同的空間中嵌入英語和普通話單詞。

我們訓練兩個單詞的嵌入,