2.3 词嵌入的特性-深度学习第五课《序列模型》-Stanford吴恩达教授
詞嵌入的特性 (Properties of Word Embeddings)
到現(xiàn)在,你應(yīng)該明白了詞嵌入是如何幫助你構(gòu)建自然語(yǔ)言處理應(yīng)用的。詞嵌入還有一個(gè)迷人的特性就是它還能幫助實(shí)現(xiàn)類比推理,盡管類比推理可能不是自然語(yǔ)言處理應(yīng)用中最重要的,不過(guò)它能幫助人們理解詞嵌入做了什么,以及詞嵌入能夠做什么,讓我們來(lái)一探究竟。
這是一系列你希望詞嵌入可以捕捉的單詞的特征表示,假如我提出一個(gè)問(wèn)題,man如果對(duì)應(yīng)woman,那么king應(yīng)該對(duì)應(yīng)什么?你們應(yīng)該都能猜到king應(yīng)該對(duì)應(yīng)queen。能否有一種算法來(lái)自動(dòng)推導(dǎo)出這種關(guān)系,下面就是實(shí)現(xiàn)的方法。
我們用一個(gè)四維向量來(lái)表示man,我們用 e5391e_{5391}e5391? 來(lái)表示,不過(guò)在這節(jié)視頻中我們先把它(上圖編號(hào)1所示)稱為 emane_{man}eman? ,而旁邊這個(gè)(上圖編號(hào)2所示)表示woman的嵌入向量,稱它為 ewomane_{woman}ewoman? ,對(duì)king和queen也是用一樣的表示方法。在該例中,假設(shè)你用的是四維的嵌入向量,而不是比較典型的50到1000維的向量。這些向量有一個(gè)有趣的特性,就是假如你有向量 emane_{man}eman? 和 ewomane_{woman}ewoman? ,將它們進(jìn)行減法運(yùn)算,即
eman?ewoman=[?10.010.030.09]?[10.020.020.01]=[?2?0.010.010.08]≈[?2000]e_{man}-e_{woman}=\left[\begin{matrix}-1\\0.01\\0.03\\0.09\end{matrix}\right]-\left[\begin{matrix}1\\0.02\\0.02\\0.01\end{matrix}\right]=\left[\begin{matrix}-2\\-0.01\\0.01\\0.08\end{matrix}\right]\approx\left[\begin{matrix}-2\\0\\0\\0\end{matrix}\right]eman??ewoman?=??????10.010.030.09????????????10.020.020.01??????=??????2?0.010.010.08??????≈??????2000??????
類似的,假如你用 ekinge_{king}eking? 減去 equeene_{queen}equeen? ,最后也會(huì)得到一樣的結(jié)果,即
eking?equeen=[?0.950.930.700.02]?[0.970.950.690.01]=[?1.92?0.020.010.01]≈[?2000]e_{king}-e_{queen}=\left[\begin{matrix}-0.95\\0.93\\0.70\\0.02\end{matrix}\right]-\left[\begin{matrix}0.97\\0.95\\0.69\\0.01\end{matrix}\right]=\left[\begin{matrix}-1.92\\-0.02\\0.01\\0.01\end{matrix}\right]\approx\left[\begin{matrix}-2\\0\\0\\0\end{matrix}\right]eking??equeen?=??????0.950.930.700.02????????????0.970.950.690.01??????=??????1.92?0.020.010.01??????≈??????2000??????
這個(gè)結(jié)果表示,man和woman主要的差異是gender(性別)上的差異,而king和queen之間的主要差異,根據(jù)向量的表示,也是gender(性別)上的差異,這就是為什么 eman?ewomane_{man}-e_{woman}eman??ewoman? 和 eking?equeene_{king}-e_{queen}eking??equeen? 結(jié)果是相同的。所以得出這種類比推理的結(jié)論的方法就是,當(dāng)算法被問(wèn)及man對(duì)woman相當(dāng)于king對(duì)什么時(shí),算法所做的就是計(jì)算 eman?ewomane_{man}-e_{woman}eman??ewoman? ,然后找出一個(gè)向量也就是找出一個(gè)詞,使得 eman?ewoman≈eking?e?e_{man}-e_{woman}\approx e_{king}-e_?eman??ewoman?≈eking??e?? ,也就是說(shuō),當(dāng)這個(gè)新詞是queen時(shí),式子的左邊會(huì)近似地等于右邊。這種思想首先是被Tomas Mikolov 和 Wen-tau Yih還有Geoffrey Zweig提出的,這是詞嵌入領(lǐng)域影響力最為驚人和顯著的成果之一,這種思想幫助了研究者們對(duì)詞嵌入領(lǐng)域建立了更深刻的理解。
(Mikolov T, Yih W T, Zweig G. Linguistic regularities in continuous space word representations[J]. In HLT-NAACL, 2013.)
讓我們來(lái)正式地探討一下應(yīng)該如何把這種思想寫成算法。在圖中,詞嵌入向量在一個(gè)可能有300維的空間里,于是單詞man代表的就是空間中的一個(gè)點(diǎn),另一個(gè)單詞woman代表空間另一個(gè)點(diǎn),單詞king也代表一個(gè)點(diǎn),還有單詞queen也在另一點(diǎn)上(上圖編號(hào)1方框內(nèi)所示的點(diǎn))。事實(shí)上,我們?cè)谏蟼€(gè)幻燈片所展示的就是向量man和woman的差值非常接近于向量king和queen之間的差值,我所畫的這個(gè)箭頭(上圖編號(hào)2所示)代表的就是向量在gender(性別)這一維的差,不過(guò)不要忘了這些點(diǎn)是在300維的空間里。為了得出這樣的類比推理,計(jì)算當(dāng)man對(duì)于woman,那么king對(duì)于什么,你能做的就是找到單詞w來(lái)使得, eman?ewoman≈eking?ewe_{man}-e_{woman}\approx e_{king}-e_weman??ewoman?≈eking??ew? 這個(gè)等式成立,你需要的就是找到單詞w來(lái)最大化 ewe_wew? 與 eking?eman+ewomane_{king}-e_{man}+e_{woman}eking??eman?+ewoman? 的相似度,即
Findwordw:argmaxSim(ew,eking?eman+ewoman)Find word w: arg\ max\ Sim(e_w, e_{king}-e_{man}+e_{woman})Findwordw:arg?max?Sim(ew?,eking??eman?+ewoman?)
所以我做的就是我把這個(gè) ewe_wew? 全部放到等式的一邊,于是等式的另一邊就會(huì)是 eking?eman+ewomane_{king}-e_{man}+e_{woman}eking??eman?+ewoman? 。我們有一些用于測(cè)算 ewe_wew? 和 eking?eman+ewomane_{king}-e_{man}+e_{woman}eking??eman?+ewoman? 之間的相似度的函數(shù),然后通過(guò)方程找到一個(gè)使得相似度最大的單詞,如果結(jié)果理想的話會(huì)得到單詞queen。值得注意的是這種方法真的有效,如果你學(xué)習(xí)一些詞嵌入,通過(guò)算法來(lái)找到使得相似度最大化的單詞w,你確實(shí)可以得到完全正確的答案。不過(guò)這取決于過(guò)程中的細(xì)節(jié),如果你查看一些研究論文就不難發(fā)現(xiàn),通過(guò)這種方法來(lái)做類比推理準(zhǔn)確率大概只有30%~75%,只要算法猜中了單詞,就把該次計(jì)算視為正確,從而計(jì)算出準(zhǔn)確率,在該例子中,算法選出了單詞queen。
在繼續(xù)下一步之前,我想再說(shuō)明一下左邊的這幅圖(上圖編號(hào)1所示),在之前我們談到過(guò)用t-SNE算法來(lái)將單詞可視化。t-SNE算法所做的就是把這些300維的數(shù)據(jù)用一種非線性的方式映射到2維平面上,可以得知t-SNE中這種映射很復(fù)雜而且很非線性。在進(jìn)行t-SNE映射之后,你不能總是期望使等式成立的關(guān)系,會(huì)像左邊那樣成一個(gè)平行四邊形,盡管在這個(gè)例子最初的300維的空間內(nèi)你可以依賴這種平行四邊形的關(guān)系來(lái)找到使等式成立的一對(duì)類比,通過(guò)t-SNE算法映射出的圖像可能是正確的。但在大多數(shù)情況下,由于t-SNE的非線性映射,你就沒(méi)法再指望這種平行四邊形了,很多這種平行四邊形的類比關(guān)系在t-SNE映射中都會(huì)失去原貌。
現(xiàn)在,再繼續(xù)之前,我想再快速地列舉一個(gè)最常用的相似度函數(shù),這個(gè)最常用的相似度函數(shù)叫做余弦相似度。這是我們上個(gè)幻燈片所得到的等式(下圖編號(hào)1所示),在余弦相似度中,假如在向量 uuu 和 vvv 之間定義相似度:
sim(u,v)=uTv∣∣u∣∣2∣∣v∣∣2sim(u,v)=\frac{u^Tv}{||u||_2||v||_2}sim(u,v)=∣∣u∣∣2?∣∣v∣∣2?uTv?
現(xiàn)在我們先不看分母,分子其實(shí)就是 uuu 和 vvv 的內(nèi)積。如果 uuu 和 vvv 非常相似,那么它們的內(nèi)積將會(huì)很大,把整個(gè)式子叫做余弦相似度,其實(shí)就是因?yàn)樵撌绞?uuu 和 vvv 的夾角的余弦值,所以這個(gè)角(下圖編號(hào)2所示)就是Φ角,這個(gè)公式實(shí)際就是計(jì)算兩向量夾角Φ角的余弦。你應(yīng)該還記得在微積分中,Φ角的余弦圖像是這樣的(下圖編號(hào)3所示),所以?shī)A角為0度時(shí),余弦相似度就是1,當(dāng)夾角是90度角時(shí)余弦相似度就是0,當(dāng)它們是180度時(shí),圖像完全跑到了相反的方向,這時(shí)相似度等于-1,這就是為什么余弦相似度對(duì)于這種類比工作能起到非常好的效果。 距離用平方距離或者歐氏距離來(lái)表示: ∣∣u?v∣∣2||u-v||^2∣∣u?v∣∣2
參考資料:余弦相似度 為了測(cè)量?jī)蓚€(gè)詞的相似程度,我們需要一種方法來(lái)測(cè)量?jī)蓚€(gè)詞的兩個(gè)嵌入向量之間的相似程度。 給定兩個(gè)向量 uuu 和 vvv ,余弦相似度定義如下:
CosineSimilarity(u,v)=u.v∣∣u∣∣2∣∣v∣∣2=cos(θ)(1)CosineSimilarity(u,v)=\frac{u.v}{||u||_2 ||v||_2}=cos(\theta)\tag{1}CosineSimilarity(u,v)=∣∣u∣∣2?∣∣v∣∣2?u.v?=cos(θ)(1)
其中 u.vu.vu.v 是兩個(gè)向量的點(diǎn)積(或內(nèi)積), ∣∣u∣∣2||u||_2∣∣u∣∣2? 是向量 uuu 的范數(shù)(或長(zhǎng)度),并且 θ\thetaθ 是向量 uuu 和 vvv 之間的角度。這種相似性取決于角度在向量 uuu 和 vvv 之間。如果向量 uuu 和 vvv 非常相似,它們的余弦相似性將接近1; 如果它們不相似,則余弦相似性將取較小的值。
圖1:兩個(gè)向量之間角度的余弦是衡量它們有多相似的指標(biāo),角度越小,兩個(gè)向量越相似。
從學(xué)術(shù)上來(lái)說(shuō),比起測(cè)量相似度,這個(gè)函數(shù)更容易測(cè)量的是相異度,所以我們需要對(duì)其取負(fù),這個(gè)函數(shù)才能正常工作,不過(guò)我還是覺(jué)得余弦相似度用得更多一點(diǎn),這兩者的主要區(qū)別是它們對(duì) uuu 和 vvv 之間的距離標(biāo)準(zhǔn)化的方式不同。
詞嵌入的一個(gè)顯著成果就是,可學(xué)習(xí)的類比關(guān)系的一般性。舉個(gè)例子,它能學(xué)會(huì)man對(duì)于woman相當(dāng)于boy對(duì)于girl,因?yàn)?strong>man和woman之間和king和queen之間,還有boy和girl之間的向量差在gender(性別)這一維都是一樣的。它還能學(xué)習(xí)Canada(加拿大)的首都是Ottawa(渥太華),而渥太華對(duì)于加拿大相當(dāng)于Nairobi(內(nèi)羅畢)對(duì)于Kenya(肯尼亞),這些都是國(guó)家中首都城市名字。它還能學(xué)習(xí)big對(duì)于bigger相當(dāng)于tall對(duì)于taller,還能學(xué)習(xí)Yen(円)對(duì)于Janpan(日本),円是日本的貨幣單位,相當(dāng)于Ruble(盧比)對(duì)于Russia(俄羅斯)。這些東西都能夠?qū)W習(xí),只要你在大型的文本語(yǔ)料庫(kù)上實(shí)現(xiàn)一個(gè)詞嵌入學(xué)習(xí)算法,只要從足夠大的語(yǔ)料庫(kù)中進(jìn)行學(xué)習(xí),它就能自主地發(fā)現(xiàn)這些模式。
在本節(jié)視頻中,你見(jiàn)到了詞嵌入是如何被用于類比推理的,可能你不會(huì)自己動(dòng)手構(gòu)建一個(gè)類比推理系統(tǒng)作為一項(xiàng)應(yīng)用,不過(guò)希望在這些可學(xué)習(xí)的類特征的表示方式能夠給你一些直觀的感受。你還看知道了余弦相似度可以作為一種衡量?jī)蓚€(gè)詞嵌入向量間相似度的辦法,我們談了許多有關(guān)這些嵌入的特性,以及如何使用它們。下節(jié)視頻中,我們來(lái)討論如何真正的學(xué)習(xí)這些詞嵌入。
課程板書(shū)
總結(jié)
以上是生活随笔為你收集整理的2.3 词嵌入的特性-深度学习第五课《序列模型》-Stanford吴恩达教授的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2.2 使用词嵌入-深度学习第五课《序列
- 下一篇: 2.4 嵌入矩阵-深度学习第五课《序列模