導讀:近年來,人機對話受到了學術界和工業界的廣泛重視。在研究上,自然語言理解技術逐漸從序列標註向深度學習的方向發展,對話管理經歷了由規則到有指導學習再到強化學習的發展過程,自然語言生成則從模板生成、句子規劃,發展到端到端的深度學習模型。在應用上,基於人機對話技術的產品也層出不窮,如蘋果公司的 Siri、亞馬遜的 Echo 音箱、微軟的 Cortana、Facebook M 以及谷歌的 Allo 等。同時,各大企業紛紛研發及收購 AI 平臺,如微軟研發 Luis.ai,三星、Facebook 和谷歌分別收購了 viv.ai、wit.ai 和 api.ai,百度自主研發了 Duer OS 以及收購 kitt.ai,以上種種跡象表明了各大企業將在今後着力發展人機對話技術。本次報告將針對人機對話中的核心關鍵技術的發展前沿和研究趨勢進行綜述,主要包括開放域人機對話和任務型對話的關鍵技術及挑戰。
人機對話主要技術方向:
雖然人機對話主要包括四個功能:聊天、任務型對話、問答以及推薦,但主要集中在開放域聊天和任務型對話兩方面。二者在目標、評價、最終目的上有一定區別,典型的應用系統也不大一樣。
一. 開放域聊天
開放域聊天的一個基礎系統架構如上圖所示。
1. 前沿研究點:回覆質量
上圖總結了17年到19年開放域的一些論文和一些相關的知識點,下面的部分主要關注回覆質量。回覆的話是通順、流暢的。回覆質量是一個基礎,包含很多工作,也面臨着多方面的挑戰。
① 回覆質量上存在的挑戰
這裏舉兩個例子,左邊是單輪迴復的例子,右邊是多輪迴復的例子。從中可以看出兩個問題,第一個問題是在單輪迴復中由於統計模型 loss function 的一個限制,通常採用的回覆都是統計上佔優的高頻回覆,叫做萬能回覆。而多輪迴復可以看出是一個局部依賴的回覆,就相當於它沒有學到更高層次的上下文信息。這是一個局部學習,與上下文無關的問題。
② 優化初始的解碼過程
我們在單輪迴復對話中,積累了一些工作,首先是優化了解碼器過程,通過觀察真實的數據。如果第一個解碼出一個高頻詞,比如我,你,我們,你們,那麼通常來說回覆不會太好,針對這個問題我們做了一個 learning to start for sequence to sequence 的 framework,後面大家可以把 learning to start 這個模塊做進一步改進和提升。但目前來說對原有算法效果已經有了一定的效果。
③ 更好地利用檢索結果提高對話生成質量
其次,今年發表在 ACL2019 上面的一篇文章,檢索式和生成式是互相對抗又互補的結果,檢索式結果可以保證相關性、流暢性比較好,但是多樣性受限,不論怎樣檢索都跑不出編輯好的話術。生成式的好處就是機器可以創造,但生成式模型面臨着萬能回覆的問題。利用檢索式結果和生成式結果互相增強的方式,提出這樣一個模型。
④ 基於可控內容生成提升對話回覆多樣性
儘管我們可以把大量的對話數據交給模型,希望可以產生我們期望的結果。但是模型不一定會產生期望結果。所以我們考慮能不能通過一種控制技術讓模型更加可控,使其生成包含指定內容的回覆。首先在說一句話的時候 inference 出一系列的關鍵詞,關鍵詞不一定要有多個,可能是零個,比如你好,再見,回覆裏不需要關鍵詞,但是如果是問姚明的身高,在回覆中如果不出現一個數字表達式來表示身高就是不精確的一個回覆。這裏我們做了一個 keyword gating function 加到 sequence2sequence 的框架裏,對框架性能有一定的提升。
⑤ 單輪聊天-回覆生成技術
整個單輪聊天解決萬能回覆的問題的技術路線是從模型優化到內容優化的一個發展過程,其中有一定的知識嵌入。知識嵌入不是一件簡單的事情,怎樣把離散的知識加入到連續的模型中是目前存在的挑戰。
⑥ 更好地建模多輪對話歷史的語義
除了剛剛討論的單輪聊天外,多輪聊天上下文無關也是一個比較棘手的問題。之前我們有很多工作,提出了兩種 attention 的結構,儘可能保留對話歷史的語義,由當前對話輸入去決定哪個對話歷史對它更有效,更有用,就是這樣一個工作,在多個數據集上都取得了比較好的結果。
⑦ 動態建模多輪對話的策略
另外在多輪對話過程中,存在一對多的問題,給定一個對話的輸入,其實有很多種對話的輸出可以作爲它的回覆,那我們選擇哪一個呢?我們想通過 n-best 的模式生成更好的結果,而且是更多樣的一個結果,同時這個結果能夠導致話輪的增長,所以我們說聊天的主要目的是延長話輪數目,然後我們以這樣一個動機探索了 DQN 的一個方式,利用深度強化學習算法 DQN,使用深度價值網絡對每一輪的候選句子進行評估,並選擇未來收益最大的而非生成概率最大的句子作爲回覆的多輪對話策略學習方法。實驗結果表明,該文提出的方法相比較於Seq2Seq的方法將多輪對話的平均對話輪數提高了兩輪。
⑧ 挖掘用戶隱式反饋延長對話輪次
下面這個工作是基於強化學習來做的,這裏不是爲了提高對話輪數。我們在觀察“笨笨”(見最後的 demo 部分)的 log 的過程中有很多的用戶在抱怨“笨笨”或者是誇讚“笨笨”,比如說“你怎麼這麼笨?”“你說的這是什麼東西?”其實這些都是用戶情緒宣泄和反應。但它反應的過程其實是上一輪迴復的質量不好,所以我們把用戶的反饋作爲隱式的信號,加入到人機多輪的對話中。然後一旦我們發現用戶對“笨笨”有不太好的評價,下一輪迴復中我們要採用這種評價。考量上一輪生成的不好的回覆,及時糾正下一輪生成的回覆。這裏面就是基於用戶隱式反饋的一個工作,我們採用了三種隱式信號。
⑨ 多輪聊天-回覆生成技術
整個多輪多輪對話過程是從深度學習發展到強化學習的一個過程。
2. 前沿研究點:用戶體驗
除了對話質量,還有一部分影響用戶體驗的是上面特色的幾個功能,包括情感對話和個性化,風格化,模擬機器人的畫像等。
① 個性化回覆生成
個性化分爲自由文本描述的個性信息和結構化信息表示,自由文本描述的個性信息是外化氣質內化的一個表現。比如說你養了一個寵物可能會間接反映出你是一個比較善良的人。結構化個性信息表示例如:你是否戴眼鏡,你是否有房,你是否有車,你的年齡多大,你是男是女等等。
② 個性化回覆生成代表性工作
我們說的這兩個部分實際上都有相關聯的一些工作,我們主要研究人性相關的一些信息,並且參加了去年的 NIPS ConvAI2 的一個評測。
③ NIPS ConvAI2 個性化聊天回覆生成
我們和哈工大-訊飛聯合實驗室共同提交了兩個系統,一個生成,一個檢索,分別取得了第三和第四的成績。
④ 引入個性化信息提高對話生成的多樣性
基於參賽評測,我們也做了一些工作:1. 引入個性化信息,提高對話生成多樣性的過程。類似於機器閱讀理解,每次回覆的是描述用戶個性化信息的自然語言的片段。我們也提出了 Per.-CVAE 的模型,將 persona 作爲一個 condition 加入到原有的 CVAE 模型中,效果得到了較大的提升;2. 風格化的回覆,語言的風格和內容是高度相關的,不像圖像的風格和內容是能夠分開的,我給你一幅河邊的景色圖,無論轉化成畢加索風格還是梵高風格,一眼就可以辨識出來,語言的風格和內容實際上是綁定的,例如阿里巴巴換成親,甄嬛傳換成小主,換了一個詞就換了一種風格。語言的風格和內容實際上是一個綁定的過程。
⑤ 風格化回覆的直觀印象
我們可以有一個直觀化的比較,比如星巴克有聊天機器人可以幫忙點咖啡,下面兩種點餐方式達到的目的是一樣的,但是用戶體驗卻不一樣,之所以帶來用戶體驗的不同是因爲機器人說話風格存在差異。
⑥ 已有風格化文本生成工作
Style transfer 不僅限於文本之間,很可能利用圖片信息,通過圖片的語義信息生成不同風格的 image caption 這樣一個過程。
⑦ 風格化生成技術
從18年開始有對話上面生成風格化的技術,分別發表在 NAACL,AAAI 和 ACL 上,整個過程是從規則學習到對抗學習。
⑧ 風格化回覆:一個初步的嘗試
17年的時候,我們做了一個工作,利用遷移學習進行風格化回覆生成,最開始的想法是能不能用一個 bot 去個性化模擬一個人,但是模擬一個特徵點可能不太合適,所以我們就模擬一個 CS 背景和一個人文背景不同類別學生之間的差異。我們仍然面臨這樣一個問題,具有個性化和風格化的數據是很少量的,我們怎樣在很少量的數據上學習出它的風格,實際上採用了一個二階段的遷移學習,一個 initialization 和一個 adaptation 的過程。Initialization 是用大量的百萬級的無風格數據來訓練,然後在少量有風格化的數據上做一個 adaption 的過程。
二. 任務型對話系統
任務型對話系統的架構:
主要過程就是自然語言理解到對話管理到自然語言生成到語音合成。這其中有對知識庫 look up 的一個過程,當然知識庫不僅在對話管理進行交互,它也影響到自然語言理解和自然語言生成的過程。
前沿研究點:
這裏我介紹一下我們中心車萬翔教授團隊的兩個工作,是任務型對話自然語言理解方面,主要針對兩個比較大的問題。
- 意圖識別與槽填充能不能聯合建模
- 在工業型部署系統中,經常會遇到領域的一個遷移,比如今天做母嬰領域,明天會做其它領域,或者說我今天賣鞋,明天賣冰箱。這種領域上的遷移不可能每次都找很多人來進行標註,這種情況下就面臨着標註數據不足條件下的 NLU 問題。
1. 意圖識別與槽填充聯合建模
首先是意圖識別與槽填充聯合建模的問題,這個事件的動機比較明確,如果當作級聯建模會存在一個錯誤結果累積的過程,顯然我們可以把它聯合建模,domain,intent,slot 都可以聯合建模,這裏只討論 intent 和 slot 如何聯合建模,這方面有很多之前的工作,包括16年開始的一個聯合建模的工作,是把 intent 的識別和序列標註的過程當作多任務學習的過程,它們共享的是編碼的雙層 LSTM 過程。16年還有一個工作是把序列標註當作一個 sequence2sequence 的過程,這裏 intent 和 slot filing 也是共享編碼這樣一個結構,它們兩個模型上雖然有差別,但是其實創新上沒有特別大的差別,從上到下,從左到右分別對應1到4這4個工作,上面兩個是隱式建模過程,下面兩個是顯式建模過程。
已有工作:
這是現在我們正在做的一個工作,我們現在已有的工作都是輸入一句話,我們給這句話打一個唯一的 intent 的標籤,但在實際中,比如我們在用戶建模 encode 一句話的時候,我想買一個漂亮的文具盒還是手機,這裏就有兩個不同的 intent 甚至 domain 都不一樣,實際上 intent 應該打到詞級別上。我們在建模一句話的時候,不同的詞有不同的 intent,對最終 intent 的貢獻也不一樣,那麼基於這樣一個假設,我們把 intent 打到每個 token 上。
實驗結果:
實驗結果顯示我們取得了不錯的結果,尤其在加了 Bert 之後效果更好。
2. 標註數據不足條件下的 NLU
下一個工作就是我們說到的新領域的問題,面臨標註數據不足條件下的 NLU 的問題。
標註數據的自動擴充:
一種方式就是我們造一些僞數據,給定少量用戶標註數據,通過已有數據來造一些模板,利用模板將 slot 的值填進去,這樣就能生成和當前語義上差不多但形式上不同的數據。
當然我們最主要的一個過程就是相似性排序,最主要的過程除了抽模板,要有一個多樣性,是一個 Diversity ranking 的過程,這個 Diversity ranking 的動機也比較簡單,就是你給我一句話,我們這兩個語義是相似的,但是差一個詞,對我這個模型其實是不好的,但是如果表面 surface 差的非常多,但是還表示一樣的語義,這樣的模板對我們後續的擴展是非常有用處的,所以基於這樣一個方式我們提出一個 Diversity ranking 的過程,整個生成過程是一個 seq2seq 的過程。但是我們生成的不是完整的帶 slot 值和 value 值,而是帶槽的模板,最終我們會把槽和值填回去。
實驗結果:
最終我們在 ATIS 數據集和斯坦福對話數據集上都取得了一定的效果提升。
三. 總結
最後對分享的內容進行一下總結,分爲兩方面:一方面是開放域人機對話,另一方面是人機對話。除了講的內容之外,列出的主要還是一些挑戰。比如開放域人機對話中怎樣建模情感,用戶畫像,怎麼保證回覆的一致性、多樣化、個性化、風格化,另外就是上下文建模、隱式反饋我們怎樣進一步挖掘。在任務型對話上也有幾個比較大的關鍵點,領域、意圖、語義槽三者能不能聯合建模,多輪語境下的自然語言怎麼去理解,最後是數據自動擴充 v.s. 小樣本學習方向抉擇問題。
四. Demo
我們實驗室的名稱是哈爾濱工業大學社會計算與信息檢索研究中心,中心的主任是劉挺教授。
我們團隊的主要研究方向是:1. 對話理解與對話生成;2. 對話式推薦。
我們實驗室將技術做成了一個應用級的 demo,在上面進行持續優化,把所有的技術都應用在上面。16年6月6日,人機對話系統“笨笨”正式上線,主要搭載形式是微信公衆號以及實體的機器人。主要包括四個功能:閒聊、問答、任務型對話和推薦。
笨笨的系統結構如下,分爲三大部分:自然語言理解、對話管理和自然語言生成。
下面給出了一些聊天示例,包括情緒撫慰性的聊天,情緒引導性的聊天,知識性問答,任務執行示例和推薦示例。其中任務執行主要包括機票、火車票、公交車、酒店信息查詢等。
作者介紹:
張偉男,哈爾濱工業大學計算機科學與技術學院社會計算與信息檢索研究中心,副教授/博士。研究興趣包括人機對話及自然語言處理。在 ACL、AAAI、IJCAI 及 IEEE TKDE 等 CCF A 類國際會議及國際頂級期刊發表論文20多篇。目前爲中國中文信息學會(CIPS)信息檢索專委會委員、社會媒體處理專委會委員、社交機器人工作組副組長、青年工作委員會委員,中國人工智能學會(CAAI)青年工作委員會委員。曾獲黑龍江省科技進步一等獎、中國人工智能學會最佳青年成果獎、中國人工智能學會“合創杯”第二屆全國青年創新創業大賽三等獎及首屆“百度獎學金”。
本文來自 DataFun 社區