童丽霞 腾讯客服高级算法工程师作者

基于增量学习的人机协同方案

1 引言

如何做出一个“听得清、解决好、监察快、运营易”的智能客服产品是极有挑战的,不同企业的智能客服产品离这个目标都还存在或大或小的距离。通常我们会标注大量的数据来训练机器模型提升算法的准确性,优化自助化的工具让用户减少交互,用户有人工诉求时及时提供人工响应。即使这样智能客服产品还会经常显得不那么智能,因为算法总是有一定的准确性的,不准确的那部分怎么办?我们的解决方法是人机协同。在智能客服拿不准时由人进行极为轻量的干预,通过人的柔性来矫正智能客服对话的方向,同时有专门的算法来对人进行辅助,确保能以极少的人力来协同机器托起整体的服务大盘。

在智能客服运营过程中出现不智能的情况主要有以下几种:(1)用户对模糊推荐选项多次点击,乱选,机器无法确认用户到底是什么意图;(2)随着对话轮数增加,机器理解越来越困难,会出现听不懂用户而答不上的情况;(3)用户描述不清,系统多次模糊推荐,但用户不选;(4)机器意图识别有误,导致用户情绪不满,谩骂。这些问题的出现会使会话不流畅,部分还会产生风险.为此,本文提出了一种人机结合的实时修正方案,以人工前置干预为核心,以机器辅助修正为技术支撑,用极少的人力尽早实时、高效干预会话,让机器更早更好的听懂用户,降低风险,改善会话体验,缩短会话轮数,同时,系统完整记录人工修正记录,为多轮会话意图识别提供数据支撑,形成发现、反馈、优化的良性循环。

具体而言,随着对人机结合的模式不断探索,人工在干预会话过程中源源不断的产生了大量会话标注数据,形成了海量的数据流。然而,由于随着时间的推移,数据流中部分标签信息会发生变化,出现标签含义变更、失效、新增等问题,传统的分类算法不能很好的适应数据流的变更,这给多轮意图的分类学习提出了新的挑战。我们研究内容主要包含两部分:增量学习方法和分类模型的构造与更新,本文中创新性提出了基于数据流加权的增量学习方法与基于HAN分层思想的多轮意图分类模型,其中,增量学习方法中尝试了线性计算固定权重和自适应动态获取权重两种方式对数据流差异化处理,分类模型基于HAN的思想使用了两层attention机制获得最重要的词和句子,同时使用了LEAM结构获取了更多特征,增强分类效果。

2 增量学习方案

增量学习是一种动态的学习技术,对已学习的知识有记忆功能,能学习新数据流中的有用信息,对其中包含的新类别和已有类别的变迁进行有效处理。传统的增量学习方法是不需要访问已经用于训练分类起的原始数据,定期的将新数据用于扩展现有模型,得到新的模型。这种模式的缺陷在于不能很好体现新旧数据的重要性,然而智能客服中数据流往往有时序性,新数据的知识更新更准,需要被模型重点关注。因而,针对这种标签知识会随着时间变化,在训练集和测试集上的映射不一样,导致在模型在线上不work的情况,本文采用根据时序给样本赋予了不同的权重的机制。具体地,根据数据的标注日期,将所有训练数据按周进行分段,对各段进行权重的设置,越近期的时间段将得到更高的权重,通过特定方式确定好各段时间的权重后,对该段时间的所有样本赋予该权重,在训练时传递到模型中。本文中尝试的权值设置方式有两种:线性计算固定权重和自适应动态获取权重。


2.1 线性计算固定权重

线性权重计算的特点是,按样本时间由远及近赋予持续的线性增加的权重,此时任意相邻时间段的权重差值是相同的。该方式假设权重增长与时间成固定比例,具体包括以下步骤:

1)统计训练数据的时间跨度(公式1),并且按周进行分段,得到分段数(公式2)。其中DlDo分别为训练集中最新、最旧数据对应日期,Ds为训练数据的时间跨度。Ns根为计算得到的分段数。

2)对于给定的目标日期Dt,计算其对应第几时间段Is(公式3)。其中要求Dt属于[Do, Dl]Is=0,1…,Ns-1

3)计算目标日期Dt对应的线性权重Wt(公式4),其中Wt属于[Wb,We], 由于考虑到权重是在神经网络的损失函数中参与优化,不能为零且最好不大于一,故权重范围默认设置为Wb =0.3We =1

      最终,所有该目标日期下的样本赋予线性权重Wt,并参与模型优化。


2.2 自适应动态获取权重

自适应权重计算是将权重作为可学习的变量融入到模型的训练过程中,让模型自行学习到较好的权重组合。根据样本时间,本文提出基于先验知识的权重自适应调节方法,能有效利用外部先验信息,并且在模型训练过程中根据优化指标进行一定程度的自适应动态调节,提高权重设置的合理性和适应性。具体包括以下步骤:

1)利用外部先验知识先计算得到每个样本的先验权重Wt。本文采用的是固定的线性权重计算方式得到。

2)初始化变量。同上文所述,根据训练数据计算得到分段数Ns,初始化可学习的权重向量V,维数为Ns,并且每个样本需要记录其对应第几时间段Is,用以在模型优化时得到该样本对应的可学习权重VIs

3)构造权重损失lossw,并将权重加入到模型优化过程中。在模型训练优化过程中,需将每个样本的先验权重Wt、对应第几个时间段Is以及可学习权重向量V传入模型。假设优化过程中某个batch中样本数量为b,各个样本所对应的先验权重为Wt_1 ,Wt_2 ,…,Wt_b,并取得对应的可学习权重VIs_1 ,VIs_2 ,…,VIs_b。由于此时的权重变量VIs是可学习的,会在模型损失函数优化时计算梯度并进行更新(公式5)lossi为模型计算的每个样本的原有损失、loss为加权后该batch数据的平均损失。同时,为了限制其符合先验知识,使用最小均方误差来衡量可学习权重与先验权重的差别并计算权重损失(公式6),并最终与模型原有损失合并优化(公式7)。

3 多轮会话意图分类模型

 如图1所示,本文提出的层次化编码的多轮意图识别模型,该模型分为句编码层和会话编码层,其中句编码层主要是对每轮的query进行编码,将query中词向量组转换为句向量;而会话编码层则是将多个句向量进行编码得到一个会话级向量,在该向量上进行多标签分类任务。

3.1 句编码层

在句编码层中,首先要对输入的字和词进行向量化得到如图1所示的词向量输入特征Word_Embi={WE1,WE2,...,WEn},i=1...M,其中n为句子中词的个数,M为会话轮数;为了缓解OOV问题以及获得部分字粒度的优势,模型采取字词联合的结构,其结构如图2所示。

 在字词联合结构中,输入字组C={c1,c2,...,cn},其中每个字组ci={ci1,ci2,...,cil},其中l为每个字组中字的个数,总共有n个字组,n为每句中词的个数;对每个字输入cil进行维度为d的随机向量化;随后进行2层的Transformer编码器进行字向量编码以及Mean-pool组合得到最终的字组向量cei;而词向量则是直接对词wi进行预训练词向量向量化,随后将该词向量与cei进行加和操作,得到最终的输入词向量WEi

 随后对句子组sent={Word_Emb1, Word_Emb2,..., Word_Embm},其中m为轮数,使用四层的堆叠的Transformer编码器以及self-attention模块,最终得到句子编码层的句子输出向量SEi;在得到句向量后,我们使用会话编码层中的Label_Matrix标签矩阵对每句话的单轮识别标签做向量化处理,然后与句向量SEi进行加和,得到最终的句向量。

3.2会话编码层

 在得到m个句向量后,对其进行三个编码器的多种特征提取操作,一是基于LEAM的标签-句向量Attention操作,二是双向的GRU操作,用于获取全局信息,三是提取局部特征的多种卷积核CNN编码器;


为捕获标签和句子组间的交互关系,我们参考使用LEAM结构,获取了会话向量SessionEmb1;为获取全局的会话信息,我们构建一个双向的GRU层对句向量组进GRU编码,然后经一个带权重的self-attention层,该权重是对会话中点选进行权重限制,本文中将用户点选数据的attention 权重限制在0.5以下,经self-attention层后得到会话向量SessionEmb2;为获取局部的会话信息,我们构建一个多卷积核的CNN特征提取层,项目中使用四种卷积核进行卷积操作,不做池化操作,将卷积后的特征图进行拼接,使用一个self-attention对特征图进组合,选取最关键的特征图,得到会话向量SessionEmb3。

