本篇內(nèi)容已被ACL2019收錄“Simple and Effective Text Matching with Richer Alignment Features”。
1.背景
在Chatbot整體解決方案中,既有面向任務(wù)型的taskbot(諸如訂機票、查天氣等),也有更偏向知識問答的qabot,而在客服場景下,最基礎(chǔ)的類型也是這類。如果從知識庫的形式來區(qū)分qabot,可以有基于「文檔」的doc-qabot、基于「知識圖譜」的kg-qabot、基于「問答對」的faq-qabot等。我們這里重點關(guān)注的是最后一種faq-qabot(也簡稱faqbot),這種形式的方案對用戶而言易理解易維護,也是目前chatbot解決方案中不可缺的一部分。
faqbot就是將query匹配到一條「問答對」上,從技術(shù)的角度看,有兩大類方法,一是textclassification,二是textmatching,它們各有適合的場景,前者適合咨詢量大且比較穩(wěn)定的faq,后者適合長尾或時常變化的faq。
店小蜜是我們提供給阿里平臺商家的一套智能客服解決方案。在店小蜜中,基于Faq的問答是個很基礎(chǔ)的部分,我們在這個領(lǐng)域,在文本分類和文本匹配上進行了各方面的研究和實踐,在本篇中重點對文本匹配的基礎(chǔ)模型進行介紹。
「文本匹配」是NLP方向的一個重要研究領(lǐng)域,有著悠久的歷史,很多NLP任務(wù)都與此相關(guān),比如natual language inference、parahparase identification、answer selection等,都可以歸結(jié)成「文本匹配」問題。
有很多人研究這個課題,當前優(yōu)秀的匹配模型有哪些?這些模型有什么異同?這些模型存在哪些問題?這些都是我們展開這個項目需要先分析和回答的問題。我們通過分析SNLI榜單上的模型,有幾個結(jié)論:
- 優(yōu)秀的匹配模型都可以歸納成embed-encode-interacte-aggregate-predict五個步驟,interact部分主要是做inter-sentence alignment;
- 在interact步驟中的對齊操作,設(shè)計會比較復雜;而且很多模型只有一次interact步驟;
- 也有些更深的模型結(jié)構(gòu),會做多次的inter-sentence alignment,但因為較深的模型面臨著梯度消失、難以訓練的問題;
- 不管是參數(shù)量還是響應(yīng)時間,支撐像店小蜜這樣對實時性能要求比較高的場景,都不是很理想。
所以我們在設(shè)計的時候,要求我們的模型在更少的參數(shù)量、更簡潔的模型結(jié)構(gòu)、更少的inferencecost,保證更容易訓練、更適合部署到生產(chǎn)環(huán)境,在這幾個前提下,我們也希望能借鑒深層網(wǎng)絡(luò)的優(yōu)勢,讓我們可以很方便地加深我們的網(wǎng)絡(luò)層次,讓模型有更強的表達能力。
2.模型
我們通過對學術(shù)界提出的各種模型,諸如Decomposable Attention Model、CAFE、DIIN等,歸納總結(jié),一個匹配模型的整體框架基本上有Embedding Layer、Encoder Layer、Interaction Layer、Aggregation Layer和Prediction Layer五層,只是每一層都有不同的設(shè)計,我們實現(xiàn)一種可插拔的匹配模型框架,每層都有一些典型的實現(xiàn)。
為了增強我們模型框架的表達能力,我們將Encoder+Interaction Layer打包成一個Block,通過堆疊多個Block,通過多次的inter-sentence alignment,可以讓我們的模型更充分地理解兩句文本之間的匹配關(guān)系。
我們基于這種框架,通過大量試驗得到一個模型結(jié)構(gòu)RE2,可以在各類公開數(shù)據(jù)集、和我們自己的業(yè)務(wù)數(shù)據(jù)上都能得到最優(yōu)的結(jié)果,如下圖所示。
RE2包括有N個Block,多個Block的參數(shù)完全獨立。在每個Block內(nèi)有一個encoder產(chǎn)出contextual representation,然后將encoder的輸入和輸出拼在一起,做inter-sentence alignment,之后通過fusion得到Block的輸出。第i個Block的輸出,會通過Augmented Residual Connection的方式與這個Block的輸入進行融合,作為第i+1個Block的輸入。
下面我們詳細介紹每個部分:
2.1Augmented Residual Connection
連續(xù)的Block之間用Augmented Residual Connection來連接,我們將第n個Block第i個位置的輸出記作:是個全零的向量。
第一個Block的輸入為,也就是Embeddling Layer的輸出,在Augmented Residual Connection中,第n個block的輸入為:
其中[;]表示拼接操作;
在interaction layer的輸入中,存在三種信息,一是originalpoint-wise information,在這里就是原始的詞向量,在每個Block中都會使用這份信息;二是通過encoder編碼得到的contextual information;三是之前兩層Block經(jīng)過對齊加工過的信息。這三份信息,對最終的結(jié)果都有不可替代的作用,在試驗分析中會展顯這一點。在我們這里encoder使用兩層CNN(SAME padding)。
2.2Alignment Layer
這塊我們使用Decomposable Attention Model(Parikhetal。,2016)的對齊機制:
2.3Fusion Layer
這塊我們參考CAFE中對concat、multiply、sub三個操作分別通過FM計算三個scalar特征值,我們針對這三個操作,用獨立的三個全連接網(wǎng)絡(luò)計算三個vector特征,之后將三個vector拼接并用進行projection。
2.4Prediction Layer
輸出層就比較常規(guī),針對文本相似度匹配這類任務(wù),我們使用對稱的形式:
針對文本蘊含、問答匹配這類任務(wù),我們使用
其中H表示多層全聯(lián)接網(wǎng)絡(luò);
3.試驗
3.1數(shù)據(jù)集
要驗證模型效果,我們選擇三類NLP任務(wù),Nature Language Inference、Paraphrase Identification、Question Answering,選用SNLI、MultiNLI、SciTail、Quora Question Pair、Wikiqa這樣幾份公開數(shù)據(jù)集。評估指標,前兩個任務(wù)選用Acc,后一個任務(wù)選擇MAP/MRR。
3.2實現(xiàn)細節(jié)
我們用Tensorflow實現(xiàn)模型,用NvidiaP100GPU訓練模型,英文數(shù)據(jù)集使用NLTK分詞并統(tǒng)一轉(zhuǎn)小寫、去除所有標點。序列長度不做限制,每個batch中的序列統(tǒng)一pad到這個batch中最長序列長度,詞向量選用840B-300dGlove向量,在訓練過程中fix住,所有OOV詞初始化為0向量,訓練中不更新這些參數(shù)。所有其他參數(shù)使用Heinitialization,并用Weightnormalization歸一化;每個卷積層或全聯(lián)接層之后,有dropout層,keeprate設(shè)為0.8;輸出層是兩層前饋網(wǎng)絡(luò);Block數(shù)量在1-5之間調(diào)參。
在這幾份公開數(shù)據(jù)集上,隱層大小設(shè)為150;激活函數(shù)使用GeLU激活函數(shù)。優(yōu)化算法選用Adam,學習率先線性warmup然后指數(shù)方式衰減,初始學習率在1e-4~3e-3之間調(diào)參;batchsize在64~512之間調(diào)參。
3.3結(jié)果
我們在這幾份公開數(shù)據(jù)集上,均取得state-of-art的結(jié)果(不使用BERT的情況下):
同樣這個模型性能上也有很良好的表現(xiàn),參數(shù)量和inferencespeed都有很強的競爭力,從而可以在我們店小蜜這樣的工業(yè)場景中得到廣泛應(yīng)用,給我們匹配準確率這樣的業(yè)務(wù)指標上帶來顯著的提升。
3.4結(jié)果分析
★3.4.1Ablation study
我們構(gòu)造了四個baseline模型,分別是:
- 1)w/oenc-in:alignment layer只使用encoder的輸出;
- 2)w/oresidual:去除所有block之間的residual連接;
- 3)w/oenc-out:去除所有encoder,alignment layer只使用block的輸入;
- 4)highway:使用highway網(wǎng)絡(luò)融合encoder的輸入和輸出,而不是直接拼接。
在SNLI上得到的結(jié)果如圖所示。通過1)3)和完整模型的對比,我們發(fā)現(xiàn)alignmentlayer只使用encoder的輸出或只使用encoder的輸入,都會得到很差的結(jié)果,說明原始的詞向量信息、之前Block產(chǎn)出的align信息、當前Block中encoder產(chǎn)出的上下文信息,對最終的結(jié)果都是缺一不可的。通過2)和完整模型的對比,我們發(fā)現(xiàn)Block之間residual連接發(fā)揮了作用;而4)和完整模型的對比顯示,我們直接拼接的方式是個更優(yōu)解。
★3.4.2Block數(shù)量的影響
如上圖所示,通過Augmented Residual Connection連接的網(wǎng)絡(luò),更容易在深層網(wǎng)絡(luò)中生效,能夠支撐更深的網(wǎng)絡(luò)層次,而其他baseline模型,在Block數(shù)量大于3時,效果會有很明顯的下降,并不能支撐更深層模型的應(yīng)用。
★3.4.3Occlusion sensitivity
前面講過,在alignmentlayer的輸入中,其實是三類信息的拼接:原始的詞向量信息、之前Block產(chǎn)出的align信息、當前Block中encoder產(chǎn)出的上下文信息,為了更好地理解這三份信息對最終結(jié)果的影響,我們參照機器視覺中相關(guān)工作,進行了Occlusion sensitivity的分析。我們在SNLI-dev數(shù)據(jù)上,使用包含3個Block的一個RE2模型,分別將某層Block中alignmentlayer輸入特征的某部分mask成0向量,然后觀察在entailment、neutral、contradiction三個類別上的準確率變化:
可以得到幾個分析結(jié)論:
- mask原始的詞向量信息,會對neutral和contradiction類的識別帶來比較大的損失,說明原始詞向量信息在判斷兩個句子差異性上發(fā)揮著重要作用;
- mask之前Block產(chǎn)出的alignment信息,會對neutral和contradiction類帶來比較大的影響,尤其是最后一層Block的這部分信息對最終的結(jié)果影響最大,說明residualconnection使得當前Block能更準確地關(guān)注應(yīng)該關(guān)注的部分;
- mask住Encoder的輸出結(jié)果,對entailment的影響更大,因為encoder是對phrase-level的語義進行建模,encoder的產(chǎn)出更有助于entailment的判斷;
★3.4.4 Casestudy
我們選了一個具體的case分析多層Block的作用。
這個case中, 兩句話分別是“A green bike is parked next to a door”“The bike is chained to the door”。在第一層Block中,是詞匯/短語級別的對齊, 而“parked next to”和“chained to”之間只有很弱的連接,而在第三層Block中,可以看到兩者已經(jīng)對齊,從而模型可以根據(jù)“parked next to”和“chained to”之間的關(guān)系,對兩句話整體的語義關(guān)系做出判斷。從中也可以看到,隨著Block的遞增,每層Block的alignment關(guān)注的信息都隨之進行著調(diào)整,通過不止一次的alignment,可以讓模型更好地理解兩句話之間的語義關(guān)系。
4.業(yè)務(wù)結(jié)果
在店小蜜中,自定義知識庫是由商家維護,我們提供知識定位方案;在店小蜜無法給出準確回復時,我們會推薦相關(guān)知識,這里的文本匹配模型,也主要用在店小蜜的這兩個業(yè)務(wù)模塊。我們重點優(yōu)化了7個大類行業(yè)模型(服飾、美妝洗護、鞋、電器、茶酒零食、母嬰、數(shù)碼)、一個大盤基礎(chǔ)模型和相關(guān)知識推薦模型。在保證覆蓋率的情況下,7類主營行業(yè)準確率從不到80%提升到89.5%,大盤基礎(chǔ)模型準確率提升到84%,知識推薦有效點擊從14%左右提升到19.5%。
店小蜜自定義知識庫后臺配置:
店小蜜旺旺咨詢示例:
總結(jié)展望
我們在工業(yè)場景下,實現(xiàn)了一個簡潔同時具有很強表達能力的模型框架,并在公開數(shù)據(jù)集和業(yè)務(wù)數(shù)據(jù)集上取得很好的結(jié)果。
這種「通用」的語義匹配模型,已經(jīng)對當前的業(yè)務(wù)帶來很大的提升,但是,針對店小蜜這樣的業(yè)務(wù)場景,是否在不同行業(yè)不同場景下可以得到更合適更有特色的解決方案,比如融合進商品知識、活動知識等外部知識做文本匹配。
怎么進一步完善FaqBot的技術(shù)體系,比如在文本分類、Fewshot分類等方向,也是我們團隊的一個重點工作。
隨著BERT模型的出現(xiàn),NLP各項任務(wù)都達到了新的SOTA。然而BERT過于龐大,對計算資源的需求很高,因此我們想利用Teacher-Student框架將BERT模型的能力遷移到RE2模型上。
最后,我們是達摩院-智能服務(wù)-小蜜FAQ算法團隊,如果想了解更多最新進展,歡迎郵件聯(lián)系gaoxing。gx@alibaba-inc.com,也歡迎業(yè)界優(yōu)秀青年加入我們,用AI重塑服務(wù)~