对话机器人-检索与生成模型

article/2025/9/20 3:39:23

综述

从应用的角度来说,对话机器人可以分为三个类别,分别是闲聊机器人,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的内存优化技术等.

6.强化学习系列之Policy Gradient算法

  • 主要介绍一些强化学习中policy gradient算法。

7.强化学习之Q-learning算法

  • 主要介绍一些强化学习中Q-learning算法。

预训练模型介绍

一 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


http://chatgpt.dhexx.cn/article/qDYnxNlI.shtml

相关文章

NLP中的对话机器人——问答机器人的应用场景

引言 本文是七月在线《NLP中的对话机器人》的视频笔记&#xff0c;主要介绍FAQ问答型聊天机器人的实现。 FAQ问答机器人 FAQ就是一些常见问题与回答&#xff0c;比如https://letsencrypt.org/docs/faq/。 但是我们要做的不是一问一答形式的&#xff0c;而是类似stackoverfl…

机器人是如何实现对话的?

对话机器人作为近年来愈发普遍的产品&#xff0c;以各种各样的形态出现我们的生活中&#xff1a;电话客服、文本客服、超市里的导购机器人等&#xff1b;那这些机器人如何实现和我们人类的智能对话的呢&#xff1f;本文将用显浅易懂的文字讲述机器人的对话原理与产品设计要点。…

Python3从零开始搭建一个语音对话机器人

从零开始搭建一个语音对话机器人 目录 01-初心缘由 02-准备工作 03-语音机器人的搭建思路 04-语音生成音频文件 05-音频文件转文字STT 06-与图灵机器人对话 07-文字转语音 08-语音对话机器人的完整代码 09-结束语 10-有问必答 01-初心缘由 最近在研究语音识别方向&a…

对话机器人

【居然审核不通过……内容低俗&#xff0c;这么高大上的内容&#xff0c;哪里低俗了……】 前面写了一系列的 微信机器人&#xff0c;但还没涉及到自然语言处理&#xff08;Natural Language Processing, NLP&#xff09;。今天把这坑填上。本文将基于 Seq2Seq 模型和Little Y…

关于对话机器人,你需要了解这些技术

对话系统(对话机器人)本质上是通过机器学习和人工智能等技术让机器理解人的语言。它包含了诸多学科方法的融合使用,是人工智能领域的一个技术集中演练营。图1给出了对话系统开发中涉及到的主要技术。 对话系统技能进阶之路 图1给出的诸多对话系统相关技术,从哪些渠道可以…

对话机器人(一)——对话机器人基础知识

对话机器人基础 一、对话机器人分类 1. 知识领域 a. 面向限定领域 只能聊设定好的固定主题。若用户用无关领域挑战机器人&#xff0c;机器人用安全话术回复或结束对话。 b. 面向开放领域 用户不需要有明确的目的或意图。 c. 面向常用问题集 通过检索知识库来回答问题&a…

Typora无法在applist里找到

添加一个desktop文件即可&#xff0c;记得加上%U才能在应用列表里看见

php安装失败,phpcms安装失败怎么办

phpcms安装失败怎么办&#xff1f; 最新版的phpcmsV9安装报错解决 具体报错信息如下&#xff1a;Web-server: Apache PHP版本: PHP/5.2.14 Mysql版本: MySQL 客户端版本: 5.0.90 适用版本: v9 更新日期: phpcms_v9.2.2_UTF8 编码版本: UTF-8 浏览器: maxthon 复现步骤: 正在准备…

android应用程序列表,List列表应用程序-小知识 #103

文章摘要&#xff1a; 1、从设计模式的角度浅谈List列表应用程序开发。 2、列表应用程序开发三要素。控件、数据、适配器。 一、综述&#xff1a; 1、Android中&#xff0c;使用ListView配合Adapter来展示数据列表的例子随处可见。但在实际应用场景中&#xff0c;数据源类型、V…

推荐系统中的Embedding应用

