本節將介紹基於 Hierarchical Softmax 的連續詞袋模型,在圖 4.6 中顯示連續型詞
袋模型的網路結構,其包含三層:輸入層、投影層以及輸出層。假設 𝐶𝑜𝑛𝑡𝑒𝑥𝑡(𝑤)
是由詞 𝑤 前後各 𝑐 個詞所組成的上下文。在輸入層中,包含在 𝐶𝑜𝑛𝑡𝑒𝑥𝑡(𝑤)
中的 2𝑐 個詞向量 v(𝑐𝑜𝑛𝑡𝑒𝑥𝑡(𝑤)1), v(𝑐𝑜𝑛𝑡𝑒𝑥𝑡(𝑤)2),…, v(𝑐𝑜𝑛𝑡𝑒𝑥𝑡(𝑤)2𝑐) ∈
𝑅𝑚, 其中 m 代表詞向量的長度。在投影層中,將輸入層的 2c 個詞向量加總,
即 𝑥𝑤 = ∑2𝑐𝑖=1v(𝑐𝑜𝑛𝑡𝑒𝑥𝑡(𝑤)𝑖)。在輸出層中,會對應一棵二元樹,以詞彙 𝑉 中
所出現過的詞作為葉節點 (Leaf Node),以每個詞在語料庫中的出現次數作為權重
構造出來的霍夫曼樹 (Huffman Tree),頻率越高的詞越接近根節點。在該棵霍夫
39
曼樹中,葉節點共 𝑁 個,分別對應於詞彙 𝑉 中所有的詞,而非葉節點為 𝑁 − 1
個。在訓練過程中,模型會賦予每個非葉節點一個向量,該向量用以計算詞的機
率,而每個葉節點皆代表一個詞向量。
圖 4.6 基於 Hierarchical Softmax 的連續型詞袋模型
該網路結構的目的是為了判斷一段語句是否屬於自然語言。透過計算該語句
的詞序列組合之聯合機率藉由機率的高低決定出該語句是否為自然語言,而該方 法即是語言模型的目標。如給定由詞𝑤1, 𝑤2, … , 𝑤𝐿所組成的一語句𝑆,即可
利用式子(4.10)計算出該語句為自然語言的機率,其中 C𝑜𝑛𝑡𝑒𝑥𝑡(𝑤𝑖)代表詞𝑤𝑖的
上下文。
𝑝(S) = 𝑝(w1, w2, … , wL) = ∏𝐿𝑖=1𝑝(wi| Context(wL)) (4.10)
40
給定一個樣本(𝑤,x𝑤),其中 x𝑤代表詞𝑤的上下文向量,霍夫曼樹的目標是使
根節點沿著詞𝑤所對應的葉節點之路徑由上至下,且該路徑為唯一,中間遇到的
每一次分支皆可視為一次的二元分類。除根節點之外,每一個節點都對應到一個 0
或 1 的霍夫曼編碼,因此以直接的方式將霍夫曼編碼為 1 的節點定義為負類,
編碼為 0 的定義成正類。根據邏輯回歸,一個節點被分配到正類的機率為:
σ(𝑋𝑊𝑇𝜃) = 1
1+𝑒−𝑋𝑊𝑇 𝜃 (4.11)
而被分為負類的機率為:
1-σ(𝑋𝑊𝑇𝜃) (4.12)
其中𝜃為非葉節點所對應的向量,將每次的二元分類所產生的機率連乘後,可以
得到以上下文向量𝑥𝑤和霍夫曼樹所定義出條件機率,如式(4.13)
𝑝(w| Context(w)) = ∏𝑙𝑗=2𝑤 𝑝(𝑑𝑗𝑤| 𝑥𝑤 , 𝜃𝑗−1𝑤 ) (4.13)
其中𝑙𝑤為根節點至詞 w 對應的葉節點之路徑中所包含的節點數量,𝑑𝑗𝑤 ∈ {0 , 1}為
路徑中第 j 個節點所對應的霍夫曼編碼,套用式子 (4.11) 和 (4.12) 則
41
𝑝(𝑑𝑗𝑤| 𝑥𝑤 , 𝜃𝑗−1𝑤 ) = { σ(𝑋𝑊𝑇𝜃𝑗−1𝑤 ) , 𝑑𝑗𝑤 = 0
1 − σ(𝑋𝑊𝑇𝜃𝑗−1𝑤 ) , 𝑑𝑗𝑤 = 1 (4.14) 整體可表示為式子(4.15)
𝑝(𝑑𝑗𝑤| 𝑥𝑤 , 𝜃𝑗−1𝑤 ) = [σ(𝑋𝑊𝑇𝜃𝑗−1𝑤 )]1−𝑑𝑗𝑤*[1 − σ(𝑋𝑊𝑇𝜃𝑗−1𝑤 )]𝑑𝑗𝑤 (4.15)
基於類神經網路的語言模型通常取最大對數相似度 (Maximum
Log-likelihood),所以我們可以將式子(4.13)取最大對數相似度變為式(4.16)
𝐿 = ∑𝑤∈𝐶log 𝑝(w| Context(w)) (4.16)
其中 C 代表與資料集,將式子(4.13)代入(4.16)則目標函數變為:
𝐿 = ∑𝑤∈𝐶𝑙𝑜𝑔∏𝑙𝑗=2𝑤 𝑝(𝑑𝑗𝑤| 𝑥𝑤 , 𝜃𝑗−1𝑤 )
= ∑𝑤∈𝐶𝑙𝑜𝑔∏𝑙𝑗=2𝑤 𝑝 ([σ(𝑋𝑊𝑇𝜃𝑗−1𝑤 )]1−𝑑𝑗𝑤∗ [1 − σ(𝑋𝑊𝑇𝜃𝑗−1𝑤 )]𝑑𝑗𝑤)
= ∑𝑤∈𝐶∑𝑙𝑗=2𝑤 { (1 − 𝑑𝑗𝑤) ∗ log[𝜎(𝑋𝑊𝑇𝜃𝑗−1𝑤 )] + 𝑑𝑗𝑤∗ log[1 − σ(𝑋𝑊𝑇𝜃𝑗−1𝑤 )] } (4.17)
為了後續在梯度上的推導便利,我們簡記為 L(w, j),即
𝐿(𝑤, 𝑗) = (1 − 𝑑𝑗𝑤) ∗ log[𝜎(𝑋𝑊𝑇𝜃𝑗−1𝑤 )] + 𝑑𝑗𝑤∗ log[1 − σ(𝑋𝑊𝑇𝜃𝑗−1𝑤 )]
(4.18)
42
43
而基於 Hierarchical Softmax 的跳躍式模型,和連續型詞袋模型相同,皆
包含三層,輸入層、投影層和輸出層。在輸入層中,僅包含詞 w 的詞向量 v(w)∈
𝑅𝑚。在投影層中,將 v(w)投影 v(w),這為一個等量投影,因此此投影層為
冗餘,因此保留投影層可以和連續詞袋模型做比較。輸出層也和連續詞袋模
型相同使用一個霍夫曼樹。
對於跳躍式模型,其目的在給定當前詞 w 的狀態下,對其上下文 Context (w)
中的詞進行預測,因此目標函數類似與(4.13),因此跳躍式模型的數學式為下
式:
𝑝 (Context(w)|w) = ∏𝑢∈𝐶𝑜𝑛𝑡𝑒𝑥𝑡(𝑤)𝑝(𝑢|𝑤) (4.23)
上式中的𝑝(𝑢|𝑤)可改寫為
𝑝(𝑢|𝑤) = ∏𝑙𝑗=2𝑢 𝑝(𝑑𝑗𝑢|𝑣(𝑤), 𝜃𝑗−1𝑢 ) (4.24)
由對數相似函數得
L = ∑𝑤∈𝐶∏𝑢∈𝐶𝑜𝑛𝑡𝑒𝑥𝑡(𝑤)∏𝑙𝑗=2𝑢 {[𝜎(𝑣(𝑤)T𝜃𝑗−1𝑢 )]1−𝑑𝑗𝑢[1 − 𝜎(𝑣(𝑤)T𝜃𝑗−1𝑢 )]𝑑𝑗𝑢}
=∑𝑤∈𝐶∑𝑢∈𝐶𝑜𝑛𝑡𝑒𝑥𝑡(𝑤)∑𝑙𝑗=2𝑢 { (1 − 𝑑𝑗𝑢)𝑙𝑜𝑔[𝜎(𝑣(𝑤)T𝜃𝑗−1𝑢 )] + 𝑑𝑗𝑢𝑙𝑜𝑔[1 −
𝜎(𝑣(𝑤)T𝜃𝑗−1𝑢 )] } (4.25)
44