揭祕:對話機器人平臺智能問答技術

前言

我的計算機的發展史要追溯到上個世紀90年代末,人們用鍵盤和鼠標向購物網站發送請求,購買心儀的商品,隨後的十多年間,互聯網飛速發展,智能手機應運而生,人們開始習慣用觸摸的方式更加靈活地操縱手機、Pad等設備,可與之進行交互的產品也穩步落地在數以百萬計APP中,這些產品都是基於GUI (Graphical User Interface)設計的。數據庫

鑑於人類向外界發送指令的方式除了用手作(以鍵盤鼠標、觸摸爲表明),還能夠用嘴說,所以語音控制設備進行人機交互也開始進入人類探索的領域,然而讓機器聽懂人類的語言是一件十分困難的事,近幾年隨着深度學習的崛起,語音識別和天然語言理解的快速發展,爲這一交互模式的流行創造了可能,相信不久的未來,人類會逐步邁入CUI (Conversational User Interface)時代。微信

1、智能問答簡介

在咱們的生活中,智能對話被普遍應用在客服、營銷等重複性對話頻繁發生的場景,或者做爲GUI的補充,爲用戶提供高效、個性化的體驗,甚至是直接集成到智能音箱、智能家居、智能導航等硬件設備中,獨立承載人機交互的重擔,按照對話的智能程度,咱們能夠把智能問答分爲5個階段:單輪問答、多輪會話、意圖推理、個性化以及情感互動,而從問答的種類來說,咱們又能夠將其分爲Community QA、KBQA、TableQA、PassageQA、VQA這5大類。網絡

圖1 智能問答領域分類.png

圖1 智能問答領域分類[Duan 2017]
  • KBQA:基於知識圖譜的問答,全部的知識被組織成三元組的形式,好比<姚明、妻子、葉莉>這個三元組是知識圖譜裏的一條知識,當用戶詢問「姚明的妻子是誰」的時候,問答模型會將答案定位到「葉莉」;
  • TableQA:知識是用表格的形式組織的,商家的產品信息用表格的形式存儲,當用戶詢問關於某個產品的具體屬性時,問答模型能夠把用戶的天然語言轉化成SQL查詢語句,直接從數據庫裏定位答案;
  • PassageQA:閱讀理解,它是基於文檔的問答,咱們的問答模型會基於用戶的問題,將答案定位在文檔的某個段落、某句話甚至是某個短語。
  • VQA:基於圖像或視頻的問答,以上圖爲例,用戶問「這個女孩兒的臉被什麼擋住了」,問答模型會告訴咱們答案是「香蕉」;
  • Community QA:從命名上來看,它是基於社區知識的問答,好比一個讀書論壇,底下有人在交流值得一讀的人工智能書籍,在母嬰論壇有人在討論寶寶發燒了怎麼辦?須要吃藥嗎?那麼這些對話內容均可以沉澱爲知識,咱們定義的Community QA就來源於這些場景,在不一樣的領域,咱們經過挖掘、或者收集、標註的方式沉澱了一批知識,用問答對的形式把它們組織起來,在這批知識集合下,用戶提問一個領域相關的問題,問答模型會告訴咱們答案究竟是什麼。

2、智能問答工程實踐

面對智能問答的普遍應用,本篇文章以如何搭建一套智能問答系統爲切入點,深刻淺出介紹一下在Community QA上所作的嘗試。架構

1. 業務簡介

咱們再基於幾個實際的例子看一下問答的使用場景:框架

第一類是常見的客服場景,詢問產品、詢問業務、詢問經驗,這類場景比較泛,他會衍生在生活中的各個方面,客服機器人相比傳統的客服,他永不打烊,回答永遠標準,並且面對各類刁鑽甚至不友好的問題,都會永遠積極正面地給出響應。工具

同時該類問答機器人進一步深化拓寬到領域,會孵化出某些領域通用的機器人,好比HR領域,相信不一樣公司的HR,很大程度上面臨的問題集合都是固定的,也就是說,垂直領域的問答機器人是能夠有效滲透並橫向複製給不一樣企業使用的。學習

