天天看點

學習 ITEM2VEC: NEURAL ITEM EMBEDDING FOR COLLABORATIVE FILTERING

1 學習什麼是Word2vec

1)詞向量

One-hot Representation

Distributed Representation

http://licstar.net/archives/328

2)logistics回歸

https://en.wikipedia.org/wiki/Logistic_function

3)softmax函數

https://en.wikipedia.org/wiki/Softmax_function

4)word2vec

https://iksinc.wordpress.com/tag/skip-gram-model/

1 連續bag-of -words(COBW) :從上下文預測一個字

2 skip-gram:從一個文字預測上下文

Word2vec使用單個隐藏層,完全連接配接的神經網絡如下所示。隐層中的神經元都是線性神經元。輸入層被設定為具有與用于訓練的詞彙表中的單詞一樣多的神經元。将隐藏層大小設定為所得到的字向量的次元。輸出層的大小與輸入層相同。是以,假設用于學習字向量的詞彙由V字和N構成為詞向量的次元,則隐含層連接配接的輸入可以由大小為VxN的矩陣WI表示,每行表示詞彙單詞。同樣,從隐層到輸出層的連接配接可以由大小為NxV的矩陣WO描述。在這種情況下,WO矩陣的每列  表示來自給定詞彙表的單詞。使用“ 1-of-V ”表示對網絡的輸入進行編碼,這意味着隻有一條輸入線被設定為1,其餘的輸入線被設定為零。

學習 ITEM2VEC: NEURAL ITEM EMBEDDING FOR COLLABORATIVE FILTERING

要更好地處理Word2vec如何工作,請考慮具有以下句子的訓練語料庫:

“狗看見一隻貓”,“狗追貓”,“貓爬樹”

語料庫詞彙有八個字。一旦按字母順序排列,每個單詞都可以由其索引引用。對于這個例子,我們的神經網絡将有八個輸入神經元和八個輸出神經元。讓我們假設我們決定在隐藏層中使用三個神經元。這意味着WI和WO分别為8×3和3×8矩陣。在訓練開始之前,這些矩陣被初始化為小的随機值,如通常在神經網絡訓練中。為了說明起見,讓我們假設WI和WO被初始化為以下值:

WI = 

學習 ITEM2VEC: NEURAL ITEM EMBEDDING FOR COLLABORATIVE FILTERING

W0 =

學習 ITEM2VEC: NEURAL ITEM EMBEDDING FOR COLLABORATIVE FILTERING

假設我們希望網絡學習“貓”和“爬”之間的關系。也就是說,當“貓”輸入到網絡時,網絡應該顯示“爬”的可能性很高。在詞嵌入術語中,單詞“cat”被稱為上下文單詞,并将單詞“climbed”稱為目标單詞。在這種情況下,輸入矢量X将為[0 1 0 0 0 0 0 0] t。請注意,隻有向量的第二個分量是1,這是因為輸入的單詞是“cat”,它在語料庫單詞的排序清單中保持兩個位置。給定目标詞“爬”,目标矢量将看起來像[0 0 0 1 0 0 0 0] t。

使用輸入向量代表“貓”,隐層神經元的輸出可以計算為

H t = X t WI = [-0.490796 -0.229903 0.065460]

不要讓我們驚訝的是,隐藏的神經元輸出的向量H由于1-out-V表示而模拟WI矩陣的第二行的權重。是以輸入到隐層連接配接的功能基本上是将輸入字向量複制到隐層。對隐藏輸出層進行類似的操作,輸出層神經元的激活向量可以寫為

H t WO = [0.100934 -0.309331 -0.122361 -0.151399 0.143463 -0.051262 -0.079686 0.112928]

由于目标是為輸出層中的單詞産生機率,是以  對于k = 1的Pr(詞k |詞上下文)V來反映其與輸入端的上下文單詞的下一個單詞關系,我們需要神經元輸出的和輸出層添加到一個。Word2vec通過使用softmax函數将輸出層神經元的激活值轉換為機率來實作此目的。是以,通過以下表達式來計算第k個神經元的輸出,其中激活(n)表示第n個輸出層神經元的激活值: 

學習 ITEM2VEC: NEURAL ITEM EMBEDDING FOR COLLABORATIVE FILTERING

是以,語料庫中八個詞的機率是:

0.143073 0.094925 0.114441   0.111166    0.149289 0.122874 0.119431 0.144800

大膽的機率是所選擇的目标詞“爬”。給定目标向量[0 0 0 1 0 0 0 0] t,可以通過從目标向量中減去機率向量來容易地計算輸出層的誤差向量。一旦知道了錯誤,可以使用反向傳播更新矩陣WO和WI中

的權重。是以,訓練可以通過從語料庫呈現不同的上下文目标詞對來進行。實質上,這是Word2vec如何學習單詞之間的關系,并且在該過程中開發語料庫中單詞的向量表示。

連續的單詞(CBOW)學習

上述描述和架構是為了學習一對單詞之間的關系。在連續的單詞模型中,上下文由給定目标詞的多個單詞表示。例如,我們可以使用“cat”和“tree”作為“爬”的上下文單詞作為目标單詞。這需要修改神經網絡架構。如下所示的修改包括将隐藏層連接配接的輸入C次複制到上下文單詞的數量,以及在隐藏層神經元中添加除以C操作。

學習 ITEM2VEC: NEURAL ITEM EMBEDDING FOR COLLABORATIVE FILTERING

通過上述配置來指定C上下文單詞,使用1進制V表示來編碼的每個單詞意味着隐含層輸出是對應于輸入處的上下文單詞的單詞向量的平均值。輸出層保持不變,訓練以上述方式進行。

Skip-Gram模型

Skip-gram模型反轉了目标和上下文單詞的使用。在這種情況下,目标字在輸入端被饋送,隐層保持相同,并且神經網絡的輸出層被多次複制以适應所選數量的上下文單詞。以“貓”和“樹”為例作為上下文單詞,以“爬”為目标字,舍略模型中的輸入向量為[0 0 0 1 0 0 0 0] t,而兩個輸出層将分别具有[0 1 0 0 0 0 0 0] t和[0 0 0 0 0 0 0 1] t作為目标向量。代替産生一個機率向量,将為目前示例生成兩個這樣的向量。按照上述方式産生每個輸出層的誤差向量。然而,将所有輸出層的誤差向量相加,以通過反向傳播來調整權重。這確定了通過訓練,每個輸出層的重量矩陣WO都保持相同。

繼續閱讀