DL4NLP——詞表示模型(三)word2vec(CBOW/Skip-gram)的加速:Hierarchical Softmax與Negative Sampling


        上篇博文提到,原始的CBOW / Skip-gram模型雖然去掉了NPLM中的隱藏層從而減少了耗時,但由於輸出層仍然是softmax(),所以實際上依然“impractical”。所以接下來就介紹一下如何對訓練過程進行加速。

        paper中提出了兩種方法,一種是Hierarchical Softmax,另一種是Negative Sampling。

        本文簡述了以下內容:

        CBOW / Skip-gram模型的加速策略(一):Hierarchical Softmax

        CBOW / Skip-gram模型的加速策略(二):Negative Sampling

CBOW / Skip-gram模型的加速策略(一):Hierarchical Softmax

        拿原始模型來說,計算 $\hat{\boldsymbol y}$ 的一個分量 $\hat{y_{\underline i}}=P(w_{\underline i}|w_{t-m},...,w_{t-1},w_{t+1},...,w_{t+m})=\text{softmax}(z_{\underline i})$ 時,由於使用的是softmax()函數,時間復雜度為 $O(|\mathbb V|)$ ,因此計算代價很大,對大規模的訓練語料來說,非常impractical。

        Hierarchical Softmax是一種對輸出層進行優化的策略,輸出層從原始模型的利用softmax計算概率值改為了利用Huffman樹計算概率值。

        以詞表中的全部詞作為葉子節點,詞頻作為節點的權,構建Huffman樹,作為輸出。Huffman樹是二叉樹,在葉子節點及葉子節點的權給定的情況下,該樹的帶權路徑長度最短(一個節點的帶權路徑長度指根節點到該節點的路徑長度乘以該節點的權,樹的帶權路徑長度指全部葉子節點的帶權路徑長度之和)。直觀上可以看出,葉子節點的權越大,則該葉子節點就應該離根節點越近。因此對於模型來說就是,詞頻越高的詞,距離根節點就越近。

        從根節點出發,到達指定葉子節點的路徑是唯一的。Hierarchical Softmax正是利用這條路徑來計算指定詞的概率,而非用softmax來計算。

圖片來源:[2],記號改成和本文一致

        上圖是一個已根據詞頻構建好的Huffman樹,各葉子節點代表詞表中的各個詞,非葉子節點共 $|\mathbb V|-1$ 個。以詞 $w_{\underline 2}$ 為例,從根節點到該葉子節點的路徑長度 $L(w_{\underline 2})=4$ ,各個節點依次被記為 $n(w_{\underline 2},1)$ 、$n(w_{\underline 2},2)$ 、$n(w_{\underline 2},3)$ 和 $n(w_{\underline 2},L(w_{\underline 2}))$ 。對於每個非葉子節點 $n(w,j)$ ,雖然不是詞表中的詞,但也引入所謂的“輸出詞向量” $\boldsymbol u_{n(w,j)}$ ,是需要學習的參數,為什么要引入它?下面講述。

        從根節點出發,走到指定葉子節點 $w$ 的過程,就是一個進行 $L(w)-1$ 次二分類的過程:路徑上的每個非葉子節點都擁有兩個孩子節點,從當前節點 $n(w,j)$ 向下走時共有兩種選擇,走到左孩子節點 $\text{ch}(n(w,j))$ 就定義為分類到了正類,走到右孩子節點就定義為分類到了負類。

        以CBOW模型為例,即輸入層是 $\hat{\boldsymbol v}_t$ 。用二項Logistic回歸模型對每一次分類過程建模:從當前節點 $n(w,j)$ 走到下一節點,那么走到左孩子節點的概率為

$$ \sigma(\boldsymbol u_{n(w,j)}^\top \hat{\boldsymbol v}_t) $$

        走到右孩子節點的概率為

$$1-\sigma(\boldsymbol u_{n(w,j)}^\top \hat{\boldsymbol v}_t)=\sigma(-\boldsymbol u_{n(w,j)}^\top \hat{\boldsymbol v}_t)$$

        將上面兩個式子統一起來,那就是

        (雙線括號的意思是,當括號內為真則輸出1,為假則輸出-1。因為這個符號渲染不出來,就用截圖代替了)

        現在計算輸出詞為 $w$ 的概率:這對應於一條從根節點 $n(w,1)$ 走到葉子節點 $n(w,L(w))$ 的路徑,概率計算式為下式:

        平均時間復雜度為 $O(\log |\mathbb V|)$ ,相比於使用softmax()函數有很大提高。

        對於Skip-gram模型,表達式類似:

        可以證明,這樣計算的結果滿足概率和為1:

