【深度學習】詞的向量化表示


  在CNN模型中,卷積就是拿**kernel**在圖像上到處移動,每移動一次提取一次特征,組成feature map, 這個提取特征的過程,就是卷積。

  接下來,我們看看Yoon Kim的paper:[Convolutional Neural Networks for Sentence Classification]([1408.5882] Convolutional Neural Networks for Sentence Classification) (EMNLP 2014)

論文框架介紹

Yoon Kim 自己畫的結構圖:

 

具體結構介紹:

1.輸入層

  可以把輸入層理解成把一句話轉化成了一個二維的圖像:每一排是一個詞的word2vec向量,縱向是這句話的每個詞按序排列。輸入數據的size,也就是圖像的size,n×k,n代表訓練數據中最長的句子的詞個數,這里是64(不夠64個詞的句子采用zero padding),k是embbeding的維度,這里是300。所謂的static和non-static的chanel解釋如下:

  • - CNN-rand: 所有的word vector都是隨機初始化的,同時當做訓練過程中優化的參數;
  • - CNN-static: 所有的word vector直接使用無監督學習即Google的Word2Vector工具(COW模型)得到的結果,並且是固定不變的;
  • - CNN-non-static: 所有的word vector直接使用無監督學習即Google的Word2Vector工具(COW模型)得到的結果,但是會在訓練過程中被Fine tuned;
  • - CNN-multichannel: CNN-static和CNN-non-static的混合版本,即兩種類型的輸入;

 

  從輸入層還可以看出kernel的size。很明顯kernel的高(h)會有不同的值,圖上有的是2,有的是3。這很容易理解,不同的kernel想獲取不同范圍內詞的關系;和圖像不同的是,**nlp中的cnn的kernel的寬(w)一般都是圖像的寬**,也就是word2vec的維度,這也可以理解,因為我們需要獲得的是縱向的差異信息,也就是不同范圍的詞出現會帶來什么信息。

2.卷積層

  由於kernel的特殊形狀,因此卷積后的feature map是一個寬度是1的長條。

3.池化層

  這里使用是MaxPooling,並且一個feature map只選一個最大值留下。這被認為是按照這個kernel卷積后的最重要的特征。

4.全連接層

  這里的全連接層是帶dropout的全連接層和softmax。

https://zhuanlan.zhihu.com/p/24758451

 

如果要一句話概括詞向量的用處,就是提供了一種數學化的方法,把自然語言這種符號信息轉化為向量形式的數字信息。這樣就把自然語言理解的問題要轉化為機器學習的問題。

其中最常用的詞向量模型無非是 one-hot Representation模型和 distributed representation 模型。

One-hot Representation

One-hot Representation 就是用一個很長的向量來表示一個詞,向量長度為詞典的大小N,每個向量只有一個維度為1,其余維度全部為0,為1的位置表示該詞語在詞典的位置。

舉個常見例子:

“話筒”表示為 [0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 …] 
“麥克”表示為 [0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 …]

這種 One-hot Representation 如果采用稀疏方式存儲,會是非常的簡潔,也就是給每個詞分配一個數字 ID。但這種表示方式有兩個缺點: 
(1)容易受維數災難的困擾,每個詞語的維度就是語料庫字典的長度。 
(2)詞語的編碼往往是隨機的,導致不能很好地刻畫詞與詞之間的相似性

Distributed representation

Distributed representation 最早由 Hinton在1986 年提出。其依賴思想是:詞語的語義是通過上下文信息來確定的,即相同語境出現的詞,其語義也相近。

Distributed Representation與one-hot representation對比

  1. 在形式上,one-hot representation 詞向量是一種稀疏詞向量,其長度就是字典長度,而Distributed Representation是一種固定長度的稠密詞向量。一般長這樣:[0.792, −0.177, −0.107, 0.109, −0.542, …]
  2. 在功能上,Distributed representation 最大的貢獻就是讓相關或者相似的詞,在距離上更接近了。

關於生成 Distributed representation 形式的詞向量,除了word2vec外,還有其他生成的方式。如:LSA矩陣分解模型、 PLSA 潛在語義分析概率模型、LDA 文檔生成模型。但本文只關注 word2vec 這種方式,其他不做介紹。

