來談談那些很棒的檢索式Chatbots論文(二)
上一篇文章寫到了SMN模型,如果有興趣的話大家可以看看,先放上鏈接~
LeonMao:來談談那些很棒的檢索式Chatbots論文(一)今天和大家分享的是百度在2018年ACL上的一篇論文,同樣是檢索式對話系統領域上一篇很棒論文,下面就開始進入主題吧~
DAM(Deep Attention Matching Network)
18年一件很火的事件就是bert的出現,其中bert的結構用的是Transformer的Encoder層,而Transformer同樣出自於一篇很出名的論文:Attention is all you need,為什麼要提到這個,因為DAM就是用到Transformer的部件去實現的,如果大家對Transformer不太熟悉,強烈建議看看這個博客(這個博客寫得真的好,可視化的教學,真心安利一波),熟悉了Transformer之後再看DAM會快許多~
DAM的論文全稱為:Multi-Turn Response Selection for Chatbots with Deep Attention Matching Network ,首先放出該論文及其源碼:
https://aclweb.org/anthology/P18-1103baidu/Dialogue除此之外,大家可以去2018ACL的官網找下,裡面有作者分享這篇論文的視頻~看完論文後有一種很純粹的感覺,因為論文用了純注意力機制去做檢索式的Chatbots
Introduction
文章的靈感來自於Transformer,它把Transformer裡面的注意力機制運用到模型之中。文章中談到,捕獲response和utterances之間不同粒度的匹配信息是檢索式多輪對話的關鍵,但是在這之前的模型,只考慮了表面的文本關聯性(surface text relevance),而且之前的模型用RNN去抽取特徵。
而文章中用Transformer的部件替代RNN,去抽取文本的更多層次,更多粒度的信息,從而得到response和utterances之間潛在的語義上的關聯。那具體怎麼做呢?文章將Transformer裏的注意力機制拓展成兩種方式:
- self-attention
- cross-attention
在這裡默認大家熟悉Transformer結構,self-attention其實就是Transformer的Encoder層(沒有用Multi-Head),其中 、 、 都是一樣的,要麼都是response、要麼都是utterance。從word embedding開始堆疊self-attention層,每一層self-attention層抽取一種粒度的表示,不同層就抽取了不一樣的表示,從而獲得句子多粒度的表示。
而cross-attention結構上還是Transformer的Encoder層,只不過輸入不一樣了。其中 是response(utterance),而 、 是utterance(response)。這樣做的話,其實就像用response去表示utterance,用utterance去表示response,從而為response和utterance做匹配提供更多的信息。