自然語言處理——CBOW模型
阿新 • • 發佈:2018-11-04
CBOW一個用於快速訓練得到詞向量的神經網路模型,它的核心原理是中心詞的前R個詞和後R個詞來預測中心詞。
它的網路模型相比NNLM模型來說,最大的變化是直接去除隱層的非線性啟用過程,以此來加速網路的訓練速度。
CBOW的輸入:
假設中心詞
的上下文
,也就上文為中心詞的前R個詞,下文為中心詞的後R個詞。每次詞的詞向量為
.那麼輸入到網路中的向量是這
個上下文詞向量的平均值。即:
而其中的
則定義為從詞向量矩陣
中取出詞
對應的那一行,或者那一列。
是這個待研究的預料庫的詞典的大小,一般為4000~7000。
是我們選擇的詞向量的長度,一般為50~500即可。
雖然我們知道 是將詞 對應的那一行詞向量取出來,直觀上也覺得很簡單,然而這個“取”的過程並不好實現,尤其是GPU不好實現,GPU最願意看到的是矩陣乘法那樣子的東西。那麼,能不能將這個"取"的過程,寫成一個矩陣乘法的形式呢?
還真可以!
我們知道,某個單位正交基
,就是第i列的位置為1,其它位置為0的特殊向量,這個形式剛好又與我們常見到的one-hot向量一樣。而
左乘一個矩陣
,恰好就是將
的第i行單獨取出來。於是這個將
的詞向量從
"取"出的過程恰好就可以表示為
,
恰好也就是
的one-hot向量。
我們再看剛剛的輸入公式:
把它具體化就是:
而對於這個求和來說,裡面有一個公共的因子
。將它提取出來,原式變成: