团员分享_干货整理_北理工对话系统、NLP博士生论坛_@沛康_20180702
2020年8月28日 更新
开启更多功能,提升办公效能

前言:6.23日团员@沛康 去北理工参加了由paperweekly联合北理工、清华大学举办的NLP方向的博士生论坛。本次论坛主要偏向于NLP领域前沿技术的学术讨论,其中有两人的内容理解门槛较低,在此分享给大家。


一、商用的对话机器人技术及挑战(吴金龙_爱因互动技术合伙人)


  1. 对话机器人简介


对话机器人历史悠久,从1966年MIT的精神治疗师机器人ELIZA到现在已有半个世纪。但现代意义的机器人其实还很年轻。检索型单轮对话机器人得益于搜索引擎的商业成功和信息检索的快速发展,目前技术上已经比较成熟最近学术界和工业界也积极探索深度学习技术如Word2vec、CNN和RNN等在检索型机器人中的使用,进一步提升了系统精度。虽然技术上较为成熟,但在实际应用中检索型机器人还存在不少其他问题。例如,很多企业历史上积累了大量非结构化数据,但这些数据并不能直接输进检索型机器人,而是需要事先通过人工整理。即便有些企业存在一些回答对的数据可以直接输入检索型机器人,但数量往往只有几十到几百条,非常少。可用数据的质量和数量限制了检索型机器人的精度和在工业界的广泛使用。


  1. 对话机器人未来趋势


吴博士认为,在未来3-5以对话的方式提供服务,完成用户指令,会成为主流的人机交互方式。未来的对话机器人主要分为三类:个人信息助理、客服/导购机器人和泛娱乐/教育聊天机器人。

CUI是个性化推荐、定向广告、数据挖掘、领域知识与模型等技术与用户之间的粘合剂。


  1. DeepBot对话框架


真实应用中通常会包含多个不同类型的机器人,它们协同合作,解答用户不同类型的问题。我们把协调不同机器人工作的机器人称之为路由机器人(Route-Bot)。路由机器人根据历史背景和当前query,决定把问题发送给哪些机器人,以及最终使用哪些机器人的答复作为提供给用户的最终答复。

下图是以路由机器人搭配闲聊机器人、知识图谱机器人、任务多轮机器人、检索单轮及闲聊机器人等构成的对话框架。



  1. 不同模块机器人架构介绍:FAQ-BOT


检索型单轮机器人(FQA-Bot)涉及到的技术和信息检索类似,如下图所示。

在上述架构之外,检索单轮机器人会面临很多query和候选答案包含词很少的问题,这里会利用同义词和复述等技术对query和候选答案进行扩展和改写。词表示工具Word2vec、GloVe、Fasttext等可以获得每个词的向量表示,然后使用这些词向量计算每对词之间的相似性,获得同义词候选集。当然同义词也可以通过已经存在的结构化知识源如WordNet、HowNet等获得。复述可以使用一些半监督方法如DIRT在单语语料上进行构建,也可以使用双语语料进行构建。PPDB网站包含了很多从双语语料构建出来的复述数据集。权重计算方法经常会和余弦相似度(cosine similarity)一同使用于向量空间模型中,用以判断两份文件之间的相似性。


匹配算法方面,吴博士介绍了两种最常用的深度匹配模型,左图为QA匹配,即用户的query和QA pairs中的answer进行匹配;右图为QQ匹配,即query和QA pairs中的question进行匹配。其中QQ匹配比较常用,采用了RNN的编码模型,先对query和question向量化后,进行编码,然后计算相似性,进入全连接层,最后归一化,计算出相似概率。


以上的两种匹配模型,存在两大问题:词的重要性依赖于另一个句子的内容;长距离依赖的关系难以学习,需要降低位置对词重要性的影响。针对以上两个问题,吴博士介绍了引入注意力机制的AttnMatch模型。


此外,吴博士还介绍了两种优化方法:

第一,更好地选择负样本。

如下图左侧例子所示,如果正负样本中关于这类问题的所有描述都有“屏幕”二字,那么模型就会认为“屏幕”二字无关紧要,因此可能会认为“屏幕碎了”和“手机壳碎了”很相似。

所以,在构建负样本集的时候要避免此类情况发生。通过分析错误集和线上实际效果一步步优化负样本的选择。


第二:可以通过匹配的answer的相似性,来判断两个问题的相似性,如下图:

上图中,Q1和Q2的回答都是一样的,因此虽然Q1和Q2问的是两个问题,但是可以处理为高度相似。利用这种思想,可以更好的处理小数据集和OOV(out of vocabulary未登录词)的问题。


  1. 多轮任务型对话机器人:TASK-BOT


任务型多轮机器人(Task-Bot)通过多次与用户对话交互来辅助用户完成某项明确具体的任务,如下图:

关于上图中每个模块的说明:

  • 语言理解(SLU):把用户输入的自然语言转变为结构化信息——act-slot-value三元组。例如餐厅订座应用中用户说“订云海肴中关村店”,我们通过NLU把它转化为结构化信息:“inform(order_op=预订, restaurant_name=云海肴, subbranch=中关村店)”,其中的“inform”是动作名称,而括号中的是识别出的槽位及其取值。NLU可以使用语义解析或语义标注的方式获得,也可以把它分解为多个分类任务来解决,典型代表是Semantic Tuple Classifier(STC)模型。
  • 对话管理(DM):综合用户当前query和历史对话中已获得的信息后,给出机器答复的结构化表示。对话管理包含两个模块:对话状态追踪(DST)和策略优化(DPO)。
  • DST维护对话状态,它依据最新的系统和用户行为,把旧对话状态更新为新对话状态。其中对话状态应该包含持续对话所需要的各种信息。
  • DPO根据DST维护的对话状态,确定当前状态下机器人应如何进行答复,也即采取何种策略答复是最优的。这是典型的增强学习问题,所以可以使用DQN等深度增强学习模型进行建模。系统动作和槽位较少时也可以把此问题视为分类问题。
  • 自然语言产生(NLG):把DM输出的结构化对话策略还原成对人友好的自然语言。简单的NLG方法可以是事先设定好的回复模板,复杂的可以使用深度学习生成模型,如“Semantically Conditioned LSTM”通过在LSTM中加入对话动作cell辅助答复生成。
  • 除了把整个问题分解成上面几个流程分别优化,目前很多学者也在探索使用端到端技术整体解决这个问题。


  1. 对于TASK-BOT,一种较为务实,可以落地的优化思路


关于用端到端的思想试图解决任务多轮机器人的方法,相信大家都看过许多,但是这种方法目前还处于研究阶段,没法落地。吴博士根据工程经验提出了一种比较务实的优化思路。

如上图所示,优化基于平行结构的槽位组合,尝试采用森林结构。

在传统的结构下,由于槽位是平行的,所以槽与槽之间没有依赖关系,在用户进行填槽操作的时候,常有信息冗余的情况。比如在某项任务中,需要了解用户多大,有几个孩子,如果用户只有11岁,那就没必要再问有几个孩子了。

若采用森林结构,可以尝试用机器学习的方法预先设定槽位之间复杂的依赖关系。


  1. 对话机器人,远不止模型数据


在最后,吴博士介绍了一些更偏产品设计的内容,如下图:

1)对于目前的对话系统而言,一定要管理好客户的期望值,很多客户认为很简单的功能,其实很难解决;

2)目前单个机器人/任务的对话还算流畅,但是在多个对话和多个机器人之间的对话还比较糟糕,需要从对话设计的角度突破;

3)机器给出建议,人工最终决定在很多业务下更合适;

4)重视异常检测和处理。


二、更智能的对话系统:情绪、个性和常识(黄民烈_清华大学教授 博导)


黄教授这篇报告比较学术,主要关注在开放域聊天中,如何让对话系统更加智能化,即能具有一定的情绪,个性,并且掌握一定的人类常识。我简单给大家梳理下~


黄教授的团队首次将情感因素引入了基于深度学习的生成模型中,ECM(Emotional Chatting Machine:情绪化聊天机器人)。


  1. 目前开放域对话机器人的普遍问题和技术架构


先看几个例子,下图均是从现在比较成熟的聊天机器人中截取的:


目前开放域聊天机器人普通无法处理以下三个问题:语义理解的问题,个性身份一致性问题,上下文理解的问题。

为何会存在这些问题,可以从目前对话系统的技术架构中得到答案:

  • 基于检索(Retrieval-based):即从回复库中,通过检索相似度/相关性的方式,得到多个备选回复,再从中根据规则最终选出一个,作为回复。

(上一篇中介绍的QQ/QA匹配的模型,是一种深度学习的架构,比起一般方法来较为复杂,而上图是一般检索模型的流程图,比如说基于规则和基于统计。)

  • 基于生成式的方法:下图为引入Atte机制的生成式架构图,是一种多对多的RNN模型,叫做编码-解码模型(Encoder-Decoder)。目前这种模型应该在机器翻译问题上已经得到商用了,但是在对话系统领域,用的还比较少。



总结:基于检索的模型,只是从语料库中检索回答,而生成式的模型,目前还比较初级。目前有不少生成式对话系统的研究工作都将关注点集中于提升生成语句的语言质量,但往往忽略了对人类情感的理解。因此,团队着手研究如何让计算机通过文字方式表达情绪,希望能在人机对话系统中加入感知情绪的成分,能从语言和情感两个维度上生成恰当的回复。


下图为黄教授团队解决该问题的四个方向:

其他研究者普遍关注第一个方向,即内容质量;黄教授这里主要关注后三个方向,即

  1. 如何让机器要拥有「情绪」
  1. 如何让机器人能够产生符合场景的主动式对话;
  1. 如何让聊天机器人拥有身份特征


  1. 情感聊天机器人:如何让机器要拥有「情绪」


ECM 的主要数据来源是新浪微博。ECM 在传统的 Sequence to Sequence 模型的基础上,采用静态的情感向量嵌入表示,动态的情感状态记忆网络和情感词外部记忆的机制,让 ECM 得以根据用户的输入,并基于指定的情感分类(包括快乐、伤感、愤怒、厌烦、好感等五种情绪)输出相应的回复。


下图为架构图(这里看不懂可以略过…):

(简单解释下:首先收集整理微博的帖子和对应的回复语料,然后通过机器学习和人工校核的方式,把每个语料对都打上情绪标签,然后把情绪标签嵌入到解码过程中)


下图为模型效果图:

可以看到对应同一句话,不同的情绪表达差别很大。


  1. 如何主动询问问题:让对话机器人显得更积极


  • 主动询问问题,其实是建立在场景理解的基础上的;

例如,上图中,针对餐厅吃饭的场景,系统要了解一系列相关的背景知识。


  • 好的问题由多样的提问方式,新颖有趣的主题语法常用词组成;


  • 模型分为软解码和硬解码两种类型;

这里是在模型中引入了上面所说的三种类型:提问方式,主题和语法常用词。

(这里感兴趣的同学可以去看对应论文:Learning to ask questions in open-domain cnversation systems. ACL 2018)


  • 模型效果展示

(上图较模糊,红色越深代表相关性越高,可以看到“兔子”对应主题,“吗”对应提问方式)


  1. 如何让聊天机器人拥有身份设定:身份、个性化嵌入


机器要拥有「情绪」,能够更加智能,在黄教授看来需要有两个方面的内容。首先是语义理解,另一个则是身份设定。语义理解不难懂,现在有很多公司及研究机构都在做类似的工作。但身份设定,则是要在聊天进行的过程中嵌入机器人的身份和属性。

当我们在和聊天机器人互动时,最开始往往很好奇的就是对方到底是人还是机器人,所以会问到一些关于对方身份的问题。


  • 黄教授介绍的方法是提前预设好机器人的身份档案,并且做到在相关的问答中做到与设置的一致,就可以让机器人在回答时能够有一定的身份特征。

上图右侧,是为该聊天机器人预设的身份特征。


  • 身份个性嵌入的架构图

模型由三个模块组成:

  1. 一个档案检测器 Profile Detector,一是来决定是否要根据档案来回答,二是根据哪个关键字答复。
  1. 一个双向解码器 Bidirectional Decoder,用于从选定的档案值出发向前和向后生成答复。
  1. 一个位置检测器 position detector,用于预测选定的档案值后要从哪个位置开始解码,把位置传递给 decoder。

流程如下:

  1. 给定一个提问后,先看是否需要用档案内容回答,不需要的话,就用通常的 seq2seq 来生成回复;需要的话,先用 Profile Detector 选择合适的 key-value。
  1. 然后用 Bidirectional Decoder 以这个 value 为起点向前向后生成答复。
  1. position detector 用来改善 training,test 集的差异问题,只在模型训练时用。


  • 模型效果

  • 个性嵌入的挑战性问题



备注:

  1. 由于本次分享偏向于学术交流,为了便于大家理解,我加入了一些基于个人理解的解释说明,可能有不太正确的地方,望多多指正。
  1. 本文参考6.23日北理工博士生论坛,吴金龙、黄民烈的分享,及两篇文章:

https://www.jianshu.com/p/28baebdf24ef

https://blog.csdn.net/qq_40027052/article/details/78723576


以上内容,来自饭团“AI产品经理大本营”,点击这里可关注:http://fantuan.guokr.net/groups/219/ (如果遇到支付问题,请先关注饭团的官方微信服务号“fantuan-app”)


---------------------

饭团团长黄钊hanniman,图灵机器人-人才战略官,前腾讯产品经理,5年AI实战经验,8年互联网背景,微信公众号/知乎/在行ID“hanniman”,饭团“AI产品经理大本营”,分享人工智能相关原创干货,200页PPT《人工智能产品经理的新起点》被业内广泛好评,下载量1万+。