您當(dāng)前的位置是:  首頁 > 資訊 > 文章精選 >
 首頁 > 資訊 > 文章精選 >

淺談智能問答機(jī)器人如何識別你的意圖

2020-01-10 10:03:28   作者:AI研究院:Wuziye   來源:“和美信息”微信公眾號   評論:0  點(diǎn)擊:


  任務(wù)型對話系統(tǒng)主要包括自然語言理解、對話管理和對話生成。其中,自然語言理解指的是分析識別為文本的用戶輸入,得到用戶的意圖和輸入中的關(guān)鍵信息,包括領(lǐng)域、意圖識別、實(shí)體識別和槽的提取等。
  隨著自然語言處理技術(shù)的發(fā)展,一些新的方法運(yùn)用到了自然語言理解中,并取得了不錯(cuò)的效果。本文將針對意圖識別這部分,淺談在參與某項(xiàng)目中的一些經(jīng)驗(yàn)和思考。
  01.從規(guī)則到模型
  以往意圖識別主要采用規(guī)則系統(tǒng),規(guī)則系統(tǒng)的模板需要人工配置。
  例如,我們需要支持“開空調(diào)”的意圖,那么可以做如下的配置:
  意圖:開空調(diào)
  模板:(請|幫我)(打開|啟動(dòng))(這個(gè)|那個(gè))?(空調(diào)|冷風(fēng)機(jī))(啊|吧)?
  用戶輸入:“幫我打開空調(diào)”,即可通過模板匹配到“開空調(diào)”意圖
  規(guī)則系統(tǒng)的優(yōu)點(diǎn)是可配置,如果需要增加支持的模板,只需在配置系統(tǒng)內(nèi)加入,這在線上產(chǎn)生重要遺漏時(shí)顯得尤為重要,能夠及時(shí)修復(fù)。缺點(diǎn)是復(fù)雜的語言表述需要更復(fù)雜的模板,再考慮到語言的隨意性,配置靈活的模板又會(huì)使規(guī)則系統(tǒng)接受很多本來沒有意圖的用戶輸入,降低規(guī)則系統(tǒng)的準(zhǔn)確率。
  基于機(jī)器學(xué)習(xí)的方法,可以一定程度上彌補(bǔ)這些問題,大幅提高召回率。規(guī)則系統(tǒng)結(jié)合機(jī)器學(xué)習(xí),在實(shí)際操作中是較為靈活的方案。
  02.無監(jiān)督方法
  傳統(tǒng)方法依賴特征工程,神經(jīng)網(wǎng)絡(luò)需要大量標(biāo)注,如何以較少的標(biāo)注數(shù)據(jù)獲得較好的模型效果成為了研究和實(shí)驗(yàn)重點(diǎn)。
  近年,自監(jiān)督學(xué)習(xí)的語言模型研究[1]獲得重大進(jìn)展,各種使用大規(guī)模文本語料庫預(yù)訓(xùn)練的模型層出不窮,這些預(yù)訓(xùn)練模型提供了強(qiáng)大的語義表征能力,使得一些無監(jiān)督方法重新煥發(fā)了活力,這里介紹一種使用語言模型+KNN[2]進(jìn)行意圖識別的方法
  該方法可以在沒有人工標(biāo)注的情況,快速建立預(yù)測,同時(shí)獲得還不錯(cuò)的效果,在某場景中驗(yàn)證準(zhǔn)確率達(dá)到93%。
  03.有監(jiān)督樣本構(gòu)造
  當(dāng)面臨復(fù)雜語義場景或低容錯(cuò)時(shí),監(jiān)督學(xué)習(xí)值得嘗試。而對話場景的數(shù)據(jù)常常是匱乏、昂貴和敏感的,除了人工構(gòu)造和標(biāo)注以外,我們需要盡可能的尋找方法獲取標(biāo)注數(shù)據(jù)。
  有規(guī)則模板:對規(guī)則系統(tǒng)中的模板按照語法拆分,依據(jù)關(guān)鍵詞重要程度,采用笛卡爾積方式構(gòu)建樣本,這些樣本某種程度上可以用來作為baseline測試集。
  有大量無標(biāo)注對話語料:采用弱監(jiān)督方法,使用如Snorkel[3]的工具,基于知識庫、模板、字典、句法和專家規(guī)則等構(gòu)建推理邏輯,為無標(biāo)注數(shù)據(jù)打上概率標(biāo)簽。
