综述

从应用的角度来说,对话机器人可以分为三个类别,分别是闲聊机器人,qa机器人以及任务型机器人。本系列主要介绍闲聊机器人。由于本文的内容主要是对对话机器人做一个简单的介绍,所以都是一些简单的介绍,详细的内容后面后有介绍。

目录

检索式对话模型

1. 检索式对话模型(1)

  • 主要介绍bm25,LCLR,DSSM模型,deepMatch模型以及cnn-cnt模型。

2. 检索式对话模型(2)

  • 主要介绍ARC-I,ARC-II,CDNN模型,BLSTM模型以及CNTN模型。

3. 检索式对话模型(3)

  • 主要介绍QA-LSTM以及变种,CLSM模型,Dual Encoder模型,AP-CNN,AP-biLSTM,以及HD-LSTM

4. 检索式对话模型(4)

  • 主要介绍HD-LSTM模型,HyperQA模型,BiMPM模型,Compare-aggregate Model,IWAN模型以及MCAN模型。

生成式对话模型及相关技术

1. transformer模型

  • 主要介绍了transformer模型的Input,encoder,decoder,位置编码以及attention机制

2. 解码策略介绍

  • 主要介绍了greedy,beam search,top-k,top-p以及非自回归解码策略(mask predict等)

3.解码tricks介绍

  • 主要介绍了一些解码中使用的技巧,包括了blocking,Prefix Constraints,predictive length等方法介绍。

4.位置编码介绍-系列1

  • 主要介绍一些位置编码

5.预训练加速技巧介绍篇(免费)

  • 主要介绍一些预训练的相关技巧以及一些框架, 比如说deepspeed, megatron, 以及模型并行, 数据并行和流水线并行, 以及ZeRO的内存优化技术等.

预训练模型介绍

一 QA机器人

问答机器人主要功能是在知识库找到用户提问的问题的答案。主要用于智能客服等。一般来说问答机器人是不涉及多轮,主要是针对某一个领域的问答。构建一个问答机器人,第一步是要构架一个高质量的FAQ 语料集,语料集中应该包括大量高质量的Q-A对。第二步,就是做语义匹配的工作,主要有针对用户query与Q的匹配,用户query与A的匹配,或者是融合二者,针对用户query与Q的匹配的同时,也注重用户query与A的匹配。

二 任务型机器人

任务型机器人是针对某类特定任务开发的机器人,主要功能是解决某类问题,比如说订机票,订餐等。
任务型对话主要可以分为五个模块。主要有ASR,NLU,对话管理,NLG,TTS这五个模块,如下图所示:

  • ASR主要是将人的语音转化为文本的形式。
  • NLU主要是理解用户query的含义。NLU主要分为两个部分,一个是用户的意图或者query的domain区分,另一个是slot filling。
  • 对话管理主要包含了两个部分,分别是DST(dialogue state tracking)和policy learning。DST主要作用是跟踪对话的状态,而policy learning作用是根据对话的状态来采取对应的策略。
  • NLG主要是回复的生成。可以是模型生成的回复,也可以是固定的回复,或者是根据槽位填充的回复。
  • TTS是将文本形式的回复转变为语音的形式。

三 闲聊机器人

3.1 简介

闲聊机器人是在开放域中回答用户没有目的的问题。它的主要功能是同用户进行闲聊对话,一定程度的排解用户的情感需求。因为闲聊本身的属性,所以针对闲聊机器人的回复一般没有明确的评价标准。不过,从整体上看,闲聊对话主要的两个标准是拟人化以及对话参与度[1]。

3.2 方法

闲聊机器人的实现主要有三种方法,分别是基于检索式的方法,基于生成式的方法以及基于检索以及生成的方法。目前来说,基于检索式的方法比较成熟,而基于生成式的方法效果并不是特别好。

3.2.1 基于检索式的方法

