單詞跳過模型假設文本序列周圍的單詞是基於某個單詞生成的。例如,假設文本序列是“the”、“man”、“loves”、“his”和“son”。以“loves”為頭詞,背景窗口大小設置為2。如圖1所示,單詞跳過模型涉及生成背景單詞“the”、“man”、“the”、“man”、“his son”的條件概率,該背景單詞與中心單詞“loves”相距不超過兩個單詞,即
假設背景詞的生成與給定的中心詞相互獨立,上述公式可以改寫為
雖然開頭說壹熱不好,但我們不要忽視計算機無法識別“字符”,所有數據都必須轉換成二進制編碼形式的事實。
正如妳所註意到的,我們已經從隱藏層到達輸出層。簡單來說就是隱層和輸出層全連通,然後壹個softmax,輸出概率。這個過程相對簡單,壹個正向傳播,壹個反向傳播。
在跳詞模型中,每個詞被表示為二維向量來計算條件概率。假設這個詞在字典中被編入索引。當它是中心詞時,向量表示為,當它是背景詞時,向量表示為。設中心詞在詞典中的索引為,背景詞,中心詞在詞典中的索引為,給定中心詞生成背景詞的條件概率可以通過對向量內積做softmax運算得到:
字典索引集。假設給定壹個長度的文本序列,時間步長的字為。假設在給定中心詞的情況下,背景詞的生成是相互獨立的,當背景窗口大小為時,跳詞模型的似然函數就是任意壹個中心詞生成所有背景詞的概率。
小於1且大於此處的時間步長可以忽略。
這樣就可以計算出每個中心詞推斷背景詞的概率,我們在輸入的時候就給出了背景詞的向量,所以只需要最大化背景詞的輸出概率。基於這個想法,我們會想壹個最大化似然估計的方法。而函數的最大值往往不容易計算,我們可以通過變換來改變函數的增減,從而進行優化。這相當於最小化以下損失函數:
為了最小化損失函數,最容易想到的是梯度下降法。在使用梯度下降法之前,我們應該定義我們的損失函數。畢竟上面的公式是壹個概率。我們來引入softmax的計算結果:
損失函數已經得到,我們的目標是最小化它。在優化它之前,我們需要找出我們的參數是誰。對於每壹個錯誤,我們的參數都是頭詞和背景詞,對於這樣壹個函數來說顯然是非凸函數。所以我們在更新中心詞權重的時候要做壹個背景詞權重固定的假設,然後用同樣的方法更新背景詞的權重。
這裏計算頭詞的梯度,可以根據這個梯度叠代更新。背景詞的更新也是同樣的方法。
當,也就是我們能夠通過中心詞正確預測上下文詞的時候,就沒有必要調整,否則就要相應調整。
但是要註意,背景詞的數量不是唯壹的,更新的時候要壹個壹個更新,圖片有助於理解。
連續單詞包模型類似於跳過單詞模型。與跳詞模型最大的區別在於,連續詞袋模型假設中心詞是基於文本序列前後壹個中心詞的背景詞生成的。在相同的文本序列“The Man”、“loves”、“His”和“Son”中,以“loves”作為首詞,背景窗口大小為2,連續詞袋模型關註的是給定背景詞“The Man”、“His”和“Son”的情況下生成首詞“Loves”的條件概率(如圖2所示
因為連續詞袋模型中有很多背景詞,我們對這些背景詞向量進行平均,然後用和跳詞模型壹樣的方法計算條件概率。設和將詞典中有索引的詞分別表示為背景詞和中心詞的向量(註意符號的含義與跳詞模型中相反,假設輸入向量為0,輸出向量為0)。設中心詞在詞典中的索引為,背景詞在詞典中的索引為,則給定背景詞生成中心詞的條件概率。
為了使符號更簡單,我們記住,然後上面的公式可以縮寫為
給定壹個長度的文本序列,設時間步長t為,背景窗口大小為。連續詞袋模型的似然函數是背景詞生成任意中心詞的概率。
訓練連續詞袋模型和訓練跳過詞模型基本相同。連續袋模型的極大似然估計等價於最小損失函數。
註意到
通過微分,我們可以計算出上述公式中條件概率的對數關於任意背景詞向量的梯度。
用同樣的方法可以得到首詞的梯度。
與跳詞模型不同,我們壹般使用連續詞袋模型的背景詞向量作為詞表示向量。