拖了一個多星期了 都快拖到Final Presentation DDL了 我這個懶癌晚期
都看不下去了
好 究竟是道德的淪喪還是人性的扭曲祷愉?歡迎來到這一期的「奇葩說之中華田園犬大解密」
在了解了基本的RNN家族之后
我們把步子邁得大一點 直接對準(zhǔn)目前檢索式
chatbots
研究前沿
首先 QA系統(tǒng)分為任務(wù)型
僵缺,非任務(wù)型
兩大類
任務(wù)型
就是像Siri這種药蜻,需要識別用戶派遣的任務(wù)尿瞭,然后完成相應(yīng)的任務(wù)
而非任務(wù)
則是主要是閑聊機器人漂洋,購物客服機器人
非任務(wù)
按Answer的生成方式 又可以分為 檢索式
生成式
目前工業(yè)上落地的(效果好的)就是檢索式
所以我們?yōu)榱藢W(xué)術(shù) (找工作) 來研究檢索式
對話Chatbots
檢索式QA
和 生產(chǎn)式QA
最大的區(qū)別 就是 檢索式 只需要做encode
而生成式不僅僅要encode 還要decode
這個應(yīng)該很好理解 檢索式 只需要 把query+Context encode 到向量 然后計算Similarity斗搞,取最高的幾個
但生成式 encode計算完之后 還得根據(jù)計算值decode成語句 返回給用戶
這就是他們最大的區(qū)別 當(dāng)然 我們這里討論的是檢索式
Base mind
檢索式對話 顧名思義 就是從一堆語料庫中 通過檢索
來匹配
到相近的對話 從而輸出答案
注意 這里有兩個關(guān)鍵詞 一個是檢索
另外一個是匹配
檢索
就是 檢查索引 所以 檢索的關(guān)鍵就是把詞變成詞向量 預(yù)處理成Index
匹配
就是 根據(jù)詞向量 計算出一個匹配值 最簡單就是計算Cosine Distance 當(dāng)然這樣效果很一般
于是就有一堆學(xué)者提出一堆模型
常規(guī)的做法有利用RNN家族 獲取句、文章粒度的信息
然后 就開始論文串講了
上古時代
話說 盤古還沒開天 女媧還沒補石 后裔還沒射日
那個時候 還沒有Word2vector 更不用說小學(xué)五年級就可以學(xué)得TF 對詞向量的計算 還都是傳統(tǒng)的Hash優(yōu)化思路
這個時候出現(xiàn)了一個名叫DSSM的模型[Po-Sen Huang et al. 2013
] Learning Deep Structured Semantic Models for Web Search using Clickthrough Data
這個模型創(chuàng)新點有
- 利用
wordHash
代替?zhèn)鹘y(tǒng)詞袋模型 從而達到降維效果-
word Hash
就是用把詞前后加上#
叶眉,然后每n個詞做一個切割址儒,比如說good
->{#go
,goo
,ood
,od#
} - 每個切割分量作為一維向量
- 因為英文中單詞數(shù)量級遠大于n個字母組合的數(shù)量級
- 且這種方案的Hash碰撞率較小 3字母表示僅為
0.0044%
- WordHash可以看做是
Word2Vector
早期的方案 - 其基本思想每個詞之間并非完全正交 然后應(yīng)該沒有那么多獨立的維度 所以就可以壓縮詞向量大小
-
- 利用
全神經(jīng)網(wǎng)絡(luò)
對句子進行處理得到相對應(yīng)的句粒度向量- 文章利用三個隱藏層進行訓(xùn)練芹枷,第一個隱藏層為WordHash層有30K個節(jié)點,第二三層各有300個節(jié)點莲趣,輸出層有128個節(jié)點鸳慈,并使用隨機梯度下降SGN訓(xùn)練
啟蒙運動
隨著word2Vec的提出 再加上NN方法在NLP中進一步運用 檢索式QA有了不錯的發(fā)展
但回顧之前的DSSM模型 在計算出句粒度的向量之后就直接使用cosine distance 進行計算Similarity
直觀感覺這樣算效果不會太好 于是這個時期就有一些學(xué)者提出一些改進Similarity計算方法的模型
MV-LSTM
就有學(xué)者提出由構(gòu)造對齊矩陣 然后再做池化的方式 計算句粒度之間相似度 的MV-LSTM
模型[Shengxian Wan et al. 2015
]
- 計算句子間的兩兩匹配度存入對齊矩陣 從細粒度描述句子間關(guān)系
- 利用
雙向LSTM
模型 減少因為RNN時序遍歷的特性 導(dǎo)致模型結(jié)果更偏向于最后幾個單詞的現(xiàn)象 - Similarity不只直接做cosine計算 根據(jù)模型特性動態(tài)調(diào)整參數(shù)
- 處理最后一步使用多層感知機
MLP
對得到的結(jié)果進行壓縮和分類 因為效果較好 這個做法在之后的論文中被廣泛采用
MM
MM = Matching Matrix
這個模型[Liang Pang et al. 2016
]主要是從多個角度 構(gòu)造對齊矩陣 然后講多個對齊矩陣 類比圖像處理 一起喂入CNN中進行 卷積池化操作 算是交互式QA
的開山之作
文章給出了三種對齊函數(shù)的計算方式 1. 存在判斷: 該單詞是否存在于另一個句子中 2. 點積 3. 余弦相似度
將多粒度分析出的對齊矩陣 通過多重卷積 進行訓(xùn)練
然后這種多粒度計算詞、句之間關(guān)系的做法 之后發(fā)展成交互式QA
現(xiàn)廣泛應(yīng)用于檢索式QA模型中
BiMPM
BiMPM = Bilateral Multi-Perspective Matching
在前面學(xué)者的基礎(chǔ)上 進一步針對多角度句詞匹配進行研究 提出BiMPM模型[Zhiguo Wang et al. 2017
]
文章提出四種匹配方式
-
Full Matching
: 每個單詞 與 需要匹配的句子的最后一個隱藏層
輸出向量進行Cosine計算 -
MaxPooling Matching
: 每個單詞 與 需要匹配的句子的每一個單詞
進行Cosine計算 取Maximum
-
Attentive Matching
: 每個單詞 與 需要匹配的句子的每一個單詞行Cosine計算 然后用Softmax歸一化作為attention權(quán)重
然后再加權(quán)求和
得到的結(jié)果再做一次Cosine -
Max Attentive Matching
: 每個單詞 與 需要匹配的句子的每一個單詞行Cosine計算 然后用Softmax歸一化 作為attention權(quán)重 然后再取最大值
得到的結(jié)果再做一次Cosine
然后BiMPM還加上了雙向處理 不僅考慮從Query 推出Answer 還考慮到Answer 推出 Query
工業(yè)革命
慢慢的大家發(fā)現(xiàn) 僅僅從詞的角度 去進行檢索式QA不能達到很好的效果
尤其是在多輪對話中效果并不好 于是能反映多角度關(guān)系且特別Work
(這個很關(guān)鍵)的交互式就越來越流行
Multi-view model
說到交互式 必須 提到這篇論文Multi-view Response Selection for Human-Computer Conversation [Xiangyang Zhou et al. 2016
]
雖然它不算完全使用了交互思想的論文 但算作給交互打開了一些思路
然后 看完這篇Paper LongLong Ago
才發(fā)現(xiàn) 這篇論文是我老師寫的 (雖然他的名字 藏在最后)
我們在研究多輪對話的時候 很簡單的一個想法就是把多輪用一些標(biāo)識符(比如說_SOS_
)拼接成一句單句 然后這個單句就可以像上面一樣計算對齊矩陣
但很顯然 這樣做 不會有太好的效果
于是這篇Paper 提出通過多角度 (Word Level
, Utterance Level
)
Utterance
是指利用CNN 進行卷積池化 得到Utterance Level的embedding squence 再經(jīng)過一次Gated RNN (LSTM or GRU)過濾噪聲
然后把兩個維度得到的結(jié)果相加得到 最終的結(jié)果
很顯然 直接相加得到的結(jié)果 不能準(zhǔn)確的反映 多維度之間的關(guān)系 但多維度的思路對后面的論文很有幫助
SMN
SMN = Sequential Matching Network
然后 就到了大名鼎鼎的SMN [Yu Wu et al. 2017
] (ym wuyu dalao)
SMN
把多粒度喧伞、基于交互的思想運用在多輪對話中
和前面的MM
等模型一樣 SMN
采用了多粒度分析
- 一個對齊矩陣M1 是直接
Word Embedding
得到的 對應(yīng)的就是Word Pairs
- 另外一個矩陣M2 是通過
GRU
計算得到的 對應(yīng)的是Segment Pairs
分別代表詞粒度走芋、句粒度
然后經(jīng)過卷積、池化結(jié)合兩個粒度的信息
然后再過一層GRU
過濾噪聲 GRU
得到的向量進行Match就可以獲得匹配Score
這種多粒度的做法 保證了即使CNN很淺潘鲫,也能抽取出比較high-level的特征翁逞,得到高質(zhì)量的utterance embedding[9]
這篇文章 還對最后一個GRU進行優(yōu)化 給出了分別利用1. 最后一個隱藏層結(jié)果 2. 中間每層的帶權(quán)和
3. 結(jié)合attention的一種表示
進行匹配的結(jié)果
得出dynamic 效果最優(yōu)的結(jié)論
DUA
之前 我們 分析過RNNs家族的一些模型
在剛才的SMN
模型中 利用了GRU獲得時序信息
那么如果把GRU換成RNN的其他模型呢
就有學(xué)者提出DUA模型[Zhuosheng Zhang et al. 2018
],把前面M1, M2分別換為GRU, self-attention
其實 上面這個圖畫的不好
- 一個對齊矩陣M1 是通過
GRU
計算得到的 對應(yīng)的是Segment Pairs
- 另外一個矩陣M2 是先
self-attentation
然后和embedding的結(jié)果拼起來 再過一次GRU
- 這里的
slef-attentation
沒有使用position 所以沒有帶時序信息 于是用GRU
撈一下有關(guān)時間的信息
- 這里的
之后的就和SMN
基本一致 實際效果比SMN
更好一點
DAM
前面的SMN
給了兩層對齊矩陣 那么為啥選兩層 不選三層 四層 100層 8848層呢
于是有dalao借助 transformer
(其實 也就是 self-attentation
還記得Google Brain 那篇風(fēng)騷的 Attention is All you need
吧) 提出了Deep Attention Matching [Xiangyang Zhou et al. 2018
]
構(gòu)造了一些對齊矩陣
- 原始
word embedding
矩陣 - 第一層
Attention
: 多輪Contetxt和Response 每個詞 - 第二層
Attention
: 第一輪結(jié)果和新的Response
重復(fù)2.3H次 就可以得到1+2H層(H為Transformer 層數(shù))對齊矩陣
再把這2H+1維對齊矩陣 喂到CNN中訓(xùn)練
DAM最核心的地方 在于2H層Attention的構(gòu)造 Paper中給出了具體的解釋證明 證明兩個Attention 相互作用
目前DAM
模型可以獲得不錯的結(jié)果
好 基本上 目前常用的模型 介紹完了 也許寫完代碼會有新的體會 匿了
---未完待續(xù) 期待下一個篇章---
Reference
- Learning Deep Structured Semantic Models for Web Search using Clickthrough Data [
Po-Sen Huang et al. 2013
] - A Deep Architecture for Semantic Matching with Multiple Positional Sentence Representations[
Shengxian Wan et al. 2015
] - Text Matching as Image Recognition [
Liang Pang et al. 2016
] - Bilateral Multi-Perspective Matching for Natural Language Sentences [
Zhiguo Wang et al. 2017
] - Multi-view Response Selection for Human-Computer Conversation [
Xiangyang Zhou et al. 2016
] - Sequential matching network: A new architecture for multi-turn response selection in retrieval-based chatbots [
Yu Wu et al. 2017
] - Modeling multi-turn conversation with deep utterance aggregation [
Zhuosheng Zhang et al. 2018
] - Multi-Turn Response Selection for Chatbots with Deep Attention Matching Network [
Xiangyang Zhou et al. 2018
] - 小哥哥溉仑,檢索式chatbot了解一下挖函?
- 深度文本匹配發(fā)展總結(jié)