神經(jīng)網(wǎng)絡(luò)語言建模系列之五:層級輸出


除了基于采樣的神經(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ò)語言模型捧灰。

? ? ? ?通常語言模型的評估的是給定上文w_{0}^{t-1}的條件下,單詞w_t為下一個單詞的概率P(w_t|w_{0}^{t-1})潜支×骷茫基于詞類的加速方法的基本思想是將詞典中的單詞劃分為多個類別,即詞類C泵肄,而后條件概率P(w_t|w_{0}^{t-1})就轉(zhuǎn)換為兩個條件概率的乘積:給定上文w_{0}^{t-1}的條件下煌寇,下一個單詞屬于類別C(w_t)的條件概率P(C(w_t)|w_{0}^{t-1})焕蹄,以及給定上文w_{0}^{t-1}及詞類C(w_t)的條件下,下一個單詞為w_t的條件概率P(w_t|C(w_t), w_{0}^{t-1})阀溶,即

P(w_t|w_{0}^{t-1}) = P(C(w_t)|w_{0}^{t-1}){\cdot}P(w_t|C(w_t), w_{0}^{t-1})

? ? ? ?正如前面文章提到的腻脏,神經(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)行多層分類,從而最后形成了平衡二叉樹会钝。詞典中的每個詞w_i被表示為位向量[b_0(w_i), b_1(w_i), \cdots, b_m(w_i)]伐蒋,其中m的值取決于詞典的大小,向量的每個元素非0即1迁酸。b_0(w_i)=1表示詞w_i屬于根類別的1類分類先鱼,而b_1(w_i)=0表示該詞w_i屬于根類別下的子分類中的0類分類。那么奸鬓,下一個詞w_t條件概率變換為:

P(w_t|w_{0}^{t-1}) = \Pi_{j=0}^{m}P(b_j(w_t)|b_{0}(w_t), \cdots, b_{j-1}(w_t), w_{0}^{t-1})

? ? ? ?采用層級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澡罚,理論上的加速效果為|V|/\log_2{|V|}\approx{750}伸但,但實際上的加速效果遠(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ù)都是詞頻,采用類似輪盤賭的方式步藕。首先將詞典中的單詞按照詞頻降序排列惦界,然后計算所有詞的總詞頻,如下:

F = \sum_{i=1}^{|V|}f_i

其中, |V|是詞典的大小咙冗,f_i (i=1,2,\dots, |V|)是詞典中每個詞的詞頻沾歪。如果第t個詞的累積詞頻滿足如下條件,則就別分配至第i個詞類中:

\frac{i}{N}<\sum_{j=1}^{t}\frac{f_j}{F}\leq\frac{i+1}{N}

其中雾消,N為需要分配的總的詞類數(shù)量灾搏。相對于平均分配詞類,該方案使得詞頻高的詞所在的詞類包含較少的單詞立润,能夠減少訓(xùn)練時的計算量狂窑。

? ? ? ?另一種詞類的分配方案是對上述方案的改進(jìn),用詞頻的平方根代替詞頻范删。首先計算所有詞的詞頻平方根的總和蕾域,如下:

dF = \sum_{i=1}^{|V|}\sqrt{\frac{f_i}{F}}

而詞類分配的規(guī)則,更改如下:

\frac{i}{n}<\sum_{j=1}^{t}\frac{\sqrt{f_j/F}}{dF}\leq\frac{i+1}{n}

如此到旦,使得不同詞類包含的單詞數(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é)合在一起绿淋,具體如下圖所示:

圖1 結(jié)構(gòu)化輸出

6. 總結(jié)

? ? ? ?本文所匯總的神經(jīng)網(wǎng)絡(luò)語言模型的加速方法闷畸,均是基于詞類的加速方法,或者該方法的擴展吞滞。這類方法的特點是加速效果很顯著佑菩,明顯高于基于采樣的加速方法,但是會導(dǎo)致語言模型的PPL上升裁赠。

作者:施孫甲由 (原創(chuàng))

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末殿漠,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子佩捞,更是在濱河造成了極大的恐慌绞幌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件一忱,死亡現(xiàn)場離奇詭異莲蜘,居然都是意外死亡谭确,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門票渠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逐哈,“玉大人,你說我怎么就攤上這事问顷【厦迹” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵择诈,是天一觀的道長。 經(jīng)常有香客問我出皇,道長羞芍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任郊艘,我火速辦了婚禮荷科,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘纱注。我一直安慰自己畏浆,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布狞贱。 她就那樣靜靜地躺著刻获,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瞎嬉。 梳的紋絲不亂的頭發(fā)上蝎毡,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天,我揣著相機與錄音氧枣,去河邊找鬼沐兵。 笑死,一個胖子當(dāng)著我的面吹牛便监,可吹牛的內(nèi)容都是我干的扎谎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼烧董,長吁一口氣:“原來是場噩夢啊……” “哼毁靶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起解藻,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤老充,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后螟左,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體啡浊,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡觅够,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了巷嚣。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喘先。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖廷粒,靈堂內(nèi)的尸體忽然破棺而出窘拯,到底是詐尸還是另有隱情,我是刑警寧澤坝茎,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布涤姊,位于F島的核電站,受9級特大地震影響嗤放,放射性物質(zhì)發(fā)生泄漏思喊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一次酌、第九天 我趴在偏房一處隱蔽的房頂上張望恨课。 院中可真熱鬧,春花似錦岳服、人聲如沸剂公。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纲辽。三九已至,卻和暖如春璃搜,著一層夾襖步出監(jiān)牢的瞬間文兑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工腺劣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留绿贞,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓橘原,卻偏偏與公主長得像籍铁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子趾断,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容