圖片來源:Snorkel:Rapid Training Data Creation with Weak Supervision
  負(fù)樣本構(gòu)造:在某些場景中,包含了大量與業(yè)務(wù)意圖無關(guān)的對話,而訓(xùn)練語料通常只有正樣本,或者模型對某些詞過于“敏感”,模型對無意圖和意圖不明的對話會(huì)產(chǎn)生錯(cuò)誤的判斷,除常規(guī)閑聊語料的運(yùn)用,需要構(gòu)建無意圖的負(fù)樣本參與模型的訓(xùn)練和驗(yàn)證
  在實(shí)際操作中,可以基于正樣本的字或詞構(gòu)建一定區(qū)間長度的隨機(jī)序列作為負(fù)樣本,也可以對字詞做一定篩選后構(gòu)建。同時(shí),對于multi-class為了不增加新的無意圖類別,可以將負(fù)樣本的標(biāo)簽概率化為1/n,在預(yù)測時(shí)設(shè)置最大類別概率閾值過濾。
  正樣本意圖向量:[0,0,1,0,0]
  弱監(jiān)督意圖向量:[0.1,0.2,0.5,0.1,0.1]
  負(fù)樣本意圖向量:[0.2,0.2,0.2,0.2,0.2]
  實(shí)驗(yàn)證明,通過加入隨機(jī)負(fù)樣本訓(xùn)練,對無序輸入文本的識別能提升50%:
  04.預(yù)訓(xùn)練模型微調(diào)
  使用預(yù)訓(xùn)練模型加任務(wù)微調(diào),現(xiàn)在幾乎成為各類NLP任務(wù)的標(biāo)配,僅僅需要較少標(biāo)注數(shù)據(jù)就能達(dá)到以往較多標(biāo)注數(shù)據(jù)的訓(xùn)練效果,在意圖分類中嘗試,同樣有較大提升。
  領(lǐng)域自適應(yīng)
  開源預(yù)訓(xùn)練模型大多基于百科、新聞等語料訓(xùn)練,屬于通用領(lǐng)域。而對話系統(tǒng)中的文本更加偏向口語化,那么在開源預(yù)訓(xùn)練模型上,加入領(lǐng)域數(shù)據(jù)繼續(xù)訓(xùn)練,進(jìn)行領(lǐng)域自適應(yīng)將變得十分必要。在無業(yè)務(wù)數(shù)據(jù)的情況下,可以使用開源對話數(shù)據(jù)來遷移,學(xué)習(xí)口語化的表征,使得模型更加匹配對話業(yè)務(wù)場景。
  性能優(yōu)化
  使用預(yù)訓(xùn)練模型微調(diào)盡管能取得較好的效果,但是由于其深層的網(wǎng)絡(luò)結(jié)構(gòu)和龐大的參數(shù)量,如果部署上線,將面臨資源和性能問題。對此一般做法是,在模型訓(xùn)練和推理中使用低精度,同時(shí)減少模型層數(shù)。近期google提出了一種輕量級ALBERT[4],通過兩種參數(shù)精簡方法來提升推理性能,而效果依然達(dá)到了SOTA,目前已經(jīng)開源中文預(yù)訓(xùn)練模型,十分值得關(guān)注。
  05.學(xué)習(xí)意圖分布
  在某些場景,意圖會(huì)比較接近,常規(guī)的分類方法無法區(qū)分,一種思路[5]是將意圖類別和用戶輸入文本嵌入到相同向量空間,基于相似度進(jìn)行對比學(xué)習(xí),目標(biāo)函數(shù):
  • a是用戶輸入的文本
  • b是對應(yīng)的意圖,b^-從其他意圖中采樣獲取
  • sim(·,·)是相似度函數(shù),“cosine”或“inner”
  • L是目標(biāo)函數(shù),最大化正確樣本對相似度和最小化錯(cuò)誤樣本對相似度

# mu_pos: 0.8 (should be 0.0 < … < 1.0 for ‘cosine’) is how similar the algorithm should try to make embedding vectors for correct intent labels

# mu_neg: -0.4 (should be -1.0 < … < 1.0 for ‘cosine’) is maximum negative similarity for incorrect intent labels

# loss for maximizing similarity with correct action

loss = tf.maximum(0., mu_pos - sim_op[:, 0])

 

# minimize only maximum similarity over incorrect actions

max_sim_neg = tf.reduce_max(sim_op[:, 1:], -1)
loss += tf.maximum(0., mu_neg + max_sim_neg)

 

