怎樣讓聊天機器人讀懂對話歷史
人工智能現在的火熱程度大家有目共睹,凱文凱利在《必然》中預測未來時代的人工智能可能會重新定義人類的意義,但時下的人工智能發展水平顯然還沒有大家想象得那么美好,仍然需要我們不斷地探索。目前眾多研究人員正深耕其中,作為其中代表的聊天機器人(Chatbot),已然成為科研界研究的熱點。
通常來說聊天機器人實現方式有兩種:一種是基于生成式,即機器人“自己說話”,一個字一個字創作出回復語句來。另外一種是基于檢索式,即機器人“轉發”別人的話。從互聯網大家的話語中尋找到合適的回答予以轉發。
現有的生成結果由于技術所限,或多或少都存在語句不流暢的問題,但能夠做到“有問必答”偶爾還能蹦出“彩蛋”。檢索的模型一般流暢性方面無須擔心,不過隨著目前網絡資源的日益豐富,語料規模也越來越大,如何從眾多語句中選擇合適的句子作為回復是檢索式聊天機器人的核心問題。
雖然目前市場上的聊天機器人眾多,但我們見到的那些貌似都不是那么聰明。最直觀的一個體現就是前后不連貫,上下難銜接,因此在進行檢索的時候考慮歷史信息則顯得尤為重要。那么如何讓機器人理解對話歷史信息從而聰明地進行回復呢?微軟亞洲研究院的研究員們提出了一個模型Sequential Matching Network(SMN)。相關論文的作者吳俁談到“SMN模型可以讓聊天機器人準確的理解當前和用戶的對話歷史,并根據歷史給出最相關的回復,與用戶進行交流,達到人機對話的目的。”
但這在實現的過程中也遇到不少難點,“精準計算聊天歷史和候選回復的語義相似度十分困難,主要的挑戰有兩個方面:
由于聊天歷史信息繁多,如何將歷史中重要的詞語、短語以及句子選擇出來,并通過這些重要部分刻畫聊天歷史,是一個亟待解決的問題;
如何對聊天歷史中的各輪對話進行建模,如何判斷對話歷史中的跳轉,順承等關系,也是一個棘手的問題。” 那么論文作者提出的SMN模型又是如何解決這兩個問題的呢,接下來我們將為您解讀。
圖1:SMN網絡架構
SMN模型一共分為三層。第一層為信息匹配層,對之前的歷史信息和待回復的句子進行匹配度計算:同時進行詞語(embedding向量)和短語級別(GRU表示)的相似度計算。然后再把這兩個矩陣分別作為卷積神經網絡的一個channel,利用CNN的max-pooling進行特征抽象,形成一個匹配向量。第二層為匹配積累層,利用一個GRU神經網絡,將每一句話和回復所計算出的匹配信息進一步融合。第三層為匹配結果預測層,利用融合的匹配信息計算最終的匹配得分,在預測時他們使用三種策略,分別是只利用GRU2最后一個隱藏層(SMN_last),靜態加權隱藏層(SMN_static),和動態加權隱藏層(SMN_dynamic)。在進行檢索的時候,他們將最后一句的信息結合上文歷史信息中的5個關鍵詞(歷史信息中用tf-idf進行篩選,選擇Top5關鍵詞)在系統中進行檢索,然后用上述SMN網絡對候選結果打分從而選出回復句。
作者分別在Ubuntu語料(大型公開計算機相關求助與解答語料)和豆瓣語料(作者從豆瓣小組的公開信息中爬取并在論文中公布)上進行了實驗,分別以Rn@K和MAP、MRR、P@1為評價指標,取得的結果均為目前最好。
作者表示“SMN不同以往的模型,第一步不進行上下文的建模學習,而是讓每句話和回復進行匹配度計算,這樣可以盡可能多的保留上下文的信息,以避免重要信息在學習上下文的向量表示時丟失。而且SMN在對上下文句子關系建模時,考慮了當前回復的影響,使得回復成為一個監督信號,這樣可以更準確的對上下文歷史進行建模。”并且吳俁向我們透露“據我們所知,我們公布的豆瓣語料是第一個人工標注的中文多輪對話語料?!?/p>
在談及目前的方法還有哪些不足之處時,作者表示“目前我們的檢索方式有時找不到正確的候選句,所以第一步的檢索方法還有待改善,另外雖然我們的模型可以建模當前回復和歷史信息的關系,但還是無法避免一些邏輯上的問題,不過這也是我們未來工作的重點,我們將繼續提高候選回復在邏輯上的連貫性”,讓我們共同期待他們的未來工作。
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%