天天看點

Chatbot&QA with knowledge 總結Chatbot&QA with knowledge

Chatbot&QA with knowledge

  目前,chatbot&QA都很火,Neural network 模型已經可以進行很自然的對話互動了,在傳統的seq2seq模型的基礎上,近年來提出很多結合Knowledge的方式。本文就是總結了部分此方向的論文。

  所謂的Knowledge分為兩種,knowledge base 和unstructured textual information。

  knowledge base(KB):一般為三元組的方式(s,r,o)。這種結構化的資料更容易用于回答組合問題,但是目前所擁有的knowledge base很大的問題在于資訊不完整,也就是資訊量少。

  unstructured textual information:非結構化的文本形式。與KB相反,這種形式的知識量很大,比如百度百科,知乎等等,但它是非結構化的形式。

Seq2seq模型:

Chatbot&QA with knowledge 總結Chatbot&QA with knowledge

unstructured textual information 

  非結構化文本處理的主要思路:将文本中的facts整理得到fact set,根據輸入的資訊input篩選出與之相關的facts:F={f1,f2,……,fn} ,再利用input和facts的資訊進行模組化,選出候選集中相關度最高的答案或者生成最可能的答案。下面介紹三種模型:

1:A Neural Network Approach for Knowledge-Driven Response Generation

  該論文實作任務的是conversation的生成,輸入有WikiPedia資料庫和聊天的曆史資訊,輸出為下一句聊天内容。

  該論⽂所引⼊的知識包含兩部分: ⽣成某句回答時,整合過去所出現的所有對話,作為⼀種 knowledge。 每個對話者擁有 WikiPedia ⾥的屬于各⾃的 global knowledge。 該論⽂中提出的模型包含 sentence modeling 和 sequence modeling。 sentence modeling ⽤于提取 local features,即提取 knowledge ⾥的内容。該 model 使⽤了 CNN 來對句⼦進⾏分類,每個 sentence 作為輸⼊,最終輸出 sentence 的 classification。再将 classification 資訊插⼊ RNN 的訓練過程。

Chatbot&QA with knowledge 總結Chatbot&QA with knowledge

    sentence modeling(圖中左邊部分):此部分輸入句子後表示成one-hot vector,再通過一個CNN網絡根據topic-keyword對其進行分類。

  預訓練:先在Wikipedia資料集上預訓練Sentence Model,進而得到含有維基百科全局資訊的初始模型。(此過程sentence modeling獨立完成)

    預訓練完成後模型提取到了相關資料庫的 local features,這也就是該模型結合knowledge的方式。

  完成預訓練後,該模型在整體中的作用是對輸入的曆史聊天記錄進行分類,并将分類資訊送給sequence modeling。

   sequence modeling(圖中右邊部分):該部分就是一個RNN模型,在每一步輸出前的最後一個狀态中都加入sentence modeling中得到的分類資訊。其中RNN的實作結構分為兩種Long Short-Term Memory(LSTM)和Gated Recurrent Unit(GRU)。

2:Incorporating Unstructured Textual Knowledge Sources into Neural Dialogue Systems

該論文實作任務是給定一個context和一個response candidate list作為備選答案,通過context來從candidate list中選擇正确的response。

Chatbot&QA with knowledge 總結Chatbot&QA with knowledge

上圖模型是ubuntu corpus中的baseline模型,稱為dual encoder,一個rnn來encode context,一個rnn來encode response,然後綜合起來做預測。

本文的模型是基于該任務上結合了外部相關資料,并且資料是非結構化的文本。如下圖:

Chatbot&QA with knowledge 總結Chatbot&QA with knowledge

也就是增加了一個RNN網絡來 encoder knowledge,再分别利用RNN網絡隐藏層的最後一層c,r來計算候選集的機率,并綜合結果得出相似度最高的一個答案。

該問題的定義太過簡單,與實際應用相差較大,但是其思路可以借鑒。

3:A Knowledge-Grounded Neural Conversation Model

該模型思路與上一個模型類似,也是基于聊天記錄結合非結構化文本知識,但是其答案是生成的。

該論文意在沒有槽位填充下産生内容更加豐富的回應。論文實驗中以對話記錄和外部的facts”為條件,通過常見的seq2seq方法使模型在開放領域的設定中變的通用和可行。

Chatbot&QA with knowledge 總結Chatbot&QA with knowledge

該模型思路如圖:。首先我們有一個可用的world facts,這是一個每行為一條詞目的集合(例如百科,評論),并以命名實體作為關鍵詞進行索引。然後在給定的source sequence S中,識别S的“focus”(即特征詞)。這些foucs可以被用于關鍵詞比對或更先進的方法中,例如實體鍊(entity linking)或命名實體識别。這樣query就可以檢索到所有上下文相關的facts: F = {f1, f2, f3, ….., fk}。根據檢索出的facts,encoder聊天記錄,并利用其結果encoder相關知識,兩部分encoder的結果結合,最終decoder出response。此處的encoder和decoder都是基于seq2seq模型。

Facts Encoder:

