Dialog Studio 是达摩院NLP-小蜜Conversational AI团队研发的面向开发者的智能对话开发平台,目前已经在云(多省市政务12345热线、中移动10086、金融、医疗等)、钉钉(通过钉钉官方智能工作助理服务几百万企业)、集团内(淘宝优酷等十几个BU)、淘宝天猫商家以及Lazada东南亚6国大规模应用。
为了应对疫情,基于 Dialog Studio 紧急开发的智能疫情外呼机器人,截止3月底,总共呼出了1600多万通电话,帮助23个省筛查出了18万健康异常的人员,对话完成率高达90%,在人民网“人民战疫”大赛评为唯一的一等奖。
围绕 Dialog Studio,我们有系列文章:
【1】一个中心+三大原则 – 小蜜这样做智能对话开发平台
【2】自然语言理解-从规则到深度学习
【3】Few-shot Learning 最新进展
【4】EMNLP 2019: 基于 Few-shot learning 的对话意图识别
【5】Dialog Studio - 新一代智能对话开发平台
【6】对话用户模拟器最新进展
【7】小蜜团队万字长文:对话管理模型最新研究进展
【8】ACL 2020: 基于元学习和人机协同的端到端对话模型
上述例子是一个满意度回访调查的场景,由于没有复杂的知识推理、语义解析等,是端到端对话系统特别适用的场景。一般来说,端到端对话模型可分为检索式和生成式,检索式模型就是给定对话历史从预定义回复候选集合中选出最佳回复作为当前系统输出,生成式模型则是给定对话历史直接生成回复。两种方式都可以通过和用户多轮交互完成最终的对话任务。
然而,尽管端到端对话模型简单易用,但是在实际应用中仍然面临着两大常见问题:
Data Scarcity Problem:端到端模型一般需要大量的训练数据,且场景越复杂,需求越大。在云小蜜 Dialog Studio 中的ToB 的业务,不少新场景一开始是没有可用的高质量对话日志的,比如我们已经在政务12345 场景 和 114 移车场景上积累了大量的对话,可以当我们做省信访外呼场景时,一开始只有很少的对话可以使用。因此如何利用已有场景的丰富数据训练一个端到端模型,使其可以快速迁移到缺少数据的新场景上是一个很大的挑战。
Covariate Shift Effect:有限的离线训练数据和真实的在线测试数据之间存在数据分布的差异性,会导致系统在线表现不佳,和离线测试效果不匹配,这种差异性主要来自于未见的用户行为(例如:新槽值、新意图、复杂句等)。例如下图中,训练数据中从未出现过“喂,内容是什么?我忘了反馈什么了” 类似的用户语句,一旦真实上线,模型很容易预测出错误的结果,从而影响用户体验。尤其是当数据量少的时候,模型对于在线数据的鲁棒性会进一步下降。因此如何解决线上线下数据不匹配,提高端到端对话模型的鲁棒性是另一大挑战。
实际上,在云小蜜的业务中,不少场景都存在训练数据少的问题,而客户又需要我们的对话系统能够达到可直接上线的标准。因此综合来看,我们希望提出一种新的对话系统以及对应的训练方法,能够兼具备面对新场景的快速适应性 (fast adaptability)和稳健的在线表现 (reliable performance),能够在低训练资源下依旧能够保证较好的线上效果。
2.1 问题定义
由于回复内容可控,我们采用检索式端到端对话模型,该对话任务是一个分类任务:给定预定义的回复候选集,基于对话历史选择正确回复。如下图所示,模型一般包含: 1)历史编码器(History encoder) ,对整个对话历史进行编码提取对话状态向量,常见模型有 MemN2N,Hierarical RNN 等 ;2)回复编码器 (Response encoder),对每个回复进行编码提取句向量;3)预测器,根据对话状态向量和回复句向量判断出正确的回复,通常就是计算余弦相似度给出。
而在人机协同的框架下,端到端对话模型会多出一个判决器模块,用于判定当前对话是否转人工,如果转人工则交给人工客服解答,否则模型自己给出答案。如下图所示:
2.2. 模型详解
我们沿用了上述的模型结构 [1],但是在每个模块和训练方法上都进行的改进创新。整个 MDS 的框架如下:
和 [1, 4] 一致,对于历史编码器我们采用了一个 MemN2N 模型,对于回复编码器我们使用了一个简单的词向量相加的句向量。模型预测器的部分,我们选择了large margin cosine loss [7] 作为损失函数 L L M C \mathcal{L}_{LMC} LLMC,因为它可以学习更有鉴别性的特征(discriminative features)。针对请求人工的判决器,我们在 [1] 的基础之上提出了一个新的 reward 设置,使用增强学习来进行优化 L R L \mathcal{L}_{RL} LRL。最终,我们使用 MAML [5] 方法对 L = L R L + L L M C \mathcal{L} = \mathcal{L}_{RL} + \mathcal{L}_{LMC} L=LRL+LLMC 进行联合优化,帮助模型找到一组合适的参数,使得预测器和判决器一起快速适应新场景。
2.2.1. Learning to Switch
设第 i i i 个数据为 d i d_i di, 该对话状态向量为 s i s_i si, 回复候选集为 R \mathcal{R} R, 每个回复的句向量设为 r k r_k rk, 判断器的输出整体考虑了 s i s_i si 的信息以及它和各个 r k r_k rk 的 attention 信息,具体计算如下:
σ \sigma σ 是 sigmoid function, F C ( ⋅ ) FC(\cdot) FC(⋅) 是一个全连接网络, W W W 是个 trainable matrix。得到判决器的预测结果后,我们需要设计合适的 reward 使用增强学习来优化。直观来看,一个理想的判决器应当是模型预测错时多转人工,模型预测对时少转人工,这样就能保证整体的转人工率低,且整体 turn ACC (请求人工也算对)高。
reward 设置:设一个batch data 为 m a t h c a l D = d 1 , d 2 , . . . , d i , . . . mathcal{D}={d_1, d_2, ...,d_i, ...} mathcalD=d1,d2,...,di,..., 我们将模型预测错误的 d i d_i di 设为正样本(label=True), 预测正确的设为负样本 (label=False), 判决器判断转人工的数据设为预测正样本( prediction=True), 判断不转人工的设为预测负样本(prediction=False), 然后计算出正样本和负样本的 F1 score,再取平均得到整个 batch 的 得分 s c o r e ( D ) score(\mathcal{D}) score(D), 其中每个数据 d i d_i di 分配到的 reward r i = s c o r e ( D ) − s c o r e ( D − d i ) r_i=score(\mathcal{D})-score(\mathcal{D}-d_i) ri=score(D)−score(D−di)。 RL 的优化我们选择 policy gradient method。
2.2.2. MAML 训练
得到整体的损失函数 L = L R L + L L M C \mathcal{L} = \mathcal{L}_{RL} + \mathcal{L}_{LMC} L=LRL+LLMC 后,我们采用 MAML 算法优化整个模型。
首先需要构造元任务 (meta-task),步骤如下:
采样 K 个对话场景 (每个场景对应一个对话任务)
每个对话任务,采样 N 个对话数据作为支撑集(supoort set),N 个数据作为问询集(query set)
然后 MDS 的 MAML 优化如下:
3.1. 数据集构造
3.1.1 Extended-bAbI
原始的 bAbI [4] 因为是单场景的对话,且初步实验效果发现将其中的 Task1-5 作为元任务效果不佳。因此我们仿造 bAbI 模拟生成了一个更大的多场景端到端数据集称作 extended-bAbI。包含场景有餐馆、机票、酒店、电影、音乐、旅游、天气等 7 个场景,每个场景的训练集/开发集/测试集为 1500/500/1000 个完整对话。 音乐和天气场景的两个对话例子如下所示:
3.1.2. MultiWOZ
MultiWOZ [6] 是最近提出的大型任务对话数据集,也可以用于进行模型评估。为了将 MultiWOZ 简化成 bAbI 对话任务,我们只使用包含 single-domain 的对话,并且进行去词汇化,利用 dialog label 将槽值替换成特定 token,再将 dialog act 进行一定的规整,最终得到端到端对话数据。一个对话例子如下所示。
3.2. Baselines
Mem \textbf{Mem} Mem: 利用 MLE 训练的一个 MemN2N 模型。
MetaMem \textbf{MetaMem} MetaMem: 利用 MAML 训练的 一个 MemN2N 模型。 MetaMem \textbf{MetaMem} MetaMem 和 Mem \textbf{Mem} Mem 都没有请求人工的判决器。
Mem+C \textbf{Mem+C} Mem+C:论文[1] 的人机协同模型。该模型的训练准则和损失函数和我们都不一样。
IDS \textbf{IDS} IDS:论文[8] 提出的 incremental dialog system, 该模型的判决器是一个变分自编码器,通过估计对话的不确定性来判断是否请求人工。
MDS -switch \textbf{MDS}_\text{-switch} MDS-switch: MDS 去掉判决器部分。
MDS mle \textbf{MDS}_\text{mle} MDSmle: MDS 保持模型一致,但是训练方法采用 MLE。
MDS rand \textbf{MDS}_\text{rand} MDSrand: MDS 的判决器替换成一个 请求人工率一致的 random classifier,
3.3. 实验结果和分析
在extended-bAbI 上的结果如下表所示:
request 是请求人工率,accuracy 是含转人工的整体 turn ACC,即转人工或模型预测正确均算对。
可以看到,MDS 的表现优于所有的基线模型,平均在新场景上仅需 10 个对话就可以达到 90% 以上的turn ACC。 使用请求人工的判决器的模型显著好于不使用或者使用random判决器的模型,说明人机协同框架在提高模型整体表现起到重要作用。利用元学习的模型相比不使用元学习的模型,在效果上也有稳定的提高。
MultiWOZ 上的实验结果如下表所示:
由于MultiWOZ是真实的人人对话,因此所有模型的表现都有合理的下降,但是 MDS 相比其他模型依然有明显的优势,在请求人工率相近的情况下有更高的 turn ACC。
参考文献
[1] Rajendran J, Ganhotra J, Polymenakos L C. Learning End-to-End Goal-Oriented Dialog with Maximal User Task Success and Minimal Human Agent Use. ACL, 2019.
[2] Liu B, Tur G, Hakkani-Tur D, et al. Dialogue learning with human teaching and feedback in end-to-end trainable task-oriented dialogue systems. NAACL, 2018.
[3] Dai Y, Li H, et al. Learning Low-Resource End-To-End Goal-Oriented Dialog for Fast and Reliable System Deployment. ACL, 2020. (to be appeared)
[4] Bordes A, Boureau Y L, Weston J. Learning end-to-end goal-oriented dialog. ICLR, 2016.
[5] Finn C, Abbeel P, Levine S. Model-agnostic meta-learning for fast adaptation of deep networks. ICML, 2017.
[6] Eric M, Goel R, Paul S, et al. Multiwoz 2.1: Multi-domain dialogue state corrections and state tracking baselines[J]. arXiv preprint arXiv:1907.01669, 2019.
[7] Lin T E, Xu H. Deep unknown intent detection with margin loss[J]. ACL, 2019.
[8] Wang W, Zhang J, Li Q, et al. Incremental learning from scratch for task-oriented dialogue systems. ACL, 2019.
原文链接
本文为阿里云原创内容,未经允许不得转载。