吳恩達深度學習筆記(119)

詞彙表徵(Word Representation)

我們學習了RNN、GRU單元和LSTM單元。

下面你會看到我們如何把這些知識用到NLP上,用於自然語言處理,深度學習已經給這一領域帶來了革命性的變革。

其中一個很關鍵的概念就是詞嵌入(word embeddings),這是語言表示的一種方式,可以讓算法自動的理解一些類似的詞,比如男人對女人,比如國王對王后,還有其他很多的例子。通過詞嵌入的概念你就可以構建NLP應用了,即使你的模型標記的訓練集相對較小。最後我們會消除詞嵌入的偏差,就是去除不想要的特性,或者學習算法有時會學到的其他類型的偏差。

吳恩達深度學習筆記(119) | NLP | 詞嵌入之詞彙表徵

現在我們先開始討論詞彙表示,目前為止我們一直都是用詞彙表來表示詞,上面提到的詞彙表,可能是10000個單詞,我們一直用one-hot向量來表示詞。比如如果man(上圖編號1所示)在詞典裡是第5391個,那麼就可以表示成一個向量,只在第5391處為1(上圖編號2所示),我們用O_5391代表這個量,這裡的O代表one-hot。接下來,如果woman是編號9853(上圖編號3所示),那麼就可以用O_9853來表示,這個向量只在9853處為1(上圖編號4所示),其他為0,其他的詞king、queen、apple、orange都可以這樣表示出來這種表示方法的一大缺點就是它把每個詞孤立起來,這樣使得算法對相關詞的泛化能力不強

舉個例子,假如你已經學習到了一個語言模型,當你看到“I want a glass of orange ___”,那麼下一個詞會是什麼?很可能是juice。即使你的學習算法已經學到了“I want a glass of orange juice”這樣一個很可能的句子,但如果看到“I want a glass of apple ___”,因為算法不知道apple和orange的關係很接近,就像man和woman,king和queen一樣。

所以算法很難從已經知道的orange juice是一個常見的東西,而明白apple juice也是很常見的東西或者說常見的句子。這是因為任何兩個one-hot向量的內積都是0,如果你取兩個向量,比如king和queen,然後計算它們的內積,結果就是0。如果用apple和orange來計算它們的內積,結果也是0。很難區分它們之間的差別,因為這些向量內積都是一樣的,所以無法知道apple和orange要比king和orange,或者queen和orange相似地多。

換一種表示方式會更好,如果我們不用one-hot表示,而是用特徵化的表示來表示每個詞,man,woman,king,queen,apple,orange或者詞典裡的任何一個單詞,我們學習這些詞的特徵或者數值。

吳恩達深度學習筆記(119) | NLP | 詞嵌入之詞彙表徵

舉個例子,對於這些詞,比如我們想知道這些詞與Gender(性別)的關係。

假定男性的性別為-1,女性的性別為+1,那麼man的性別值可能就是-1,而woman就是-1。最終根據經驗king就是-0.95,queen是+0.97,apple和orange沒有性別可言。

另一個特徵可以是這些詞有多Royal(高貴),所以這些詞,man,woman和高貴沒太關係,所以它們的特徵值接近0。而king和queen很高貴,apple和orange跟高貴也沒太大關係。

那麼Age(年齡)呢?man和woman一般沒有年齡的意思,也許man和woman隱含著成年人的意思,但也可能是介於young和old之間,所以它們(man和woman)的值也接近0。而通常king和queen都是成年人,apple和orange跟年齡更沒什麼關係了。

還有一個特徵,這個詞是否是Food(食物),man不是食物,woman不是食物,king和queen也不是,但apple和orange是食物。

當然還可以有很多的其他特徵,從Size(尺寸大小),Cost(花費多少),這個東西是不是alive(活的),是不是一個Action(動作),或者是不是Noun(名詞)或者是不是Verb(動詞),還是其他的等等。

所以你可以想很多的特徵,為了說明,我們假設有300個不同的特徵,這樣的話你就有了這一列數字(上圖編號1所示),這裡我只寫了4個,實際上是300個數字,這樣就組成了一個300維的向量來表示man這個詞。接下來,我想用e_5391這個符號來表示,就像這樣(上圖編號2所示)。同樣這個300維的向量,我用e_9853代表這個300維的向量用來表示woman這個詞(上圖編號3所示),這些其他的例子也一樣。現在,如果用這種表示方法來表示apple和orange這些詞,那麼apple和orange的這種表示肯定會非常相似,可能有些特徵不太一樣,因為orange的顏色口味,apple的顏色口味,或者其他的一些特徵會不太一樣,但總的來說apple和orange的大部分特徵實際上都一樣,或者說都有相似的值。這樣對於已經知道orange juice的算法很大幾率上也會明白apple juice這個東西,這樣對於不同的單詞算法會泛化的更好。

後面的幾個筆記,我們會找到一個學習詞嵌入的方式,這裡只是希望你能理解這種高維特徵的表示能夠比one-hot更好的表示不同的單詞。

而我們最終學習的特徵不會像這裡一樣這麼好理解,沒有像第一個特徵是性別,第二個特徵是高貴,第三個特徵是年齡等等這些,新的特徵表示的東西肯定會更難搞清楚。儘管如此,接下來要學的特徵表示方法卻能使算法高效地發現apple和orange會比king和orange,queen和orange更加相似。

吳恩達深度學習筆記(119) | NLP | 詞嵌入之詞彙表徵

如果我們能夠學習到一個300維的特徵向量,或者說300維的詞嵌入,通常我們可以做一件事,把這300維的數據嵌入到一個二維空間裡,這樣就可以可視化了。

常用的可視化算法是t-SNE算法,來自於Laurens van der Maaten 和 Geoff Hinton的論文。如果觀察這種詞嵌入的表示方法,你會發現man和woman這些詞聚集在一塊(上圖編號1所示),king和queen聚集在一塊(上圖編號2所示),這些都是人,也都聚集在一起(上圖編號3所示)。動物都聚集在一起(上圖編號4所示),水果也都聚集在一起(上圖編號5所示),像1、2、3、4這些數字也聚集在一起(上圖編號6所示)。如果把這些生物看成一個整體,他們也聚集在一起(上圖編號7所示)。

在網上你可能會看到像這樣的圖用來可視化,300維或者更高維度的嵌入。希望你能有個整體的概念,這種詞嵌入算法對於相近的概念,學到的特徵也比較類似,在對這些概念可視化的時候,這些概念就比較相似,最終把它們映射為相似的特徵向量。這種表示方式用的是在300維空間裡的特徵表示,這叫做嵌入(embeddings)。之所以叫嵌入的原因是,你可以想象一個300維的空間,我畫不出來300維的空間,這裡用個3維的代替(上圖編號8所示)。現在取每一個單詞比如orange,它對應一個3維的特徵向量,所以這個詞就被嵌在這個300維空間裡的一個點上了(上圖編號9所示),apple這個詞就被嵌在這個300維空間的另一個點上了(上圖編號10所示)。

為了可視化,t-SNE算法把這個空間映射到低維空間,你可以畫出一個2維圖像然後觀察,這就是這個術語嵌入的來源。

詞嵌入已經是NLP領域最重要的概念之一了,在自然語言處理領域。

本節筆記中你已經知道為什麼要學習或者使用詞嵌入了,下節視頻我們會深入講解如何用這些算法構建NLP算法。


分享到:


相關文章: