b、Skip-Gram Model
y 是 x 的上下文,是以 y 隻取上下文裡一個詞語的時候,語言模型就變成:
用目前詞 x 預測它的下一個詞 y但如上面所說,一般的數學模型隻接受數值型輸入,這裡的 x 該怎麼
表示呢? 顯然不能用 Word2vec,因為這是我們訓練完模型的産物,現在我們想要的是 x 的一個原始輸入形式。
答案是:one-hot encoder
b、Skip-Gram Model
下圖Skip-gram 的網絡結構了,x 就是上面提到的 one-hot encoder形式的輸入,y 是在這 V (字典)個詞上輸出的機率,我們希望跟真實的 y 的 one-hot encoder 一樣。
b、Skip-Gram Model
隐層的激活函數其實是線性的,相當于沒做任何處理(這也是Word2vec 簡化之前語言模型的獨到之處),我們要訓練這個神經網絡,用反向傳播算法,本質上是鍊式求導,在此不展開說明了,當模型訓練完後,最後得到的其實是神經網絡的權重,比如現在輸入一個 x 的 one-hot encoder: [1,0,0,…,0],對應剛說的那個詞語『吳彥祖』,則在輸入層到隐含層的權重裡,隻有對應 1 這個位置的權重被激活,這些權重的個數,跟隐含層節點數是一緻的,進而這些權重組成一個向量 vx 來表示x,而因為每個詞語的 one-hot encoder 裡面 1的位置是不同的,是以,這個向量 vx 就可以用來唯一表示 x。
b、Skip-Gram Model
word2vec對這個模型做了改進,首先,對于從輸入層到隐藏層的映射,沒有采取神經網絡的線性變換加激活函數的方法,而是采用簡單的對所有輸入詞向量求和并取平均的方法。比如輸入的是三個4維詞向量:(1,2,3,4),(9,6,11,8),(5,10,7,12),那麼我們word2vec映射後的詞向量就是(5,6,7,8)。由于這裡是從多個詞向量變成了一個詞向量。