基于检索式的闲聊机器人包括了多轮和单轮这两个方向。这里主要介绍单轮的检索式模型,针对单轮的检索式对话机器人,从本质上来说,这是个query和reply的语义匹配问题。所以实现的时候,多数的方法也是从这个角度出发的。
1.方法
基于检索式的对话机器人,顾名思义,是首先通过用户的query在语料库中检索,这里的语料库存储的是<post, response>形式的pair。因此,当用户的query过来后,会利用query检索语料库中的post,然后得到多个<post, response>对。然后利用rank模型(语义匹配模型)对query和response打分。最后利用打分的结果得到相应的回复。
2.语义匹配模型
首先,语义匹配是一个很有挑战性的问题,它不仅仅涉及到word的维度,更是涉及到term,sentence的维度,不仅如此,由于语言的复杂性,语义匹配的复杂度不言而喻。因此目前大部分的语义匹配都是基于特征的维度,不管是character,word,tokens或者sentences的特征。或者是多个特征的融合。所以特征提取器的使用直接影响了语义匹配的效果。目前主流的特征提取器包括了CNN,LSTM以及self-attention。
然后,从模型的角度来说,目前主要的模型有两种,一种是representation learning,一种是match function learning。

  • 1) representation learning方法
    这类方法的主要思想是首先学习到query和reply的语义表示,然后利用一些度量方法计算二者的相似度,比如说cosine similarity,点乘,NTN,EUCCOS[2]等。
  • 2) match function learning方法
    这类方法主要是首先融合low level的特征,然后将融合后的特征通过各种match pattern。与representation learning方法的主要区别就是,match function的方法主要是先做特征的组合,然后进行相应的特征提取等操作。

    3.优缺点
    1)优点:效果好与生成式的方法,基本能够找到好的reply。回复质量比较依赖语料,只要语料质量高,一般都能得到不错的回复。
    2)缺点:对话机器人给出的回复只能是语料里面能检索到的回复。整个系统比较复杂,有许多其它的工作,并不是端到端的系统。

3.2.2 基于生成式的方法

1.介绍
基于生成式的对话模型,主要的含义是用户给出一个query,然后通过端到端的方式,让模型生成一个reply。目前这类方法使用的模型基本都是基于seq2seq架构[3]。seq2seq模型输入是一个序列,输出也是一个序列。它的输入和输出的长度是可变的。
2.方法结构
seq2seq模型主要包含了两部分,分别为Encoder和Decoder。其中Encoder的作用主要是将query编码成句向量,而Decoder的作用是根据query编码后的向量,生成reply。除此之外,在seq2seq经常使用的模块还有attention和beam-search等。主要结构如下图所示:

  1. Encoder:将一个可变程度的序列变为一个固定长度的向量。观察上图的左半部分,Encoder 的输入是各个分割好的token,然后通过LSTM或者self-attention这个结构对各个step的输入进行编码,
  2. Decoder:将固定长度的向量转变为一个可变长度的序列。同样观察上图,Decoder的输入是 w x y z, 训练的时候输出是w x y z ,在infer的时候主要是使用beam-search得到输出。

3.优缺点
1)优点:生成式的模型能够生成语料里面没有的回复,而且整体的结构比较简单,只要训练好模型后,就能直接得到相应的回复。
2)缺点:生成式模型生成的回复比较偏通用回复,并且生成的回复会有跟query不想关的情况。

3.2.3 基于检索式和生成式的方法

除了上面介绍的两种方法外,最近也有一些工作是将检索式和生成式两种方法融合起来。比如说AliMe chatbot[4],利用seq2seq模型生成回复,检索回来的回复会使用rerank模型进行打分,如果打分低于设定的阈值,就会使用seq2seq生成的回复作为给用户的回复,否则使用检索回来的回复作为用户的回复。

专栏系列介绍

专栏后面的内容主要会围绕检索式对话系统,生成式对话系统以及用到的一些技术。后续分享的内容也会在本文中总结,并会给出相应blog的链接。

引用文献

[1] What makes a good conversation? How controllable attributes affect human judgments, NAACL.2019
[2] A Compare-Aggregate Model for Matching Text Sequences, ICLR.2017
[3] Sequence to Sequence Learning with Neural Networks,NIPS,2014
[4] AliMe Chat: A Sequence to Sequence and Rerank based Chatbot Engine,ACL,2017
[5] A Survey on Dialogue Systems: Recent Advances and New Frontiers.2017

