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

詞嵌入的特性(Properties of Word Embeddings)

到現在,你應該明白了詞嵌入是如何幫助你構建自然語言處理應用的。

詞嵌入還有一個迷人的特性就是它還能幫助實現類比推理,儘管類比推理可能不是自然語言處理應用中最重要的,不過它能幫助人們理解詞嵌入做了什麼,以及詞嵌入能夠做什麼,讓我們來一探究竟。

這是一系列你希望詞嵌入可以捕捉的單詞的特徵表示,假如我提出一個問題,man如果對應woman,那麼king應該對應什麼?你們應該都能猜到king應該對應queen。能否有一種算法來自動推導出這種關係,下面就是實現的方法。

吳恩達深度學習筆記(121) | NLP | 詞嵌入的特性

我們用一個四維向量來表示man,我們用e_5391來表示,不過在這節筆記中我們先把它(上圖編號1所示)稱為e_man,而旁邊這個(上圖編號2所示)表示woman的嵌入向量,稱它為e_woman,對king和queen也是用一樣的表示方法。

在該例中,假設你用的是四維的嵌入向量,而不是比較典型的50到1000維的向量。這些向量有一個有趣的特性,就是假如你有向量e_man和e_woman,將它們進行減法運算,即

吳恩達深度學習筆記(121) | NLP | 詞嵌入的特性

類似的,假如你用e_king減去e_queen,最後也會得到一樣的結果,即

吳恩達深度學習筆記(121) | NLP | 詞嵌入的特性

這個結果表示,man和woman主要的差異是gender(性別)上的差異,而king和queen之間的主要差異,根據向量的表示,也是gender(性別)上的差異,這就是為什麼e_man-e_woman和e_king-e_queen結果是相同的。

所以得出這種類比推理的結論的方法就是,當算法被問及man對woman相當於king對什麼時,算法所做的就是計算e_man-e_woman,然後找出一個向量也就是找出一個詞,使得e_man-e_woman≈ e_king-e_?,也就是說,當這個新詞是queen時,式子的左邊會近似地等於右邊。這種思想首先是被Tomas Mikolov 和 Wen-tau Yih還有Geoffrey Zweig提出的,這是詞嵌入領域影響力最為驚人和顯著的成果之一,這種思想幫助了研究者們對詞嵌入領域建立了更深刻的理解。

(Mikolov T, Yih W T, Zweig G. Linguistic regularities in continuous space word representations[J]. In HLT-NAACL, 2013.)
吳恩達深度學習筆記(121) | NLP | 詞嵌入的特性

讓我們來正式地探討一下應該如何把這種思想寫成算法。在圖中,詞嵌入向量在一個可能有300維的空間裡,於是單詞man代表的就是空間中的一個點,另一個單詞woman代表空間另一個點,單詞king也代表一個點,還有單詞queen也在另一點上(上圖編號1方框內所示的點)。事實上,我們在上個幻燈片所展示的就是向量man和woman的差值非常接近於向量king和queen之間的差值,我所畫的這個箭頭(上圖編號2所示)代表的就是向量在gender(性別)這一維的差,不過不要忘了這些點是在300維的空間裡。為了得出這樣的類比推理,計算當man對於woman,那麼king對於什麼,你能做的就是找到單詞w來使得,e_man-e_woman≈e_king-e_w這個等式成立,你需要的就是找到單詞w來最大化e_w與e_king-e_man+e_woman的相似度,即

Find word w:argmax Sim(e_w,e_king-e_man+e_woman)

所以我做的就是我把這個e_w全部放到等式的一邊,於是等式的另一邊就會是e_king-e_man+e_woman。我們有一些用於測算e_w和e_king-e_man+e_woman之間的相似度的函數,然後通過方程找到一個使得相似度最大的單詞,如果結果理想的話會得到單詞queen。

值得注意的是這種方法真的有效,如果你學習一些詞嵌入,通過算法來找到使得相似度最大化的單詞w,你確實可以得到完全正確的答案。不過這取決於過程中的細節,如果你查看一些研究論文就不難發現,通過這種方法來做類比推理準確率大概只有30%~75%,只要算法猜中了單詞,就把該次計算視為正確,從而計算出準確率,在該例子中,算法選出了單詞queen。

吳恩達深度學習筆記(121) | NLP | 詞嵌入的特性

