Chapter7-12_Controllable Chatbot

文章目录

  • 1 Chatbot面临的问题
  • 2 控制Chatbot的输出
    • 2.1 直接Finetune
    • 2.2 输入添加控制特征
    • 2.3 只有独白
  • 3 展望

本文为李弘毅老师【Controllable Chatbot】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。

下文中用到的图片均来自于李宏毅老师的PPT,若有侵权,必定删除。

文章索引:

上篇 - 7-11 Deep Learning for Question Answering (2/2)

下篇 - 7-13 Dialogue State Tracking (as Question Answering)

总目录

1 Chatbot面临的问题

什么是Chatbot这里就不多说了,顾名思义,就是聊天机器人。Chatbot是一个很难的问题,但我们其实可以先把它抽象得很简单,认为这就是一个seq2seq的问题。训练的时候,就找一大堆语料,分别是一个人说的前一句,和另一个人接的下一句,然后直接train。这样会有一个非常致命的问题,就是同一个句子,不同人说出来是不一样的,这也就导致了找来的语料当中,同样的输入,对应的输出有非常多种。比如问年龄的时候,不同年龄的人的回答必然是不一样的。

1

直接用seq2seq的方法train出来的模型产生的对话会长下面这个样子,同样的问题,换一个方式问,出来的结果就自相矛盾了。
2

除此之外,这样train出来的模型会偏向于用比较单调和无聊的句子来回答问题,比如"I don’t know"是一个高频的回答,因为这样的结果是合理的,但这并不是我们希望模型回答的。

总结一下,有两个问题:

  • 回答的结果前后矛盾
  • 回答的结果太过单调

2 控制Chatbot的输出

要控制Chatbot的输出,我们可以给Chatbot增加一些限定条件。限定条件可以是人物设定,可以是人物的情绪,也可以是某个特定的人物。
3

限定了之后,机器的回答会变成下面这样。下图的上半是限定情绪的结果,下半是限定了特定人物的结果,都是模型跑出来的真实例子。
4

那么如何训练出可以限定条件的Chatbot呢?有三种方法,下面来逐个讲述。

2.1 直接Finetune

最直接的方法就是,先用一大堆语料来预训练Chatbot,然后再找限定条件的语料来finetune。这样的问题是,我们一般没法找到大量的限定条件的语料,这会导致模型很容易过拟合。要解决这个问题的话可以参考元学习的方法,这不是本文的重点,不多做介绍。
5

2.2 输入添加控制特征

我们也可以在输入句子的结尾加一个控制输出的特征。举个例子,可以对同一个问题的不同回答进行一个分类,然后在输入的时候,把这个类别作为一个特征也输入进去。这样train出来的模型,就可以通过控制这个输入的特征来控制输出了。这样的语料数据可以是其他模型跑出来的,也可以是人标注的。A Persona-Based Neural Conversation Model就是这种方法的一个经典例子。
6
有一篇叫做CTRL: A Conditional Transformer Language Model for Controllable Generation的文章就是用的这种方法来训练一个language model。一般的language model在训练的时候,我们会找一大堆语料,然后让模型在看到给定的tokens的情况下,预测出接下来的tokens是什么。CTRL这篇文章会在句子的最前面加上这个语料的来源,来源可以是Wikipedia,可以是Books,甚至是一个网址等等。不同的来源,句子的风格是不一样的。
7
然后我们用这样训练得到的模型来进行句子的生成,发现模型竟然知道哪一年的美国总统是哪位。

8

在Chatbot的训练中,有这样给定了条件的公开数据集,比如Persona-Chat。这个就是facebook找了一堆人,然后告诉他们自己的人设是什么,然后让他们对话得到的语料库。

训练的方法也出奇地简单,直接把对人设的形容文字加到句子的开头,放进BERT去训练就可以了。TransferTransfo就是这样做的,作者在训练的时候,还会去故意打乱描述人设的句子,因为这些句子间是无序的。
9

2.3 只有独白

有些时候,我们只能拿到某个人设的个人独白,没法获取到他的对话。这个时候,我们也是可以训练一个Chatbot来模仿该人设对话的。方法有很多种,下面依此介绍

(1)从已有的独白当中选取最有可能的回复。这种方法就保证了,回复必然是该人设说过的某句话。

(2)用独白训练一个language model,然后用这个language model来影响 Chatbot的输出.

(3)用一个反向的模型来预测独白中的某句话,是需要问话人说怎样的句子才会说来的。用这种方法来制造数据。

(4)用有问有答的语料训练一个seq2seq模型,同时用独白训练一个auto encoder。然后在训练的时候,两个模型的decoder用的是同一个。这样可以保证输出与独白的风格类似。

10

(5)用Reinforce Learning或者GAN的方法,训练一个classifier来判断输出的句子和独白的风格是否相似。

11

3 展望

有时候,Chatbot说出来了一个positive的句子,但在整个对话中可能是讽刺的意思。我们下一步的目标应该是如果希望Chatbot的对话是positive的,那Chatbot的整个对话给人的感觉应该是postive的,而与Chatbot本身说的话是positive还是negative无关。
12

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

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

相关文章

十三、PHP框架Laravel学习笔记——构造器的 where 派生查询

一.where 派生查询 orWhere()方法,可以通过连缀实现两个或以上的 or 条件查询; //where() orWhere 实现 or 条件查询 $users DB::table(users) ->where(price, >, 95) ->orWhere(gender, 女) ->toSql(); 通过闭包&#xff0…

Chapter7-13_Dialogue State Tracking (as Question Answering)

文章目录1 什么是Dialogue State Tracking2 数据集3 两个挑战4 经典模型本文为李弘毅老师【Dialogue State Tracking (as Question Answering)】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。 下文中用到的图片均来自于李宏毅老师的PP…

Migrate Instance 操作详解 - 每天5分钟玩转 OpenStack(40)

Migrate 操作的作用是将 instance 从当前的计算节点迁移到其他节点上。 Migrate 不要求源和目标节点必须共享存储,当然共享存储也是可以的。 Migrate 前必须满足一个条件:计算节点间需要配置 nova 用户无密码访问。 下面是 Migrate instance 的流程图 …

十四、PHP框架Laravel学习笔记——构造器的排序分组、子查询

一.排序分组 使用 whereColumn()方法实现两个字段相等的查询结果; //判断两个相等的字段,同样支持 orWhereColumn() //支持符号create_time,>, update_time //支持符号支持数组多个字段格式[create_time,>, update_time] $users …

python找不到文件怎么办_python open找不到文件怎么办?

推荐教程:《python视频教程》 python open找不到文件怎么办? python open找不到文件的解决办法: 在python和很多程序语言中"\"转义符号,要想输出\有两种方法,一是多加一个\写成\\ ,一是在字符串前加一个r,提…

css:蓝环章鱼

css&#xff1a;蓝环章鱼 许多海洋生物色彩艳丽&#xff0c;这次用css仿制一下蓝环章鱼的蓝环 <script type"text/javascript" src"http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script> <script type"text/javascript&quo…

论文阅读 - Jukebox: A Generative Model for Music

文章目录1 概述2 什么是VQ-VAE2.1 Auto-encoder(AE)2.2 Variational AutoEncoder(VAE)2.3 Vector-Quantized Variational AutoEncoder(VQ-VAE)2.4 VQ-VAE-23 Music VQ-VAE4 Prior and upsamplers5 Lyrics Conditioning参考文献By learning to produce the data, we can learn t…

十五、PHP框架Laravel学习笔记——构造器的 join 查询

一&#xff0e;join 查询 使用 join 实现内联接的多表查询&#xff0c;比如三张表进行 inner join 查询&#xff1b; $users DB::table(users) ->join(books, users.id, , books.user_id) ->join(profiles, users.id, , profiles.user_id) ->select(users.id, user…

论文阅读 - Group Normalization

文章目录1 概述2 几种normalization的方法2.1 Batch Norm2.2 Layer Norm2.3 Instance Norm2.4 Group Norm3 效果对比参考文献1 概述 Group Nomralization的提出是为了解决一张GPU上能容纳的batch_size很小&#xff0c;导致模型训练效果显著变差的问题。随着深度学习的快速发展…

