word embedding理解

word embedding:NLP語言模型中對單詞處理的一種方式,這種技術會把單詞或者短語映射到一個n維的數值化向量,核心就是一種映射關係,主要分爲兩種方式:

1.one hot encoding:對語料庫中的每個單詞都用一個n維的one hot向量表示,其中n爲語料庫中不同單詞的個數。這種方法的原理是把語料庫中的不同單詞排成一列,對於單詞A,它在語料庫中的位置爲k,則它的向量表示爲第k位爲1,其餘爲0的n維向量。比如:

這種方法簡單易行,但存在語料庫太長導致單詞向量十分冗長的缺點,同時不同的單詞之間沒有明顯的聯繫。

2.word2vec:可以理解爲一種對單詞onehot向量的一種降維處理,通過一種映射關係將一個n維的onehot向量轉化爲一個m維的空間實數向量(可以理解爲原來座標軸上的點被壓縮嵌入到一個更加緊湊的空間內),由於onehot向量在矩陣乘法的特殊性,我們得到的表示映射關係的n*m的矩陣中的每k行,其實就表示語料庫中的第k個單詞。

採用這種空間壓縮降維的處理方式對語料庫中的詞進行訓練,主要有兩種方式

(1)skip-gram神經網絡訓練模型:一種隱層爲1的全連接神經網絡,且隱層沒有激活函數,輸出層採用softmax分類器輸出概率。輸入爲一個單詞,輸出爲每個單詞是輸入單詞的上下文的概率,真實值爲輸入單詞的上下文中的某個單詞。

主要通過skip-window控制,它代表着我們從當前input word的一側(左邊或右邊)選取詞的數量。假如我們有一個句子“The dog barked at the mailman”,我們選取“dog”作爲input word,那麼我們最終獲得窗口中的詞(包括input word在內)就是['The', 'dog','barked', 'at']。另一個參數叫num_skips,它代表着我們從整個窗口中選取多少個不同的詞作爲我們的output word,當skip_window=2,num_skips=2時,我們將會得到兩組 (input word, output word) 形式的訓練數據,即 ('dog', 'barked')('dog', 'the')

(2)CBOW:原理與skip-gram類似,但是輸入爲上下文信息,輸出爲信息中的中心詞。

word2vec的優點:表示單詞的向量維度縮減很大,有益於後續RNN訓練的收斂性。如果某兩個單詞的上下文很相似,則計算出來的表示這兩個單詞的特徵向量會很相似,在空間中表示相近的物理位置,所以可以用兩個單詞生成的向量的長度表示其含義的遠近。除了詞向量的大小之外,詞向量的方向還表示一種含義,若某兩個詞向量的方向相同,則其表示的含義也相近。如下圖所示:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章