今天終于將CMOW看明白了
參考鏈接:
https://blog.csdn.net/weixin_40240670/article/details/81203428
https://zhuanlan.zhihu.com/p/55983009
https://blog.csdn.net/u012762419/article/details/79366052
Word2Vec
Word2vec使用單個(gè)隱藏層,完全連接的神經(jīng)網(wǎng)絡(luò)如下所示。隱藏層中的神經(jīng)元都是線性神經(jīng)元。輸入層設(shè)置為具有與用于訓(xùn)練的詞匯中的單詞一樣多的神經(jīng)元。隱藏圖層大小設(shè)置為生成的單詞向量的維度。輸出圖層的大小與輸入圖層相同。
因此,假設(shè)用于學(xué)習(xí)單詞向量的詞匯表由V個(gè)單詞組成并且N為單詞向量的維度(每個(gè)單詞擁有N個(gè)特征),則對隱藏層連接的矩陣大小為VxN的矩陣WI表示,其中每行表示詞匯單詞。以相同的方式,可以通過矩陣WO來描述從隱藏層到輸出層的連接大小為NxV。

例子:
具有以下句子的訓(xùn)練語料庫:
“The dog saw a cat”,“Dog chasing cat”,“Cat climbed a tree”
語料庫詞匯有八個(gè)單詞['a','cat','chasing','climbed','dog','saw','the','tree']。按字母順序排序后,每個(gè)單詞都可以通過其索引引用。對于這個(gè)例子,我們的神經(jīng)網(wǎng)絡(luò)將有八個(gè)輸入神經(jīng)元和八個(gè)輸出神經(jīng)元。讓我們假設(shè)我們決定在隱藏層中使用三個(gè)神經(jīng)元。這意味著WI和WO將分別是8×3和3×8矩陣。在訓(xùn)練開始之前,這些矩陣被初始化為隨機(jī)值,假設(shè)WI和WO初始化為以下值:
WI =

WO=

假設(shè)我們希望網(wǎng)絡(luò)學(xué)習(xí)單詞“cat”和“climbed”之間的關(guān)系。也就是說,當(dāng)“cat”輸入到網(wǎng)絡(luò)時(shí),網(wǎng)絡(luò)應(yīng)該顯示“climbed”的高概率。在單詞嵌入術(shù)語中,單詞“cat”被稱為context word,單詞“climbed”被稱為target word。在這種情況下,輸入矢量X將是[0 1 0 0 0 0 0 0]t,目標(biāo)矢量是[0 0 0 1 0 0 0 0]t。
利用表示“cat”的輸入向量,可以將隱藏層神經(jīng)元的輸出計(jì)算為:
H = X*WI = [-0.490796 -0.229903 0.065460]
實(shí)際上隱藏神經(jīng)元輸出的向量H復(fù)制了WI矩陣的第二行的權(quán)重,因?yàn)檩斎雽邮荗ne-hot編碼,cat又是第二個(gè)word,所以會復(fù)制第二行的數(shù)值。對隱藏到輸出層執(zhí)行類似的操作,輸出層神經(jīng)元的激活矢量可以寫成:
H_ = H*WO = [0.100934 -0.309331 -0.122361 -0.151399 0.143463 -0.051262 -0.079686 0.112928]
由于目標(biāo)是為輸出層中的單詞生成概率,因此在輸出層后面,我們會采用前文所述的Softmax作為激活函數(shù),將輸出向量中的數(shù)值轉(zhuǎn)換為概率:
[0.143073 0.094925 0.114441 0.111166 0.149289 0.122874 0.119431 0.144800]
粗體的概率是針對所選擇的目標(biāo)詞“climbed”,很顯然它不是最大的,所以我們需要改進(jìn)他,同樣是采用我前文所述的交叉熵和BP算法反向改進(jìn)權(quán)重。
從本質(zhì)上講,這就是Word2Vec如何學(xué)習(xí)單詞之間的關(guān)系,并在此過程中開發(fā)語料庫中單詞的向量表示。
CBOW(continues bag of words)
CBOW的全稱是continuous bag of words(連續(xù)詞袋模型)。其本質(zhì)也是通過context word(背景詞)來預(yù)測target word(目標(biāo)詞)。如上述不同的時(shí)候,上述target word“climbed”的context word只有一個(gè)“cat”作為訓(xùn)練樣本,而在CBOW中,可由多個(gè)context word表示。
例如,我們可以使用“cat”和“tree”作為“climbed”的context word。這需要修改神經(jīng)網(wǎng)絡(luò)架構(gòu)。如下所示,修改包括將輸入層復(fù)制C(C的大小就是window的大?。┐?,以及在隱藏層神經(jīng)元中添加除以C的操作。相當(dāng)于一個(gè)target word要訓(xùn)練C次神經(jīng)網(wǎng)絡(luò)。

自注:
(1) 該詞嵌套的求解采用的是一個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò),多個(gè)詞輸入(上下文輸入)和一個(gè)輸出(target word),其實(shí)很好理解。輸入向量大小維度等于最終輸出向量的大小維度。
