回憶一下我們在15.1 節中的討論。skip-gram模型的主要思想是使用softmax操作來計算生成上下文詞的條件概率wo基于給定的中心詞wc在(15.1.4)中,其對應的對數損失由(15.1.7)的相反數給出 。
由于 softmax 操作的性質,因為上下文詞可能是字典中的任何人V, (15.1.7)的反面 包含與詞匯表的整個大小一樣多的項目總和。因此, (15.1.8)中 skip-gram 模型的梯度計算和(15.1.15)中連續詞袋模型的 梯度計算都包含求和。不幸的是,這種在大型詞典(通常有數十萬或數百萬個單詞)上求和的梯度的計算成本是巨大的!
為了降低上述計算復雜度,本節將介紹兩種近似訓練方法:負采樣和分層softmax。由于skip-gram模型與連續詞袋模型的相似性,我們將僅以skip-gram模型為例來描述這兩種近似訓練方法。
15.2.1。負采樣
負采樣修改了原來的目標函數。給定中心詞的上下文窗口wc,任何(上下文)詞的事實wo來自這個上下文窗口被認為是一個事件,其概率建模為
(15.2.1)P(D=1∣wc,wo)=σ(uo?vc),
在哪里σ使用 sigmoid 激活函數的定義:
(15.2.2)σ(x)=11+exp?(?x).
讓我們首先最大化文本序列中所有此類事件的聯合概率來訓練詞嵌入。具體來說,給定長度的文本序列T, 表示為w(t)時間步長的單詞t并讓上下文窗口大小為m, 考慮最大化聯合概率
(15.2.3)∏t=1T∏?m≤j≤m,j≠0P(D=1∣w(t),w(t+j)).
然而,(15.2.3)只考慮那些涉及正例的事件。因此, 只有當所有詞向量都等于無窮大時,(15.2.3)中的聯合概率才最大化為 1。當然,這樣的結果是沒有意義的。為了使目標函數更有意義,負采樣添加了從預定義分布中采樣的負樣本。
表示為S上下文詞的事件wo來自中心詞的上下文窗口wc. 對于此次涉及的事件wo,來自預定義的分布P(w) 樣本K 不是來自這個上下文窗口的噪聲詞。表示為Nk干擾詞的事件wk (k=1,…,K) 不是來自上下文窗口 wc. 假設這些事件同時涉及正例和反例S,N1,…,NK是相互獨立的。負采樣將(15.2.3)中的聯合概率(僅涉及正例)重寫為
(15.2.4)∏t=1T∏?m≤j≤m,j≠0P(w(t+j)∣w(t)),
其中條件概率是通過事件來近似的 S,N1,…,NK:
(15.2.5)P(w(t+j)∣w(t))=P(D=1∣w(t),w(t+j))∏k=1,wk~P(w)KP(D=0∣w(t),wk).
表示為it和hk一個詞的索引 w(t)在時間步t文本序列和噪聲詞wk, 分別。關于 (15.2.5)中條件概率的對數損失是
(15.2.6)?log?P(w(t+j)∣w(t))=?log?P(D=1∣w(t),w(t+j))?∑k=1,wk~P(w)Klog?P(D=0∣w(t),wk)=?logσ(uit+j?vit)?∑k=1,wk~P(w)Klog?(1?σ(uhk?vit))=?logσ(uit+j?vit)?∑k=1,wk~P(w)Klog?σ(?uhk?vit).
我們可以看到現在每個訓練步驟的梯度計算成本與字典大小無關,而是線性取決于K. 設置超參數時K對于較小的值,負采樣的每個訓練步驟的梯度計算成本較小。
15.2.2。分層 Softmax
作為一種替代的近似訓練方法,hierarchical softmax 使用二叉樹,一種 如圖 15.2.1所示的數據結構,其中樹的每個葉節點代表字典中的一個詞V.
圖 15.2.1用于近似訓練的分層 softmax,其中樹的每個葉節點代表字典中的一個詞。
表示為L(w)從根節點到表示單詞的葉節點的路徑上的節點數(包括兩端)w在二叉樹中。讓n(w,j)成為jth該路徑上的節點,其上下文詞向量為 un(w,j). 例如,L(w3)=4在 圖 15.2.1中。分層 softmax 將(15.1.4)中的條件概率近似為
(15.2.7)P(wo∣wc)=∏j=1L(wo)?1σ([[n(wo,j+1)=leftChild(n(wo,j))]]?un(wo,j)?vc),
哪里的功能σ在(15.2.2)中定義,并且 leftChild(n)是節點的左子節點n: 如果 x是真的,[[x]]=1; 否則 [[x]]=?1.
為了說明,讓我們計算生成單詞的條件概率w3給定的詞wc在圖 15.2.1中。這需要詞向量之間的點積vc 的wc以及從根到路徑(圖15.2.1中粗體路徑)上的非葉節點向量w3,向左、向右、然后向左遍歷:
(15.2.8)P(w3∣wc)=σ(un(w3,1)?vc)?σ(?un(w3,2)?vc)?σ(un(w3,3)?vc).
自從σ(x)+σ(?x)=1,它認為生成字典中所有單詞的條件概率 V基于任何詞wc總結為一個:
(15.2.9)∑w∈VP(w∣wc)=1.
幸運的是,因為L(wo)?1順序是 O(log2|V|)由于二叉樹結構,當字典大小時V是巨大的,與不使用近似訓練相比,使用分層 softmax 的每個訓練步驟的計算成本顯著降低。
15.2.3。概括
負采樣通過考慮涉及正例和負例的相互獨立的事件來構建損失函數。訓練的計算成本線性依賴于每一步的噪聲詞數量。
Hierarchical softmax利用二叉樹中從根節點到葉節點的路徑構造損失函數。訓練的計算成本取決于每一步字典大小的對數。
15.2.4。練習
我們如何在負采樣中對噪聲詞進行采樣?
驗證(15.2.9)成立。
如何分別使用負采樣和分層 softmax 來訓練連續詞袋模型?
Discussions
-
pytorch
+關注
關注
2文章
808瀏覽量
13249
發布評論請先 登錄
相關推薦
評論