教 Chatbot 生成更有營養的對話

「每周一起讀」是由 PaperWeekly 發起的協同閱讀小組。我們每周精選一篇優質好文,利用在線協同工具進行精讀並發起討論,在碎片化時代堅持深度閱讀。目前已成立的專題小組有:Chatbot、機器翻譯、知識圖譜、GAN、推薦系統、QA、增強學習、多模態、自動文摘和統計學習。

Sequence to Backward and Forward Sequences: A Content-Introducing Approach to Generative Short-Text Conversation

arxiv.org/pdf/1607.0097

用一般的 seq2seq 框架來直接生成對話,經常會有類似「哈哈」、「我不知道」的話產生,雖然很連貫,但信息量太少,沒有實際意義。那麼,如何根據上文來生成相關的、有信息量的、甚至包括某個關鍵詞的對話?本文或許會給出一些啟發。

閱讀筆記精選

1. xwzhong

paper 依舊是想就生成式對話中解決通用性回復的問題,思路比較簡單,在 decoder 時,預選確定一個有意義的「詞」,在一定出現該詞的情況下進行擴充從而得到完整的回復,關鍵部分如下:

1. train:對於一個完整的 post-resp 對,將「resp」隨機選取一個 word 分割,前後部分設為 head 和 tail,對 head 部分 reverse,得到 post-rehead,post-tail 對,用兩個不同的 seq2seq 模型進行訓練;

2. test/eval:使用 petrain 得到的 PMI 信息,計算出當前 post 出現情況下,最「適合」出現的 word(「詞」級別),再依次使用反向和正向 seq2seq 模型得到完整的回復;

3. paper 提出的 idea 降低通用性回復,主要因為預先使用 PMI 挑出了相對「有意義」的詞;

4. 如果只是想進行實驗,復現模型相對簡單,可以直接套用 seq2seq 的 translate 代碼,再額外寫一個 PMI 相關計算;

5. 就此模型而言,效果的好壞主要應該在於 keywords 詞表以及 test/eval 部分 keyword 的選取;

6. 在 train 部分,不知道在選取 word 進行 split 部分,使用 test/eval 一樣的選取方式效果會不會更好?

2. Miao

本文提出的模型有三部分(看 Figure 1): a. keyword prediction, b. backward seq2seq model c. forward seq2seq model 關於 a 大家討論了不少了;b 和 c 是兩個 seq2seq model,本文使用的是將 encoder 得到的內容通過 hidden state 傳遞給 decoder 的 seq2seq 模型,沒有使用 attention 機制,屬於比較簡單的模型;c 是一個標準的 seq2seq 模型,在訓練過程中都不需要考慮 keyword 的問題,比較簡單;我感覺本文最大的關注點和亮點在 b,有幾點思考:

1. 傳統 seq2seq 模型中 decoder 產生的第一個詞對於整個句子的生成是比較重要的,會影響內容的質量,也會影響多樣性;而 backward seq2seq 可以使得 reply 的第一個詞的多樣性提升,從而提升 reply 的多樣性;從 table 2 中的例子可以看到,傳統的 seq2seq 模型的回答大部分是「我怎麼怎麼」,這種回答看上去質量也比較差,更像 general reply,而本文模型的回答第一個詞多樣性大,顯得質量較高,我感覺這個非常有趣;

2. 因此,backward seq2seq 的好壞對於 reply 的生成是非常關鍵的;

3. 而 backward seq2seq 需要的能力是比較強大的:需要給定一個 post,以及 reply 任意一個位置的詞,然後向前生成 reply,這個能力和傳統的 seq2seq model 需要的能力是有一些微妙的區別的。我感覺這個能力用本文這樣的 seq2seq model 來實現有些彆扭,如果能有更好的 backward seq2seq model,會不會能顯著的提升 reply 的質量。

3. weijinfeng

本文所解決的問題跟上周的論文基本是一致的,都是通過引入先驗知識到生成過程中,所不同的是,本文只是引入一個詞,並且限定是名詞,而且還將應用場景定位為短句對話。 模型本身相對比較簡單,就只對前面這幾個限定說一下個人的理解。

首先是,1)為什麼選取一個詞,這應該是基於短句概念提取的一個假設,就是一個短句是以一個詞(應該包括複合詞)為核心,輔以描述或限定性成分以及其他成分組成。當核心概念詞提取出來後,又因為open domain對話的內容開放性的特點(比如,只要回復說的是這個事,至於說什麼不重要),再擴展出其他成分來就可以了。

其次是,2)為什麼是名詞,有同學的批註也提到了這個問題,看到沒有人回復,說下自己的看法。根據1,一個短句需要映射到唯一的詞作為整句的概念抽象或者核心表達詞,那麼詞的詞性就需要斟酌一下了。用排除法來做,很顯然除了主謂賓的其他成分在一個句子中起核心作用的時候相對是比較少的。有同學也提到了核心詞選取的重要性,所以一旦選了非主要成分作為核心詞,後面再生成好回復的概率也比較小了。另外,從語法結構上來說,主語一般是名詞或者代詞,謂語一般是動詞,賓語一般是名詞或者代詞。從概率角度來講也是選名詞覆蓋範圍更大一些。

最後,3)為什麼從一開始就定位為短對話生成,我覺得主要原因是因為reply的產生是由用PMI方式選出來的key word為中心擴展出來的,這種擴展雖然可以無限延長,但是隨著跟key word距離的增加,關聯性也會逐漸降低,難免會出現句子不通暢的情況,所以定位為短句的回復更為有效一些。

Q&A 精選

1. Miopas

Specifically, our seq2BF model works as follows.

seq2BF model 分成兩個部分:

1. 先把 query 作為 input,經過第一個 seq2seq 的模型得到一個 output sequence,作為前半句 reply;

2. 然後把 query 和前半句的 reply 作為 input,輸入第二個 seq2seq 模型,得到後半句 reply;

3. 最終的 reply = 前半句 reply + keyword + 後半句 reply。 有個疑問,這個應該是一個 infer 的過程,train 的過程是需要切分訓練集里的 reply 的吧,怎麼切分 reply 的?

Miopas: 在 2.4 里寫了,是隨機 sample 了一個 word 作為 split word,看漏了。這樣的話實際上 seq2BF 的模型在 train 的時候並沒有用到 keyword noun 的信息?

wumark: 不是先生成前半句再生成後半句的。他這個生成方式比較麻煩,固定 r_k 生成 r_k+1 再前向生成 r_k-1,再後向 r_k+2(利用 rk 和 rk+1),之後再 rk-2(利用 rk-1,rk 和 rk+1),時間複雜度很高。 這個模型最開始並不是生成對話的,是生成詩歌的,百度用了同樣的模型生成了詩歌,也發表在 coling2016。

Miopas: 重新讀了一下,感覺你說的是對的。之前這個地方的 Equation 5 沒怎麼明白,對照一下應該是你說的那樣。不過有個問題,這裡下一段寫"the forward generator is aware of the backward half sequence"看上去是在說生成後半句的時候,已經得到完整的前半句了,這裡是什麼意思呢?

wumark: 我也細緻地看了一下,我說的是有問題。按照他的表述他應該是後向生成到頭,然後再拿前向的重新再讀一遍,再把前面的生成了。不是每個字交替一下,是一次生成完了,之前理解錯了。

2. mike

Because we have far more Chinese terms than English words, our seq2BF is trained in the character level out of efficiency concerns.

PMI keyword 統計模型是基於詞粒度的,而 seq2BF 中的 RNN encoder 和 decoder 都是基於字粒度的。這裡給出使用字粒度的理由是漢語詞太多,隱含的意思是詞粒度容易出現 OOV 問題,所以使用字粒度? 有沒有同學對比過詞粒度的 seq2seq 和字粒度的 seq2seq 生成結果的區別呢?

另外,從 Table 1(a) 中看到,seq2BF 生成的 reply 的長度平均在 5.6 個字,而 Groundtruth 也就是實際 reply 的長度也就在 9.19,因此數據集中的回復是偏短的,會不會也因為數據集是比較短的 post-reply 才考慮選擇的字粒度呢?

xwzhong: 1. 文中直接說明是出於「efficiency concerns」所以用了 char-level,當然,你提到的使用 word-level 確實是會出現 OOV 情況。2. 個人做過相關實驗,同個 post,使用 seq2seq 得到的 response 其平均長度比對應訓練集中 groundtruth 小 4 左右(實驗進行了變數控制,post 出現次數、response 不同長度)

xwzhong: word-level 和 char-level 各有好處,可以從效率、顯存佔用、語義表達角度去考慮(涉及到的東西比較多),但是從使用 seq2seq 模型來做生成式對話系統,僅僅對比 word 和 char-level 的區別很小。

3. Miaosen

PMI prefers a word that is most 「mutually informative」 with the query

這樣選擇的 keyword,會不會在 language model 中也比較少見,導致很難生成流利的回答?(比如 keyword 是某款汽車型號)。其實很多 keyword 雖然不一樣,但是其實是類似的意思。在生成 response 的時候,是不是可以選擇用 embedding 來做?

mev: 這樣就有點像主題信息而不是關鍵詞信息了,可以嘗試用主題詞來替換關鍵詞,但這樣做的話會不會影響生成的回復的多樣性呢?

cuixiankun: 限定關鍵詞在本身上就限定了生成的多樣性吧。

想和我們一起研讀優質paper?

點擊提交內測申請,我們將在 48 小時內完成審核並和您取得聯繫。

關於PaperWeekly

PaperWeekly 是一個推薦、解讀、討論、報道人工智慧前沿論文成果的學術平台。如果你研究或從事 AI 領域,歡迎在公眾號後台點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。

微信公眾號:PaperWeekly

新浪微博:@PaperWeekly


推薦閱讀:

人工智慧這類技術有沒有運用到導彈上用於識別干擾彈和真實目標,飛機上的紅外干擾彈在目前階段有沒有過時?
人工智慧成手機標配,但大多數手機玩AI的姿勢都是錯的?
人工智慧的產物-人未來唯一的工作是給機器人當保姆?自動化朋友們怎麼看
未來的人工智慧作曲將取代周杰倫?

TAG:chatbot | 自然语言处理 | 人工智能 |