2018年10月31日至2018年11月04日,EMNLP 2018 在比利时首都布鲁塞尔举行,我有幸作为集团代表参加会议,收获很多。会议包含了很多主题,结合我们团队目前正在做的小蜜智能对话开发平台(产品名叫对话工厂,英文名Dialog Studio),在这里重点对语言理解和对话系统等方面的前沿进展做一个介绍。在语言理解方面,一个很重要的进展是胶囊网络(capsule network)开始引入到NLP任务中[3],另外在迁移学习越来越被重视的大背景下,few-shot和zero-shot方面也有不错的论文发表4,我们团队在上半年也开始研究这方面的技术,并且将capsule network和few-shot learning融合提出了induction network,在few-shot的数据集上做到了state-of-the-art,并已经在对话工厂中落地使用。在对话方面,剑桥大学发布了一个交互自然而且具备一定复杂度的数据集MultiWOZ[6],并被评为本次会议的最佳资源论文,在DST[7]、Policy[8]和End-to-End对话[9]方面也都有不错的进展。
关键词:胶囊网络 few-shot learning zero-shot learning DST Policy End-toEnd Dialogue System
1. 胶囊网络在文本分类中的应用
自Hinton的 Capsule 论文[1]《Dynamic Routing Between Capsules》发布起,胶囊网络就已经成为深度学习界研究热点之一,Hinton的第一篇论文仅仅简单介绍了胶囊网络的概念框架和最基本的实现,后续不断推出了capsule框架各部分的改进论文,例如Hinton自己的[2]《MATRIX CAPSULES WITH EM ROUTING》。
本次会中文章[3]《Investigating Capsule Networks with Dynamic Routing for Text Classification》对capsule进行改进并运用到了文本分类中。
1.1. 文章解读
文章的贡献有3点,1) 对capsule的实现有小的改进,2)提出了2种用capsule做分类问题的基本架构,3)在多个测试集上超过现有方法,并在单独的多标签分类部分远超现有方法。
1.2. 文章点评
该文章将capsule用到文本分类中验证了capsule在NLP中的能力,并且在Capsule-B网络结构上效仿了cnn多filter的概念,取得不错的效果。文章不足的点是,(1)Capsule-B中虽然取得了不错的效果,但是最后一层也用了pooling的方式进行衔接,与capsule的初衷有些相悖,结构上还有优化空间,(2)对capsule算法实现进行了改进,但是没有实验表明这些改进究竟起了多大作用。最后比较遗憾的是没有看到Hinton最新的的EM Routing算法。
2. Few-Shot & Zero-Shot
Few-Shot也是今年大热的一个方向,特别是在少样本甚至无样本情况下,对新类别的输入进行理解,是极具诱惑力也极具挑战的一个方向。
本次参会文章[4]《Zero-shot User Intent Detection via Capsule Neural Networks》是该领域的探索,而且又以大热的capsule为网络的基本结构。
2.1. 文章解读
文章的网络结构分为3部分,SemanticCaps做基础的特征抽取而且用BiLSTM取代了CNN DetectionCaps来处理已知标签的数据,Zero-shot DetectionCaps来处理未知标签的数据。
Zero-shot DetectionCaps是该文章的核心,主要目的是希望transfer已知标签数据的知识到未知的标签中,主要利用了attention机制在已知标签中建立了从utterances到已知标签名称文本间的attention信息,例如“Play”单词到标签“PlayMusic”,当未知标签名称和utterances输入进来后,该attention仍能建立起和已知标签一样的关联,例如“Play”单词到标签“AddtoPlaylist”。
文章的效果在2个现有数据集上均超过了现有方法,同时文章实验分析部分还可视化展示出了测试集中,未知标签经过网络之后在低维空间中的聚类情况,表明这样的方法是有效的。
会上的另一篇文章[5]《Few-Shot and Zero-Shot Multi-Label Learning for Structured Label Spaces》也是探索few-shot & zero-shot,区别在于这篇文章中的zero-shot的“抓手”是层次结构的知识库。
2.2. 文章点评
文章尝试将capsule用于zero-shot中,并且还得到了不错的效果,主要利用attention以及capsule routing by agreement。文章不足的点是,(1)在解码过程中,缺乏如何对已知标签和未知标签两条路径如何抉择部分的描述,感觉可以将后两个Caps网络部分合二为一,不区分已知和未知标签,使用统一的voting来处理,(2)zero-shot的“抓手”选定为“标签文本”本身,这个在实际应用中并不太合理。
3. 任务型对话的数据集
要训练出一个理想的dialogue agent,数据质量是至关重要的。一个高质量的task-oriented对话数据集,具备以下特性:多轮、大规模、自然、具备一定复杂性。尽管对话已是机器学习的关键领域,然而可用的数据规模依然很少,阻碍了该研究领域的进一步突破。
本次参会文章[6]《MultiWOZ - A Large-Scale Multi-Domain Wizard-of-Oz Dataset for Task-Oriented Dialogue Modelling》提供了一个交互自然而且具备一定复杂度的数据集MultiWOZ,并且基于该数据集为3个对话子任务构建Benchmark:dialogue state tracking、dialogue-act-to-text generation 和 dialogue context-to-text generation。
3.1. 文章解读
剑桥大学的这篇论文获得了本次会议最佳资源论文,它推出了Multi-Domain Wizard-of-Oz 数据集(MultiWOZ),涵盖多个领域和主题的human-human对话标注数据。其规模为10k对话的大小,比所有先前带标注的面向任务的语料库至少大了一个数量级。论文同时详细描述了数据收集的过程以及数据结构和分析的摘要。数据收集渠道完全基于众包,无需聘请专业标注人员。基于这个语料集,论文报告了一组信念跟踪、对话行为和回复生成的基准结果,显示了数据的可用性,并为未来的研究设定了基线。
3.2. 文章点评
MultiWOZ相比于之前语料,对话的长度和句子的长度都明显增加,dialogue acts也更丰富,而且还是多领域的,数据集规模也达到了10k级别,这为后续的算法研究提供了强有力的数据支撑。文章不足的点是,(1)相比于Google Brain发布的AirDialogue数据集,MultiWOZ没有将分支逻辑(Task Logic)引入进来,和现实情况还存在不小的Gap,(2)该数据集还是先填槽,然后查DB这个逻辑,中间并没有更复杂函数计算逻辑和外部接口调用,和真实落地场景也还是有区别。
4. 对话管理之Dialogue State Tracking
Dialogue State Tracking(DST)是近几年对话系统研究的热点,比较知名的方法主要有:NBT和GLAD。DST的效果好坏是非常关键的,它会影响到Policy的输出效果。目前比较好的模型都是将用户的utterance作为输入,将NLU和DST联合训练,得到一个belief tracker模型。
本次参会文章[7]《Towards Universal Dialogue State Tracking》提出了一种通用的DST:StateNet,它在模型框架上更简洁,效果也达到了state-of-the-art。
4.1. 文章解读
之前的对话状态追踪主要存在以下不足:(1)要求ontology固定,当ontology中的槽位或者槽位值动态更改时无法工作,如NBT-CNN (Mrksic et al., 2017)、GLAD (Zhong et al., 2018)、MemN2N (Perez et al., 2017);(2)模型参数与槽位个数成正比(如GLAD, NBT-CNN);(3)有些模型抽取特征时依赖手工制定的词典等。为了解决上面这些问题,作者提出了StateNet。该模型将每个槽位及每个槽位值都编码为一个向量,每运行一次就可以得到一个槽位对应的所有槽位值的概率分布。实验结果显示,在DSTC2和WOZ 2.0测试集上,Joint goal acc超过以往所有的方法。
4.2. 文章点评
StateNet在模型结构上是比较简洁的,核心还是在于LSTM和2-Norm Distance。相比于GLAD,相当于省略掉了local BiLSTM和local Self-Attention这样的结构,只保留global的结构。相比于NBT,没有采用CNN做特征提取,也没有显式的进行belief update,直接通过LSTM进行当前轮信息和历史信息的融合。文章不足的点是:(1)并没有考虑到槽值不可数的情形,(2)提供的代码没法运行。
5. 对话管理之Policy
对话策略学习一直是对话管理中非常重要的模块,以往的工作更偏向简单的基于填槽的单任务的策略学习,对于复杂任务的对话策略学习研究的较少,研究成果也不够突出。
本次参会文章[8]《Subgoal Discovery for Hierarchical Dialogue Policy Learning》提出了Subgoal Discovery Network (SDN),它将复杂的面向目标的对话拆解为一系列简单的子目标,这个过程不需要人工参与。
5.1. 文章解读
要开发一个完成复杂任务的对话系统还是有挑战性的,部分原因是对话策略需要探索巨大的state-action空间。该论文提出了一种分而治之的方法,可以发现并利用任务的隐藏结构来实现有效的策略学习。首先,给定一组成功的对话会话,作者提出了一个子目标发现网络(SDN),以一种无人监督的方式将复杂的面向目标的任务划分为一组更简单的子目标。然后,使用这些子目标来学习分层策略,该策略包括:1)在子目标中进行选择的top-level策略;2)选择原始动作来完成子目标的low-level策略。他们通过一个旅行规划任务来验证该方法的可行性和效果。基于模拟用户和真实用户的实验表明,利用自动发现子目标训练的agent与有人类定义子目标的agent效果相当,并且明显优于没有子目标的agent。此外,作者还表示学习到的子目标是人类可理解的。
文章的核心算法包括2部分:(1)SDN,作者认为通过识别状态轨迹中的枢纽state来发现子目标等同于将状态轨迹分割成options。受序列分割模型的启发,他们将子目标发现定义为状态轨迹分割问题,并使用SDN解决它;(2)HRL,在分层策略学习中,外部奖励和内在奖励的组合有望帮助agent尽量避免不必要的子任务切换,能尽快成功完成复杂任务。具体算法过程如下:
5.2. 文章点评
该文章基于层次化的方法来解决复杂任务的对话策略学习的问题,还是比较有借鉴意义的,从实验效果和对话样例来看,效果确实不错。文章不足的点是,(1)结构比较复杂,难以复现;(2)学习SDN和HRL是2个分开的过程,如果能结合到一起更好。
6. 对话系统之端到端学习
端到端对话系统学习在chit-chat领域相对比较成熟,但在任务型对话上这种学习策略还不够成熟。谷歌、微软在这方面的研究工作相对比较多,其他研究机构和企业近两年也有一些不错的尝试。
本次参会文章[9]《Learning End-to-End Goal-Oriented Dialog with Multiple Answers》是密歇根大学和IBM研究院共同发表的,他们的目标,不是模仿数据集的所有可能的对话轨迹,而是使用该知识并学习如何更好、更快地完成对话任务。
6.1. 文章解读
在一个对话当中,任何时候都可以有多个有效的下一个话语,比如下面的例子中:
agent说“a) Which price range are looking for ? b) Any preference on a type of cuisine ? c) Where should it be ? ”这三句中的任何一句都是正确的,但目前用于对话的端到端神经网络方法不考虑这一点。在之前的端到端方法中,只有一个回答是正确的,其他的都是错误的。换句话说,在对话中,截止到当前的所有对话信息都可以编码到一个状态向量S中,根据其生成的下一句话只能是一种,其他的可能都被判为错误。作者提出用掩码向量(mask)来解决这个问题,S还是记录了截止到当前的所有对话信息,但是引入一个掩码向量m,S和m相乘后的结果向量作为生成下一句话的依据。这样就保证了生成下一句话的多样性。
作者修改了合成的original-bAbI对话任务,以创建一个更加真实有效的实验田——permuted-bAbI对话任务(已公开发布)。实验表明现有端到端神经网络方法的性能显著下降,对话精度从original-bAbI对话任务的81.5%到permuted-bAbI对话任务的30.3%。实验还表明,他们提出的方法提高了性能,并且在permuted-bAbI对话任务中实现了每个对话的精度达到47.3%。
6.2. 文章点评
本文提出的Mask-memN2N,是在memN2N中加了masking的逻辑,它对Dialog State进行掩码操作,这个想法比较创新。在SL阶段,对话系统从数据集中学习不同的对话回复和行为,它有能力学习多种可能的下一个话语而不会相互矛盾。在RL阶段,对话系统就可以在多个可能行为中找到最适合执行任务的独特行为,从而更高效的完成对话目标。文章提出的方法目前在permuted-bAbI的精度还很低,算法改进空间很大。