在英語學習相關產品上,咱們想給小孩報名英文課,可是不清楚課程內容和價格,那咱們會問相關的問題,對於商家來說,咱們不只是提問的人,仍是潛在的商機,可能咱們僅僅只想問一個問題,可是商家卻但願能得到咱們更多的信息,電話、小孩年紀、上課意向等,進而讓咱們留存下來最後能成功消費,相似的場景還有不少,咱們把這一類應用場景叫營銷機器人,它是商務團隊的好幫手,能在多個平臺自由切換,回答問題標準且及時,最終每每能經過更小的人力投入,獲取更多的有效線索。測試

2. 問答建模

基於前面的例子,咱們對問答場景有了更具體的畫像,須要作什麼已經很清晰了,那麼怎麼作呢,咱們開始嘗試對該問題進行建模。大數據

首先是對知識的結構化表示:
用戶問題咱們用q表示;網站

一個問答對錶示一條領域知識,咱們把它叫作一個知識點ki;

答案咱們定義爲ai;

因爲一個語義的問題可能有多種不一樣的表述方式,所以一個知識點的問題由多個不一樣的表述組成,這些表述都叫類似問pij;

一個領域的知識庫,由多個知識點構成;

圖2 知識庫表示

圖2 知識庫表示

咱們爲何要用這種方式來管理知識,不用圖表、也不用表格?實際上,知識的管理方式是來源於實際業務場景的,這種方式很是易於維護,多個同義問題用一個知識點管理,也能減輕維護答案工做量,同一知識點下的問題也將會是很好的訓練數據。

如今有了領域內知識庫,用戶提問後,咱們還須要一個問答模型,這個模型能找到和用戶query最匹配的問題,進而給出對應的答案,這裏咱們採用檢索+匹配+排序的架構。
圖3 問答建模流程.png
圖3 問答建模流程

下圖是基於知識庫和問答模型在母嬰場景的應用舉例:
圖4 QA應用舉例.png

圖4 QA應用舉例

3. 數據儲備

圖5 數據類型分佈.png

圖5 數據類型分佈

在正式開始問答模型構建以前,咱們須要思考目前有哪些數據可被咱們使用,以及咱們須要什麼數據來支撐後續的工做。

通用領域的貼吧、豆瓣、微博、知道等問答數據,可被用來訓練詞向量,或是統計共現、互信息詞典;人工標註的q/p對,可被用來訓練有監督的分類模型;垂直領域的知識庫可被用來訓練領域相關的分類模型,也可用做詞向量的fine-tune,固然也是有效的評估數據。

4. 模型迭代

圖6 吾來QA架構圖.png
圖6 吾來QA架構圖

吾來總體的QA架構圖如圖6所示,下面咱們簡單介紹一下歷次迭代的思路。

1. BoW+LR

第一次迭代咱們只引入了詞袋(Bag of Words)模型,5維表明特徵。

Jaccard:q和p詞交集個數與詞並集個數的比值;

Coverity:最長公共子串特徵,q和p最長公共子串在p中的佔比;

Edit-Distance:最小編輯距離,q和p的最小編輯距離除以q、p長度的平均值;

TM:共現特徵,基於bigram/trigram詞典,計算q、p共現詞平均score、共現詞最高score的平均值、共現詞去除相同詞後最高score的平均值共3維特徵;

MI:互信息特徵,基於互信息詞典,計算q、p兩兩詞的互信息平均值;

上述特徵集合,均由大數據文本的統計特徵衍生而來,對句子的語義表示能力較弱。

2. BoW+WE+LR

第二次迭代咱們給模型引入了必定的語義表示能力,對於瞭解深度學習、天然語言處理的同窗來說,word2vec在不少任務上都有着很是傑出的貢獻,這一模型從不一樣角度刻畫了周圍詞和當前詞的關係,通過訓練後,咱們能獲得一份詞彙的向量表示。

圖7 Word2Vec的2個模型.png

圖7 word2vec的2個模型

基於訓練獲得的詞向量,咱們採用IDF對詞向量進行加權平均,以此獲得q、p詞粒度的句向量表示,並最終經過餘弦類似度來度量二者的語義相關性。

