除了基于采樣的神經(jīng)網(wǎng)絡(luò)語言模型的加速方法,另一個重要的加速神經(jīng)網(wǎng)絡(luò)語言模型的研究方向是層級輸出(Hierarchical Outputs)嗅绰。與基于采樣的方法不同愉择,層級輸出方法是對神經(jīng)網(wǎng)絡(luò)語言模型的輸出層進(jìn)行分層,即對詞典中的詞進(jìn)行分類黄琼,從而減少神經(jīng)網(wǎng)絡(luò)語言模型的計算量苗缩。層次輸出不僅能夠加速神經(jīng)網(wǎng)絡(luò)語言模型的訓(xùn)練饵蒂,在預(yù)測階段仍然有效,并且加速效果顯著酱讶,但通常以增加模型的PPL為代價退盯。
1. 前言
? ? ? ?神經(jīng)網(wǎng)絡(luò)語言模型的加速是神經(jīng)網(wǎng)絡(luò)語言建模(Language Modeling, LM)研究中的熱點,除了前面提到的基于采樣的方法外泻肯,如重要性采樣(Important Sampling, IS)和噪聲對比評估(Noise-Contrastive Estimation, NCE)渊迁,另一個重要的神經(jīng)網(wǎng)絡(luò)語言模型加速方法是基于詞類的方法,將詞典中的詞劃分為多個類別灶挟,從而將神經(jīng)網(wǎng)絡(luò)語言模型輸出的條件概率分解成多個條件概率的乘積琉朽,減少每次訓(xùn)練或者預(yù)測時涉及的單詞數(shù)量,進(jìn)而減少了神經(jīng)網(wǎng)絡(luò)語言模型的計算量稚铣。F. Morin and Y. Bengio (2005)首先提出利用層級Softmax (Hierarchical Softmax)對神經(jīng)網(wǎng)絡(luò)語言模型進(jìn)行加速箱叁。而后T. Mikolov and et. al. (2011)將N-gram語言模型中的詞類(Word Class)思想引入到神經(jīng)網(wǎng)絡(luò)語言模型中,減少神經(jīng)網(wǎng)絡(luò)語言模型的計算量惕医。H. S. Le and et. al. (2011)耕漱,W. Chen, D. Grangier and M. Auli (2015)等提出結(jié)構(gòu)化輸出(Structured Ouputs),或者稱為差異Softmax (Differentiated Softmax)抬伺,對輸出層進(jìn)行更加精細(xì)的分層螟够,以減少神經(jīng)網(wǎng)絡(luò)語言模型的計算量。
2. 基本原理
? ? ? ?雖然這類研究所提出的概念不同峡钓,但其背后的基本思想都是類似的齐鲤,都是延續(xù)了J. Goodman (2001)提出的基于詞類的加速思想〗烽梗基于詞類的加速方法最初被用于加速最大熵語言模型,但是可以直接應(yīng)用到其他類型的語言模型中牡肉,包括N-gram語言模型以及神經(jīng)網(wǎng)絡(luò)語言模型捧灰。
? ? ? ?通常語言模型的評估的是給定上文的條件下,單詞為下一個單詞的概率潜支×骷茫基于詞類的加速方法的基本思想是將詞典中的單詞劃分為多個類別,即詞類泵肄,而后條件概率就轉(zhuǎn)換為兩個條件概率的乘積:給定上文的條件下煌寇,下一個單詞屬于類別的條件概率焕蹄,以及給定上文及詞類的條件下,下一個單詞為的條件概率阀溶,即
? ? ? ?正如前面文章提到的腻脏,神經(jīng)網(wǎng)絡(luò)語言模型的計算量主要來源于輸出層。由于需要計算正則項银锻,所有的輸出都必須計算永品,一般在幾萬到幾百萬,從而導(dǎo)致較大的計算量击纬。引入詞類后鼎姐,只需要計算詞類的對應(yīng)的輸出以及該詞類下單詞對應(yīng)的輸出,可以極大地減少計算量更振。比如詞典的大小為10000炕桨,將單詞劃分為100類別,則每個類別的單詞數(shù)為100肯腕。由于正則項計算的需要献宫,正常語言模型需要計算全部輸出,即10000個輸出乎芳。如果采用詞類的話遵蚜,那么只需要計算100個類別對應(yīng)的輸出以及該類別下100個單詞對應(yīng)的輸出,共計算200輸出奈惑,理論上可提速50倍吭净。
? ? ? ?基于詞類的方法可以有效地提升神經(jīng)網(wǎng)絡(luò)語言模型的計算速度,并且在訓(xùn)練和預(yù)測階段都有效果肴甸。圍繞基于詞類的加速方法的研究寂殉,主要集中在兩個方面。一方面是如何使加速效果最大化原在,另一方面是使得引入詞類后友扰。模型的PPL上升地更少。采用詞類后庶柿,相當(dāng)于在模型中引入了一個剛性的約束村怪,導(dǎo)致模型的PPL上升。如何劃分合理的詞類浮庐,是件困難的事甚负。雖然很多研究提出了多種詞類的劃分方法,在一定程度上改善了模型的性能,但終究不能使得模型達(dá)到引入詞類前的PPL水平梭域。究其原因斑举,神經(jīng)網(wǎng)絡(luò)語言模型所學(xué)習(xí)到的詞之間相似性是復(fù)雜的,多維度的病涨,很難通過人為設(shè)計出相同的相似性富玷。
3. 層級Softmax
? ? ? ?神經(jīng)網(wǎng)絡(luò)語言模型加速方面的最早研究是重要性采樣方法,其次便是層級Softmax既穆。J. Goodman (2001)曾指出詞類的劃分可以不局限于單層的詞類赎懦,可以對詞類進(jìn)一步劃分。F. Morin and Y. Bengio (2005)根據(jù)這個想法循衰,提出了層級Softmax (Hierarchical Softmax)铲敛,對詞典中的單詞進(jìn)行多層分類,從而最后形成了平衡二叉樹会钝。詞典中的每個詞被表示為位向量伐蒋,其中的值取決于詞典的大小,向量的每個元素非0即1迁酸。表示詞屬于根類別的1類分類先鱼,而表示該詞屬于根類別下的子分類中的0類分類。那么奸鬓,下一個詞條件概率變換為:
? ? ? ?采用層級Softmax進(jìn)行加速的具體實現(xiàn)并不復(fù)雜焙畔,其難點在于二叉樹的構(gòu)建。F. Morin and Y. Bengio (2005)利用WordNet中同義詞信息串远,采用K-means算法完成了平衡二叉樹的構(gòu)建宏多。F. Morin and Y. Bengio (2005)的實驗結(jié)果如下:
模型 | 驗證集PPL | 測試集PPL | 加速 |
---|---|---|---|
原始模型 | 213.2 | 195.3 | 1 |
重要性采樣 | 209.4 | 192.6 | 68.7 |
層級Softmax | 241.6 | 220.7 | 258 |
? ? ? ?實驗中,詞典的大小為10000澡罚,理論上的加速效果為伸但,但實際上的加速效果遠(yuǎn)沒有理論上那么大。實驗顯示在訓(xùn)練過程中的加速效果為258倍留搔,而預(yù)測過程中的加速效果為200左右更胖。即使沒有達(dá)到理論上的加速效果,層級Softmax的加速效果也遠(yuǎn)高于基于采樣的加速方法隔显。
? ? ? ?雖然F. Morin and Y. Bengio (2005)提出的方案能夠極大地減少神經(jīng)網(wǎng)絡(luò)語言模型的計算量却妨,但是該方案并不能直接應(yīng)用于其他語言,因為并不是所有語言都能獲取類似WordNet的資源括眠。針對上述情況彪标,A. Mnih, G. Hinton (2009)提出了于語言知識無關(guān)的構(gòu)建詞類二叉樹的方法,該方法主要通過詞向量來實現(xiàn)的掷豺。由于那時詞袋模型(Bag of Words, BOW)捞烟、Skip-Gram模型等用于快速訓(xùn)練詞向量的模型還沒被提出账锹,所以論文首先采用隨機的方法生成詞類二叉樹,然后訓(xùn)練對數(shù)雙線性模型(Log-bilinear Model, LBLM)坷襟,從而獲取能夠體現(xiàn)單詞間相似性的詞向量,現(xiàn)在完全可以采用詞袋模型或者Skip-Gram模型來訓(xùn)練詞向量生年。獲取詞向量之后婴程,便可利用詞向量可以表示單詞間相似性的特點,構(gòu)建詞類二叉樹抱婉,具體構(gòu)建邏輯可以參考F. Morin and Y. Bengio (2005)的研究档叔。T. Mikolov and et. al. (2013)則提出采用霍夫曼二叉樹來表示詞類,并且頻率高的詞被分配更短的路徑蒸绩,進(jìn)一步減少模型的訓(xùn)練時間衙四。
4. 單層詞類
? ? ? ?層次Softmax是對詞類方法的擴展,而T. Mikolov and et. al. (2011)則直接將詞類方法引入到了神經(jīng)網(wǎng)絡(luò)語言建模中患亿,并對比了兩種詞類劃分的方案传蹈。兩種詞類的劃分方案的依據(jù)都是詞頻,采用類似輪盤賭的方式步藕。首先將詞典中的單詞按照詞頻降序排列惦界,然后計算所有詞的總詞頻,如下:
其中, 是詞典的大小咙冗,是詞典中每個詞的詞頻沾歪。如果第個詞的累積詞頻滿足如下條件,則就別分配至第個詞類中:
其中雾消,為需要分配的總的詞類數(shù)量灾搏。相對于平均分配詞類,該方案使得詞頻高的詞所在的詞類包含較少的單詞立润,能夠減少訓(xùn)練時的計算量狂窑。
? ? ? ?另一種詞類的分配方案是對上述方案的改進(jìn),用詞頻的平方根代替詞頻范删。首先計算所有詞的詞頻平方根的總和蕾域,如下:
而詞類分配的規(guī)則,更改如下:
如此到旦,使得不同詞類包含的單詞數(shù)量差異更大旨巷,詞頻較大的單詞所組成的詞類更小,進(jìn)一步減少了神經(jīng)網(wǎng)絡(luò)語言模型的訓(xùn)練時間添忘。T. Mikolov and et. al. (2011)給出了在賓州樹庫上對第二種方案的測試結(jié)果采呐,所用的詞典大小為10000,測試結(jié)果如下表所示:
模型 | 詞類數(shù)量 | 每次迭代時間/min | PPL |
---|---|---|---|
RNN | - | 154 | 123 |
RNN | 30 | 12.8 | 134 |
RNN | 50 | 9.8 | 136 |
RNN | 100 | 9.1 | 136 |
RNN | 200 | 9.5 | 136 |
RNN | 400 | 10.9 | 134 |
RNN | 1000 | 16.1 | 131 |
不難看出搁骑,直接基于詞類的加速方法雖然沒有層級Softmax的加速效果斧吐,但是實現(xiàn)比較簡單又固,詞典大小在10000時,速度能夠提升大約17倍煤率。與層級Softmax類似仰冠,引入詞類后,模型的PPL明顯變高了蝶糯。
5. 結(jié)構(gòu)化輸出
? ? ? ?結(jié)構(gòu)化輸出最初由H. S. Le and et. al. (2011)提出用于提升神經(jīng)網(wǎng)絡(luò)語言模型在語音識別中的性能洋只,即加速語言模型的計算速度的同時又不至于使語音識別的準(zhǔn)確率下降。其基本思路就是將高頻的詞歸入單獨的詞類昼捍,稱為Short List识虚,其余的的詞采用A. Mnih, G. Hinton (2009)提出的方法,利用詞向量構(gòu)建二叉樹妒茬。相對于只采用Short List的語音識別方案担锤,該方法既提高了語音識別的精度,同時模型計算時間也沒有增加太多乍钻。單單對語言模型而言肛循,這個方法是在層級Softmax的基礎(chǔ)上對速度和PPL上的折中方案。隨后团赁,Chen, D. Grangier and M. Auli (2015)提出了差異Softmax育拨,不僅對詞典中的詞進(jìn)行分類,同時在輸出層針對不同的類別欢摄,設(shè)定了不同大小的權(quán)重矩陣熬丧。詞頻越高則權(quán)重矩陣的越大,相反則越小怀挠。增加模型少許PPL的同時析蝴,進(jìn)一步提升模型的計算速度。這兩種策略完全可以結(jié)合在一起绿淋,具體如下圖所示:
6. 總結(jié)
? ? ? ?本文所匯總的神經(jīng)網(wǎng)絡(luò)語言模型的加速方法闷畸,均是基于詞類的加速方法,或者該方法的擴展吞滞。這類方法的特點是加速效果很顯著佑菩,明顯高于基于采樣的加速方法,但是會導(dǎo)致語言模型的PPL上升裁赠。
作者:施孫甲由 (原創(chuàng))