對(duì)話機(jī)器人平臺(tái)智能問答技術(shù)拆解
筆者對(duì)智能問答機(jī)器人技術(shù)進(jìn)行了分析,從實(shí)際場(chǎng)景切入,闡釋其功能邏輯。
個(gè)人計(jì)算機(jī)的發(fā)展史要追溯到上個(gè)世紀(jì)90年代末,人們用鍵盤和鼠標(biāo)向購物網(wǎng)站發(fā)送請(qǐng)求,購買心儀的商品,隨后的十多年間,互聯(lián)網(wǎng)飛速發(fā)展,智能手機(jī)應(yīng)運(yùn)而生,人們開始習(xí)慣用觸摸的方式更加靈活地操縱手機(jī)、Pad等設(shè)備,可與之進(jìn)行交互的產(chǎn)品也穩(wěn)步落地在數(shù)以百萬計(jì)APP中,這些產(chǎn)品都是基于GUI (Graphical User Interface)設(shè)計(jì)的。
鑒于人類向外界發(fā)送指令的方式除了用手做(以鍵盤鼠標(biāo)、觸摸為代表),還可以用嘴說,因此語音控制設(shè)備進(jìn)行人機(jī)交互也開始進(jìn)入人類探索的領(lǐng)域。
然而,讓機(jī)器聽懂人類的語言是一件十分困難的事,近幾年隨著深度學(xué)習(xí)的崛起,語音識(shí)別和自然語言理解的快速發(fā)展,為這一交互模式的流行創(chuàng)造了可能,相信不久的將來,人類會(huì)逐步邁入CUI (Conversational User Interface)時(shí)代。
智能問答簡(jiǎn)介
在我們的生活中,智能對(duì)話被廣泛應(yīng)用在客服、營銷等重復(fù)性對(duì)話頻繁發(fā)生的場(chǎng)景,或者作為GUI的補(bǔ)充,為用戶提供高效、個(gè)性化的體驗(yàn),甚至是直接集成到智能音箱、智能家居、智能導(dǎo)航等硬件設(shè)備中,獨(dú)立承載人機(jī)交互的重?fù)?dān)。
按照對(duì)話的智能程度,我們可以把智能問答分為5個(gè)階段:?jiǎn)屋唵柎?、多輪?huì)話、意圖推理、個(gè)性化以及情感互動(dòng)。
而從問答的種類來講,我們又可以將其分為Community QA、KBQA、TableQA、PassageQA、VQA這5大類。
圖1 智能問答領(lǐng)域分類[Duan 2017]
- KBQA:基于知識(shí)圖譜的問答,所有的知識(shí)被組織成三元組的形式,比如<姚明、妻子、葉莉>這個(gè)三元組是知識(shí)圖譜里的一條知識(shí),當(dāng)用戶詢問“姚明的妻子是誰”的時(shí)候,問答模型會(huì)將答案定位到“葉莉”;
- TableQA:知識(shí)是用表格的形式組織的,商家的產(chǎn)品信息用表格的形式存儲(chǔ),當(dāng)用戶詢問關(guān)于某個(gè)產(chǎn)品的具體屬性時(shí),問答模型可以把用戶的自然語言轉(zhuǎn)化成SQL查詢語句,直接從數(shù)據(jù)庫里定位答案;
- PassageQA:閱讀理解,它是基于文檔的問答,我們的問答模型會(huì)基于用戶的問題,將答案定位在文檔的某個(gè)段落、某句話甚至是某個(gè)短語;
- VQA:基于圖像或視頻的問答,以上圖為例,用戶問“這個(gè)女孩兒的臉被什么擋住了”,問答模型會(huì)告訴我們答案是“香蕉”;
- Community QA:從命名上來看,它是基于社區(qū)知識(shí)的問答,比如一個(gè)讀書論壇,底下有人在交流值得一讀的人工智能書籍,在母嬰論壇有人在討論寶寶發(fā)燒了怎么辦?需要吃藥嗎?那么這些對(duì)話內(nèi)容都可以沉淀為知識(shí),我們定義的Community QA就來源于這些場(chǎng)景,在不同的領(lǐng)域,我們通過挖掘、或者收集、標(biāo)注的方式沉淀了一批知識(shí),用問答對(duì)的形式把它們組織起來,在這批知識(shí)集合下,用戶提問一個(gè)領(lǐng)域相關(guān)的問題,問答模型會(huì)告訴我們答案到底是什么。
智能問答工程實(shí)踐
面對(duì)智能問答的廣泛應(yīng)用,本篇文章以如何搭建一套智能問答系統(tǒng)為切入點(diǎn),深入淺出介紹一下在Community QA上所做的嘗試。
1. 業(yè)務(wù)簡(jiǎn)介
我們?cè)倩趲讉€(gè)實(shí)際的例子看一下問答的使用場(chǎng)景:
- 第一類是常見的客服場(chǎng)景,詢問產(chǎn)品、詢問業(yè)務(wù)、詢問經(jīng)驗(yàn),這類場(chǎng)景比較泛,他會(huì)衍生在生活中的各個(gè)方面,客服機(jī)器人相比傳統(tǒng)的客服,他永不打烊,回答永遠(yuǎn)標(biāo)準(zhǔn),而且面對(duì)各種刁鉆甚至不友好的問題,都會(huì)永遠(yuǎn)積極正面地給出響應(yīng)。
- 同時(shí),該類問答機(jī)器人進(jìn)一步深化拓寬到領(lǐng)域,會(huì)孵化出某些領(lǐng)域通用的機(jī)器人,比如HR領(lǐng)域,相信不同公司的HR,很大程度上面臨的問題集合都是固定的,也就是說,垂直領(lǐng)域的問答機(jī)器人是可以有效滲透并橫向復(fù)制給不同企業(yè)使用的。
- 在英語學(xué)習(xí)相關(guān)產(chǎn)品上,我們想給小孩報(bào)名英文課,但是不清楚課程內(nèi)容和價(jià)格,那我們會(huì)問相關(guān)的問題。對(duì)于商家來講,我們不僅是提問的人,還是潛在的商機(jī),可能我們僅僅只想問一個(gè)問題,但是商家卻希望能獲得我們更多的信息,電話、小孩年紀(jì)、上課意向等,進(jìn)而讓我們留存下來最后能成功消費(fèi),類似的場(chǎng)景還有很多,我們把這一類應(yīng)用場(chǎng)景叫營銷機(jī)器人,它是商務(wù)團(tuán)隊(duì)的好幫手,能在多個(gè)平臺(tái)自由切換,回答問題標(biāo)準(zhǔn)且及時(shí),最終往往能通過更小的人力投入,獲取更多的有效線索。
2. 問答建模
基于前面的例子,我們對(duì)問答場(chǎng)景有了更具體的畫像,需要做什么已經(jīng)很清晰了,那么怎么做呢,我們開始嘗試對(duì)該問題進(jìn)行建模。
首先是對(duì)知識(shí)的結(jié)構(gòu)化表示:
- 用戶問題我們用q表示;
- 一個(gè)問答對(duì)表示一條領(lǐng)域知識(shí),我們把它叫做一個(gè)知識(shí)點(diǎn)ki;
- 答案我們定義為ai;
- 由于一個(gè)語義的問題可能有多種不同的表述方式,因此一個(gè)知識(shí)點(diǎn)的問題由多個(gè)不同的表述組成,這些表述都叫相似問pij;
- 一個(gè)領(lǐng)域的知識(shí)庫,由多個(gè)知識(shí)點(diǎn)構(gòu)成。
圖2 知識(shí)庫表示
我們?yōu)槭裁匆眠@種方式來管理知識(shí),不用圖表、也不用表格?
實(shí)際上,知識(shí)的管理方式是來源于實(shí)際業(yè)務(wù)場(chǎng)景的,這種方式非常易于維護(hù),多個(gè)同義問題用一個(gè)知識(shí)點(diǎn)管理,也能減輕維護(hù)答案工作量,同一知識(shí)點(diǎn)下的問題也將會(huì)是很好的訓(xùn)練數(shù)據(jù)。
現(xiàn)在有了領(lǐng)域內(nèi)知識(shí)庫,用戶提問后,我們還需要一個(gè)問答模型,這個(gè)模型能找到和用戶query最匹配的問題,進(jìn)而給出對(duì)應(yīng)的答案,這里我們采用檢索+匹配+排序的架構(gòu)。
圖3 問答建模流程
下圖是基于知識(shí)庫和問答模型在母嬰場(chǎng)景的應(yīng)用舉例:
圖4 QA應(yīng)用舉例
3.數(shù)據(jù)儲(chǔ)備
圖5 數(shù)據(jù)類型分布
在正式開始問答模型構(gòu)建之前,我們需要思考目前有哪些數(shù)據(jù)可被我們使用,以及我們需要什么數(shù)據(jù)來支撐后續(xù)的工作。
通用領(lǐng)域的貼吧、豆瓣、微博、知道等問答數(shù)據(jù),可被用來訓(xùn)練詞向量,或是統(tǒng)計(jì)共現(xiàn)、互信息詞典;人工標(biāo)注的q/p對(duì),可被用來訓(xùn)練有監(jiān)督的分類模型;垂直領(lǐng)域的知識(shí)庫可被用來訓(xùn)練領(lǐng)域相關(guān)的分類模型,也可用作詞向量的fine-tune,當(dāng)然也是有效的評(píng)估數(shù)據(jù)。
4. 模型迭代
圖6 QA架構(gòu)圖
整體的QA架構(gòu)圖如圖6所示,下面我們簡(jiǎn)單介紹一下歷次迭代的思路。
1. BoW+LR
第一次迭代我們只引入了詞袋(Bag of Words)模型,5維代表特征。
- Jaccard:q和p詞交集個(gè)數(shù)與詞并集個(gè)數(shù)的比值;
- Coverity:最長(zhǎng)公共子串特征,q和p最長(zhǎng)公共子串在p中的占比;
- Edit-Distance:最小編輯距離,q和p的最小編輯距離除以q、p長(zhǎng)度的平均值;
- TM:共現(xiàn)特征,基于bigram/trigram詞典,計(jì)算q、p共現(xiàn)詞平均score、共現(xiàn)詞最高score的平均值、共現(xiàn)詞去除相同詞后最高score的平均值共3維特征;
- MI:互信息特征,基于互信息詞典,計(jì)算q、p兩兩詞的互信息平均值。
上述特征集合,均由大數(shù)據(jù)文本的統(tǒng)計(jì)特征衍生而來,對(duì)句子的語義表示能力較弱。
2.?BoW+WE+LR
第二次迭代我們給模型引入了一定的語義表示能力,對(duì)于了解深度學(xué)習(xí)、自然語言處理的同學(xué)來講,word2vec在很多任務(wù)上都有著非常杰出的貢獻(xiàn),這一模型從不同角度刻畫了周圍詞和當(dāng)前詞的關(guān)系。經(jīng)過訓(xùn)練后,我們能得到一份詞匯的向量表示。
圖7 word2vec的2個(gè)模型
基于訓(xùn)練得到的詞向量,我們采用IDF對(duì)詞向量進(jìn)行加權(quán)平均,以此得到q、p詞粒度的句向量表示,并最終通過余弦相似度來度量?jī)烧叩恼Z義相關(guān)性。
圖8 基于句子表示的w2v特征
通過余弦相似度給出的相似,本質(zhì)上描述的還是兩個(gè)詞的相對(duì)一致,而且word2vec不考慮詞序,余弦相似度大表示兩個(gè)詞搭配出現(xiàn)、或者和同一批詞搭配出現(xiàn)的可能性較大,這一特征所顯示出來的弊端就是往往相似度高的2個(gè)詞具有可替換性但卻語義不完全相同。
比如q=“寶寶感冒怎么辦”,p=”寶寶發(fā)燒怎么辦”,”感冒”和”發(fā)燒”互相替換,句子依然具有合理性,而且由于他們經(jīng)常在同一批詞匯中搭配出現(xiàn),具有比較相似的分布特征,相關(guān)性比較高,然而他們語義并不同。
接下來我們引入另一種語義度量方法:WMD (the Word Mover’s Distance),它刻畫了如何用最小的代價(jià)將q中的每個(gè)詞以不同權(quán)重匹配到p中每個(gè)詞上,這是一種基于句子間的交互來表示語義的方法。
圖9 基于句子交互的WMD特征
在利用WMD計(jì)算q/p的相關(guān)性時(shí),我們會(huì)對(duì)句子進(jìn)行切詞、去停,對(duì)于q中的每個(gè)詞,找到p中的另一個(gè)詞,進(jìn)行語義轉(zhuǎn)移,轉(zhuǎn)移的代價(jià)我們用兩個(gè)詞匯間的word2vec余弦相似度來度量。
當(dāng)2個(gè)詞語義較相近時(shí),我們可以多轉(zhuǎn)移一點(diǎn),如果語義相差很大,我們可以選擇少轉(zhuǎn)移或者不轉(zhuǎn)移,最后使得所有轉(zhuǎn)移的加權(quán)和最小,這里加權(quán)采用詞頻作為特征,具體示例如圖10所示。
圖10 the Word Mover’s Distance (WMD)
由于WMD也高度依賴word2vec詞向量,因此上文提到的word2vec cosine特征所有的不足,WMD特征依舊存在,既沒有考慮語序信息,同時(shí)對(duì)OOV (Out of Vocabulary)情況也很不友好,語義泛化能力弱,相似意圖區(qū)分能力差。
3.?BoW+WE+SE+fine-tune
前兩次迭代都沒有考慮知識(shí)庫內(nèi)的數(shù)據(jù),比較適用于無語料或者語料較少的知識(shí)庫,當(dāng)知識(shí)庫具有一定的規(guī)模后,正如前面提到的,同一個(gè)知識(shí)點(diǎn)下的相似問,將是很好的訓(xùn)練數(shù)據(jù)。
我們采用了fastText模型,充分利用知識(shí)點(diǎn)中的問題語義相同/相近這個(gè)事實(shí)作為監(jiān)督信號(hào),訓(xùn)練一個(gè)分類模型,直接用一個(gè)問題的詞去預(yù)測(cè)問題所屬的知識(shí)點(diǎn)。
FastText是Tomas Makolov為了彌補(bǔ)word2vec的某些不足而提出的改進(jìn)方案,和word2vec中CBOW不同的是,它的輸入不再是上下文,而是一整個(gè)句子,同時(shí)它接收子詞和ngram特征,能捕捉到更多的信息。
比如單詞的前后綴,以及詞的語序特征等。相比其它深度學(xué)習(xí)模型,fastText結(jié)構(gòu)簡(jiǎn)單,本質(zhì)上是一個(gè)線性模型,不太適合處理較長(zhǎng)或者線性不可分的樣本,而對(duì)于偏線性的短文本分類任務(wù)卻比較合適,能在較少訓(xùn)練集合的基礎(chǔ)上,非常快速地得到不錯(cuò)的效果。
圖11 fastText模型結(jié)構(gòu)
同時(shí)fastText在訓(xùn)練過程中也會(huì)產(chǎn)生一份詞向量,經(jīng)實(shí)驗(yàn)驗(yàn)證,基于知識(shí)庫訓(xùn)練fastText的詞向量對(duì)基于大數(shù)據(jù)訓(xùn)練的word2vec詞向量進(jìn)行fine-tune,能一定程度上提升該領(lǐng)域的問答效果。
4. BoW+WE+SE+DM+fine-tune
前面我們利用一個(gè)知識(shí)庫的相似問語義相近作為監(jiān)督信號(hào),從中抽取出了一個(gè)知識(shí)點(diǎn)的語義信息,但我們最終的目標(biāo)是判斷用戶輸入和相似問之間的相關(guān)性,這里我們使用一個(gè)深度學(xué)習(xí)的模型ESIM (Enhanced LSTM for Natural Language Inference),利用要比較的兩句話的監(jiān)督信號(hào)來訓(xùn)練模型,觀察句對(duì)的交互對(duì)模型的影響。
圖12 ESIM模型架構(gòu)(左側(cè))
上圖是ESIM的網(wǎng)絡(luò)結(jié)構(gòu),它在眾多短文本分類任務(wù)中都有不錯(cuò)的表現(xiàn),主要在于輸入2句話分別接embedding+BiLSTM, 利用BiLSTM學(xué)習(xí)一句話中的word和它上下文的關(guān)系后,在進(jìn)行inference之前,會(huì)利用attention操作計(jì)算2個(gè)句子word之間的相似度來更新embedding,也就是說比較的兩句話在模型訓(xùn)練中產(chǎn)生了交互,相比其它的類似網(wǎng)絡(luò)只在最后一層求距離來講,這種交互的影響能學(xué)到更全局的信息。
5. BERT+MTL+fine-tune
當(dāng)然,學(xué)術(shù)界是在不斷變化的,對(duì)于效果較好的模型,我們也需要進(jìn)行嘗試,尋找適合在工業(yè)界落地的條件和場(chǎng)景。
圖13 BERT+多任務(wù)學(xué)習(xí)MTL框架圖
在BERT橫掃了11項(xiàng)NLP測(cè)評(píng)任務(wù)的效果后,我們把它應(yīng)用在知識(shí)點(diǎn)分類任務(wù)上,期望利用BERT本身的優(yōu)勢(shì),來提升分類任務(wù)的效果。同時(shí)我們還基于知識(shí)庫數(shù)據(jù),在BERT的基礎(chǔ)上,通過MTL進(jìn)行fine-tune,再以BERT-MTL為基礎(chǔ),通過單個(gè)任務(wù)分別進(jìn)行fine-tune。
圖14 BERT+MTL的fine-tune過程
5. 評(píng)估
圖15 評(píng)估數(shù)據(jù)舉例
效果變好了,有多好?肉眼可見顯然不能作為一個(gè)反饋的指標(biāo),所以我們需要去科學(xué)地評(píng)估這些改進(jìn),評(píng)估這一環(huán)節(jié)我們選了6個(gè)不同領(lǐng)域,每個(gè)領(lǐng)域50個(gè)知識(shí)點(diǎn),每個(gè)知識(shí)點(diǎn)12個(gè)相似問作訓(xùn)練,3個(gè)作評(píng)估測(cè)試,示例數(shù)據(jù)見圖15,在此數(shù)據(jù)集基礎(chǔ)上去評(píng)估準(zhǔn)召和F1。具體結(jié)果見圖16,大家可以看到在不卡閾值的情況下,準(zhǔn)確率從0.8提升到了0.968。
圖16 歷次迭代評(píng)估數(shù)據(jù)表
迭代是一個(gè)循序漸進(jìn)的過程,可能有人會(huì)有疑惑,我怎么知道要用什么特征、選哪個(gè)模型,從多次迭代的經(jīng)驗(yàn)來講,Badcase分析很重要,特征的設(shè)計(jì)一方面來源于你對(duì)問題的直觀感知。
比如我們需要從多方面(統(tǒng)計(jì)層面、詞匯表示、句子表示、句子間交互等)來設(shè)計(jì)方法對(duì)句子進(jìn)行語義表示,另一方面來源于對(duì)模型現(xiàn)有Badcase的彌補(bǔ),通過分析case表現(xiàn)出來的規(guī)律或者傾向來設(shè)計(jì)有針對(duì)性的特征。
同時(shí)學(xué)術(shù)界也在不斷更新新的模型,3年前時(shí)興的技術(shù),到現(xiàn)在被完全替代的可能性是非常大的,因此我們需要與時(shí)俱進(jìn)。
結(jié)語
整個(gè)智能問答系統(tǒng)升級(jí)的過程,主要圍繞四個(gè)步驟進(jìn)行,首先面對(duì)任務(wù)要理解問題的本質(zhì),對(duì)問題進(jìn)行合理的建模,然后評(píng)估選擇合適的語言工具去實(shí)現(xiàn)它,再由淺入深穩(wěn)步迭代,形成數(shù)據(jù)、模型、反饋的閉環(huán),最后就是要持續(xù)性學(xué)習(xí),擁抱變化,擁抱技術(shù)。
參考文獻(xiàn):
[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.
本文由 @吾來 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自 Unsplash,基于 CC0 協(xié)議
檢索匹配排序那塊能詳細(xì)說說不
大大大大叔大嬸打算大所多群無大所大所大所大
打死