圖8 基於句子表示的w2v特徵.png

圖8 基於句子表示的w2v特徵

經過餘弦類似度給出的類似,本質上描述的仍是兩個詞的相對一致,並且word2vec不考慮詞序,餘弦類似度大表示兩個詞搭配出現、或者和同一批詞搭配出現的可能性較大,這一特徵所顯示出來的弊端就是每每類似度高的2個詞具備可替換性但卻語義不徹底相同。

好比q=「寶寶感冒怎麼辦」,p=」寶寶發燒怎麼辦」,」感冒」和」發燒」互相替換,句子依然具備合理性,並且因爲他們常常在同一批詞彙中搭配出現,具備比較類似的分佈特徵,相關性比較高,然而他們語義並不一樣

接下來咱們引入另外一種語義度量方法:WMD (the Word Mover’s Distance),它刻畫了如何用最小的代價將q中的每一個詞以不一樣權重匹配到p中每一個詞上,這是一種基於句子間的交互來表示語義的方法。

圖9 基於句子交互的wmd特徵.png

圖9 基於句子交互的WMD特徵

在利用WMD計算q/p的相關性時,咱們會對句子進行切詞、去停,對於q中的每一個詞,找到p中的另外一個詞,進行語義轉移,轉移的代價咱們用兩個詞彙間的word2vec餘弦類似度來度量,當2個詞語義較相近時,咱們能夠多轉移一點,若是語義相差很大,咱們能夠選擇少轉移或者不轉移,最後使得全部轉移的加權和最小,這裏加權採用詞頻做爲特徵,具體示例如圖10所示。
圖10 the Word Mover‘s Distance.png

圖10 the Word Mover’s Distance (WMD)

因爲WMD也高度依賴word2vec詞向量,所以上文提到的word2vec cosine特徵全部的不足,WMD特徵依舊存在,既沒有考慮語序信息,同時對OOV (Out of Vocabulary)狀況也很不友好,語義泛化能力弱,類似意圖區分能力差。

3. BoW+WE+SE+fine-tune

前兩次迭代都沒有考慮知識庫內的數據,比較適用於無語料或者語料較少的知識庫,當知識庫具備必定的規模後,正如前面提到的,同一個知識點下的類似問,將是很好的訓練數據。

咱們採用了fastText模型,充分利用知識點中的問題語義相同/相近這個事實做爲監督信號,訓練一個分類模型,直接用一個問題的詞去預測問題所屬的知識點。

fastText是Tomas Makolov爲了彌補word2vec的某些不足而提出的改進方案,和word2vec中CBOW不一樣的是,它的輸入再也不是上下文,而是一整個句子,同時它接收子詞和ngram特徵,能捕捉到更多的信息。

好比單詞的先後綴,以及詞的語序特徵等。相比其它深度學習模型,fastText結構簡單,本質上是一個線性模型,不太適合處理較長或者線性不可分的樣本,而對於偏線性的短文本分類任務卻比較合適,能在較少訓練集合的基礎上,很是快速地獲得不錯的效果。
圖11 fastText模型結構.png

圖11 fastText模型結構

同時fastText在訓練過程當中也會產生一份詞向量,經實驗驗證,基於知識庫訓練fastText的詞向量對基於大數據訓練的word2vec詞向量進行fine-tune,能必定程度上提高該領域的問答效果。

4. BoW+WE+SE+DM+fine-tune

前面咱們利用一個知識庫的類似問語義相近做爲監督信號,從中抽取出了一個知識點的語義信息,但咱們最終的目標是判斷用戶輸入和類似問之間的相關性,這裏咱們使用一個深度學習的模型ESIM (Enhanced LSTM for Natural Language Inference),利用要比較的兩句話的監督信號來訓練模型,觀察句對的交互對模型的影響。

圖12成ESIM模型架構.png
圖12 ESIM模型架構(左側)

上圖是ESIM的網絡結構,它在衆多短文本分類任務中都有不錯的表現,主要在於輸入2句話分別接embedding+BiLSTM, 利用BiLSTM學習一句話中的word和它上下文的關係後,在進行inference以前,會利用attention操做計算2個句子word之間的類似度來更新embedding,也就是說比較的兩句話在模型訓練中產生了交互,相比其它的相似網絡只在最後一層求距離來說,這種交互的影響能學到更全局的信息。

