可能blog排版會更好看點??

拖了一個多星期了 都快拖到Final Presentation DDL了 我這個懶癌晚期都看不下去了

好 究竟是道德的淪喪還是人性的扭曲?歡迎來到這一期的「奇葩說之中華田園犬大解密」

在了解了基本的RNN家族之後

我們把步子邁得大一點 直接對準目前檢索式 chatbots研究前沿

首先 QA系統分為任務型非任務型兩大類

任務型就是像Siri這種,需要識別用戶派遣的任務,然後完成相應的任務

非任務則是主要是閑聊機器人,購物客服機器人

非任務按Answer的生成方式 又可以分為 檢索式 生成式

目前工業上落地的(效果好的)就是檢索式

所以我們為了學術 (找工作) 來研究檢索式對話Chatbots

檢索式QA生產式QA 最大的區別 就是 檢索式 只需要做encode 而生成式不僅僅要encode 還要decode

這個應該很好理解 檢索式 只需要 把query+Context encode 到向量 然後計算Similarity,取最高的幾個

但生成式 encode計算完之後 還得根據計算值decode成語句 返回給用戶

這就是他們最大的區別 當然 我們這裡討論的是檢索式

Base mind

檢索式對話 顧名思義 就是從一堆語料庫中 通過檢索匹配到相近的對話 從而輸出答案

注意 這裡有兩個關鍵詞 一個是檢索 另外一個是匹配

檢索就是 檢查索引 所以 檢索的關鍵就是把詞變成詞向量 預處理成Index

匹配就是 根據詞向量 計算出一個匹配值 最簡單就是計算Cosine Distance 當然這樣效果很一般

於是就有一堆學者提出一堆模型

常規的做法有利用RNN家族 獲取句、文章粒度的信息

然後 就開始論文串講了

上古時代

話說 盤古還沒開天 女媧還沒補石 後裔還沒射日

那個時候 還沒有Word2vector 更不用說小學五年級就可以學得TF 對詞向量的計算 還都是傳統的Hash優化思路

這個時候出現了一個名叫DSSM的模型[Po-Sen Huang et al. 2013] Learning Deep Structured Semantic Models for Web Search using Clickthrough Data

這個模型創新點有

1. 利用wordHash代替傳統詞袋模型 從而達到降維效果

  • word Hash 就是用把詞前後加上#,然後每n個詞做一個切割,比如說good->{#go, goo, ood, od#}
  • 每個切割分量作為一維向量
  • 因為英文中單詞數量級遠大於n個字母組合的數量級
  • 且這種方案的Hash碰撞率較小 3字母表示僅為0.0044%
  • WordHash可以看做是Word2Vector早期的方案
  • 其基本思想每個詞之間並非完全正交 然後應該沒有那麼多獨立的維度 所以就可以壓縮詞向量大小

2. 利用全神經網路對句子進行處理得到相對應的句粒度向量

  • 文章利用三個隱藏層進行訓練,第一個隱藏層為WordHash層有30K個節點,第二三層各有300個節點,輸出層有128個節點,並使用隨機梯度下降SGN訓練

啟蒙運動

隨著word2Vec的提出 再加上NN方法在NLP中進一步運用 檢索式QA有了不錯的發展

但回顧之前的DSSM模型 在計算出句粒度的向量之後就直接使用cosine distance 進行計算Similarity

直觀感覺這樣算效果不會太好 於是這個時期就有一些學者提出一些改進Similarity計算方法的模型

MV-LSTM

就有學者提出由構造對齊矩陣 然後再做池化的方式 計算句粒度之間相似度 的="http://www.aaai.org/ocs/index.php/AAAI/AAAI16/paper/download/11897/12030">MV-LSTM模型[Shengxian Wan et al. 2015]

  1. 計算句子間的兩兩匹配度存入對齊矩陣 從細粒度描述句子間關係
  2. 利用雙向LSTM模型 減少因為RNN時序遍歷的特性 導致模型結果更偏向於最後幾個單詞的現象
  3. Similarity不只直接做cosine計算 根據模型特性動態調整參數 s(u,v)=f(u^TM^{[1:c]}v+W_{uv}[u;v])+b)
  4. 處理最後一步使用多層感知機MLP對得到的結果進行壓縮和分類 因為效果較好 這個做法在之後的論文中被廣泛採用

MM

MM = Matching Matrix

這個href="aaai.org/ocs/index.php/">模型[Liang Pang et al. 2016]主要是從多個角度 構造對齊矩陣 然後講多個對齊矩陣 類比圖像處理 一起喂入CNN中進行 卷積池化操作 算是互動式QA的開山之作

文章給出了三種對齊函數的計算方式 1. 存在判斷: 該單詞是否存在於另一個句子中 2. 點積 3. 餘弦相似度

將多粒度分析出的對齊矩陣 通過多重卷積 進行訓練

然後這種多粒度計算詞、句之間關係的做法 之後發展成互動式QA 現廣泛應用於檢索式QA模型中

BiMPM

BiMPM = Bilateral Multi-Perspective Matching

在前面學者的基礎上 進一步針對多角度句詞匹配進行研究 提出"https://arxiv.org/pdf/1702.03814">BiMPM模型[Zhiguo Wang et al. 2017]

文章提出四種匹配方式

  1. Full Matching: 每個單詞 與 需要匹配的句子的最後一個隱藏層輸出向量進行Cosine計算
  2. MaxPooling Matching: 每個單詞 與 需要匹配的句子的每一個單詞進行Cosine計算 取Maximum
  3. Attentive Matching: 每個單詞 與 需要匹配的句子的每一個單詞行Cosine計算 然後用Softmax歸一化 作為attention權重 然後再加權求和 得到的結果再做一次Cosine
  4. Max Attentive Matching: 每個單詞 與 需要匹配的句子的每一個單詞行Cosine計算 然後用Softmax歸一化 作為attention權重 然後再取最大值 得到的結果再做一次Cosine

然後BiMPM還加上了雙向處理 不僅考慮從Query 推出Answer 還考慮到Answer 推出 Query

工業革命

慢慢的大家發現 僅僅從詞的角度 去進行檢索式QA不能達到很好的效果

尤其是在多輪對話中效果並不好 於是能反映多角度關係且特別Work(這個很關鍵)的互動式就越來越流行

Multi-view model

說到互動式 必須 提到這篇論文Multi-view Response Selection for Human-Computer Conversation [Xiangyang Zhou et al. 2016]

雖然它不算完全使用了交互思想的論文 但算作給交互打開了一些思路

然後 看完這篇Paper LongLong Ago 才發現 這篇論文是我老師寫的 (雖然他的名字 藏在最後)

我們在研究多輪對話的時候 很簡單的一個想法就是把多輪用一些標識符(比如說_SOS_)拼接成一句單句 然後這個單句就可以像上面一樣計算對齊矩陣

但很顯然 這樣做 不會有太好的效果

於是這篇Paper 提出通過多角度 (Word Level, Utterance Level)

Utterance是指利用CNN 進行卷積池化 得到Utterance Level的embedding squence 再經過一次Gated RNN (LSTM or GRU)過濾雜訊

然後把兩個維度得到的結果相加得到 最終的結果

很顯然 直接相加得到的結果 不能準確的反映 多維度之間的關係 但多維度的思路對後面的論文很有幫助

SMN

SMN = Sequential Matching Network

然後 就到了大名鼎鼎的ef="arxiv.org/pdf/1612.0162">SMN [Yu Wu et al. 2017] (ym wuyu dalao)

SMN 把多粒度、基於交互的思想運用在多輪對話中

和前面的MM等模型一樣 SMN採用了多粒度分析

  • 一個對齊矩陣M1 是直接Word Embedding 得到的 對應的就是Word Pairs
  • 另外一個矩陣M2 是通過GRU計算得到的 對應的是Segment Pairs

分別代表詞粒度、句粒度

然後經過卷積、池化結合兩個粒度的信息

然後再過一層GRU 過濾雜訊 GRU得到的向量進行Match就可以獲得匹配Score

這種多粒度的做法 保證了即使CNN很淺,也能抽取出比較high-level的特徵,得到高質量的utterance embedding[9]

這篇文章 還對最後一個GRU進行優化 給出了分別利用1. 最後一個隱藏層結果 SMN_{last} 2. 中間每層的帶權和 SMN_{static} 3. 結合attention的一種表示 SMN_{dynamic} 進行匹配的結果

得出dynamic 效果最優的結論

DUA

之前 我們 分析過RNNs家族的一些模型

在剛才的SMN模型中 利用了GRU獲得時序信息

那麼如果把GRU換成RNN的其他模型呢

就有學者提出f="arxiv.org/pdf/1806.0910">DUA模型[Zhuosheng Zhang et al. 2018],把前面M1, M2分別換為GRU, self-attention

其實 上面這個圖畫的不好

  • 一個對齊矩陣M1 是通過GRU計算得到的 對應的是Segment Pairs
  • 另外一個矩陣M2 是先self-attentation 然後和embedding的結果拼起來 再過一次GRU
    • 這裡的slef-attentation 沒有使用position 所以沒有帶時序信息 於是用GRU 撈一下有關時間的信息

之後的就和SMN基本一致 實際效果比SMN更好一點

DAM

前面的SMN給了兩層對齊矩陣 那麼為啥選兩層 不選三層 四層 100層 8848層呢

於是有dalao藉助 transformer (其實 也就是 self-attentation 還記得Google Brain 那篇風騷的 Attention is All you need吧) 提出了Deep Attention Matching [Xiangyang Zhou et al. 2018]

構造了一些對齊矩陣

  1. 原始word embedding 矩陣
  2. 第一層Attention: 多輪Contetxt和Response 每個詞
  3. 第二層Attention: 第一輪結果和新的Response

重複2.3H次 就可以得到1+2H層(H為Transformer 層數)對齊矩陣

再把這2H+1維對齊矩陣 喂到CNN中訓練

DAM最核心的地方 在於2H層Attention的構造 Paper中給出了具體的解釋證明 證明兩個Attention 相互作用

目前DAM模型可以獲得不錯的結果

好 基本上 目前常用的模型 介紹完了 也許寫完代碼會有新的體會 匿了

---未完待續 期待下一個篇章---

Reference

  1. Learning Deep Structured Semantic Models for Web Search using Clickthrough Data [Po-Sen Huang et al. 2013]
  2. A Deep Architecture for Semantic Matching with Multiple Positional Sentence Representations[Shengxian Wan et al. 2015]
  3. Text Matching as Image Recognition [Liang Pang et al. 2016]
  4. Bilateral Multi-Perspective Matching for Natural Language Sentences [Zhiguo Wang et al. 2017]
  5. Multi-view Response Selection for Human-Computer Conversation [Xiangyang Zhou et al. 2016]
  6. Sequential matching network: A new architecture for multi-turn response selection in retrieval-based chatbots [Yu Wu et al. 2017]
  7. Modeling multi-turn conversation with deep utterance aggregation [Zhuosheng Zhang et al. 2018]
  8. Multi-Turn Response Selection for Chatbots with Deep Attention Matching Network [Xiangyang Zhou et al. 2018]
  9. 小哥哥,檢索式chatbot了解一下?
  10. 深度文本匹配發展總結

推薦閱讀:

相关文章