文章目录 1. Word2Vec1.1 Skip-gram 2. Airbnb中的Embedding2.1 用在相似推荐中的List Embedding2.1.1 优化一&#xff1a;Booked Listing as Global Context2.1.2 优化二&#xff1a;Adapting Training for Congregated Search2.1.3 冷启动问题2.1.4 效果评估 2.2 用在搜索推荐…

APP设备数据的特征衍生与模型应用

在信贷风控领域众多维度的数据源中&#xff0c;APP设备数据对于策略规则的开发、模型变量的筛选有着重要的贡献&#xff0c;理由是在当今电子信息化时代&#xff0c;APP数据可以较全面地反映出用户的个人习惯、日常行为等综合信息。因此&#xff0c;金融机构在开展个人信贷产品…

风控建模十二:数据淘金——如何从APP数据中挖掘出有效变量

风控建模十二&#xff1a;数据淘金——如何从APP数据中挖掘出有效变量 1、常识知识2、个例分析3、分布排查 智能手机的诞生改变了人类的生活方式&#xff0c;智能手机所承载的功能日臻完善、强大&#xff0c;人们在衣、食、住、行、工作、生活中面临的方方面面问题&#xff0c;…

2021-03-07 大数据课程笔记 day46

R星校长 机器学习06【机器学习】 主要内容 理解推荐系统处理数据流程。python 文件预处理 Hive 数据。dubbo 服务使用。 学习目标 第一节 推荐系统-数据处理流程 推荐系统数据处理首先是将 Hive 中的用户 app 历史下载表与 app 浏览信息表按照设备 id 进行关联&#xff0c…

java手机应用安装目录_如何获得Android手机的软件安装列表

Android的PackageManager类用于检索目前安装在设备上的应用软件包的信息。你可以通过调用getpackagemanager()得到PackageManager类的一个实例。对查询和操作安装包和相关的权限提供了方法&#xff0c;在下面这个Android的例子中&#xff0c;我们得到了在Android安装的应用程序…

这些信贷数据埋点中不得不知的埋点知识

国庆七天假&#xff0c;就这样飞快结束&#xff0c;似乎感觉还没休息够&#xff0c;再来一个七天都不觉得多多。 经过多年来移动互联网的普及&#xff0c;众多APP已采集到亿级乃至数十亿级别用户在设备端、通话、短信、地址等强变量的数据&#xff0c;伴随着近年来信贷行业高速…

新浪微博开发(五)AppList界面

这是客户端开发部分很重要的一个类&#xff0c;但是在开发之前需要用到有关GridView的知识。 若要临时充充电&#xff0c;请移步&#xff1a;GridView(九宫图)的使用介绍。 下面是AppList类的代码&#xff1a; /* * 用来显示、管理自己的微博账号&#xff0c;包括新浪微博账号…

使用react+redux+react-redux+react-router+axios+scss技术栈从0到1开发一个applist应用

先看效果图 github地址 github仓库 在线访问 初始化项目 #创建项目 create-react-app applist #如果没有安装create-react-app的话&#xff0c;先安装 npm install -g create-react-app 目录结构改造 |--config |--node_modules |--public |--scripts |--src|-----api //…

【无标题】https://e-cloudstore.com/ec/api/applist/index.html#/

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

AppList数据处理

本文参考: 风控数据—手机App数据挖掘实践思路 引言 作为移动互联网时代的主要载体,智能手机逐渐成为人们日常生活中不可或缺的一部分,改变着人们的生活习惯。比如,可以用“饿了么”点外卖,“支付宝”可以用来种树,“抖音”可以用来上厕所......强大的App给我们的生活带来…

Faststone capture注册码

转载整理 很好用的图片编辑软件&#xff01; 企业版序列号&#xff1a; name&#xff1a;bluman serial/序列号/注册码&#xff1a;VPISCJULXUFGDDXYAUYF FastStone Capture 注册码 序列号&#xff1a; name/用户名&#xff1a;TEAM JiOO key/注册码&#xff1a;CPCWXRVCZW30H…