# average the loss over the batch and add regularization losses

loss=(tf.reduce_mean(loss)+tf.losses.get_regularization_loss())

  這種思路有多種好處,能學(xué)習(xí)到意圖的向量表示,可以在預(yù)測時(shí)直接基于相似度排序輸出最大意圖;當(dāng)意圖類別較多時(shí),還能對意圖進(jìn)行歸類比較;同時(shí)這些向量表示也能作為特征用于其他任務(wù),如推薦等。
  06.少樣本學(xué)習(xí)冷啟動(dòng)
  目前少樣本學(xué)習(xí)在圖像領(lǐng)域非常火,用戶只需要上傳一張圖片,就可以遷移各種臉部表情和肢體動(dòng)作,引領(lǐng)一波社交應(yīng)用風(fēng)潮。
  在自然語言處理領(lǐng)域,這方面的嘗試還并不是很成功,阿里巴巴的小蜜團(tuán)隊(duì)在打造的智能對話開發(fā)平臺Dialog Studio中提出了少樣本學(xué)習(xí)方法Induction Network[6],并將該方法用于創(chuàng)建新的對話任務(wù)時(shí)意圖識別冷啟動(dòng),不過代碼并沒有開源。我們對論文中的方法進(jìn)行了復(fù)現(xiàn)并公布了代碼(github地址),在少樣本關(guān)系抽取數(shù)據(jù)集上進(jìn)行驗(yàn)證,歡迎fork和交流。
  通過積累線上數(shù)據(jù),迭代訓(xùn)練,常常是提升效果最大的方式,數(shù)據(jù)決定上限,長遠(yuǎn)來講,構(gòu)建自動(dòng)化的迭代機(jī)制勢在必行。同時(shí),將多輪對話作為輸入,會(huì)有更多的探索空間。
  和美信息自然語言處理團(tuán)隊(duì)三年磨一劍,圍繞銀行智能化場景展開了多種探索并取得不錯(cuò)的成績。例如,某銀行項(xiàng)目中催收意圖識別服務(wù)于總行與分行,滲透率已超過70%,每天20萬+人次的調(diào)用。新的一年,和美信息人工智能研究院自然語言處理組將繼續(xù)努力,圍繞自然語言訓(xùn)練平臺、智能對話工廠進(jìn)行展開,通過相關(guān)技術(shù)與業(yè)務(wù)人員緊密合作、快速迭代,將公司先進(jìn)技術(shù)與銀行智能化場景結(jié)合,實(shí)現(xiàn)快速落地應(yīng)用,未來將有更多AI產(chǎn)品加速銀行智能化轉(zhuǎn)型進(jìn)程,也歡迎各位志同道合的小伙伴加入一起探索未來!
  目前和美信息自然語言處理在銀行場景已落地:智能客服、智能搜索、合同文檔自動(dòng)解析、人崗精準(zhǔn)匹配、文檔查重、客戶意見分析、智能推薦、用戶畫像、輿情監(jiān)控與預(yù)警、報(bào)告摘要、報(bào)告生成、智能審閱等產(chǎn)品,服務(wù)各銀行業(yè)務(wù)部門。
參考文獻(xiàn):
[1]DevlinJ, Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectionaltransformers for language understanding[J]. arXiv preprint arXiv:1810.04805,2018.
[2]CoverT, Hart P. Nearest neighbor pattern classification[J]. IEEE transactions oninformation theory, 1967, 13(1): 21-27.
[3]Alexander R,et al. Snorkel: Rapid Training Data Creation with Weak Supervision[J].Supervision[J].[J].arXiv:1711.10160,2017.
[4]Zhenzhong Lan,et al. ALBERT: A Lite BERT for Self-supervised Learning of Language Representations[J].arXiv:1909.11942,2019.
[5]Ledell Wu, Adam Fisch. StarSpace: Embed All The Things![J]arXiv:1709.03856,2017.
[6]Ruiying Geng, Binhua Li,et al. Induction Networks for Few-Shot Text Classification[J]. arXiv:1902.10482,2019.

【免責(zé)聲明】本文僅代表作者本人觀點(diǎn),與CTI論壇無關(guān)。CTI論壇對文中陳述、觀點(diǎn)判斷保持中立,不對所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔(dān)全部責(zé)任。

相關(guān)閱讀:

專題

CTI論壇會(huì)員企業(yè)