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

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

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

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

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

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