5. BERT+MTL+fine-tune

固然,學術界是在不斷變化的,對於效果較好的模型,咱們也須要進行嘗試,尋找適合在工業界落地的條件和場景。

圖13 Bert+多任務學習MTL框架圖.png

圖13 BERT+多任務學習MTL框架圖

在BERT橫掃了11項NLP測評任務的效果後,咱們把它應用在知識點分類任務上,指望利用BERT自己的優點,來提高分類任務的效果。同時咱們還基於知識庫數據,在BERT的基礎上,經過MTL進行fine-tune,再以BERT-MTL爲基礎,經過單個任務分別進行fine-tune。

圖14 Bert+MTL的fine-tune過程.png

圖14 BERT+MTL的fine-tune過程

評估

圖15 評估數據舉例.png

圖15 評估數據舉例

效果變好了,有多好?肉眼可見顯然不能做爲一個反饋的指標,因此咱們須要去科學地評估這些改進,評估這一環節咱們選了6個不一樣領域,每一個領域50個知識點,每一個知識點12個類似問做訓練,3個做評估測試,示例數據見圖15,在此數據集基礎上去評估準召和F1,具體結果見圖16,你們能夠看到在不卡閾值的狀況下,準確率從0.8提高到了0.968。

圖16 歷次迭代評估數據表.png

圖16 歷次迭代評估數據表

迭代是一個按部就班的過程,可能有人會有疑惑,我怎麼知道要用什麼特徵、選哪一個模型,從屢次迭代的經驗來說,Badcase分析很重要,特徵的設計一方面來源於你對問題的直觀感知。

好比咱們須要從多方面(統計層面、詞彙表示、句子表示、句子間交互等)來設計方法對句子進行語義表示,另外一方面來源於對模型現有Badcase的彌補,經過分析case表現出來的規律或者傾向來設計有針對性的特徵。

同時學術界也在不斷更新新的模型,3年前時興的技術,到如今被徹底替代的可能性是很是大的,所以咱們須要與時俱進。

3

結語

整個智能問答系統升級的過程,主要圍繞四個步驟進行,首先面對任務要理解問題的本質,對問題進行合理的建模,而後評估選擇合適的語言工具去實現它,再由淺入深穩步迭代,造成數據、模型、反饋的閉環,最後就是要持續性學習,擁抱變化,擁抱技術。

參考文獻
[1] Nan Duan. Building Informational Bot (InfoBot) with Question Answering & Generation. In Association for Computational Linguistics (ACL). 2017.
[2]Tomas Mikolov, Ilya Sutskever, Kai Chen, Greg Corrado, and Jeffrey Dean. 2013b. Distributed representations of words and phrases and their compositionality. In NIPS, pages 3111–3119.
[3] Qian Chen, Xiaodan Zhu, Zhenhua Ling, Si Wei, Hui Jiang, Diana Inkpen. "Enhanced LSTM for Natural Language Inference". In Association for Computational Linguistics (ACL). 2017.
[4] Le, Quoc, and Tomas Mikolov. "Distributed representations of sentences and documents." International Conference on Machine Learning. 2014.
[5] Devlin, J., Chang, M.-W., Lee, K., and Toutanova, K. Bert: Pretraining of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805, 2018.
[6] Xiaodong Liu, Pengcheng He, Weizhu Chen, and Jianfeng Gao. 2019a. Improving multi-task deep neural networks via knowledge distillation for natural language understanding. arXiv preprint arXiv:1904.09482.
[7] Xiaodong Liu, Pengcheng He, Weizhu Chen, and Jianfeng Gao. 2019b. Multi-task deep neural networks for natural language understanding. arXiv preprint arXiv:1901.11504.

[揭祕:對話機器人平臺智能問答技術]

以上是「吾來」智能問答升級之路!更多精彩歡迎關注微信公衆號【吾來對話機器人】

相關文章
相關標籤/搜索