付煜文,馬志柔,劉 杰,白 琳,薄滿輝,葉 丹
(1.中國科學院 軟件研究所,北京 100190;2.中航信移動科技有限公司,北京 100029)
近些年移動互聯網迅速發(fā)展,各種終端產品的用戶量和服務量激增,企業(yè)的客服中心每天需要回復大量的問題。與此同時,隨著人工智能技術日益成熟,自動問答技術開始應用于各種領域,代替?zhèn)鹘y的人工為客戶的咨詢提供快速、準確的問答服務,幫助企業(yè)節(jié)省人力成本,提高服務效率。而精準地識別用戶提問的意圖是自動問答的前提,對問答服務的實現至關重要。
意圖識別旨在確定一句話的意圖,可以認定為分類問題,即事先定義好當前問答領域中各種可能的意圖類別,再通過分類方法將問題分到某一類中。文本分類是自然語言處理的重要任務,當前深度學習模型在文本分類任務中取得了巨大進展[1],并取得了遠超傳統方法(如樸素貝葉斯、支持向量機等)的性能。同時深度學習方法避免了繁重的特征工程,其端到端的學習也避免了自然語言處理工具帶來的錯誤傳播問題[2]。
但是,深度學習模型要取得良好性能需要有大量的訓練數據支撐。在問答業(yè)務場景中,未標注的語料通常很豐富,而已經標注好的語料很難直接獲得,只能通過耗時且昂貴的人工標注獲得。為了使深度學習更好地發(fā)揮作用,減少其訓練數據的標注成本至關重要。
主動學習提供了一種輔助標注語料方法,可通過更少的訓練語料達到更高的精度[3]。不同于監(jiān)督學習和隨機選擇樣例,在主動學習中,算法可以主動選擇需要標注的樣本。主動學習方法可以分為兩部分:學習模塊和選擇模塊。學習模塊維護一個學習器,隨著新標注數據的加入不斷訓練更新學習器。選擇模塊通過選擇策略計算未標注樣例的價值,并選出高價值的樣例交給專家標注。
常用的主動學習方法在客服場景中的問答語料標注應用面臨以下挑戰(zhàn):在學習模塊方面,主動學習迭代過程中每一輪標注完成后,需要更新樣本集重新訓練模型,對于復雜的深度學習模型而言其計算量是巨大的。在選擇模塊方面,現有的不確定性選擇策略[4]沒有考慮樣本在語料空間中的價值,選出的樣例會存在孤立點或出現冗余。
針對學習模型使用深度學習方法后帶來的學習速度慢的問題,本文研究了客服語料中問題的長度長短不一、表示多樣性且模糊等特性,設計了一種面向意圖識別任務的輕量級深度神經網絡結構,用于主動學習方法中的學習模塊。在問題意圖標注任務中使用主動學習方法,學習模型需要訓練上百次,每次都重新訓練很不現實。該網絡采用了雙層的CNN網絡結構,在保證學習能力的同時,提高了學習速率。這種設計極大地減少了主動學習方法的計算量,并使其在問題意圖標注任務中的應用具備可行性。
針對不確定性選擇策略存在的缺陷和問答語料樣例空間分布不均的特點,本文提出了一種結合樣例的信息性、代表性與多樣性的多準則選擇策略。與常用的基于不確定性的選擇策略相比,該方法不僅考慮單個樣例的信息,同時考慮樣例空間整體的分布情況,避免選擇的待標注樣例出現孤立點問題和冗余現象,從而提高主動學習算法性能。最終在民航問題意圖標注任務中評估該主動學習方法,評估結果表明該方法能減少約50%的標注工作量。
近些年,Mikolov等人提出了通過神經網絡訓練詞向量的方法Word2Vec[5],之后Joulin等人基于詞向量提出了一種簡單有效的文本分類方法fastText[6],直接將句子中所有的詞向量求平均,Softmax得到類別概率。Kim提出的TextCNN方法[7]通過卷積神經網絡解決文本分類問題,通過一維卷積核捕獲句子中類似n-gram的局部信息。Liu等人的工作提出了將RNN用于分類問題的網絡設計[8],之后涌現出一些RNN的變體,如LSTM[9]、GRU[10]、RCNN[11],以及引入Attention(注意力)[12]機制、BERT[13]預訓練用于分類任務。深度學習方法自動抽取文本特征,可端到端地解決文本分類問題。但在問題意圖識別任務中,當問題較長時,CNN網絡無法很好地獲取問題的全局信息,RNN網絡存在無法并行和梯度消失的問題,訓練速度不佳。
主動學習是機器學習(更普遍地說是人工智能)的一個子領域,通過主動選擇語料樣本,使模型在較低的標注成本下獲得較強的性能表現。在經歷了十多年的發(fā)展后,主動學習已經有大量的理論研究支持[14]。選擇策略是主動學習的核心模塊,傳統的主動學習的研究工作重心都在選擇策略中。其中基于不確定性的策略最為常見,該策略傾向于選擇學習器最不確定如何標注的樣本,用概率方式度量樣例不確定性的方法有最小置信度、邊界采樣、信息熵等。但是基于不確定性的策略僅評估了樣本的自身價值,沒有考慮樣本在語料空間中的重要性,會導致選到孤立點樣本,或者選出的樣本冗余。當前主動學習在各個領域的任務上均有不錯的應用,Zhu等人的工作說明主動學習方法能有效減少文本分類任務中所需的語料量[15],Settles等人的工作驗證了主動學習方法在文本序列標注任務中的有效性[16],Rubens等人的工作介紹了主動學習方法在推薦系統中的應用[17]。
雖然當前深度神經網絡在許多不同的領域中成功得以應用,并取得了令人印象深刻的性能表現[18-19],但在這些模型中如何應用主動學習方法還沒有得到很好的研究,目前的研究工作主要集中于圖像分類任務中。Wang等人于2016年首次提出將主動學習應用于CNN圖像分類模型中,并使用了基于不確定性的樣本選擇策略[20]。Zhou等人在工業(yè)界的生物醫(yī)學圖像分析中應用主動學習技術,減少了超過一半的標注成本,其工作結合了信息熵與圖像變換后的分類差異變化計算樣例的價值[21]。Zhang等人研究了主動學習方法與CNN的文本表示模型結合的框架[22],Shen等人將主動學習方法與CNN和LSTM等深度學習模型結合,應用于實體識別任務中,兩項工作均在少量的數據集上得到了突出的性能表現[23]。An等人提出了一種將RNN作為主動學習中獲取功能的深度學習方法,無須考慮如何提取特征的問題[24]。但是主動學習在問題意圖語料的標注工作中,與深度學習模型結合的方法仍有待研究與應用驗證。
主動學習標注語料是一個不斷迭代的過程,標注專家不斷標注新的樣例,而學習模塊則需要同步最新已標注數據,重新訓練模型,通過不斷學習逐漸提高模型的精度與魯棒性。主動學習不僅要求學習器具有強大的學習能力,能捕獲數據中的規(guī)律,而且需要盡量快的學習速度,以縮減標注迭代時間。
本文分析了現有的主流深度文本分類方法,其中fastText[6]雖然訓練速度非常快,但是在復雜的問題意圖識別任務中并不準確,而RNN及其變體LSTM等網絡盡管在任務中表現不錯,但是因其不支持并行化的原因導致訓練速度無法滿足需求。最終對Kim論文中的TextCNN[7]模型進行了改進,并設計了如圖1所示輕量級網絡結構的問題意圖識別模型。相比TextCNN,該網絡的特征抽取層使用了兩層的卷積,并在卷積層后加入了批標準化(batch normalization,BN)和線性整流函數(rectified linear unit,ReLU),分類的輸出層使用了兩層的全連接。
嵌入表示層對問題進行詞級別的特征表示,將問題中的每一個詞表示為一個固定維度的向量。使用了詞向量(word embedding,WE)和位置向量(position embedding,PE)來對問題進行表示,其中詞向量可得到詞匯的語義特征,位置向量可以捕獲詞在問題中的位置信息與相對距離特征。所用的詞向量由提前使用Word2Vec[5]在中文維基百科語料預訓練得到,訓練過程中的詞向量并不是固定的,會隨著模型的訓練而更新。位置向量為隨機初始化,并通過模型訓練得到最終的參數值。最終每個詞的表示為詞向量和位置訓練的拼接。
特征抽取層對問題進行句子級別的特征表示,通過特征抽取器提取句子的特征,包括上下文信息、句子結構、句子語義等。使用了CNN網絡作為特征抽取器,因為LSTM這類循環(huán)神經網絡雖然在文本特征抽取能力方面略優(yōu)于CNN網絡,但是提高并不顯著,而其帶來的計算成本卻遠高于CNN。本文設計了兩層卷積的CNN網絡,相比單層的卷積,其視野更大,能更好地捕獲全局信息。使用了多個大小不同的卷積核,可抽取更長、更復雜的句子特征,因為CNN良好的并行化支持,其在GPU上的訓練速度也非???。同時在每層的卷積后加入了批標準化和線性整流函數,避免了梯度消失問題,提升了模型訓練的收斂速度與穩(wěn)定性。為了從文本序列中得到句子表示,對每個卷積核的輸出使用了Max Mean池化,將最大池化(max pooling)與平均池化(mean pooling)的結果拼接。其中最大池化基于當前文本序列最大貢獻的位置來得到句子表示,平均池化得到的句子表示包含了整個文本中每個詞的貢獻。最后將所有卷積核的結果拼接,得到問題表示向量。
輸出層通過問題的表示向量分類得到每個意圖的概率大小。模型的輸出層由雙層的全連接網絡、Dropout和Softmax組成。其中雙層的全連接網絡提高了本層網絡的非線性表達能力,并將結果映射到每個相應的類別。Dropout有效緩解了網絡的過擬合問題,Softmax歸一化得到每個意圖的概率。
本文設計的深度學習意圖識別模型,使用了輕量級的網絡結構,通過實驗驗證了該模型在民航問題意圖識別與TREC問題分類任務中,可以達到不亞于當前最先進模型的性能,同時訓練速度在深度學習模型中十分具有競爭力。
在工業(yè)界的問答領域,訓練數據通常由領域知識專家為問題人工標注得到,這將耗費大量的人力與時間成本。主動學習方法通過策略性地選擇要標注的樣本來改善這個問題,以通過更少的標注獲得更好的性能。因此針對問題意圖標注任務,設計了如算法1所示的主動學習方法,首先對問題進行字符清洗、分詞等預處理操作,得到統一格式的問題。然后用分類器對未標注語料進行預測,通過尋找策略計算樣本價值得到需要標注的語料。在專家標注新的語料后,更新數據微調模型。標注過程不斷迭代執(zhí)行,直至達到終止條件。
在算法1的主動學習算法中,關鍵是制定一個策略來確定待標注樣例的“價值”,被挑選樣例的優(yōu)劣將直接影響主動學習算法的性能。當前選擇策略的研究主要是基于不確定性的方法,該方法只關注樣例自身價值。為了保證算法能有更全面的綜合評估,以避免出現孤立點或冗余問題,本文設計了結合樣例信息性、代表性與多樣性的多準則選擇策略,并且分別基于這三種準則設計了樣例的價值度量算法與三者結合的方法。
算法1 問題意圖標注主動學習算法
(1)
代表性代表性準則用于表示樣例在未標注語料空間中的價值。因為問題語料空間中存在一些孤立點,僅考慮信息性很容易挑選到價值低的離群樣例。樣例的代表性可以根據有多少樣例與其相似來評估,由此得到的具有高代表性的樣例不太可能是孤立點,并且這些樣例添加到訓練集中將對模型產生巨大影響。要度量樣例的代表性,需要算法計算樣例的相似性,本文觀察到相似的樣本,其在模型中預測輸出的各類別概率也是相似的。KL距離(kullback leibler divergence,KL)直觀地反映兩個樣例預測的各類別概率分布的差異情況。本文設計了如式(2)所示的方法,修正KL距離計算公式的對稱性,以度量樣例xi與樣例xj的相似性。
(2)
對于給定的未標注數據集U={x1,…,xn},樣例xi在數據集中的代表性可通過其密度(density)量化。樣例xi的密度定義為與數據集中其他所有樣例相似度的平均值,具體計算方法如式(3)所示。
(3)
多樣性多樣性準則的目的是最大化每批次選擇出的樣例對模型訓練的幫助。因為模型的訓練語料中樣例之間差異越大,學習到的知識越多。上文的代表性準則解決了信息性準則的孤立點問題,但是問題語料空間中存在大量的相似樣例,挑選樣例冗余的問題并沒有得到解決。當兩個相似的樣本其信息量和代表性都很高時,很容易被同時選入一批待標注語料中。因此需要考慮每批次選擇的待標注樣例的分布特征,本文提出了一種考慮全局樣例分布的方法。該方法利用樣例相似度的負值作為樣例的距離,通過k-Means算法實現聚類。同時結合上文的信息性與代表性準則,對于未標注數據集U={x1,…,xn},具體選擇策略步驟如下。
Step1:從U中隨機選k個樣例作為初始聚類中心,k為每批選擇的樣例數;
Step2:計算樣例與各個聚類中心的距離,把樣例分配給距離最近聚類中心;
Step3:重新計算k個聚類中心,將每個聚類中與其他樣例距離的和最小的樣例作為中心;
Step4:不斷重復Step2、Step3過程,直到變化的聚類中心數小于閾值;
Step5:按序循環(huán)遍歷所有聚類,并基于信息性與代表性準則結合,從中分別選出最有價值的一個樣例。
其中,Step5中信息性與代表性結合的算法如式(4)所示,0<λ<1(最終取0.6),Info(xi)與Repr(xi)的計算方法分別參考式(1)與式(3)。該方案為本文最終結合信息性、代表性與多樣性的多準則選擇策略。
(4)
為驗證本文深度主動學習方法的有效性,在民航問題意圖識別語料和TREC問題分類語料上進行了實驗,以評估意圖識別模型的性能和主動學習方法的表現。
本文的實驗數據有民航問題意圖語料與TREC問題分類語料。其中民航問題意圖語料來源于合作企業(yè)中國民航信息集團,該語料為中航信旗下移動服務APP“航旅縱橫”中收到的用戶反饋問題,通過中航信民航領域知識專家對問題進行歸納分析,最終形成了一個包含117種意圖的民航問題語料,該語料示例如表1所示。TREC問題分類語料由Li等人[25]提出,是當前學術界常用的問題分類數據,Kim[7]與Zhou等人[9]均在相關工作中使用該數據集驗證其方法。
表1 民航問題意圖語料示例
按照約8∶1∶1的比例將實驗語料數據集劃分為訓練集、驗證集、測試集,并對語料進行了字符級別的長度和詞匯量的統計,語料規(guī)格信息如表2所示。
表2 實驗語料數據集規(guī)格信息
為了評估在第2節(jié)設計的雙層CNN結構的深度學習模型的性能表現。本文在TREC問題分類數據集上進行了對比分析實驗,主要目標是對比各種深度學習模型在測試集的分類準確率以及它們訓練一輪耗費的時間。
本文對比的六個深度學習模型的主要區(qū)別在于其網絡結構,它們的特征抽取層分別使用各種不同的CNN和LSTM網絡。詞向量和位置向量維度分別為200和100,卷積核尺度設置為(2,3,4),通道數大小為128,隨機失活(dropout)率為0.5。模型訓練過程中學習率為0.001,batch大小為128,epoch數為200。對每個實驗重復進行四次,觀察指標曲線,選擇合適的epoch結果,取平均值作為最終記錄的結果。實驗在Linux環(huán)境中進行,模型訓練使用的處理器型號為Nvidia GTX Ti 1080 GPU (12 GB RAM)。
表3的實驗結果展示了本文模型與其他高性能模型之間的對比,同時也記錄了六個模型在測試集上的準確率與訓練一輪耗費的時間。對比單層CNN和單層Bi-LSTM模型的實驗結果,CNN與LSTM在TREC問題分類任務中表現差距不大,但在訓練時間上CNN比LSTM更快。從實驗結果中發(fā)現CNN與LSTM結合的C-LSTM網絡在實驗中取得了最優(yōu)異的表現,雙層CNN與C-LSTM的性能表現差距不大,但是僅耗費一半的訓練時間。而三層CNN與雙層的CNN相比性能并無提高,分析原因可能是語料中問題平均長度為10,而雙層的CNN已經具有足夠的視野,可很好地捕獲這些句子的全局特征。同時對比無法并行的LSTM,CNN在訓練速度上存在巨大優(yōu)勢,甚至三層的CNN網絡比單層的LSTM網絡更快。
表3 模型性能實驗結果
實驗一為評估本文設計的主動學習方法的有效性,首先在民航問題意圖語料標注任務中將多準則主動學習方法與常用的不確定性方法、隨機選擇方法以及傳統的監(jiān)督學習方法進行對比,以驗證該算法是否能夠有效減少標注成本,評估指標為訓練所需的語料數量。其中監(jiān)督學習為直接用所有訓練集數據訓練模型,隨機選擇為每次從訓練集數據中隨機抽取100條語料,不確定性方法采用常用的信息熵度量,本文方法如第3節(jié)所介紹。對比了四種方法得到的模型性能與所需標注數據實驗得到的學習曲線如圖2所示,縱軸是模型在測試集上的準確率,橫軸為訓練使用的樣例數,黑色水平線為監(jiān)督學習結果。
圖2 對比實驗主動學習曲線
基于學習曲線及實驗過程中的記錄數據,得到了如表4所示的實驗結果。表中達標數據量為達到監(jiān)督學習準確率標準所需的訓練數據大小,最高準確率為模型在迭代過程中達到過的最高準確率,最準數據量為達到最高準確率時訓練數據量的大小。對學習曲線和表中數據進行分析,隨機選擇方法只需70%的訓練語料就能達到監(jiān)督學習的效果?,F有的不確定性方法可節(jié)省約50%的語料,優(yōu)于隨機選擇。而本文設計的主動學習方法能節(jié)省約60%的語料,遠優(yōu)于不確定性方法,并且在50%的語料下提高了1.4%的準確率。分析其主要原因在于,民航問題語料質量不高,存在冗余和噪聲數據。主動學習方法能避開這些差數據,只需7 500條優(yōu)質數據就已足夠擬合模型,并得到不錯的表現。
表4 民航語料對比實驗結果
民航問題數據集有較強的領域針對性,僅基于該數據集的實驗結果,并不足以驗證本文方法的可行性。為了驗證本文設計的主動學習方法的通用性,本文基于學術界常用的公開數據集TREC問題分類語料設計了相同的對比實驗,得到的實驗結果如表5所示。從表5可以看出,實驗結果與民航語料結果類似,驗證了該主動學習方法在不同領域的語料下均可有效減少語料標注代價,還能在一定程度上提升模型的性能。但是標注量的減少和準確率的提高,相比于民航問題語料的實驗均有所下降,經過分析后認為這可能是該TREC問題分類語料經過人工處理,語料質量高于實際業(yè)務場景中的民航客服數據,數據集中冗余、噪聲等低價值樣例較少。
表5 TREC語料對比實驗結果
實驗二為驗證本文主動學習算法選擇策略的有效性,對選擇策略做了簡化測試實驗,將“信息性+代表性”“信息性+多樣性”“代表性+多樣性”與“信息性+代表性+多樣性”四種選擇策略在民航數據集上做對比實驗。其不同策略的學習曲線對比如圖3所示。
圖3 簡化實驗主動學習曲線
基于學習曲線及實驗過程中的記錄數據,得到了如表6所示的實驗結果。對學習曲線和表中數據進行分析,相比于三準則結合的策略,“代表性+多樣性”“信息性+代表性”和“信息性+多樣性”策略在實驗中無論減少的標注量還是模型性能均有所下降,由此可驗證本文選擇策略中的信息性、代表性和多樣性三個準則都十分重要,對樣本價值的度量均有各自的貢獻。其中去除信息性的實驗表現最差,說明信息性為該方法的核心準則。
表6 簡化實驗結果
本文基于深度主動學習技術設計問題意圖識別語料標注方法,以減少問題意圖識別任務中的人工標注成本。針對深度學習在主動學習中計算量巨大等挑戰(zhàn),設計了一個輕量級深度學習意圖識別模型,實驗表明該模型在問題意圖識別任務中表現出高性能的同時,訓練速度更快。針對主動學習方法中常用的不確定性選擇策略存在的孤立點和冗余問題,提出了一種結合樣例的信息性、代表性與多樣性三項準則的選擇策略,實驗結果表明,該選擇策略能更有效地度量樣例價值,減少更多的問題意圖標注成本。
在未來的工作中,計劃將本文的深度主動學習方法與BERT預訓練模型的思想結合,研究主動學習循環(huán)階段的增量訓練方法,進而提高標注語料的效率。