在得到三种会话向量SessionEmb1,SessionEmb2,SessionEmb3拼接后,输入到全连接层进行分类,计算得到分类损失值cls_loss。同时将Label_Matrix看做一个输出向量,做一层全连接层,与标签的one-hot编码做交叉熵得到标签的损失值label_loss。将cls_loss和label_loss求和后再与样本的权重值相乘得到最终的loss值,继而进行梯度优化,更新模型参数。

4 实验效果

在人机模式的探索过程中,业务平台已经积累了几百万的会话数据,我们对训练数据进行切分,将最新一天的数据作为模型验证集,其他作为模型训练集,为了获取更好的多轮意图模型效果,本文中分别对训练集无加权、线性加权和自适应加权三种数据处理方式进行了模型测试验证,实验发现采用数据加权进行增量学习的方式在Accuracy和F1值上都有所提升,具体情况如下:

数据处理方式

Accuracy

F1

无加权

0.70

0.68

线性加权

0.72

0.70

自适应加权

0.73

0.71

5 总结

多轮会话意图算法在现网部署应用后,每天上万个会话被干预扶正,达到了以少量的人力对智能服务应答不畅的对话进行了实时、高效的捞起与干预的目的,使得智能对话品质率有了大幅提升、会话认怂率平均下降了几个百分点,同时明显降低了认怂、多次点选、多次推荐模糊、不满、辱骂等badcase数据量,进一步降低了用户对人工的诉求,优化了会话体验,客服机器人更显智能;并且,将实时修正的数据源源不断反哺给机器进行训练学习,大幅度提升了多轮意图模型的准确率,保障了为人工提供会话意图推荐能力的质量,使得人工效率越来越高。

云智服前沿
云智服前沿

智能引领服务,服务创造价值。

工程句向量字词联合会话向量智能客服意图识别多轮会话增量学习人机协同
914
请教一下,你们的多轮模型有多少类别?模型轮数是怎么设定的呢?
人机协同干预会话,怎么保证快进快出呢,有整体的系统设计方案么?
1
增量学习在什么场景下使用比较合适了?还有多少数据集量级下才有明显效果?
多轮会话意图识别这个目前来看比较难搞,有没有开源代码?
3
多轮分类中数据获取是个难点,你们怎么获取这部分多轮分类数据?
数据获取有什么难点呢?
看了文章引起了我的一些思考,多轮对话是智能客服最富有技术挑战的地方,也是最容易让用户觉得智能客服不智能的地方,一直没有找到很好的解决方法,本质的原因是机器不具备人的思维能力,这种基于人机协同增量训练的方式应该是当前最科学的做法,我们也在实际环境中学习尝试下。
4
感谢评论,你的思想跟我们很契合,腾讯智能客服团队目前正在招聘有经验的NLP人才,欢迎联系我们sherrytong@tencent.com
1
是否有考虑过不同类别下根据时间不同的自适应权重?是否有类似的实验和结论?
纵观互联网时代的发展历程,PC时代的标签是“简洁”,输入关键词是两秒钟,获得结果是一秒钟,用户追求越快越好的体验;而到了当下,人工智能时代的标签已变成“多轮对话”,用户已不在乎多花几秒钟时间,而是更希望企业帮助他们整理思维过程并在此过程中获得更适合自身情况的结果。多轮这也正是当前挑战很大的问题,从实际应用角度出发,不断挑战尝试,相信这个方向会是将来的智能客服面对的最主要问题。
1
如果采用自适应的加权方式,很好奇最终学得到的权重是怎样的,符合人的直觉吗?
现在市场上的智能客服很多,大部分采取的协同的方式都是人工后置服务,这里说的人机协同的方式挺新颖的,感觉用户体验会有不错的提升,值得探索下
智能客服的核心目的是解决用户问题,给以用户正确的问题答案和解决方案,但是由于业务场景复杂和当下模型准确性等诸多限制,多轮意图识别往往是一个难点和挑战点;文章中提出了增量式的训练模式具有创造性,能够兼顾了人工的逻辑理解能力和模型的快速推断的同时避免了模型的错误率,使得大规模实时用户的意图准确性得到了保障,很大程度上提升了用户体验和解决率;我觉得这种方案值得业界尝试和进一步探索!!
1
感谢评论,怎么让机器更智能是值得深入探究的,腾讯智能客服团队目前正在招聘有经验的NLP人才,欢迎联系我们sherrytong@tencent.com
1