$$\sum_{i=1}^{|\mathbb V|}P(w_{\underline i}|w_{t-m},...,w_{t-1},w_{t+1},...,w_{t+m})=1$$

        模型對語料中的全部詞串計算概率值做連乘得到似然函數,再取對數得到對數似然 $\mathcal L$ ,進而用極大似然估計來求取參數。使用SGD更新參數(求取梯度時,由於是SGD,所以 $\mathcal L$ 的求和號可以去掉)。易知在Hierarchical Softmax的情況下每個詞只會得到一個詞表示(輸入詞向量)。梯度求取比較簡單,[3] 寫的非常詳細並給出了參數更新過程的偽代碼(Skip-gram部分寫反了,應改為“各個周圍詞預測中心詞再做連乘”,而非“中心詞預測各個周圍詞再做連乘”)。

CBOW / Skip-gram模型的加速策略(二):Negative Sampling

        第二種加速策略是Negative Sampling(簡寫NEG,負采樣),這是Noise-Contrastive Estimation(簡寫NCE,噪聲對比估計)的簡化版本:把語料中的一個詞串的中心詞替換為別的詞,構造語料 $\mathbb D$ 中不存在的詞串作為負樣本。因此在這種策略下,優化目標變為了:最大化正樣本的概率,同時最小化負樣本的概率。對於一個詞串 $(w,c)$ ( $c$ 表示 $w$ 的上下文),用二項Logistic回歸模型對其是正樣本的概率建模:

$$P(\mathbb D=1|w,c)=\sigma(\boldsymbol u_{(w)}^\top \boldsymbol v_{(c)})$$

        所以全部正樣本的似然函數為

$$\prod_{(w,c)\in\mathbb D}P(\mathbb D=1|w,c)$$

        同理,全部負樣本的似然函數為

$$\prod_{(w,c)\notin\mathbb D}P(\mathbb D=1|w,c)$$

        需要最大化前者同時最小化后者,也就是最大化下式:

$$\prod_{(w,c)\in\mathbb D}P(\mathbb D=1|w,c)\prod_{(w,c)\notin\mathbb D}(1-P(\mathbb D=1|w,c))$$

        取對數得到對數似然:

$$\begin{aligned}\mathcal L=&\log\Biggr (\prod_{(w,c)\in\mathbb D}P(\mathbb D=1|w,c)\prod_{(w,c)\notin\mathbb D}(1-P(\mathbb D=1|w,c))\Biggr )\\=&\log\Biggr (\prod_{(w,c)\in\mathbb D}\sigma(\boldsymbol u_{(w)}^\top \boldsymbol v_{(c)})\prod_{(w,c)\notin\mathbb D}\sigma(-\boldsymbol u_{(w)}^\top \boldsymbol v_{(c)})\Biggr )\\=&\sum_{(w,c)\in\mathbb D}\log\sigma(\boldsymbol u_{(w)}^\top \boldsymbol v_{(c)})+\sum_{(w,c)\notin\mathbb D}\log\sigma(-\boldsymbol u_{(w)}^\top \boldsymbol v_{(c)})\end{aligned}$$

        由於使用SGD,所以只需要知道對一個正樣本 $(w,c)$ 的目標函數。式中 $NEG(w)$ 指 $(w,c)$ 的負樣本的中心詞集合:

$$ L=\log\sigma(\boldsymbol u_{(w)}^\top \boldsymbol v_{(c)})+\sum_{w_-\in NEG(w)}\log\sigma(-\boldsymbol u_{(w_-)}^\top \boldsymbol v_{(c)})$$

        求梯度的過程依舊可以參照 [3]。

        行文倉促,后面有機會再修正。

 

        參考資料:

[1] Distributed Representations of Words and Phrases and their Compositionality, NIPS2013

[2] word2vec Parameter Learning Explained

[3] word2vec中的數學原理 - peghoty

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM