深入浅出对话系统——基于预训练语言模型的对话管理

引言

主要讲解三篇论文,主要思想是把自然语言理解、对话管理和自然语言生成三部分整合到一起。

先导知识

数据集

  • CamRest676
  • MultiWOZ

都是用的自回归语言模型

  • causal
  • GPT-2、Transformer Decoder

一个概念:delexicalization

  • 通过相应的占位符替换特定的槽值
    • 占位符作为特定的token,不关心具体的取值
  • 学习取值无关的参数

首先来看第一篇论文

SimpleTOD

在这里插入图片描述

来自论文A Simple Language Model for Task-Oriented Dialogue。
主要做的工作是:

  • 采用causal 语言模型(GPT-2)
  • 把整个TOD转换成序列预测问题
  • 损失函数为最大似然
  • 把整个TOD分为几个子任务,建模子任务之间的依赖

TOD指任务导向型的对话系统。

在这里插入图片描述
模型的输入是所有的对话历史:
C t = [ U 0 , S 0 , ⋯ , U t ] C_t=[U_0,S_0,\cdots, U_t] Ct=[U0,S0,,Ut]
其中 U 0 U_0 U0是用户输入的第一句话; S 0 S_0 S0是系统回复的第一句话;

然后把这个上下文输入给SimpleTOD模型:
B t = SimpleTOD ( C t ) B_t =\text{SimpleTOD}(C_t) Bt=SimpleTOD(Ct)
会输出一个belief state,包含domain,slot_name和value。相当于做了NLU+DST的工作。

接下来要做对话动作生成,此时把 C t , B t C_t,B_t Ct,Bt和查询结果 D t D_t Dt拼接起来,再输入给SimpleTOD模型:
A t = SimpleTOD ( [ C t , B t , D t ] ) A_t =\text{SimpleTOD}([C_t, B_t, D_t]) At=SimpleTOD([Ct,Bt,Dt])
生成动作 A t A_t At
最后生成响应时把上面所有结果拼接,输入给SimpleDOT模型:
S t = SimpleTOD ( [ C t , B t , D t , A t ] ) S_t =\text{SimpleTOD}([C_t, B_t, D_t,A_t]) St=SimpleTOD([Ct,Bt,Dt,At])
来生成回复。这里会涉及到delexicalization,比如上图中的[value count],这里表示这个值是从数据库中查询的结果,不关心具体的值。

在这里插入图片描述
训练过程如上图所示,a)训练就是把用户的输入、系统的回复、belif state、DB查询结果、生成的动作等基于语言模型的要求作为一个token序列喂给SimpleTOD。

在这里插入图片描述
其中 x = ( x 1 , ⋯ , x n ) x=(x_1,\cdots,x_n) x=(x1,,xn) x t = [ C t ; B t ; D t ; A t ; S t ] x^t=[C_t;B_t;D_t;A_t;S_t] xt=[Ct;Bt;Dt;At;St]

b)推理也是先把 C t C_t Ct拼接起来,送给模型,然后会得到一个belief state,然后再把预测的 B t B_t Bt(和查询到的 D t D_t Dt)也拼起来继续喂给模型得到 A t A_t At,基于这些来生成回复。

SOLOIST

在这里插入图片描述

来自论文SOLOIST: Building Task Bots at Scale with Transfer Learning and Machine Teaching。
采用预训练-微调范式

  • 自回归语言模型
  • 使用更大的对话语料库预训练
  • 使用一些任务相关的对话微调

使用的模型是Unified Language Model。

我们来看下它的输入和输出。

输入:

  • 历史对话
  • belief state
  • DB state(DB查询结果)
  • delexicalized response

可以用 x = ( s , b , c , r ) x=(s,b,c,r) x=(s,b,c,r)来表示。

预训练时使用task-grouded的预训练,包含

  • 多任务目标
  • 自监督

在微调时用了machine teaching的方法。

模型的训练目标,也是分为说那个任务:Belief State Prediction(DST+NLU)、Grounded Response Generation(NLG)和Contrastive Objective(自监督)。

它输入中的历史对话和SimpleTOD有一些区别,这里只有用户说的话,没有系统的回复。

通过以下方式建模:
在这里插入图片描述
其中主要有两个任务:
在这里插入图片描述
在这里插入图片描述

最后使用对比损失,将输入中的词以50%的概率随机替换:

在这里插入图片描述
上面说的machine teacher实际是指通过人工更正模型输出的结果:

在这里插入图片描述

UBAR

在这里插入图片描述

来自论文UBAR: Towards Fully End-to-End Task-Oriented Dialog System with GPT-2

作者尝试把完整的对话历史喂给模型,还是基于GPT-2模型,基于用户的输入,需要预测blief state、system action和system response。

架构类似SimpleTOD和SOLOIST的结合体,任务类似SOLOIST的。

在这里插入图片描述
从上图可以看到,其中最上面表示模型的输入,是完整的对话历史。U代表用户的输入;B是需要预测的Blief State,A是Action,R是Response,D是数据库查询。

在这里插入图片描述
上面是一个输入的范例。
在belief state中对domain和slot value进行解耦;同时在system act中也对domain和action进行解耦。

参考

  1. 贪心学院课程
  2. A Simple Language Model for Task-Oriented Dialogue
  3. SOLOIST: Building Task Bots at Scale with Transfer Learning and Machine Teaching
  4. UBAR: Towards Fully End-to-End Task-Oriented Dialog System with GPT-2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/2780.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于IMX6ULL的AP3216C的QT动态数据曲线图显示

前言:本文为手把手教学 LinuxQT 的典型基础项目 AP3216C 的数据折线图显示,项目使用正点原子的 IMX6ULL 阿尔法( Cortex-A7 系列)开发板。项目需要实现 AP3216C 在 Linux 系统下的驱动,使用 QT 设计 AP3216C 的数据显示页面作为项目的应用层。…

websocket发布到iis之后无法创建连接访问

在做websocket测试时在本地的服务可以正常访问,在调试成功之后发布到了iis中,发现无法连接,这时可能有以下几个原因。 WebSocket无法连接到IIS: IIS版本不支持WebSocket:IIS 8.0及更高版本才支持WebSocket&#xff0…

从小白到大神之路之学习运维第61天--------Ansible自动化运维工具(playbook配置文件深入了解)

第三阶段基础 时 间:2023年7月14日 参加人:全班人员 内 容: playbook配置文件 目录 playbook配置文件 一、playbook配置文件概念 修改hosts文件 建立playbook配置文件 yml脚本写法注释: 二、Playbook的核心元素 三、…

如何破解中小企业数字化转型难点?建议来了!

打开任何一个搜索引擎,只要输入“中小企业数字化转型”,关于痛点、难处的文章就会铺面而来,难在哪里,其实很好解答,关键在于,如何解决这一个个难处。 PS:给大家整理了一份完整版的《中小企业如…

汽车供应链专场对接会 | 8月25日大会同期活动

爱普搜汽车供应链对接会,是根据采购商的项目需求,有针对性地组织全国各地采购商与供应商,进行面对面交流与沟通,促成实质性交易。参会群体为汽车行业制造型企业、主机厂、Tier1/2。 供应商在参加对接会前已做足功课,现…

C语言-ubuntu下的命令

目录 linux命令 【1】打开关闭终端 【2】终端 【3】ls命令 【4】cd 切换路径 【5】新建 【6】删除 【7】复制 【8】移动 【9】常用快捷键 【10】vi编辑器 【11】简单编程步骤 任务: linux命令 【1】打开关闭终端 打开终端: 1. 直接点击 …

File格式转换MultipartFile格式的例子

首先&#xff1a;需要先引入依赖包 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.3.9</version> </dependency> 1.Multipartfile转File类型 //创建一…

一零六四、世界杯数据可视化分析(阿里云天池赛)

目录 赛制官方链接 活动背景 活动时间&#xff1a;即日起-12月31日17点 数据说明 世界杯成绩信息表&#xff1a;WorldCupsSummary 世界杯比赛比分汇总表&#xff1a;WorldCupMatches.csv 世界杯球员信息表&#xff1a;WorldCupPlayers.csv 代码实现 赛制官方链接 世界杯…

视频融合平台EasyCVR登录后通道数据及菜单栏页面显示异常的排查与解决

EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等&#xff0c;能对外分发RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。 有用…

docker基础1——架构组成、安装配置

文章目录 一、发展起源1.1 传统虚拟化与容器虚拟化1.2 docker底层核心技术1.2.1 命名空间1.2.2 控制组 1.3 docker工作方式1.4 docker容器编排1.5 docker优劣势1.6 docker架构组成 二、yum安装docker三、配置docker加速器 一、发展起源 背景了解&#xff1a; 容器是内核里的一项…

上市公司前端开发规范参考

上市公司前端开发规范参考 命名规则通用约定文件与目录命名HTML命名CSS命名JS命名 代码格式通用约定HTML格式CSS格式JS格式注释 组件组件大小单文件组件容器组件组件使用说明Prop指令缩写组件通讯组件的挂载和销毁按需加载第三方组件库的规定 脚手架使用规范移动端脚手架PC端脚…

前端 Jenkins 自动化部署

由于公司使用自己搭建的 svn 服务器来进行代码管理&#xff0c;因此这里 Jenkins 是针对 svn 服务器来进行的配置&#xff0c;其实跟Git 配置基本一致。 在没有自动化部署前 之前项目每次修改之后都需要本地 ​​npm run build ​​一次手动发布到服务器上方便测试和产品查看…

Jenkins | 获取凭证密码

目录 方法一&#xff1a;查看所有账号及密码 方法二&#xff1a;查看指定账号密码 方法一&#xff1a;查看所有账号及密码 Jenkins > 系统管理 > 脚本命令行 com.cloudbees.plugins.credentials.SystemCredentialsProvider.getInstance().getCredentials().forEach{i…

nginx基础1——工作原理、安装配置、命令参数

文章目录 一、基本了解1.1 特性优点1.2 功能应用1.3 工作模块分类1.4 模块配置方法 二、工作原理三、安装与配置四、常用命令 一、基本了解 nginx简介&#xff1a; nginx是一款轻量级的Web服务器、反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器&#x…

前端学习——ajax (Day1)

AJAX 概念和 axios 使用 axios 使用 练习 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" …

SpringBoot 整合 RabbitMQ demo

Rabbit Windows安装教程 本文只做Demo案例的分享&#xff0c;具体只是需自行百度 一、生产者 1.application.properties 配置Rabbit的基本信息 #rabbit 主机IP spring.rabbitmq.host127.0.0.1 #rabbit 端口 spring.rabbitmq.port5672 #rabbit 账号 可自行创建 这里是默认的 …

网络知识整合——Web页面请求的历程

Web页面请求的历程 内部涉及知识&#xff1a;一、准备:DHCP、UDP、IP 和以太网二、仍在准备&#xff1a;DNS和ARP三、仍在准备&#xff1a;域内路由选择到DNS服务器四、Web客户-服务器交互&#xff1a;TCP和HTTP五、HTTP请求响应格式Requests部分Responses 部分 下载一个Web页面…

ES6迭代器、Set、Map集合和async异步函数

目录 迭代器 Iterator 的作用 Iterator 的遍历过程 Set Map集合 map和对象区别? async异步函数 迭代器 迭代器&#xff08;Iterator&#xff09;就是这样一种机制。它是一种接口&#xff0c;为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署Iterator接口&…

介绍性能压力测试的重要性

在当今数字化时代&#xff0c;软件和应用程序的性能对于用户体验和业务成功至关重要。为了确保系统在面临高负载和压力时能够正常运行&#xff0c;性能压力测试成为一项不可或缺的活动。本文将介绍性能压力测试的重要性。 性能压力测试是一种通过模拟实际场景中的负荷和用户访问…

2023-7-19-第二十式迭代器模式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…