天天看點

微信智言奪冠全球對話系統挑戰賽,冠軍解決方案全解析

前不久,微信智言團隊奪得第七屆對話系統技術挑戰賽(DSTC7)Track 2 賽道的冠軍。

DSTC7 挑戰賽由來自微軟研究院、卡耐基梅隆大學(CMU)的科學家于 2013 年發起,旨在帶動學術與工業界在對話技術上的提升,是對話領域的權威學術比賽。本屆挑戰賽分為三個方向,微信模式識别中心參加了其中一個方向:基于 Fact(如百科文章、Blog 評論)與對話上下文資訊自動生成回答。共有 7 支隊伍、26 個系統參加該競賽。

據了解,微信智言團隊的主要參賽成員是微信模式識别中心的暑期實習生 Jiachen Ding,目前在上海交通大學讀研;另一名成員 Yik-Cheung (Wilson) Tam 博士畢業于 CMU,現任職于微信模式識别中心,對這一參賽項目提供了指導。近日,Wilson 接受了機器之心的采訪,就任務詳情、模型結構、訓練細節等進行了介紹。

DSTC7 Track 2 任務簡介

DSTC7 Track 2「Sentence Generation」任務要求基于 Fact 和對話曆史自動生成回答。該任務與傳統

對話系統

不同的一點是,它要求利用端到端的對話系統自動讀取 Fact。這就像使對話系統具備閱讀了解的能力,能夠基于 Fact 産生正确的答案。

競賽提供的 Fact 可能是維基百科文章、新聞等。如下圖所示,DSTC7 Track 2 提供的資料集包括來自 reddit 社群的 300 萬對話問答,以及從 reddit 網頁上相關的網頁中提取的 2 億個句子。

微信智言奪冠全球對話系統挑戰賽,冠軍解決方案全解析

DSTC7 Track 2 競賽的資料集構成示例。

Wilson 告訴機器之心,這個任務的難點在于:對話系統生成的答案需要與 Fact 相關,而 Fact 是非結構化資料,相對來講比較難處理。

傳統的聊天機器人沒有「閱讀」Fact 的機制,是以聊天回答可能會有偏差,例如:這家火鍋店好不好吃?機器人回答有時會說「這家店的菜很好吃」,有時也會說「這家店的菜很差」,沒有辦法給出與真實點評一緻的回答。

而結合了 Fact 和對話上下文資訊的對話系統所生成的回答能夠基于 Fact 中的真實資訊作答,確定回答是有用、有資訊的。

模型架構

微信模式識别中心提出一種基于

注意力機制 來「閱讀」Fact 與對話上下文資訊的方法,并利用原創動态聚類解碼器,産生與 Fact 和上下文相關并且有趣的回答,在自動和人工評測都取得最佳成績。
微信智言奪冠全球對話系統挑戰賽,冠軍解決方案全解析

上圖展示了該系統的整體架構,包括資料預處理、對對話曆史和 Fact 執行端到端的編碼器-解碼器注意力模組化、改進版解碼政策。

下面我們來看一下每個子產品的具體細節。

首先是資料預處理。這一步直接決定了系統的性能,Wilson 認為在所有子產品中資料預處理是模型訓練中最重要的子產品之一。該競賽提供的資料集中很多網頁存在大量無關資訊(如廣告),模型訓練時需要先進行資料預處理工作。

在資料清洗過程中,微信智言團隊去除了對話曆史資料中 reddit 網頁上的無用資訊(如廣告、導航欄、頁腳),并簡化 Fact 文章内容:從相關 Fact 文章中提取與對話曆史關聯度高的資訊,将平均 4000 單詞的文章壓縮至至多 500 個 word token。

若我們将 Fact 與對話曆史編碼為隐藏向量,再借助解碼器就能将這些資訊解碼為對應的回答。其中如上所示編碼器比較簡單,直接用 BiLSTM 就行了。而如果需要得到優質回答,虛框内的解碼過程就必須精煉候選回答,這也是該對話系統解決的核心問題。

為了解碼為優質回答,微信團隊主要利用了注意力機制、

k 均值聚類

和語言模型等方法,它們一方面保證內建對話曆史和 Fact 資訊,另一方面也最大限度地保障回答的多樣性和有趣。

其中 k 均值聚類主要對 

Beam search

的候選回答進行聚類,這樣就能識别重複或類似的回答。然而由于該模型解碼器中使用了注意力機制,是以對話曆史和 Fact 中的 token 可能被重複關注,進而生成重複的 N-grams。是以微信團隊随後會移除重複的 N-grams,減少垃圾回答。

在經過了兩次篩選之後,最終得到的 top n 個回答中仍可能包含安全卻無用的回答。微信智言團隊選擇建構一個語言模型(LM),過濾掉無用的回答。最後,隻需要選擇機率最高的作為最終回答就可以了。

解碼過程