十六、PHP框架Laravel学习笔记——构造器的增删改

一&#xff0e;增删改操作 使用 insert()方法可以新增一条或多条记录&#xff1b; //新增一条记录 DB::table(users)->insert([ username > 李白, password > 123456, email > libai163.com, details > 123 ]); //新增多条记录 DB::table(users)->insert…

git如何切换分支_拜托,不要再问我Git分支如何使用

今天来讲讲我使用Git分支的一些经验&#xff0c;记录一下&#xff0c;希望对大家有帮助。阐述在平常开发中&#xff0c;一般都会对应三种环境&#xff0c;本地环境、测试环境、线上环境。开发的基本流程都是先在本地环境开发好,再把代码发布到测试环境测试&#xff0c;最后再发…

搞懂HMM

文章目录1 概述2 符号说明3 两点假设4 Evaluation4.1 前向算法&#xff08;forward algorithm&#xff09;4.2 后向算法&#xff08;backward algorithm&#xff09;5 Learning6 Decoding参考资料1 概述 本文是B站上机器学习-白板推导系列(十四)-隐马尔可夫模型HMM的学习笔记&…

书店售书最低价格问题

书店针对《哈利波特》系列书籍进行促销活动&#xff0c;一共5卷&#xff0c;用编号0、1、2、3、4表示&#xff0c;单独一卷售价8元&#xff0c; 具体折扣如下所示&#xff1a;本数 折扣 2 5% 3 10% 4 …

十七、PHP框架Laravel学习笔记——模型的定义

一&#xff0e;默认设置 框架可以使用 Eloquent ORM 进行数据库交互&#xff0c;也就是关系对象模型&#xff1b; 在数据库入门阶段&#xff0c;我们已经创建了一个 User.php 模型&#xff0c;如下&#xff1a; php artisan make:model Http/Models/User //默认在 app 目录 …

centos 启动一个redis_基于prometheus+grafana体系监控redis缓存服务

概述前面已经介绍了怎么用prometheus监控mysql数据库&#xff0c;今天主要分享下怎么去监控redis服务。由于没有redis环境&#xff0c;所以用docker模拟了一下。一、Docker部署1、下载sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.…

十八、PHP框架Laravel学习笔记——模型的增删改

一&#xff0e;增删改操作 新增方法如下&#xff0c;注意&#xff1a;默认模型接管 created_at 和 updated_at&#xff1b; $users new User(); $users->username 辉夜; $users->password 123; $users->email huiye163.com; $users->details 123; $use…

搞懂语音去噪

文章目录1 概述2 传统语音去噪2.1 谱减法2.2 维纳滤波法3 深度语音去噪参考资料1 概述 语音去噪(noise reduction)又被称为语音增强(speech enhancement)&#xff0c;主要是针对于有人声的音频进行处理&#xff0c;目的是去除那些背景噪声&#xff0c;增强音频中人声的可懂性(…

软件架构设计案例_透过现象看本质:常见的前端架构风格和案例

所谓软件架构风格&#xff0c;是指描述某个特定应用领域中系统组织方式的惯用模式。架构风格定义一个词汇表和一组约束&#xff0c;词汇表中包含一些组件及连接器&#xff0c;约束则指出系统如何将构建和连接器组合起来。软件架构风格反映了领域中众多系统所共有的结构和语义特…

十九、PHP框架Laravel学习笔记——批量赋值和软删除

一&#xff0e;批量赋值 上一节增删改中&#xff0c;新增中我们发现需要进行批量赋值的许可&#xff1b;一般情况下&#xff0c;是为了防止提交过来的字段在部分场景中不需要或不能&#xff1b;所以&#xff0c;我们需要通过黑白名单机制进行过滤掉必要的字段&#xff1b; //通…

speech production model

文章目录1 概述2 source model3 filter model4 小结参考资料1 概述 本文的目的是为了厘清在speech production model中source model和filter model所扮演的角色&#xff0c;不涉及具体公式的推导或者模型的建立&#xff0c;只是为了把这两个model在干什么事情说明白。文中用到…