本文簡述了以下內容:
什么是詞表示,什么是表示學習,什么是分布式表示
one-hot representation與distributed representation(分布式表示)
基於distributional hypothesis的詞表示模型
(一)syntagmatic models(combinatorial relations):LSA(基於矩陣)
(二)paradigmatic models(substitutional relations):GloVe(基於矩陣)、NPLM(基於神經網絡)、word2vec(基於神經網絡)
什么是詞表示,什么是表示學習,什么是分布式表示
在NLP任務中,可以利用各種詞表示模型,將“詞”這一符號信息表示成數學上的向量形式。詞的向量表示可以作為各種機器學習模型的輸入來使用。
像SGNS這些新興的獲得embedding的模型其實不屬於字面含義上的“深度”學習,但通常會作為各種神經網絡模型的輸入的初始值(也就是預訓練),隨權重一起迭代更新。就我做過的實驗來說,預訓練做初始值時通常可以提升任務上的效果。
近年來,表示學習(representation learning)技術在圖像、語音等領域受到廣泛關注。對於NLP任務,表示學習是指將語義信息表示成稠密、低維的實值向量。這樣,可以用計算向量之間相似度的方法(如余弦相似度),來計算語義的相似度。這里其實有個問題:何為相似?比如說good與better的關系叫相似,還是good與bad的關系叫相似?這個問題,后面的博文再討論。
通過表示學習所得到的稠密、低維的實值向量,這種表示稱為分布式表示(distributed representation):孤立看待向量中的一維,沒有什么含義,而將每一維組合在一起所形成的向量,則表示了語義信息。分布式詞表示通常被稱為word embedding(詞嵌入;詞向量)。
好像有點抽象。。。
one-hot representation與distributed representation(分布式表示)
最簡單直接的詞表示是one-hot representation。考慮一個詞表 $\mathbb V$ ,里面的每一個詞 $w_i$ 都有一個編號 $i\in \{1,...,|\mathbb V|\}$ ,那么詞 $w_i$ 的one-hot表示就是一個維度為 $|\mathbb V|$ 的向量,其中第 $i$ 個元素值非零,其余元素全為0。例如:
$$w_2=[0,1,0,...,0]^\top$$
$$w_3=[0,0,1,...,0]^\top$$
可以看到,這種表示不能反映詞與詞之間的語義關系,因為任意兩個詞的one-hot representation都是正交的;而且,這種表示的維度很高。
詞的distributed representation(分布式表示)就是一種表示能夠刻畫語義之間的相似度並且維度較低的稠密向量表示,例如:
$$\text{高興}=[0.2,1.6,-0.6,0.7,0.3]^\top$$
$$\text{開心}=[0.3,1.4,-0.5,0.9,0.2]^\top$$
這樣,便可通過計算向量的余弦相似度,來反映出詞的語義相似度。
那么,如何得到詞表示?
基於distributional hypothesis的詞表示模型
現有的詞表示模型,都基於這樣一個假說:具有相似上下文的詞,應該具有相似的語義。這個假說被稱為distributional hypothesis(Harris, 1954; Firth, 1957)。
廣義上說,基於這個假說的詞表示都可以被稱為distributional representation,也就是說上述的分布式表示distributed representation其實也是它的一種。狹義上說,distributional representation特指基於矩陣(后文會介紹)的模型所得到的詞表示。
可以根據詞與詞的關系,將現有模型分為兩大類:一類是syntagmatic models,一類是paradigmatic models。
圖片來源:[1]
(一)syntagmatic models
syntagmatic models關注的是詞與詞的組合關系(combinatorial relations),強調的是相似的詞會共現於同一個語境(text region),比如說同一個句子。在上圖中,“wolf”和“fierce”就屬於組合關系。
為了建模組合關系,可以使用詞-文檔共現矩陣(words-by-documents co-occurrence matrix):矩陣的行指標代表詞,列指標代表文檔,矩陣的元素可以是詞頻、tf-idf值等。
舉個非常簡單的例子,現在有三篇文檔——doc1: I love playing football. doc2: I love playing tennis. doc3: You love playing football. 那么現在可以建立一個詞-文檔共現矩陣,元素值代表詞頻:
可以看出,“love”和“playing”這兩個較強組合關系的詞的詞表示是相似的,而“football”和“tennis”這兩個具有較強替換關系(替換關系將在下面介紹)的詞的表示是不相似的。當然,元素值未必是詞頻,也可以是tf-idf,而且tf-idf的計算也有很多細微的差別,這里就不展開了,詳情可以看《信息檢索導論》里面,介紹的非常詳細。這樣的詞表示的是高維稀疏表示,可以通過降維的方法使維度降低。
LSA模型(Latent Semantic Analysis,隱性語義分析,也叫LSI,隱性語義索引)是一種非常經典的模型,通過對詞-文檔共現矩陣進行奇異值分解(Singular Value Decomposition, SVD)來獲得主題、詞表示、文檔表示:
$$X_{m\times n}=U_{m\times m}\Sigma_{m\times n}V_{n\times n}^\top$$
式中 $m$ 代表詞的個數,$n$ 代表文檔的個數;$X$ 是詞-文檔共現矩陣;$U$ 、$V$ 兩個方陣滿足 $U^\top U=V^\top V=I$(如果是實數域且矩陣是方陣,則這是正交矩陣的定義;注意正交矩陣必須是方陣,否則充其量只能說其是正交矩陣的某些列),其中 $U$ 的列向量稱為 $X$ 的左奇異向量, $V$ 的列向量稱為 $X$ 的右奇異向量;矩陣 $\Sigma$ 的對角元素為從大到小排列的奇異值,且其他元素均為0,且非零奇異值的個數就等於矩陣 $X$ 的秩。
為了降維,只取奇異值中最大的 $k$ 個,那么SVD的式子就變成了下式:
$$X_{m\times n}^*=U_{m\times k}\Sigma_{k\times k}{V_{n\times k}}^\top$$
這實際上是一個對矩陣 $X$ 進行低秩近似問題,SVD得到的結果是最優低秩近似 $X^*$:$\min_{X^*} \| X-X^*\|_F$ 。矩陣的F范數就是矩陣各元素平方和,和向量的2范數是類似的。
LSA模型中,奇異值可以認為是從文檔中抽象出來的概念或主題;
矩陣 $U$ 的每一行都代表一個詞的詞表示,向量的每一維代表詞在主題空間中的每一個主題上的映射。剛剛說過,$U$ 的各列都是正交的。
矩陣 $V$ 的每一行都代表一篇文檔的文檔表示,向量的每一維代表文檔在主題空間中的每一個主題上的映射。對於給定的文檔,由其在向量空間模型下的向量表示 $\boldsymbol d_{\text{BOW}}$ 可得到其低維的向量表示 $\boldsymbol d_{\text{LSA}}=\Sigma^{-1}U^{\top}\boldsymbol d_{\text{BOW}}$
LSA模型對解決文檔檢索中的同義詞問題很有幫助:因為矩陣 $\Sigma_{k\times k}$ 所代表的是抽象出的重要概念,而一個詞的詞表示就看作是詞在概念上的映射。因此可以一定程度上緩解字符匹配搜索無法解決的同義詞問題。
但是,LSA不是概率意義上的模型,存在一定的缺陷:無法解釋詞表示和文檔表示里的負數是什么物理意義。引用一個知乎回答的對此問題的解釋:既然詞向量、文檔向量的每一維都是在相應主題上的映射,那么如果映射值為負是什么意思?如果正數是正相關、負數是負相關,那么把 $U$ 的一行和 $V$ 的一列的所有維度全部取負號,這樣做不影響 $X^*$ 的結果,可是正相關怎么就變成負相關,負相關怎么就變成正相關了呢?所以用LSA得到的distributional representation做相似度計算是可以的,但是單純根據一個維度上的值去做聚類就有一些問題了。
非負約束下的矩陣分解(NMF)可以參考這篇博客。
pLSA 模型則是一個概率意義上的模型,后來寫了一點筆記記錄了下推導過程。
另外,像 LSA 這種基於矩陣的模型也被稱為基於計數(count)的模型,例如此處的LSA以及后面即將介紹的GloVe。
(二)paradigmatic models
paradigmatic models關注的是詞與詞的替換關系(substitutional relations),強調的是相似的詞擁有相似的上下文(context)而可以不同時出現。在上圖中,“wolf”和“tiger”就屬於替換關系。
為了建模替換關系,可以使用詞-詞共現矩陣(words-by-words co-occurrence matrix):行指標和列指標都是詞。
還是用上面那三個簡單的“文檔”舉例子。可以構建詞-詞共現矩陣:
這里的元素值表示的是:以行指標所代表的詞作為中心詞的窗口內,列指標所代表的詞出現的次數,說的簡潔一點就是兩個詞在窗口內的共現次數。上面這個矩陣中,所取的窗口大小為1:比如說以“love”作為中心詞、窗口大小為1的窗口就是“I, love, playing”、“I, love, playing”、“You, love, playing”,考慮的是中心詞左邊和右邊各1個詞,那么在窗口內“love”和“playing”共現了3次,所以上面這個矩陣的第二行第三列就是3。
可以看出,“football”和“tennis”這兩個較強替換關系的詞的詞表示是相似的,而“love”和“playing”這兩個較強組合關系的詞的詞表示是不相似的。
GloVe模型(Global Vector)是一種對詞-詞共現矩陣進行分解而得到詞表示的模型,優化目標如下,paper中稱為“帶權最小二乘回歸(weighted least squares regression)”:
$$J=\sum_{w_i,w_j\in \mathbb V}f(X_{ij})(\boldsymbol v_i^\top \boldsymbol u_j +\boldsymbol b_i+\tilde{\boldsymbol b_j}-\log X_{ij})^2$$
式中,$X_{ij}$是詞 $w_i$ 與詞 $w_j$ 在窗口內共現次數的對數值;$\boldsymbol v_i$ 是詞 $w_i$ 的作為中心詞時的詞表示,$\boldsymbol u_j$ 是詞 $w_j$ 的作為上下文時的詞表示(后面介紹基於神經網絡的模型時會說明);函數 $f$ 的作用是,當兩個詞的共現次數越大,就越去影響損失函數的值。
還有一些paradigmatic models比如HAL(基於矩陣)、Brown Clustering(基於聚類)等就不多講了。
而在近來,基於神經網絡的詞表示模型受到了廣泛關注。 利用神經網絡得到的詞表示屬於分布式詞表示。
區別於基於矩陣的模型(被稱為基於計數的模型),這類基於神經網絡的模型被稱為基於預測(predict)的模型。 已經有一些paper指出,基於計數的模型與基於預測的模型在數學本質上的關聯。而這二者比較顯著的區別是,相對於基於計數的模型,基於預測的模型通常有更多的超參數,因此靈活性就強一些。有時候,超參數能起到的作用是大於模型的。
2003年提出的神經概率語言模型NPLM是利用神經網絡來訓練語言模型並得到詞表示的模型;2013年的word2vec工具包包括了CBOW和Skip-gram兩種直接以得到詞表示為目標的模型。下篇文將介紹這類基於神經網絡的詞表示模型。
這篇好像寫的也太水了一點。。。。
參考:
[1] Learning word representations by jointly modeling syntagmatic and paradigmatic relations, ACL2015
[2] Indexing by Latent Semantic Analysis, Journal of the American Society for Information Science 1990
[3] (PhD thesis)基於神經網絡的詞和文檔語義向量表示方法研究
[4] GloVe: Global Vectors for Word Representation, EMNLP2014