將word映射到一個新的空間中,並以多維的連續實數向量進行表示叫做“Word Represention” 或 “Word Embedding”。自從21世紀以來,人們逐漸從原始的詞向量稀疏表示法過渡到現在的低維空間中的密集表示。用稀疏表示法在解決實際問題時經常會遇到維數災難,並且語義信息無法表示,無法揭示word之間的潛在聯系。而采用低維空間表示法,不但解決了維數災難問題,並且挖掘了word之間的關聯屬性,從而提高了向量語義上的准確度。

神經網絡訓練詞向量

NNLM 是 Neural Network Language Model 的縮寫,即神經網絡語言模型。這方面最值得閱讀的文章:Bengio 的《A Neural Probabilistic Language Model》

這部分內容首先需理解下圖。Bengio用了一個三層的神經網絡來構建語言模型,同樣也是 n-gram 模型。本小節即主要是對於這個圖的理解: 
這里寫圖片描述

以輸入一句英文為例:The cat is walking in the bedroom。如果我們需要這句話中所有上下文為數量為4的連續詞匯片段,那么就有 The cat is walking、cat is walking in、is walking in the 以及 walking in the bedroom 這樣4個片段。從語言模型角度上來講,每個連續詞匯片段的最后一個單詞是什么,都是受前面三個詞匯制約。因此,這就形成了一個根據前面三個單詞,預測最后一個單詞的監督學習系統。

如果用神經網絡框架來描述,上圖就代表一個監督模型的神經網絡,當上下文數量為n的時候,這里的模型就是用前n-1個詞語,也就是w(t-1) … w(t-n+1),來預測第t個詞語w(t)。在神經網絡中,用於計算的都是這些詞的向量表示,如C(w(t-1)) 就是詞語 w(t-1) 的向量表示。

這里C(w(t-1))其實就是詞向量,但不是最終的詞向量,最終結果還需要多輪迭代計算。其實這些詞向量就是神經網絡里的參數,生成詞向量的過程就是一個參數更新的過程。

注意:對於初學者來說這里有個坑,考慮一個問題:詞向量不是我們最終得到的嗎?那我們如何得到最初輸入的每個詞對應的詞向量C(w(t-1))、C(w(t-2))、、、C(w(t-n+1))?以下是我查閱資料后自己的理解:

在上圖中存在一個系數矩陣C(是一個N*M的矩陣),其中N是詞典的長度,M是詞向量的維度。最底層的輸入其實是詞語的one-hot形式,one-hot也可以看成 1*N的矩陣 ,與這個系數矩陣C(N*M, M是word2vec詞向量維數)相乘之后就可以得到1*M的向量,這個向量就是這個詞對應的詞向量了。

從本質上來看,詞語w轉化為詞向量C(w),就是根據詞 w 的one-hot 形式,通過矩陣相乘,從系數矩陣C中取出一行。

還需注意的是,這個系數矩陣C,就是神經網絡的參數,最初是隨機的,隨着訓練的進行不斷被更新。

Word2vec 訓練介紹

這部分還是一樣,盡量想避開那些底層原理、不想多扯。

Word2Vec 實際上是兩種不同思想實現的:CBOW(Continuous Bag of Words) 和 Skip-gram。

CBOW的目標是根據上下文來預測當前詞語的概率,且上下文所有的詞對當前詞出現概率的影響的權重是一樣的,因此叫continuous bag-of-words模型。如在袋子中取詞,取出數量足夠的詞就可以了,至於取出的先后順序是無關緊要的。

Skip-gram剛好相反:根據當前詞語來預測上下文的概率。

這兩種方法都利用人工神經網絡作為它們的分類算法。起初每個單詞都是一個隨機 N 維向量。經過訓練之后,該算法利用 CBOW 或者 Skip-gram 的方法獲得了每個單詞的最優向量。訓練過程如下圖所示: 
這里寫圖片描述

對於CBOW 和 Skip-gram 的基本思想講到這里就結束了。按照學習word2vec一般套路,接下來就是實現CBOW 和 Skip-gram 這兩種思想的方法了— Hierarchical Softmax 和 negative sampling。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM