亢文倩 蘇 磊
(昆明理工大學信息工程與自動化學院)
問答系統作為數據檢索的一種方法,能夠通過檢索使用者提供的自然語言問句,給使用者返回比較簡潔和精確的回答。 當前,問答系統已經成為自然語言處理(Natural Language Processing,NLP)技術研究領域的熱點。問答系統中的重要研究——問句分類,能夠根據答案的類別對答案加以約束, 從而精確定位答案并檢驗正確答案,所以問句的分類精度會直接影響問答系統的品質與性能。
傳統分類方法的主要問題是文本表示是高緯度、高稀疏的,特征表達能力較弱,需要人工進行特征工程,導致其成本較高。 而深度學習利用CNN[1,2]、RNN及LSTM[3~5]等網絡結構自動獲取特征,去掉繁雜的人工特征工程,實現了端到端的解決方案。 但由于深度學習對人工標記數據的依賴性強,導致其存在訓練數據不足、模型可解釋性差等問題。且深度學習模型在處理NLP任務時,都建立在訓練數據和測試數據擁有共同特征空間和相同數據分布的情況下,無法滿足不同領域的問句分類要求。
遷移學習是將已經掌握的其他場景的相關任務和知識轉移到新的場景來適應新任務、學習新知識,針對標注數據稀缺性問題行之有效。 近年來,遷移學習在問答系統,例如問句分類、語義分析及問答匹配等方面取得了很好的效果。 針對問句分類任務, 只考慮領域不同但任務相同的領域自適應[6]。 遷移成分分析(Transfer Component Analysis,TCA)[7]試圖將源域和目標域的數據映射在核希爾伯特空間中,再利用最大平均差異最小化兩個域的距離,在文本分類實驗中平均正確率為0.686 5。聯合分布適配[8]同時適配源域、目標域的邊緣分布和條件分布, 分類效果優于TCA。YOSINSKI J等對深度神經網絡是否可以遷移進行了研究,提出一種衡量深度學習網絡不同層的通用性和特殊性的方法, 即判斷該層的特征從一個任務遷移到另一個任務的程度[9]。 HOWARD J和RUDER S提出一種適用于NLP中任何任務的有效遷移學習方法——ULMFIT,ULMFIT雖然可以學習上下文之間的關系,但是無法并行化,給模型的訓練和推理帶來了困難[10]。VASWANI A等使用self-attention的方式對上下文進行建模,提高了訓練和 推 理 的 速 度[11]。 DEVLIN J 等 提 出 一 種 基 于Transformer Encoder的預訓練模型Bert,可以直接學習文本的上下文信息,在11個自然語言處理任務上,相對RNN更加高效、能捕捉更長距離的依賴關系[12]。LAN Z Z等在此基礎上提出ALBERT模型,降低了內存消耗、提高了訓練速度[13]。
然而,龐雜的新領域數據總是含有各種干擾信息和噪聲,深度遷移模型遭遇對抗攻擊時所表現出的脆弱性, 給實際應用帶來了極大的風險。GANIN Y等最先將對抗學習引入遷移學習領域,重點關注領域之間可以進行遷移的特征,使判別器區分特征是來自源域還是目標域從而進行對抗學習[14]。 但是這種方法的模型分類精度較低,無法滿足問句分類的需求。 故筆者提出一種基于對抗學習的深度遷移問句分類方法(A-ALBERTFiT),由于自然語言處理領域的對抗訓練往往是在詞嵌入層上進行的,從本質上來說是一種提高模型泛化能力的正則化手段, 故而在模型訓練時,向詞嵌入添加擾動生成對抗樣本,并對模型進行對抗訓練。
作為短文,問句包含的關鍵詞較少,提取的特征有限,不利于NLP下游任務。 傳統的NLP數據增強技術包括同義詞替換、反向翻譯、文本表面轉換、噪聲添加和交叉擴展方法,這些方法致力于允許機器自動生成文本數據和獲得更多的訓練數據。 在數據特征提取階段,在不改變問題含義的情況下, 擴展數據集中每個問題的單詞量,使模型能夠獲取到更多的問句語義特征,從而提高分類精度。
如圖1所示, 對原問句進行同義詞擴展。 例如, 輸入問句 “what makes friendship click does spark keep going”,從中抽取出核心詞(core word)“friendship”, 然后在關系知識庫中查詢“friendship”的同義詞或近義詞,并將搜索得到的結果隨機插入原問句中,即得到問句“what makes friendship click make does spark perish friendly keep going relationship”。

圖1 同義詞擴充過程
實驗選取WordNet[15]作為關系知識庫,用于檢索核心詞的同義詞。WordNet是一個依據詞義組織詞匯信息的結構化知識庫, 通過節點結構的詞集合體現單詞的語義關系, 構成較完善的基于語義信息的單詞網絡系統。WordNet中含有屬性不同的集合, 如同義詞詞集 (Synset)、 類別詞集(Class word)和含義解釋詞集(Sense explanation)。
依據這3個詞集,選取候選的同義詞,對每個候選同義詞提取特征:

其中,Ws代表從含義解釋詞集中抽取的同義詞,Wc代表同義詞所屬的類別,We代表候選同義詞含義中的所有實詞,SW代表單詞的含義(同一個單詞有多個不同含義),feature(SW)代表某個含義SW的特征向量。 通過計算3個不同含義在特征空間的距離,來獲取兩個含義的相似度(距離越小則相似度越大)[16]:

其中K∈{Ks,Kc,Ke},Ks代表同義詞特征的權重,Kc代表類別特征的權重,Ke代表含義解釋的權重;Wx∈{Ws,Wc,We},No(SW)代表候選詞的順序;wi代表含義SWa中出現的實詞,wj代表含義SWb中出現的實詞,IDF (wi) 代表單詞wi的IDF值,QU代表出現單詞wi的指標集,Qv代表出現單詞wj的指標集。 由此可以計算出兩個單詞的相似度[16]:

其中,W1代表單詞1 (核心詞),W2代表單詞2(候選同義詞),|SW1|代表W1的含義的個數,|SW2|代表W2的含義的個數。最后對候選同義詞進行排序,取前k個作為擴充單詞。
為了保證擴充效果, 往往會提取多個核心詞。
依據MIYATO T等提出的Fast Gradient Sign Method(FGSM)來計算擾動,添加到連續的Word Embedding上產生radv,再一次喂給L-ALBERT-FiT,得到Adversarial Loss,通過和原來的Classification Loss(Cross-Entropy)進行求和即可得到新的損失函數[16]。 由于FGSM是通過模型的迭代來優化損失函數, 故在NLP領域中取得了一個較好的分類表現。
NLP任務中的對抗訓練與在圖像上添加擾動不同,NLP的文本表示通常為one-hot向量,理論上兩個Embedding之間的歐式距離是固定的, 不存在微小的擾動。 故而NLP領域的對抗訓練往往是在Embedding層上進行的, 通過對抗訓練來進行數據增強從本質上來說就是一種通過正則化方法來增強模型泛化能力的手段。
為了提高問句文本表示的質量 (即Word Embedding質量) 和A-ALBERT-FiT模型的泛化能力,在ALBERT的詞嵌入層中加入對抗擾動,并將生成的對抗樣本用于A-ALBERT-FiT模型訓練,通過最大化對抗損失、最小化模型損失的方式進行對抗訓練,對ALBERT參數進行正則化。
ALBERT將問句中的每個單詞轉化為詞嵌入vk,假設輸入的每個問句x含有k個單詞,模型將問句中的每個單詞轉化為詞嵌入vk, 其相應的類別為y;由于將要對詞嵌入添加擾動,且擾動是一個有界范數,在對模型進行對抗訓練時,模型為了自身的分類正確率會降低擾動,學習具有相對較大的范數的詞嵌入,故而要將初始詞嵌入進行標準化:

然后向標準化后的詞嵌入添加擾動, 得到對抗樣本,并用對抗樣本和原始樣本對ALBERT進行對抗訓練,此時ALBERT的損失函數將發生變化:

其 中,L(θ)是A LBERT 的 原 始 損 失 函 數,Ladv(θ)是加入對抗擾動后的ALBERT的損失函數,sn=[---是標準化后的詞嵌入向量序列,radv是向量序列sn的擾動,n是帶有標簽樣本的問句數量,n∈{1,2,…,N},sn+radv,n為對抗樣本,根據全概率公式,“一個問句的預測類別即為其真實類別”的概率為p(yn|sn;θ),θ是模型參數。

其中,g=▽slog2p(y|s;θ^)為此時ALBERT的損失梯度,‖g‖2為g的歐幾里得范數的平方,▽s梯度,即對sn求偏導,為了進行梯度下降radv取負值。這樣就得到了對抗擾動,生成了對抗樣本。 通過最大化對抗損失、最小化模型損失的方式對模型進行對抗訓練,并更新ALBERT參數;將被修改的對抗樣本和原始樣本一起輸入到預訓練過的ALBERT中, 讓ALBERT對這兩種樣本進行分類,并在過程中更新參數θ;這樣就得到了對抗擾動,然后對模型進行對抗訓練,并取目標域測試集來驗證模型的分類精度。
對抗訓練算法中,Input: 輸入源域訓練問句集x,訓練模型參數θ,訓練分類模型損失L(θ),目標域驗證集、測試集。Output:測試樣本分類精度。Return:經過對抗訓練的L-ALBERT-FiT。 具體步驟如下:
a. 將ALBERT在源域訓練問句集進行預訓練;
b. 將ALBERT生成的初始Word Embedding進行標準化得到新的詞嵌入;
c. 構建對抗樣本,在詞嵌入上加入擾動x+radv,固定模型初始參數常量θ^, 確保參數θ在生成對抗樣本時不會更新;
d. 在每個iteration中計算最大擾動, 并對radv進行更新,進而最大化對抗損失函數Ladv(θ);
e. 在更新過程中對模型進行對抗訓練,最小化模型損失L(θ);
f. 取目標域驗證集微調模型, 更新模型參數θ;
g. 取目標域測試集驗證最終模型分類精度,對模型進行評估。
數據集采用的是Yahoo answer問答數據集[17]。該數據集的字段包括問題標題、問題內容和最佳答案。 標題共有10個類別,每個類別包含14萬個訓練樣本和5 000個測試樣本, 數據集本身含4百多萬個問答對。 按照不同的類別標簽,將數據集劃分為5個不同的領域, 每個領域含有兩種類別的問句(表1)。

表1 Yahoo answer問答數據集問題標題類別
人為設定源域和目標域。 源域用于訓練模型,目標域用于測試和評估。 將不同的模型在不同領域上進行實驗,例如取領域A作為源域,取領域B作為目標域,進行跨領域問句分類。 每個模型各進行5組分類實驗。 隨機選取5 000條源域數據作為訓練集,取50條目標域數據作為開發集,取2 000條目標域數據作為測試集。
對問句進行降噪后, 考慮到短文本的特點,增加數據項的數量并不符合訓練目標,所以需要擴展每個數據的片段。 隨機選擇問題中除停止詞外的50%的單詞作為核心詞,然后從WordNet中隨機選擇與核心詞對應的同義詞。 在原問句中隨機插入同義詞前后的對比情況見表2。

表2 問句同義詞擴充前后對比
在目標域問句數據集中使用模型,測試其對目標域問句的分類能力。 使用精度(Accuracy)來評價模型的分類能力:

該方法的有效性是通過計算以上指標來衡量的:精度(Accuracy)是問句分類中最常見的測量指標,#Correctly classified questions代表被正確分類的問句數量,#Total number of questions代表問句的總數量。
問句的核心詞和問句類別是高度相關的,但同一詞的重要性對于不同類別的問題是不同的。模型通過同義詞擴充引入新詞,將模型推廣到不在訓練集中的單詞,因此,問句的同義詞擴展可以訓練增加模型的泛化能力。
由表3可以看到,有4組實驗明顯地改善了目標域的分類效果,表明插入同義詞的問句可有效擴展文本的長度、提取更多的語義特性,從而實現更好的問句分類效果、更高的分類精度。 除此之外,該方法還引入了一定數量的噪聲來防止過擬合,并將同義詞擴展到源域,該模型可以很好地擴展到目標域。 而在源域為B、目標域為E的實驗(B->E)中,精度并沒有提高,這可能是因為模型在實驗中已經獲得了較高的精度,如果問句文本被進一步擴展,可能會引入一定的干擾。

表3 同義詞擴充前后模型跨域問句分類精度%
對ALBERT-FiT模型的Embedding 層添加擾動,擾動范圍?=0.25,嵌入維度128,隱藏維度768,注意頭為12個, 參數11M。 隱藏層的激活函數是Relu,epoch的最大數量為15個, 每批執行110次迭代。 對于優化,使用Adam,初始學習率為0.000 5。每組實驗進行5次,取其平均值。
同義詞擴充前后模型跨域問句分類精度見表4。可以看出,A-ALBERT-FiT模型分類性能進一步提升, 其精度比沒進行對抗訓練的模型在5組實驗中平均提升了0.8%,且模型看起來是“健壯的”。 即使對于ALBERT來說, 對抗訓練有助于ALBERT的可遷移性研究。 依舊是源域為B、目標域為E的實驗中,精度提升極其微弱。 由此可以得到: 原始精度較高的模型一般較難受到攻擊,原因是精度較高的模型抗干擾能力較強,故而對抗訓練對其精度提升是微乎其微的。

表4 同義詞擴充前后ALBERT-FiT和A-ALBERT-FiT跨域問句分類精度 %
為了可視化對抗訓練對詞嵌入的影響,對比不進行對抗訓練與進行對抗訓練得到的詞嵌入。用余弦距離作為度量衡量不同詞嵌入向量p、q之間的相似性,其值越小表示對抗樣本越接近真實樣本,表達式如下:

表5為對抗訓練后10個與“good”和“bad”最近鄰的詞嵌入,它們都有經過訓練的嵌入。 由表5可以看出,“good” 的最近鄰詞嵌入都含有積極的含義,“bad”的最近鄰詞嵌入都含有消極的含義,這是由于對抗訓練確保了問句的含義不會因為加入小的擾動而發生改變,故而這些單詞不會發生含義的交叉,例如“bad”出現在“good”的前10名最近鄰詞嵌入,或者“good”出現在“bad”的前10名最近鄰詞嵌入的情況。

表5 對抗訓練后10個與“good”和“bad”最近鄰的詞嵌入
筆者首先對問句文本進行同義詞擴充,并在跨領域問句分類上獲得了較為顯著的提升。 該方法引入了一定數量的噪聲來防止過擬合,并將同義詞擴展到源域問句,可以很好地將ALBERT-FiT模型擴展到新領域。 向Embedding層添加擾動,生成對抗樣本,并對ALBERT模型進行對抗訓練。結果表明,A-ALBERT-FiT相較于ALBERT-FiT有了進一步的提升。 同時,對抗性訓練不僅提高了分類性能,而且提高了單詞嵌入的質量。