检索式人工智障识记

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

image

这个模型创新点有

  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

就有学者提出由构造对齐矩阵 然后再做池化的方式 计算句粒度之间相似度 的MV-LSTM模型[Shengxian Wan et al. 2015]

image
  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

这个模型[Liang Pang et al. 2016]主要是从多个角度 构造对齐矩阵 然后讲多个对齐矩阵 类比图像处理 一起喂入CNN中进行 卷积池化操作 算是交互式QA的开山之作

image

文章给出了三种对齐函数的计算方式 1. 存在判断: 该单词是否存在于另一个句子中 2. 点积 3. 余弦相似度

image

将多粒度分析出的对齐矩阵 通过多重卷积 进行训练

image

然后这种多粒度计算词、句之间关系的做法 之后发展成交互式QA 现广泛应用于检索式QA模型中

BiMPM

BiMPM = Bilateral Multi-Perspective Matching

在前面学者的基础上 进一步针对多角度句词匹配进行研究 提出BiMPM模型[Zhiguo Wang et al. 2017]

image

文章提出四种匹配方式

  1. Full Matching: 每个单词 与 需要匹配的句子的最后一个隐藏层输出向量进行Cosine计算
  2. MaxPooling Matching: 每个单词 与 需要匹配的句子的每一个单词进行Cosine计算 取Maximum
  3. Attentive Matching: 每个单词 与 需要匹配的句子的每一个单词行Cosine计算 然后用Softmax归一化 作为attention权重 然后再加权求和 得到的结果再做一次Cosine
  4. Max Attentive Matching: 每个单词 与 需要匹配的句子的每一个单词行Cosine计算 然后用Softmax归一化 作为attention权重 然后再取最大值 得到的结果再做一次Cosine
image

然后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 才发现 这篇论文是我老师写的 (虽然他的名字 藏在最后)

image

我们在研究多轮对话的时候 很简单的一个想法就是把多轮用一些标识符(比如说_SOS_)拼接成一句单句 然后这个单句就可以像上面一样计算对齐矩阵

image

但很显然 这样做 不会有太好的效果

于是这篇Paper 提出通过多角度 (Word Level, Utterance Level)

Utterance是指利用CNN 进行卷积池化 得到Utterance Level的embedding squence 再经过一次Gated RNN (LSTM or GRU)过滤噪声

然后把两个维度得到的结果相加得到 最终的结果

很显然 直接相加得到的结果 不能准确的反映 多维度之间的关系 但多维度的思路对后面的论文很有帮助

SMN

SMN = Sequential Matching Network

然后 就到了大名鼎鼎的SMN [Yu Wu et al. 2017] (ym wuyu dalao)

SMN 把多粒度、基于交互的思想运用在多轮对话中

image

和前面的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的其他模型呢

就有学者提出DUA模型[Zhuosheng Zhang et al. 2018],把前面M1, M2分别换为GRU, self-attention

image

其实 上面这个图画的不好

  • 一个对齐矩阵M1 是通过GRU计算得到的 对应的是Segment Pairs
  • 另外一个矩阵M2 是先self-attentation 然后和embedding的结果拼起来 再过一次GRU
    • 这里的slef-attentation 没有使用position 所以没有带时序信息 于是用GRU 捞一下有关时间的信息

之后的就和SMN基本一致 实际效果比SMN更好一点

DAM

image

前面的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. 深度文本匹配发展总结
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容

  • 转载请声明出处。到这里才发现简书不支持Mathjax,真蛋疼,要看公式的话还是到我的博客上看,留言就在这里留吧,我...
    TonLP阅读 2,640评论 0 6
  • 主要内容 自然语言输入编码 前馈网络 卷积网络 循环网络(recurrent networks ) 递归网络(re...
    JackHorse阅读 4,000评论 0 2
  • 题目分析: 将奖牌和奖杯整理到柜子里,要求是:奖牌和奖杯不可同时出现在同一排,每一排的奖杯不可超过5个,并且每一排...
    Yinmu阅读 165评论 0 0
  • 第四十二篇:2018.4.12 星期四 天气晴 都说越赞美孩子孩子就会表现越好,我也试着表扬赞美小魏同学了,一...
    薄丞叶阅读 223评论 0 2