对话机器人-检索与生成模型相关推荐

  1. NLP中的对话机器人——预训练基准模型

    引言 本文是七月在线<NLP中的对话机器人>的视频笔记,主要介绍FAQ问答型聊天机器人的实现. 场景二 上篇文章中我们解决了给定一个问题和一些回答,从中找到最佳回答的任务. 在场景二中,我 ...

  2. 对话机器人---智能客服

    https://blog.csdn.net/qq_40027052/article/details/78723576 详细的介绍了对话机器人涉及到的所有知识和技术. 整个对话机器人涉及到的知识点,本人 ...

  3. 揭秘阿里小蜜:基于检索模型和生成模型相结合的聊天引擎 | PaperDaily #25

    在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考. 在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点,时刻紧跟 AI 前沿成果. 点击本文底部的「阅读原文」即刻加入社区 ...

  4. 论文翻译-阿里小蜜,基于检索模型和生成模型相结合的聊天引擎

    1.摘要 阿里小蜜是一款开放领域的聊天机器人引擎,他结合了IR(检索)模型与带有注意力机制的seq2seq生成模型.从效果上来讲,阿里小蜜的表现明显优于只使用某一种单一模型的情况. 2.介绍 近年来, ...

  5. 揭秘阿里小蜜:基于检索模型和生成模型相结合的聊天引擎

    面向 open domain 的聊天机器人无论在学术界还是工业界都是个有挑战的课题,目前有两种典型的方法:一是基于检索的模型,二是基于 Seq2Seq 的生成式模型.前者回复答案可控但无法处理长尾问题 ...

  6. 超越Facebook、谷歌、微软,百度发布全球首个百亿参数对话预训练生成模型PLATO-XL...

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自:机器之心 和 AI 进行无障碍的对话,是什么样的体验?你或许能够在这篇文章里找到 ...

  7. 实录 | 平安人寿资深算法工程师姚晓远:对话生成模型的探析与创新

    1 月 10 日(周四)晚 8 点,平安人寿智能平台团队资深算法工程师姚晓远在 PaperWeekly 直播间为大家带来了对话生成模型的探析与创新主题分享,并且介绍了平安人寿基于业务场景的技术探索成果 ...

  8. 今晚直播 | 平安人寿资深算法工程师姚晓远:对话生成模型的探析与创新

    随着深度学习的发展,人机对话技术取得重大突破,成为人工智能领域的热点研究问题. 人机对话作为人机交互系统的核心功能之一,发挥着十分重要的作用.相比其他传统交互方式,人机对话可在聊天的过程中完成输入信息 ...

  9. 直播 | 平安人寿资深算法工程师姚晓远:对话生成模型的探析与创新

    随着深度学习的发展,人机对话技术取得重大突破,成为人工智能领域的热点研究问题. 人机对话作为人机交互系统的核心功能之一,发挥着十分重要的作用.相比其他传统交互方式,人机对话可在聊天的过程中完成输入信息 ...

最新文章

  1. matlab中tecdem,TopoToolbox: A set of Matlab functions for topographic analysis
  2. centos mysql压缩文件直接恢复_Centos下mysql数据库备份与恢复的方法
  3. 如何提高表达能力——举手法则
  4. 不会c语言能学习python_为什么很多人学不会C语言?学霸说:你要是像我一样学肯定能行!...
  5. C语言abc输出最小值改错题,C语言程序设计
  6. solor mysql_solr 同步 mysql
  7. Python 中的解析命令行参数
  8. python3GUI--刷屏器(附源码)
  9. Nature报道诺奖得主:给研究生的四条箴言 Four golden lessons。颜宁:写的真好!
  10. 【YbtOJ 线段树 - 2】公园遛狗
  11. 关于个人目标的一篇博客
  12. 云服务器免费suse系统,suse系统
  13. 初中英语语法(005)-时态
  14. SpringMVC工作原理 侵立删
  15. 基础条件查询 where
  16. SAP软件的强大“远不止于此”
  17. IDEA报错private field “xxx“ is never assigned解决
  18. vscode - 史上最优秀的 IDE ?
  19. bandit(21-25)
  20. autojs-微信群抢红包

热门文章

  1. 图片框架Picasso的简单使用
  2. 在Windows上通过cygwin和VC编译64位iconv库
  3. 最装逼的基准测试工具套件 - JMH
  4. 9月第1周榜单丨飞瓜数据B站UP主排行榜(哔哩哔哩平台)发布!
  5. 移动端——常见的移动端mate
  6. js split函数
  7. 简述:一款优秀的缺陷管理系统有哪些功能特点!
  8. silverlight解决字体=显示黑白相间的字体!
  9. 荣耀x10和荣耀30s哪个好?
  10. Layui表格异步请求服务器端分页数据