在繼續下一步之前,我想再說明一下左邊的這幅圖(上圖編號1所示),在之前我們談到過用t-SNE算法來將單詞可視化。t-SNE算法所做的就是把這些300維的數據用一種非線性的方式映射到2維平面上,可以得知t-SNE中這種映射很複雜而且很非線性。在進行t-SNE映射之後,你不能總是期望使等式成立的關係,會像左邊那樣成一個平行四邊形,儘管在這個例子最初的300維的空間內你可以依賴這種平行四邊形的關係來找到使等式成立的一對類比,通過t-SNE算法映射出的圖像可能是正確的。但在大多數情況下,由於t-SNE的非線性映射,你就沒法再指望這種平行四邊形了,很多這種平行四邊形的類比關係在t-SNE映射中都會失去原貌。

現在,再繼續之前,我想再快速地列舉一個最常用的相似度函數,這個最常用的相似度函數叫做餘弦相似度。這是我們上個幻燈片所得到的等式(下圖編號1所示),在餘弦相似度中,假如在向量u和v之間定義相似度:sim(u,v)=(u^T v)/(|(|u|)|_2 |(|v|)|_2 )

吳恩達深度學習筆記(121) | NLP | 詞嵌入的特性

現在我們先不看分母,分子其實就是u和v的內積。如果u和v非常相似,那麼它們的內積將會很大,把整個式子叫做餘弦相似度,其實就是因為該式是u和v的夾角的餘弦值,所以這個角(下圖編號2所示)就是Φ角,這個公式實際就是計算兩向量夾角Φ角的餘弦。你應該還記得在微積分中,Φ角的餘弦圖像是這樣的(下圖編號3所示),所以夾角為0度時,餘弦相似度就是1,當夾角是90度角時餘弦相似度就是0,當它們是180度時,圖像完全跑到了相反的方向,這時相似度等於-1,這就是為什麼餘弦相似度對於這種類比工作能起到非常好的效果。 距離用平方距離或者歐氏距離來表示:|(|u-v|)|^2

吳恩達深度學習筆記(121) | NLP | 詞嵌入的特性

參考資料:餘弦相似度 為了測量兩個詞的相似程度,我們需要一種方法來測量兩個詞的兩個嵌入向量之間的相似程度。給定兩個向量u和v,餘弦相似度定義如下:

吳恩達深度學習筆記(121) | NLP | 詞嵌入的特性

其中 u.v 是兩個向量的點積(或內積),||u||_2是向量u的範數(或長度),並且 θ 是向量u和v之間的角度。這種相似性取決於角度在向量u和v之間。如果向量u和v非常相似,它們的餘弦相似性將接近1; 如果它們不相似,則餘弦相似性將取較小的值。 圖1:兩個向量之間角度的餘弦是衡量它們有多相似的指標,角度越小,兩個向量越相似。

從學術上來說,比起測量相似度,這個函數更容易測量的是相異度,所以我們需要對其取負,這個函數才能正常工作,不過我還是覺得餘弦相似度用得更多一點,這兩者的主要區別是它們對u和v之間的距離標準化的方式不同。

詞嵌入的一個顯著成果就是,可學習的類比關係的一般性。

舉個例子,它能學會man對於woman相當於boy對於girl,因為man和woman之間和king和queen之間,還有boy和girl之間的向量差在gender(性別)這一維都是一樣的。

它還能學習Canada(加拿大)的首都是Ottawa(渥太華),而渥太華對於加拿大相當於Nairobi(內羅畢)對於Kenya(肯尼亞),這些都是國家中首都城市名字。

它還能學習big對於bigger相當於tall對於taller,還能學習Yen(円)對於Janpan(日本),円是日本的貨幣單位,相當於Ruble(盧比)對於Russia(俄羅斯)。

這些東西都能夠學習,只要你在大型的文本語料庫上實現一個詞嵌入學習算法,只要從足夠大的語料庫中進行學習,它就能自主地發現這些模式。

在本節筆記中,你見到了詞嵌入是如何被用於類比推理的,可能你不會自己動手構建一個類比推理系統作為一項應用,不過希望在這些可學習的類特徵的表示方式能夠給你一些直觀的感受。你還看知道了餘弦相似度可以作為一種衡量兩個詞嵌入向量間相似度的辦法,我們談了許多有關這些嵌入的特性,以及如何使用它們。

下節筆記中,我們來討論如何真正的學習這些詞嵌入。


分享到:


相關文章: