0
| 本文作者: 不靈叔 | 2017-12-26 11:17 |
雷鋒網(wǎng) AI 研習(xí)社按:本文為 seaboat 為雷鋒網(wǎng) AI 研習(xí)社撰寫的獨(dú)家稿件,未經(jīng)雷鋒網(wǎng)許可不得轉(zhuǎn)載。
前言
在 NLP 領(lǐng)域中,為了能表示人類的語言符號(hào),一般會(huì)把這些符號(hào)轉(zhuǎn)成一種數(shù)學(xué)向量形式以方便處理,我們把語言單詞嵌入到向量空間中就叫詞嵌入(word embedding)。
比如有比較流行的谷歌開源的 word2vec ,它能生成詞向量,通過該詞向量在一定程度上還可以用來度量詞與詞之間的相似性。word2vec采用的模型包含了連續(xù)詞袋模型(CBOW)和 Skip-Gram 模型,并通過神經(jīng)網(wǎng)絡(luò)來訓(xùn)練。
但這篇文章不深入講 word2vec 的內(nèi)容,而是看看另外一種詞向量生成方式——基于典型相關(guān)分析的詞向量。
說到詞向量就必須先看詞向量的形式,一般有兩類,分別是 one-hot 形式和分布式形式。前面我們說過詞向量就是用來表示人類語言的一種數(shù)學(xué)化的方式,最簡單的向量方式即是 one-hot 形式。
它的處理方式簡單粗暴,一般就是統(tǒng)計(jì)詞庫包含的所有V個(gè)詞,然后將這V個(gè)詞固定好順序,然后每個(gè)詞就可以用一個(gè)V維的稀疏向量來表示,向量中只有在該詞出現(xiàn)的位置的元素才為1,其它元素全為0。比如下面這幾個(gè)詞,第一個(gè)元素為1的表示中國,第六個(gè)元素為1的表示美國,第五個(gè)元素為1的表示日本。

從中可以看到 one-hot 形式的維數(shù)通常會(huì)很大,因?yàn)樵~數(shù)量一般在10W級別,這會(huì)導(dǎo)致訓(xùn)練時(shí)難度大大增加,造成維數(shù)災(zāi)難。另外這么多維只以順序信息并且只用1和0來表示單詞,很浪費(fèi)空間。再一個(gè)是這種方式的任意兩個(gè)詞都是孤立的,沒法看出兩個(gè)詞之間的相似性。于是看看有沒有改進(jìn)的方法。
鑒于 one-hot 形式詞向量的缺點(diǎn),出現(xiàn)了另外一種詞向量表示方式——分布式詞向量(distributed word representation)。 分布式詞向量則干脆直接用普通的向量來表示詞向量,而元素的值為任意實(shí)數(shù),該向量的維數(shù)可以在事前確定,一般可以為50維或100維。這時(shí)的詞向量類似如下(這里假設(shè)用5維來表示):

其中每個(gè)元素的具體數(shù)值則由訓(xùn)練來確定。這樣一來就克服了在深度學(xué)習(xí)中可能的維度災(zāi)難,而且充分利用了空間,如果使用適當(dāng)?shù)挠?xùn)練方法訓(xùn)練出來的詞向量還可以直接根據(jù)兩個(gè)詞之間的距離來計(jì)算相似性。
典型相關(guān)分析主要用于分析兩組變量之間的關(guān)系,通過該方法能有效分析相關(guān)關(guān)系。
傳統(tǒng)簡單的分析方式是直接用協(xié)方差矩陣,比如我們有兩組變量
和
,那么最原始的方法就是直接計(jì)算X和Y的協(xié)方差矩陣,矩陣有m*n個(gè)值。有了協(xié)方差矩陣就得到了兩兩變量之間的相關(guān)性,比如就是變量
和
的相關(guān)性。但這種方式存在缺點(diǎn),只考慮了變量之間單個(gè)維度之間的相關(guān)性,于是可采用經(jīng)典相關(guān)分析改進(jìn)。
經(jīng)典相關(guān)分析是分別在兩組變量中找出第一對線性組合,使他們具有最大相關(guān)性;接著再分別在兩組變量中找出第二對線性組合,使他們具有第二大的相關(guān)性,并且它們分別與本組內(nèi)的第一線性組合不相關(guān)。以此類推找出其他線性組合。
該方法的思想與主成分分析的思想相似,而其本質(zhì)就是從兩組變量中選取若干個(gè)有代表性的變量線性組合,用這些線性組合的相關(guān)性來表示原來兩組變量的相關(guān)性。
基于典型相關(guān)分析的詞向量的核心思想,它認(rèn)為一段文字中某個(gè)詞的左右兩邊指定長度的窗口內(nèi)的詞組應(yīng)該具有關(guān)聯(lián),也就是說某個(gè)詞的左邊若干單詞組成上文,右邊若干單詞組成下文,從而應(yīng)該讓上下文的關(guān)系盡可能緊密。如圖,假設(shè)窗口大小為2,則 w4 的左右兩窗口包含的詞組為上下文,類似的 w5 也有對應(yīng)的上下文,每個(gè)詞都有一個(gè)對應(yīng)的詞向量,那么要做的事就是最大化上下文兩個(gè)矩陣的協(xié)方差。
假設(shè)我們的語料包含了 n 個(gè)單詞,表示為{w1,w2,…wn},我們的詞典大小為 v,窗口大小為 h,再設(shè)詞向量的維度為 k。單詞左右兩邊的上下文組成的矩陣我們分別定義為,
和
,而整個(gè)語料的矩陣定義為
。
現(xiàn)在我們要做的就是找出兩個(gè)分別能最好代表左邊窗口的矩陣 L 和右邊窗口矩陣 R 的方向和
,這兩個(gè)方向應(yīng)該使得這兩個(gè)矩陣分別在對應(yīng)方向上的投影的協(xié)方差最大,投影可以看成是在這兩個(gè)方向保留了兩個(gè)窗口矩陣的最具代表性的信息。于是最大化目標(biāo)可以表示為

其中 E 表示經(jīng)驗(yàn)期望,另外我們用 表示矩陣 L 和矩陣 R 的協(xié)方差矩陣,用
表示矩陣 L 和矩陣 L 之間的協(xié)方差矩陣,用
表示矩陣 R 和矩陣 R 之間的協(xié)方差矩陣,則有

通過轉(zhuǎn)換,上述最大化目標(biāo)的解可以由下面等式給出,

解上述方程,分別取得 k 個(gè)最大特征值的特征向量,組成左右窗口兩個(gè)方向向量,它們的結(jié)構(gòu)為(vh × k)。然后將左窗口矩陣 L 和右窗口矩陣 R 分別投影到兩個(gè)方向向量上,即
,得到單詞對應(yīng)的隱狀態(tài) S 矩陣,S 則是用 k 個(gè)最相關(guān)的成分來表示單詞。最后再對 S 和語料矩陣 W 做典型相關(guān)分析,即 CCA(S,W),得到最終的詞向量嵌入矩陣,結(jié)構(gòu)為(v × k),此即為用 k 維向量表示原來的 v 個(gè)單詞,實(shí)現(xiàn)詞嵌入。
雷峰網(wǎng)特約稿件,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。