
摘要
循環(huán)神經(jīng)網(wǎng)絡(RNN)已經(jīng)在許多自然語言處理任務上取得了最出色的表現(xiàn),比如語言建模和機器翻譯。然而當詞匯量很大時,RNN 模型會變得很大(可能超過 GPU 最大的內(nèi)存能力),這樣訓練將變得很低效。在這項工作中,我們提出一種全新的方法來解決這一挑戰(zhàn)。其中的關(guān)鍵思想是使用二分量(2-Component(2C))共享的詞表征的嵌入(embedding for word representations)。
我們將詞匯表中的每一個詞都分配到一個表格中,其中每一行都關(guān)聯(lián)了一個向量,每一列則關(guān)聯(lián)了另一個向量。根據(jù)一個詞在表中的位置,該詞可由行向量和列向量兩個維度聯(lián)合表示。因為該表中同一行具有相同的行向量,同一列具有相同的列向量,所以我們僅僅需要 2p|V|個向量來表示帶有|V|個詞的詞匯表,這遠遠少于現(xiàn)有的方法所需要的向量數(shù)|V|?;诙至?2-Component)共享嵌入的方法,我們設計了一種新的 RNN 算法,并且使用幾個基準數(shù)據(jù)集上的語言建模任務對其進行了評估。
結(jié)果表明,我們的算法可以顯著地減少模型的大小,并且能在不犧牲精度的情況下加快訓練速度(它實現(xiàn)了與當前最佳的語言模型相近或更好的困惑度(perplexity))。值得注意的是,在 alt=" 物聯(lián)網(wǎng)" width="550" height="384" />
訓練 ACLW-French 時的困惑度對比
引言
最近,循環(huán)神經(jīng)網(wǎng)絡(RNN)已被用于處理多種自然語言處理(NLP)任務,例如語言建模、機器翻譯、情緒分析和問答。有一種流行的 RNN 架構(gòu)是長短期記憶網(wǎng)絡(LSTM),其可以通過記憶單元(memory cell)和門函數(shù)(gating function)建模長期依賴性和解決梯度消失問題。因為這些元素,LSTM 循環(huán)神經(jīng)網(wǎng)絡在當前許多自然語言處理任務中都實現(xiàn)了最佳的表現(xiàn),盡管它的方式幾乎是從頭開始學習。
雖然 RNN 越來越受歡迎,但它也存在一個局限性:當應用于大詞匯的文本語料庫時,模型的體量將變得非常大。比如說,當使用 RNN 進行語言建模時,詞首先需要通過輸入嵌入矩陣(input-embedding matrix)從 alt="物聯(lián)網(wǎng)" width="550" height="304" />
LightRNN(左)對比常規(guī) RNN(右)
為了這個目的,我們提出一個引導框架:(1)首先隨機初始化詞分配(word allocation),并訓練 LightRNN 模型。(2)解決訓練了的嵌入向量(對應為表格中的行和列向量),然后細化分配來最小化訓練損失(training loss),這是圖論(graph theory)最小權(quán)重完美匹配問題,我們能夠有效地解決。(3)重復第二步,直到滿足確切的終止標準。
我們使用在多個基準數(shù)據(jù)集進行語言建模任務來評價 LightRNN。實驗表明,在困惑度(perplexity)上面,LightRNN 實現(xiàn)了可與最先進的語言模型媲美或更好的準確度。同時還減少了模型大小高達百倍,加快了訓練過程兩倍。請注意,對于高度緊湊的模型來說這個可預見的(沒有準確性下降)。
首先,這使得將 RNN 模型運用到 GPU 甚至是移動設備成為了可能。其次,如果訓練數(shù)據(jù)很大,需要執(zhí)行分布式數(shù)據(jù)平行訓練時,聚合本地工作器(worker)的模型所需要的交流成本會很低。通過這種方式,我們的方法使先前昂貴的 RNN 算法變得非常經(jīng)濟且規(guī)?;?。因此,它將會對用于人工自然語言處理(NLP)任務的深度學習有深遠的影響。
結(jié)論和未來的方向
在本研究中,我們提出了一個全新的算法 LightRNN,該算法可用于自然語言處理任務。通過用于詞表征的二分量共享的嵌入(2-Component shared embedding for word representations),LightRNN 在模型尺寸和運行時間上都取得了高效的表現(xiàn),特別是在具有大詞匯量的語料庫中。在未來,這種算法有很多方向可以進一步研究。首先,我們計劃將 LightRNN 應用于更大的語料庫中,如 ClueWeb 數(shù)據(jù)集——傳統(tǒng)的 RNN 模型還不能將其裝進一個現(xiàn)代的 GPU 中。第二,我們會將 LightRNN 應用于機器翻譯和問答等其它自然語言處理任務中。第三,我們會探索 k-分量分享嵌入(k>2)并研究 k 在權(quán)衡效率和有效性之間的作用。最后,我們將會整理我們的代碼,以便在近期通過 CNTK 將其發(fā)布出來。