Chatbot&QA with knowledge 總結Chatbot&QA with knowledge

ri是代表fi的詞袋表示(v維);u是聊天資訊encoder出的結果(d維向量);A,C ϵ Rd×v 是參數。最終結果整合了輸入sequence和相關知識,最後通過該隐藏态來預測響應sequence的逐詞生成。

knowledge base

Knowledge base是三元組的形式(s,r,o),s和o分别代表subject和object,r代表s和o的關系relation。

4:Flexible End-to-End Dialogue System for Knowledge Grounded Conversation

該論文提出了一個完全資料驅動的生成對話系統GenDS,它能夠基于輸入消息和相關知識庫(KB)生成響應。為了生成任意數量的答案實體,即使這些實體從未出現在教育訓練集中,我們設計了一個 dynamic knowledge enquirer,根據不同的本地上下文,在單個響應中選擇不同的答案實體。

該論文分為Candidate Facts Retriever、Message Encoder、Reply Decoder三部分,其中Reply Decoder又分為Common Word Generator和Dynamic Knowledge Enquirer兩種。

首先介紹一下問題:輸入為1)輸入的資訊;2)knowledge base K;3)實體類型清單Ʈ。

此外,将所有的單詞分為兩種knowledge words和common words:knowledge words是knowledge base中包含的所有實體;common words是其他剩餘單詞。這兩類詞在詞義上不重合,比如love在knowledge word中可能表示一首歌的名字,在common word中表示喜歡。

Candidate Facts Retriever:

從 input 中提取 entity(E),然後在 KB 中進⾏ query,将通過 relation 尋找到的 objects 和 subjects 作為 Candidate Facts 存儲為⼀個集合。(此處是說将entity作為objects來尋找subjects和将entity作為subjects來尋找objects)

Chatbot&QA with knowledge 總結Chatbot&QA with knowledge

Message Encoder:

該部分的目的是抓住使用者的意圖,是以我們用實體的類型來代替輸入資訊中的實體X,然後将更改後的資訊用RNN編碼得到representations H。比如我們輸入為“我想聽周傑倫的歌,你給我推薦一下”,将周傑倫用類型person代替,不會影響推薦歌曲的意圖,而且前面模型中篩選出實體本身就和周傑倫相關,是以也不會影響最終生成結果。

之是以用實體類型替代實體,是為了再句子生成過程中更多地考慮語言的流暢等而不是糾結在具體的實體上。

Reply Decoder

該部分是根據user intention H 和candidate facts τQ 生成response。此處設計了一個門a knowledge gate={0,1}來控制該生成的是knowledge word還是common word。

Chatbot&QA with knowledge 總結Chatbot&QA with knowledge

Z=0時啟用Common Word Generator,Z=1是啟用Dynamic Knowledge Enquirer。

Common Word Generator

該部分主要是利用Message Encoder的結果意圖向量H,使用RNN網絡生成下一個詞語的機率,再選擇機率最高的。具體公式不列舉了,感興趣的可以去獨一下論文。

Dynamic Knowledge Enquirer

根據動态實體總分對Candidate Facts Retriever中的所有相關實體進行排序,選擇最合适的一個。

定義了三個分數:文章比對度分數 rek, 實體更新分數 ft 和 實體類型更新分數 ukt, 最終三個實體的總分作為動态實體分數。

5:Question Answering on Knowledge Bases and Text using Universal Schema and Memory Networks

最後一個模型當然是兩種類型的knowledge都結合了。

該論文任務:給出問題 q (w1;w2;...;wn) 這些詞中至少包含一個空和一個實體,模型完成的是根據 knowledge base K 和text T 用一個實體來填空。

Universal schema

如下圖左邊部分,universal schema matrix中行标為一對實體,列标為kb或者文本中存在的關系。

Chatbot&QA with knowledge 總結Chatbot&QA with knowledge

universal schema matrix中的内容Memory:每個Memory cell都是key-value pair的形式。

(s,r,o)代表KB 三元組:

 key : k ϵ R2d formed by concatenating the embeddings s ϵ Rd and r ϵ Rd of subject entity s and relation r respectively. 

 value v: The embedding o ϵ Rd of object entity o .

 (s; [w1;...;arg1;...;arg2;wn]; o) ϵ T 代表 textual fact,其中arg1 和 arg2 是實體‘s’和‘o’的所在的位置。

key: k = [w1; :::;s; :::; blank ; wn] , arg1處換成s。然後用雙向LSTM網絡生成分布式表示:

Chatbot&QA with knowledge 總結Chatbot&QA with knowledge

value: the embedding of the object entity o.

模型:(如上圖)

Question Encoder

用雙向LSTM生成分布式表示q ϵ R2d  

Attention over cells

k、v分别代表key值和value值,k用于生成注意力機制的權重,v用來計算上下文表示以預測答案。其中c0初始化為q。

Chatbot&QA with knowledge 總結Chatbot&QA with knowledge

Answer Entity Selection

根據最終的上下文向量 ct 選擇答案。

轉載請聲明,謝謝!

繼續閱讀