侯 磊, 蒙 會(huì) 民, 李 旭, 蘭 振 平
( 大連工業(yè)大學(xué) 信息科學(xué)與工程學(xué)院, 遼寧 大連 116034 )
循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)是一種高效的深度學(xué)習(xí)模型[1],長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)是RNN的變體,通過引入門控單元來學(xué)習(xí)長(zhǎng)期依賴性,能有效地處理可變長(zhǎng)度的序列數(shù)據(jù),但LSTM處理這一類任務(wù)時(shí)存在兩個(gè)主要問題:一是運(yùn)算速度慢,占用內(nèi)存大;二是需要機(jī)器閱讀整個(gè)文本[2],推理時(shí)間長(zhǎng)。對(duì)于分類問題,某些特定詞語或句子與當(dāng)前的分類任務(wù)相關(guān)[3]。以情感分析為例:當(dāng)電影評(píng)論中出現(xiàn)“這部電影很棒”或“很糟糕”,即使沒有閱讀其余評(píng)論,也能直觀判斷用戶感受。
并非所有輸入都有相同的重要性,注意力模型[4]在解碼時(shí)賦予信息不同的權(quán)重。但注意力模型是基于淺層語義的相似度計(jì)算,不能提高推理效率。卷積神經(jīng)網(wǎng)絡(luò)(CNN)具有高并行計(jì)算能力,但無法捕捉單詞的全局交互信息。結(jié)合自注意力機(jī)制可以彌補(bǔ)CNN這一劣勢(shì)[5],但對(duì)硬件設(shè)備配置要求高。Yu等[6]提出了一種LSTM-Jump模型,在t時(shí)刻選擇跳過一個(gè)或多個(gè)單詞來提高推理效率。LSTM-Jump證明忽略文檔中的某些單詞不會(huì)影響預(yù)測(cè)準(zhǔn)確性,但跳轉(zhuǎn)范圍是基于固定值,沒有考慮文本的固有結(jié)構(gòu)。Yu等[7]用RNN隱藏狀態(tài)來判斷何時(shí)停止閱讀。當(dāng)RNN判斷模型對(duì)上下文有足夠理解,將實(shí)時(shí)停止并產(chǎn)生答案。但仍然存在語義缺失和噪聲干擾的問題。Minjoon等[8]提出了Skim-LSTM模型。模型根據(jù)輸入和上一時(shí)刻輸出的狀態(tài),選擇“小”神經(jīng)網(wǎng)絡(luò)或“大”神經(jīng)網(wǎng)絡(luò)更新狀態(tài)。該模塊的網(wǎng)絡(luò)結(jié)構(gòu)比較復(fù)雜,且對(duì)長(zhǎng)文本的處理較慢。Fu等[9]提出了一種穿梭模型LSTM-Shuttle。向前移動(dòng)可以提高效率,向后移動(dòng)可以讓模型恢復(fù)丟失的信息,確保較高的準(zhǔn)確度。但文本重復(fù)閱讀,導(dǎo)致閱讀速率下降。Hansen等[10]提出一種Structural-Jump-LSTM。該模型由標(biāo)準(zhǔn)LSTM、Jump代理和Skip代理組成。Jump代理能夠在閱讀前跳過單個(gè)單詞,Skip代理在4個(gè)動(dòng)作中(跳到下一個(gè)詞、跳到子句子分隔符(,:)、跳到句子結(jié)束符號(hào)(.!?)或跳到文本結(jié)束標(biāo)記)選擇一個(gè)后跳轉(zhuǎn)。該模型2個(gè)代理中都包含重復(fù)的動(dòng)作選擇,結(jié)構(gòu)復(fù)雜,不能準(zhǔn)確的有效融合上下文信息。
基于上述模型不足,應(yīng)用強(qiáng)化學(xué)習(xí)算法,針對(duì)網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜和文本閱讀效率低的問題,提出了一種基于略讀模型的LSTM網(wǎng)絡(luò)。主要設(shè)計(jì)思路是:模型由標(biāo)準(zhǔn)LSTM網(wǎng)絡(luò)和略讀代理組成。略讀代理用來確定哪些輸入是必需的(例如,讀取下一個(gè)詞,略讀下一個(gè)或下幾個(gè)詞)或者模型應(yīng)該跳轉(zhuǎn)到句末、段尾和文本末尾。將準(zhǔn)確率和計(jì)算成本作為獎(jiǎng)勵(lì)函數(shù),對(duì)略讀代理的評(píng)分。模型不依賴過多的超參數(shù),實(shí)驗(yàn)結(jié)果表明略讀單詞比完全跳過單詞具有更高的準(zhǔn)確性。
基于略讀模塊的神經(jīng)快速閱讀模型示意圖如圖1所示。模型由標(biāo)準(zhǔn)LSTM網(wǎng)絡(luò)和略讀代理組成。略讀代理計(jì)算動(dòng)作分布,采樣具體的略讀動(dòng)作。代理動(dòng)態(tài)地選擇跳過1,2,…,n個(gè)單詞(經(jīng)過測(cè)試當(dāng)n=3時(shí),模型效果最好)、略過整個(gè)句子或段落,從而不更新LSTM;或讓LSTM讀取當(dāng)前時(shí)刻單詞,更新神經(jīng)網(wǎng)絡(luò)。使用略讀代理的目的是:跳過無關(guān)信息,加強(qiáng)重要部分,快速準(zhǔn)確的完成需要機(jī)器閱讀文本的自然語言任務(wù)。略讀代理用全連接層進(jìn)行選擇,其大小比LSTM單元小得多,略讀模塊通過避免LSTM狀態(tài)更新來減少FLOP,推理速度比標(biāo)準(zhǔn)LSTM快。
圖1 基于略讀模塊的快速神經(jīng)閱讀模型Fig.1 Schematic drawing of neural fast reading basedon skimming module
如圖1所示,t時(shí)刻,模型讀取的輸入分別是:上一時(shí)刻略讀代理做出的決策statet-1∈Rrn和LSTM輸出ot-1∈Rrn以及當(dāng)前時(shí)刻的輸入tokeni∈Rd。在t-1時(shí)刻,略讀代理從動(dòng)作分布pt-1中選擇一個(gè)動(dòng)作at-1。在推理時(shí),動(dòng)作既可以從分布中采樣整體最優(yōu)解,也可以根據(jù)貪心策略只考慮局部最優(yōu)解。從pt中選取動(dòng)作at的計(jì)算公式為
statet=dReLU(xt⊙ot-1⊙onehot(at-1))
(1)
pt=softmax(dLIN(statet)
(2)
式中:dReLU為全連接層線性整流激活函數(shù),dLIN為全連接層線性激活函數(shù),softmax是邏輯回歸模型,符號(hào)⊙代表向量的拼接,onehot是文本特征提取的編碼方式。
如果at=1,那么LSTM會(huì)讀取到這個(gè)單詞,同時(shí)計(jì)算新的輸出狀態(tài),生成下一步ot和statet。如果采樣的動(dòng)作at對(duì)應(yīng)跳過一個(gè)或多個(gè)單詞,就跳過當(dāng)前幾個(gè)詞,同時(shí)設(shè)置ot=ot-1和statet=statet-1,網(wǎng)絡(luò)則定位到下一個(gè)輸入位置。如果所采樣的動(dòng)作at是跳轉(zhuǎn)到下一個(gè)句子或段落,當(dāng)前LSTM的輸出和狀態(tài)將保持不變,忽略后面所有輸入,直到新的句子和段落開始。這時(shí)如果后面的采樣動(dòng)作沒有輸入決定,最終預(yù)測(cè)結(jié)果是當(dāng)前時(shí)刻LSTM的輸出。如果動(dòng)作是直接跳到文本末尾,當(dāng)前輸出即為最后結(jié)果。
在訓(xùn)練過程中,針對(duì)以下兩個(gè)目標(biāo)對(duì)模型進(jìn)行優(yōu)化,一方面生成可用于分類的輸出,另一方面根據(jù)輸入及其上下文來學(xué)習(xí)何時(shí)略讀文本。對(duì)于第一個(gè)目標(biāo)將LSTM的輸出直接用于分類,計(jì)算其交叉損失函數(shù)Lclass。對(duì)于第二個(gè)目標(biāo)因?yàn)椴蓸邮遣豢晌⒎值碾x散采樣,所以將問題重新表述為強(qiáng)化學(xué)習(xí)問題,定義一個(gè)最大化獎(jiǎng)勵(lì)函數(shù)。獎(jiǎng)勵(lì)根據(jù)讀取文本數(shù)量和預(yù)測(cè)是否正確給予。總獎(jiǎng)勵(lì)Rt與采樣序列相關(guān)。如果網(wǎng)絡(luò)選擇跳過一個(gè)單詞,則采樣序列在該時(shí)刻不會(huì)跳轉(zhuǎn)。為了減少誤差,使用優(yōu)勢(shì)動(dòng)作評(píng)價(jià)算法[12]來訓(xùn)練模型,演員損失函數(shù)為
Vt=dLIN(statet)
(3)
(4)
式中:Vt是給定狀態(tài)估計(jì)值,該值由輸出大小為1的全連接層生成。Vt表示該狀態(tài)獲得的獎(jiǎng)勵(lì)數(shù)量,dLIN是網(wǎng)絡(luò)期望以后獲得的獎(jiǎng)勵(lì)數(shù)量的線性函數(shù)。損失函數(shù)取決于在給定狀態(tài)下所獲得的報(bào)酬是高于還是低于預(yù)期報(bào)酬,使用最新的異步優(yōu)勢(shì)動(dòng)作評(píng)價(jià)算法中的損失函數(shù)[11]。模型的演員損失函數(shù)是Lactor。評(píng)論家損失函數(shù)Lcritics的目標(biāo)是每種狀態(tài)的觀察值,用平方差損失訓(xùn)練代理的價(jià)值估計(jì)。其中代理的動(dòng)作分布是均勻分布,為了保證動(dòng)作的多樣性、增加模型的探索能力和避免梯度爆炸,添加熵?fù)p失函數(shù)Lentropies。網(wǎng)絡(luò)總損失函數(shù)為
L=αLclass+βLactor+γLcritics+δLentropies
(5)
式中:α,β,γ和δ是控制各損失函數(shù)之間平衡的參數(shù)。
對(duì)于模型的每個(gè)動(dòng)作,代理都會(huì)給予獎(jiǎng)勵(lì)rt。
(6)
式中:|doc|是文檔單詞總數(shù)量,跳過一個(gè)單詞的收益會(huì)隨文檔長(zhǎng)度的變化而變化。cs是比重參數(shù),其值為0~1的實(shí)數(shù)。閱讀或跳過都需付出代價(jià),所以獎(jiǎng)勵(lì)都是負(fù)面的。根據(jù)預(yù)測(cè)是否正確給予額外的獎(jiǎng)勵(lì),t時(shí)刻獎(jiǎng)勵(lì)總和Rt為
(7)
式中:p(yt)是網(wǎng)絡(luò)正確給出目標(biāo)類的概率。ωr是控制滾動(dòng)獎(jiǎng)勵(lì)和基于模型績(jī)效獎(jiǎng)勵(lì)之間平衡的參數(shù)。Rt的設(shè)計(jì)思路:做出正確預(yù)測(cè)時(shí),給定的獎(jiǎng)勵(lì)接近1;做出錯(cuò)誤預(yù)測(cè)時(shí),因?yàn)樵黾恿苏_類別的概率,給定的獎(jiǎng)勵(lì)也不為0。
使用TensorFlow開源深度學(xué)習(xí)庫,實(shí)驗(yàn)在如表1所示的數(shù)據(jù)集上驗(yàn)證。在自然語言處理的下游任務(wù)中,LSTM網(wǎng)絡(luò)的表現(xiàn)優(yōu)于CNN和RNN等神經(jīng)網(wǎng)絡(luò)。因此選取LSTM讀取完整的文本作為基線實(shí)驗(yàn),對(duì)比了多個(gè)基于LSTM的快速閱讀模型。
對(duì)于情感和主題分類數(shù)據(jù)集,在LSTM輸出時(shí)加入了一個(gè)全連接層,全連接層與LSTM單元大小相同,使用softmax預(yù)測(cè)。在回答問題數(shù)據(jù)集上實(shí)驗(yàn)時(shí),遵循Hansen的方法,選擇具有最大化softmax指數(shù)的候選答案CWo∈R10。其中C∈R10×d為候選答案的單詞嵌入矩陣,d為嵌入層大小,W∈Rd×cell_size是權(quán)重矩陣,o為L(zhǎng)STM輸出狀態(tài)。將問答任務(wù)轉(zhuǎn)換為有10個(gè)類的分類問題,先讀取問題,然后讀取文檔,通過問題來限制文檔內(nèi)容的讀取。用GloVe[12]表示詞向量,將其作為略讀代理和LSTM的輸入。
表1 數(shù)據(jù)集統(tǒng)計(jì)表Tab.1 The statistical list of datasets
把IMDB、SST、CBT-CN和CBT-NE分為預(yù)定義的訓(xùn)練集、驗(yàn)證集和測(cè)試集,把訓(xùn)練集中15%的訓(xùn)練數(shù)據(jù)分為驗(yàn)證集。Rotten Tomatoes數(shù)據(jù)集留出10%作為測(cè)試集。為了訓(xùn)練模型,學(xué)習(xí)率從集合{0.001,0.000 5}中選擇,問答數(shù)據(jù)集(CBT-C和CBT-NE)學(xué)習(xí)率的最優(yōu)值是0.001,主題分類和情感分析數(shù)據(jù)集學(xué)習(xí)率的最優(yōu)值為0.000 5。在AG news、Rotten Tomatoes和SST上使用的batch size是32,其余數(shù)據(jù)集batch size為100。用dropout來減少過擬合,LSTM隱藏層和輸入層單元丟失概率均為0.1。使用的LSTM單元大小為128,應(yīng)用閾值為0.1的梯度剪裁。略讀代理連接的全連接層大小是25。
訓(xùn)練時(shí),快速閱讀模型從讀取全文開始,動(dòng)作分布初始化為僅讀取,確保準(zhǔn)確性達(dá)到最大值后,再激活略讀代理。快速閱讀模型訓(xùn)練時(shí),對(duì)于問答數(shù)據(jù)集,詞向量的初始化是固定值,可以在其余部分進(jìn)行訓(xùn)練。其他數(shù)據(jù)集詞向量都是固定值。
如式(5)所示,總損失函數(shù)是預(yù)測(cè)損失、演員損失、評(píng)論家損失和熵?fù)p失之和,演員損失縮小1/10,使其大小與其他損失相當(dāng)。熵?fù)p失系數(shù)(δ)通過交叉驗(yàn)證從{0.01,0.05,0.1,0.15}中選擇,表現(xiàn)最佳的是0.1。交叉驗(yàn)證整體最優(yōu)動(dòng)作和局部最優(yōu)動(dòng)作兩種動(dòng)作選擇方式,對(duì)于問答數(shù)據(jù)集,整體最優(yōu)動(dòng)作選擇實(shí)驗(yàn)效果更好,而非閱讀理解數(shù)據(jù)集采樣局部最優(yōu)動(dòng)作。如式(6)所示,為了簡(jiǎn)化實(shí)驗(yàn),將Cs固定為0.5,跳過單詞的代價(jià)為閱讀單詞的一半,促進(jìn)模型選擇跳躍動(dòng)作。如式(7)所示,在{0.05,0.1,0.15}中交叉驗(yàn)證,大部分?jǐn)?shù)據(jù)集表現(xiàn)最佳的ωr為0.1。
2.2.1 略讀模型和全讀模型對(duì)比
神經(jīng)快速閱讀模型的目的是讀取最少的單詞,得到更高的準(zhǔn)確率。如表2所示,將準(zhǔn)確率(Acc)、跳過文本百分比(Skim)和讀取文本百分比(Read)作為評(píng)價(jià)指標(biāo)。與標(biāo)準(zhǔn)LSTM相比,本模型獲得相同甚至更好的精確度,在DBPedia數(shù)據(jù)集讀取文本百分比降低到19.8%。讀取速度最慢的是AG news數(shù)據(jù)集,讀取文本百分比為59.4%,讀取的速度隨不同的數(shù)據(jù)集而變化。在7個(gè)數(shù)據(jù)集上顯著地提高了準(zhǔn)確率,只有SST準(zhǔn)確率與標(biāo)準(zhǔn)LSTM相同。
表2 略讀模型和全讀模型評(píng)價(jià)指標(biāo)對(duì)比表Tab.2 The comparison of evaluation indicators between skimming model and full reading model %
在所有數(shù)據(jù)集上,模型所讀取的文本均比基線實(shí)驗(yàn)少,占文本的19.8%~59.4%。,說明模型的跳過是有意義的。圖2是來自DBPedia數(shù)據(jù)集的快速閱讀行為示例。該模型學(xué)會(huì)跳過一些無用單詞,閱讀對(duì)預(yù)測(cè)重要的單詞。但模型不會(huì)直接跳到句尾,而是檢查最后一句的前兩個(gè)單詞。
圖2 快速閱讀行為示例Fig.2 An example of speed reading action
2.2.2 略讀模型和其他快速閱讀模型的對(duì)比
與其他模型對(duì)比時(shí),由于硬件設(shè)置不同,不能僅計(jì)算模型使用的總浮點(diǎn)運(yùn)算次數(shù)(FLOP),還需計(jì)算全讀模型和快速閱讀模型之間的浮點(diǎn)運(yùn)算次數(shù)減少量(FLOP-r),這樣可以有效避免實(shí)驗(yàn)結(jié)果存在差異。
表3列出了略讀模型和多個(gè)基于LSTM的快速閱讀模型的指標(biāo)預(yù)測(cè)結(jié)果。ΔAcc是快速閱讀模型和全讀模型的精度之差(越高越好)。由于模型使用不同網(wǎng)絡(luò)配置的RNN和訓(xùn)練方案,導(dǎo)致不同的全讀模型和快速閱讀模型精度不同。為了對(duì)每種速度閱讀模型的效果進(jìn)行一致的比較,實(shí)驗(yàn)報(bào)告了每篇論文的全讀和快速閱讀模型準(zhǔn)確度之間的差異。FLOP-r是與完全讀取模型相比的浮點(diǎn)運(yùn)算次數(shù)的減少量。星形(*)表示原始論文只提供了一個(gè)速度增益,可以認(rèn)為是FLOP-r的下界。
表3 各個(gè)模型評(píng)價(jià)指標(biāo)對(duì)比表Tab.3 The comparison of evaluation indicators for different models
除了在CBT-CN數(shù)據(jù)集上,Yu-LSTM提供了6.1x的速度增益,在其他數(shù)據(jù)集上都提供了最少的浮點(diǎn)運(yùn)算次數(shù)(FLOP)。其次是Structural-Jump-LSTM模型,在各個(gè)數(shù)據(jù)集上也取得了不錯(cuò)的效果。但該模型主要問題訓(xùn)練兩個(gè)代理所需的參數(shù)多,占用的計(jì)算時(shí)間長(zhǎng)。最差的是LSTM-Jump的模型,整個(gè)模型建立在傳統(tǒng)的LSTM上,隱藏層后加一個(gè)分類器,分類器的作用是通過對(duì)softmax采樣,確定當(dāng)前狀態(tài)下一步需要跳過的單詞數(shù)量,模型在讀入詞向量和跳過詞向量之間交替,直到滿足結(jié)束條件。與他們工作不同的是,本模型使用強(qiáng)化學(xué)習(xí)中的異步優(yōu)勢(shì)動(dòng)作評(píng)價(jià)算法,模擬了類人的略讀機(jī)構(gòu),不是單純的跳過單詞,而是動(dòng)態(tài)的調(diào)整LSTM的輸入。最后設(shè)計(jì)包含負(fù)面獎(jiǎng)勵(lì)的獎(jiǎng)勵(lì)機(jī)制,使用價(jià)值網(wǎng)絡(luò)來減少方差。
Yu-LSTM的模型在數(shù)據(jù)集CBT-CN和CBT-NE給出最高準(zhǔn)確率。與其他的方法相比,它的優(yōu)勢(shì)是:?jiǎn)栴}中高信息級(jí)別的先驗(yàn)知識(shí)可以編碼到預(yù)訓(xùn)練中,Yu-LSTM的模型中對(duì)于CBT-CN數(shù)據(jù)集使用1跳轉(zhuǎn),CBT-NE數(shù)據(jù)集使用5跳轉(zhuǎn)獲得更高的準(zhǔn)確率。對(duì)于問答數(shù)據(jù)集來說,如果可以獲取有關(guān)文檔的先驗(yàn)信息,對(duì)模型是有益的。
為了解決文本閱讀推理速度慢的問題,提出了一種基于略讀模塊的神經(jīng)快速閱讀模型,該模型根據(jù)文本結(jié)構(gòu)動(dòng)態(tài)的決定跳過1,2,…,n個(gè)單詞、跳到下一個(gè)句子、跳到下一個(gè)段落還是直接跳轉(zhuǎn)到文本末尾,允許在不更新LSTM狀態(tài)的情況下,觀察一個(gè)單詞后跳過它。為了更好地優(yōu)化模型,將準(zhǔn)確率和計(jì)算成本作為獎(jiǎng)勵(lì)函數(shù),對(duì)略讀代理評(píng)分。與5個(gè)同類的快速閱讀模型對(duì)比實(shí)驗(yàn),略讀型的浮點(diǎn)運(yùn)算次數(shù)得到最大程度地減少,消耗計(jì)算資源少,達(dá)到了預(yù)期相同或較高準(zhǔn)確率。