微信智言團隊使用雙向 LSTM 分别編碼對話曆史和 Fact,然後對二者執行注意力機制,即解碼器在每個時間步中通過注意力機制關注編碼器輸入的不同部分。然後利用模式預測和輸出詞機率估計來計算最終的單詞機率分布。

微信智言奪冠全球對話系統挑戰賽,冠軍解決方案全解析

解碼步流程。微信團隊使用 pointer generator 模型,允許複制對話曆史(H)和事實(F)。在每個解碼時間步中,計算三個動作機率,即從 h 中複制一個 token,從 f 中複制一個 token,生成一個 token。最終的單詞機率分布是這三個機率分布的線性插值。

傳統的 seq-to-seq 模型易遇到 OOV 問題。為此,智言團隊選擇使用斯坦福大學 Abigail See 等人提出的 pointer-generator 方法(原用于文本摘要任務)。他們将該模型從支援兩種模式(生成 token 和複制 token)擴充為支援三種模式:生成 token;從對話曆史中複制 token;從 Fact 中複制 token。然後模型在每個解碼步将所有可用特征級聯起來,包括使用注意力機制後得到的對話曆史向量和 Fact 向量、解碼器隐藏狀态、最後一個輸入詞嵌入。再使用前饋網絡和 Softmax 層進行模式預測。

微信智言奪冠全球對話系統挑戰賽,冠軍解決方案全解析
最後,模型對上述三種模式的詞彙分布執行線性插值,進而計算出最終的單詞機率分布,其中 m 對應于複制機制中的模式索引:
微信智言奪冠全球對話系統挑戰賽,冠軍解決方案全解析

Beam search 解碼政策

傳統的束搜尋方法主要目的是找到機率最大的假設,但對話系統中往往出現很多安全卻無用的回答,很可能機率最大的句子并非是最合适、最有趣的回答。是以微信智言團隊在束搜尋中繼承了 K 均值聚類方法,将語義類似的假設分組并進行修剪,以提高回答的多樣性。

如下所示為帶 k 均值聚類的束搜尋,首先模型會和常見的束搜尋一樣确定多個候選回答,在對這些候選回答做聚類後,每一個叢集都會是類似的回答。如果我們對每一個叢集包含的候選回答做一個排序,那麼就能抽取到更合理的候選回答,這樣也會因為叢集而增加回答的多樣性。最後,使用語言模型對聚類得到的所有候選答案進行評分,符合自然語言表達的假設就能輸出為最終的回答。

微信智言奪冠全球對話系統挑戰賽,冠軍解決方案全解析

模型訓練 trick

除了介紹模型之外,Wilson 還向機器之心介紹了模型訓練過程中的具體技巧。

該模型基于 TensorFlow 架構建構,直接使用 pointer generator 模型的源代碼,改進以适應該競賽任務,進而在有限時間内完成比賽任務。

該模型訓練過程中,微信智言團隊最初使用了單機版 GPU,訓練時間為 5 天。

Wilson 表示訓練過程中遇到的最大困難是資料預處理,同時他也認為資料預處理是模型訓練中最重要的子產品之一。其次是束搜尋,他們在束搜尋中結合了 K 均值聚類,進而有效地過濾掉無用的回答,提高回答的多樣性。

關于微信智言

微信智言是繼微信智聆之後,微信團隊推出的又一 AI 技術品牌。微信智言專注于智能對話和自然語言處理等技術的研究與應用,緻力于打造「對話即服務」的理念。目前已經支援家居硬體、PaaS、行業雲和 AI Bot 等四大領域,滿足個人、企業乃至行業的智能對話需求。

在家居硬體方面,目前騰訊小微已經與多家廠商有合作,如哈曼•卡頓音箱、JBL 耳機和親見智能屏等智能裝置。

此外,騰訊小微定制了很多預置服務(如聽歌、查天氣、查股票等),但由于不同領域的需求不同,為提高可擴充性,微信智言團隊為第三方開放 PaaS 平台,讓任何一個開發人員甚至産品經理都可以基于自己領域的業務邏輯、業務需求在 PaaS 平台上搭建自己的應用和服務。

行業雲提供面向企業客戶的完整的解決方案,為企業快速搭建智能客服平台和行業任務智能對話系統。以客服系統為例子,很多公衆号希望搭建對話機制,自動回答使用者的問題。開發人員隻需将資料上傳到微信智言的平台,微信智言團隊即可提供 QA 系統。此外,微信智言還提供定制服務,比如 NLP 方面的基礎服務,包括分詞、命名實體識别、文本摘要等,用服務的方式為客戶提供技術。

據了解,微信智言已經通過智能對話技術服務于國内外數百萬的使用者。微信智言在 AI 技術研究上還将不斷探索和提升,為各行業夥伴和終端使用者提供一流的智能對話技術和平台服務——真正實作團隊「對話即服務」的理念。

微信智言奪冠全球對話系統挑戰賽,冠軍解決方案全解析

本文為機器之心原創,轉載請聯系本公衆号獲得授權。

繼續閱讀