对话系统研究进展 - Paperweekly沙龙笔记
# 资料链接
计算未来轻沙龙第1期—对话系统研究进展
视频回顾:https://www.bilibili.com/video/av30997299/
课件下载链接:https://pan.baidu.com/s/1xS7sUmtateXoYwNIAUBGVg
课件下载密码:mh6w
# 1 构建更智能的聊天机器人 清华 黄民烈
# 聊天机器人的挑战:
- 语义- 理解当前内容、上下文、场景
- 一致性- 个性、语言风格、情感和表情
- 主动性- 策略和行为
# 所做的工作:
- 主动性- 表达情感、主动提问、使用不同句式、切换话题
- 一致性- 显式指定个人属性
- 语义理解- 如何结合常识
# Emotional 聊天机器人:
加入情感分析功能(详见4)
# Interactiveness 如何提高交互性:
机器人要学会主动提问。
# 类型化的解码器
问题中一般包含三种词:疑问词,话题词,一般词(用于补全句子内容和语法)
工作:seq2seq时使用Typed decoders,类型化的解码器。在解码器生成每个词的时候,先控制它生成何种类型的词,然后再生成具体的词。
# 控制对话句式
句式:问句,祈使句,陈述句 不同句式可以达到不同的对话目的。
工作:使用CVAE(条件变量自编码器)框架,简单来说,仍然是在生成每个词时控制词的类型,使句子满足给定句式。
# 改变话题
把话题深入(deep,例如下雨就说到带伞)、把话题扩展(wide,例如下雨就说到感冒、在家睡觉)。
工作:加入两个channel,可以根据上下文内容,产生将当前话题更深入的关键词或者更扩展的关键词,然后把两个channel和encoder一起加attention,放到decoder里。
# 一致的个人属性信息
在问及机器人的年龄、家庭等属性时,需要一致的回答。
工作:对某个问题,先检测它是否涉及机器人的个人属性,如果不,则直接走传统方法,否则进入更详细的处理。先提取出涉及哪个属性,然后从预设的属性表中提取出该属性的值。将该值放入双向解码器往两头解码得到一个句子(保证这个词会出现在解码的句子中)。
有个问题,比如问擅长的乐器,答案是钢琴,但训练数据中没出现过钢琴,只出现了小提琴,则可以通过一个position detector确定出训练数据中哪些词可被钢琴代替,然后用小提琴去双向生成,再用钢琴替换生成结果里的小提琴。
# 结合常识
加入常识知识。(详见4)
# 相关链接
- http://coai.cs.tsinghua.edu.cn/ds/ 对话系统技术平台
# 2 开放域对话的新场景和新挑战 微软小冰的探索和实践 刘越
# 小冰是什么
有EQ的聊天机器人,小冰的功能可以赋能给其他机器人(如网易云的多多西西),小冰也可以做个人助理,可以生产内容(新闻、剧本、作曲),跨平台的媒体解决方案(例如给网易新闻自动评论新闻、网易云推荐歌曲)。
(感觉更多变成一个AI相关的热门IP了)
# 开放域对话
对话的一般划分:任务型、信息QA型、通用对话闲聊型
# 小冰核心对话引擎
# 结构
基础层:有基本的生成式、检索式、上下文聊天模型,也有KBQA等QA模型,然后使用一个模型来判断当前对话应该使用哪个模型来做。另外还有Query Understanding 和 User Understanding。
中间层:需要有 Domain 的领域对话模型(例如体育领域),Memory功能记住过往对话,Emotion识别用户情绪并作出反应,Characterization角色化 让小冰赋能更多IP。
最顶层:Session会话层面的控制,管理会话的内容、状态、节奏
# 产品级chatbot的技术挑战
- 上下文、一致性
- 人设和自我认知
- 常识和领域知识
- 对用户事件的记忆和理解
- 情感识别和表达
- 如何满足用户的高期望
- 对话内容可控
- 技术和产品场景的gap
- 系统架构设计
# 开放域对话的新场景:知识型对话,引导型对话,角色化对话
# 知识型对话
需要什么知识?语法、词句、百科常识。面向表示的知识(帮助理解),面向推理的知识(帮助推断)。
知识在聊天中的作用:回答问题;推理使得更有逻辑;对话主题的理解和控制。
如何实现:知识的获取、表示和应用;如何推理
一些探索:KBQA(基于语义解析或者信息检索的从知识库中检索)、基于知识的话题流(引导相关话题,要注意话题的生成、话题转换的时机等)、将知识引入基础对话模型(基于检索的模型,语义匹配等)。
基于知识的理解和推理很难,但可以选择不同层面和不同粒度的场景去实践。(一些小的改进也行)
# 引导型对话
有意识地一步一步引导对话。
主要挑战:
- 何时开始或终止引导(引导要自然,不能乱引导)
- 引导路线规划
- 动态调整引导走向
- 对话流程可学习
# 角色化对话
小冰的技术赋能更多IP。
如何通过对话来塑造一个人物?
- 基础人设:是谁,是什么生物
- 表达方式:语言风格,惯用词
- 概念、观点:需了解所处在世界中的常见概念,有自己对事物的观点等
- 性格特征:内向外向,大五人格
多人场景的挑战:网易云音乐的多多西西,两个机器人参与对话。
- 该谁说话
- 更复杂的上下文
- 角色配合
# 3 Response Editing 吴俣
聊天机器人典型解决方案:基于规则(模板)、生成式、检索式。
# Ensemble 方法
思路:给定query,先去检索出一些回答,然后基于query和这些回答去生成。
之前的方法:检索出来之后把query和回答都表示成向量,然后拼起来,然后去decoder。decoder还可以去copy一些前面的词来增强连贯一致。
想法:prototype改写。举例子,库中数据有一条是,上下文中说到吃甜品,回复说甜品好吃;如果当前聊天,上下文说的是吃蔬菜,检索出和这一条很相似,打算回复 甜品好吃 时,可以根据当前上下文和库中上下文的不同,让模型学会去把甜品改成蔬菜。
优点:检索出来的结果本来就是非常流畅的话了,这个直接在它基础上改写,生成的句子也会很流畅。
背景工作:source句子和target句子进行比较,得到两个插入了哪些词、删除了哪些词的集合,两个集合各自的word embedding相加或者平均之类的得到两个embedding,叫做 edit vector,然后把query以及检索出来的回复,以及 edit vector 一起作为decoder的输入,就能让模型有效学会改写句子,输出是改写后的句子。
当前工作:当前工作就是在背景工作的基础上,source是检索出的结果的上下文,target是当前上下文,这样两个集合的embedding就能表示出两个上下文之间的区别(同时加入了attention,找出哪些词更重要)。然后,把检索出的句子(这点与背景工作不同),以及edit vector 作为输入,让模型输出改写成符合当前上下文的句子。
效果 能够对response的相关度有小幅的提升,能对回复的多样性有很大提高,但缺点是对句子的流畅性有所破坏。
启发: 能否把edit vector的思路,用在其他NLP或者更广泛的其他方面?
# 4 Knowledge Aware Dialogue Generation 周昊
知识驱动的对话生成
# 将常识引入对话生成
什么是常识:柠檬是酸的,树上有叶子,狗有四条腿等。
常识的作用:帮助识别input中的重点词,有助于理解;可根据常识来生成更有质量的回复。
工作:在encoder-decoder模型的基础上,分别加入了knowledge interpreter和knowledge aware generator。
在encoder的rnn每一步时,将该词对应的知识图谱通过graph attention做一个embedding,和词embedding一起放入rnn中。在decoder生成时,每一步输入的是上一个词的embedding和图谱,输出时经过一个knowledge aware generator,这个generator会根据当前输入词去找它的图谱,找一个最相关的实体,判断是否直接把这个实体输出(如果是的话就直接把这个实体作为当前时刻的输出了)。
# 带情感的聊天
理解情感能提升机器人的EQ。既能更好地理解用户的需求,也能避免机器人产生一些不友好的回复。
方法:仍然是在seq2seq结构上的改进。 对语料,使用一个分类器为其标注情感标签。 在decoder中,引入emotional embedding、internal memory、external memory来表达情绪。
internal memory:有一个预先设定的情绪的向量,在decoder每一步时一起输入来指导词的输出,根据这一步输出词的不同修改这个向量作为下一步的输入。类似衰减的感觉(情感一开始最强烈后面就平淡了)。
external memory:在decoder每一步输出时,判断当前是生成一个emotional的词还是生成一个平淡的词(对词表的词进行了情感标注)