近年来,对话式AI(Conversational AI)无论在学术界还是在工业界都在迅猛发展,背后的核心驱动力在于,人机对话在各行各业的实际场景中存在着广泛的需求,并且当前的技术进展已经能够大规模落地应用。以笔者所在的达摩院Conversational AI团队为例,过去几年,通过阿里云智能客服(即云小蜜)产品矩阵,将人机对话在政务、银行、保险、医疗、教育、交通、水利、电力等众多行业进行大规模应用,更在2020年初疫情爆发初期,打造了全国最大的疫情外呼机器人平台,帮助27个省拨打了1800多万通电话,协助政府工作人员进行疫情的摸排防控。
在对话式AI大规模落地应用的过程中,面临众多技术难题,其中一个是低资源小样本的问题。在有大量标注数据的场景,今天的深度学习模型已经能够将问题的解决的比较好了,但在是标注数据很小的场景中,怎么让机器进行学习呢?面对这个难题,过去两年,我们团队从人类的小样本学习机制入手进行思考和研究:人类之所以能够从很小的样本中就能进行很好的学习,主要在于两个能力,一个是归纳(induction)能力,即能够从个例中抽象出通用规则,基于此我们提出了归纳网络(Induction Network),已发表在EMNLP2019;另一个是记忆(memory)能力,即能够将学过的东西记下来并在需要时进行类比,对此我们提出了动态记忆网络(Dynamic Memory),已发表在ACL2020。本文将围绕这些内容进行详细的阐述。
一、 低资源小样本是普遍存在的问题
对话机器人在各行业落地的过程中,无论是在冷启动场景,还是在规模化推广的场景,都面临小样本的问题。
(1)冷启动场景的小样本问题
统计POC环境下的45个对话机器人,总共711个意图,所有意图的训练样本平均只有5.8条,是个典型的小样本问题。
(2)规模化场景的小样本问题
当对话机器人的解决方案成熟后,就可以在同行业同场景中进行规模化推广。在规模化推广过程中,客户还需要针对自己的场景进行个性化的定制,这个过程中新增的大量意图,训练样本数量也都较少。比如,在浙江政务11地市的12345热线机器人进行规模化推广时,会在新的地市出现大量内置意图之外的新意图,其中42%的意图的训练样本数少于10条。
图1 规模化推广中每个新场景都会定制个性化的小样本意图
二、利用Few-Shot Learning解决小样本学习问题
人类非常擅长通过极少量的样本识别一个新物体,比如小孩子只需要书中的一些图片就可以认识什么是“斑马”,什么是“犀牛”。在人类的快速学习能力的启发下,研究人员希望机器学习模型也具备这种能力,对于新的类别,只需要少量的样本就能快速学习,这就是Few-shot learning 要解决的问题。
小样本学习的的目标是模型在大量类别中学会通过少量数据正确地分类后,对于新的类别,只需要少量的样本就能快速学习。如图2所示,形式化来说,few-shot learning的训练集中包含了大量的类别,每个类别中有少量样本。在训练阶段,会在训练集中随机抽取C个类别,每个类别K个样本(总共C×K个数据)构建一个meta-task,作为模型的支撑集(Support set)输入;再从这C个类中抽取一批样本作为模型的询问集(Query set)。即要求模型从C×K个数据中学会如何区分这C个类别,这样的任务被称为C-way K-shot问题。 模型训练的过程中在每次迭代时把支撑集送入模型,并优化模型在询问集上产生的损失函数,这种训练方式一般称为Episode-based meta-training。
图2 Few-shot Learning学习机制
现有的few-shot learning 模型大致可分为三类,如图3所示: Mode Based,Metric Based 和Optimization Based。其中Model Based旨在通过模型结构的设计快速在少量样本上更新参数,直接建立输入x和预测值P的应设函数;Metric Based方法通过度量batch集中的样本和support 集中样本的距离,借助最近邻的思想完成分类;Optimization Based方法认为普通的梯度下降方法难以在few-shot场景下拟合,因此通过调整优化方法来完成小样本分类的任务。具体内容可以参考我们之前的 小样本学习综述。
图3 Few-shot Learning的三种学习范式
三、Few-Shot Learning存在的挑战
小样本学习从研究到产生实际的应用价值还存在两个重大挑战:一是从样本级别的表示中归纳出类级别的表示,因为小样本学习的方法不会在支撑集上finetune模型,当增大支撑集的规模时,因为样本数量带来的增长往往又会被样本级别的噪音所抵消。因此,忽略掉和分类无关的细节,从样本级别多种多样的语言表述之中总结出类别的语义表示,对于小样本学习任务时十分重要的。第二个挑战来自于小样本学习的meta learning学习机制,在成千上万的元学习任务之间切换的过程中往往会产生灾难性遗忘的问题,有一些工作尝试使用记忆机制来解决,但是现有的记忆机制是一种静态记忆,所有的参数在训练完成后就不再更新,这对于unseen类别的泛化是十分受限的。
在我们的工作中针对上述两个挑战分别提出归纳网络(EMNLP 2019)和动态记忆归纳网络(ACL 2020),并介绍在智能客服场景的落地应用情况。
四、让机器像人一样从小样本中学习 – 归纳机制
在自然语言中,由于每个人的语言习惯不同,同一个类别的不同表述往往有很多种,如果仅仅是简单加和或平均来作为类别的表示,这些与分类无关的干扰信息就会累加,影响最终的效果,因此我们的工作中显式建模了从样本表示到类别表示这一能力。
如图4所示,归纳网络的模型基于Encoder-Induction-Relation的三级框架,其中Encoder模块使用基于自注意力的Bi-LSTM,Induction 模块使用动态路由算法,Relation模块使用神经张量网络。
图4 Induction Network
Encoder模块
本工作中使用Bi-LSTM self-attention建模句子级别的语义,输入句子的词向量矩阵,经编码得到句子级的语义表示。
Induction 模块
将支撑集中每个样本编码为样本向量以后,Induction模块将其归纳为类向量表示:
这一过程中我们将支撑集中的样本向量视为输入胶囊,经过一层dynamic routing变换后,输出胶囊视为每个类的语义特征表示。
首先,是对所有样本做一次矩阵转换,意味着将样本级的语义空间转换到类别级的语义空间,在此过程中我们对支撑集中所有的样本向量使用同一个转换矩阵,如此对于任意规模的支撑集都能进行处理,也就意味着我们的模型可以应对any-way any-shot的场景。然后,通过dynamic routing的方式过滤无关信息,提取类别特征。在每次dynamic routing的迭代中,我们动态的调整上下两层之间的连接系数并确保其加和为1。其中b_i 为连接系数的逻辑值,在第一次迭代时初始化为0。对于给定的样本预测向量,每个候选类向量是 e ̂_ij^s 的加权求和。然后使用一个非线性的squash函数来保证每个类向量的模长不超过1。每次迭代的最后一步是通过“routing by agreement”的方式来调节连接强度,如果产生的类候选向量和某样本预测向量之间有较大的点乘结果,则增大他们之间的连接强度,否则减小之。
通过这种动态路由的方式建模样本向量到类别向量的映射过程,能够有效过滤与分类无关的干扰信息,得到类别特征,详情见算法2。
Relation 模块
我们通过Induction模块得到支撑集中每个类别的类向量表示,通过Encoder模块得到Batch set中每个query的query向量,接下来要做到就是衡量二者之间的相关性。 Relation 模块是典型的neural tensor layer,首先通过三维tensor建模每个类向量和query向量对之间的交互关系:
目标函数
我们使用最小平方损失训练模型,将关系打分回归至真实标签:匹配的类和query对之间的打分趋向于1而不匹配的打分趋向于0。在每个episode中,给定支撑集S和Query集B={(x_q,yq )}(q=1)^n,损失函数定义如下:
训练完成之后,我们的模型在识别全新的类别时不需要任何finetune,因为在meta 训练阶段已经赋予了模型足够的泛化能力,而且会随着模型的迭代不断累加。
实验与分析
实验设置
我们基于ARSC和ODIC数据集实验,ARSC数据集由Yu 等人在NAACL 2018提出,取自亚马逊多领域情感分类数据,该数据集包含23种亚马逊商品的评论数据,对于每一种商品,构建三个二分类任务,将其评论按分数分为5、4、 2三档,每一档视为一个二分类任务,则产生233=69个task,然后取其中12个task(43)作为测试集,其余57个task作为训练集。ODIC数据集来自阿里巴巴对话工厂平台的线上日志,用户会向平台提交多种不同的对话任务,和多种不同的意图,但是每种意图只有极少数的标注数据,这形成了一个典型的few-shot learning任务,该数据集包含216个意图,其中159个用于训练,57个用于测试。
实验结果
在ARSC和ODIC数据集上实验结果如表1和表2所示。由表1可知,我们提出的Induction Networks比ROBUSTTC-FSL正确率高出3%,他们是这个数据上之前的state-of-the-art。这是因为ROBUSTTC-FSL试图在样本层面构造一个足够鲁棒的度量方法,所以将多种度量方式进行组合,这种方法无法摆脱同一个类别中不同表述所产生的干扰。
表1 ARSC实验结果
在ODIC数据集上,我们提出的Induction Networks模型在四个不同的实验设置中都取得了最好的效果,通过表1可以看到,在Encoder使用相同结构的情况下,我们的模型通过建模class级别的归纳能力和更复杂的距离度量方式,取得了最好的结果,进一步的,我们通过比较不同的Induction方式,最终选取了Dynamic Routing的方式来构建样本级到class级的归纳表示能力。
表2 ODIC实验结果
实验分析
在5-way 10-shot场景下,我们用t-SNE降维并可视化经过transformation转置矩阵前后支撑集样本的变化,如图所示,可以发现经过转置矩阵之后的支撑集样本向量可分性明显变好。这也证明了矩阵转置过程对于转换样本特征到类别特征的有效性。
图5 可视化分析
在本工作中,我们提出了Induction Network 来解决小样本文本分类的问题。我们的模型通过重构支撑集样本的层次化语义表示,动态归纳出类别的特征表示来缓解小样本学习样本级别的噪音问题。我们将动态路由算法和meta learning的框架结合,动态路由的机制使我们的模型能够对新的类别保持良好的泛化性。实验结果表明我们的模型在不同的小样本分类数据集上都超过了当时的state-of-the-art模型。在下一步的工作中我们继续探寻将监督学习和meta learning相结合,构建增量的小样本学习模型。
五、让机器像人一样从小样本中学习 – 动态记忆机制
在上一篇工作中我们提出了归纳机制来建模样本级别到类级别的表示能力,在本工作中,我们进一步提出将归纳机制和类比机制融合,通过平台已经积累的大量意图作为记忆,从而加速对新意图的学习。
小样本学习的一个重要挑战是从支撑集中归纳出类级别的语义表示,在这个过程中经常由于在不同的meta task间切换而丢失关键信息。有一种思路是使用一个记忆模块来保存模型的学习经历,比如从监督学习阶段学到的内容发现一些对识别新类别有帮助的信息,这一类方法也达到了了目前的STOA。但是,现有方法一般都是使用静态记忆机制,在推理阶段,模型需要适应新类别的时候,模型的泛化能力就会受到静态参数的限制。另一个重要挑战是由各种各样的语言学特征带来的样本级别的多样性问题,这导致为某个类别找一个固定的类中心(原型)是非常困难的,最近的一些研究工作表明,query感知的方法可以缓解该类问题。
在本工作中,我们提出了动态记忆归纳网络(DMIN)来进一步解决上述问题,通过模拟人类的类比能力,DMIN使用动态记忆机制有效利用不同阶段的学习经历来提升小样本学习的能力。除此之外,我们通过模拟人类的归纳能力,使用query信息来建模动态归纳过程,以此筛选出支撑集向量中和当前query更接近的成分,对口语场景下的语言多样性表达有更好的泛化能力。在中英文场景小样本分类任务数据集上,均取得了STOA的结果,该工作已被收录至ACL2020。
模型
整体结构
DMIN的模型是基于两阶段的训练框架,如图所示,绿色表示监督学习阶段,红色表示meta-learning阶段。在监督学习阶段我们选出训练集类别的一个子集作为base set,共有 C_base 个类别作为base class,该阶段会finetune 预训练编码器并训练一个相似度分类器。Meta learning阶段使用episode-based meta training, 训练集中随机抽取C个类别,每个类别K个样本(总共C×K个数据)构建一个meta-task,作为模型的支撑集(Support set)输入;再从这C个类中抽取一批样本作为模型的预测对象(Query set或者Batch set)。即要求模型从C×K个数据中学会如何区分这C个类别,这样的任务被称为C-way K-shot问题。 训练过程中,每轮(episode)都会采样得到不同meta-task的,即包含了不同的类别组合,这种机制使得模型学会不同meta-task中的共性部分,比如,如何提取重要特征及比较样本相似等,忘掉meta-task中领域相关部分。通过这种学习机制学到的模型,在面对新的未见过的meta-task时,也能较好地进行分类。
图6 DMIN模型结构
预训练编码器
我们希望小样本学习的训练可以从最新的预训练语言模型中受益,我们使用Google BERT-base模型作为句子编码器,BERT模型是一个多层的双向注意力机制的Transformer,在句首插入一个特殊字符[CLS],句尾插入[SEP],我们使用[CLS]位置的embedding向量作为整个句子的表示,预训练的BERT encoder提供了一个强大的上下文相关的句子表示,对于小样本学习的任务具有很好的适用性。
监督学习阶段首先在所有训练数据中采出一个base set,然后基于bert encoder和cosine距离分类器训练监督学习参数,如此最后一层的参数W_base可以作为每个base类的特征表示,在meta learning阶段,我们将W_base作为一个基础的记忆模块,并且继续finetune对应的参数以更新记忆模块。
动态记忆模块
在meta learning阶段,为了有效利用上一阶段的学习经历,我们基于监督学习的知识设计了一个动态记忆路由算法(DMR),和传统的静态记忆机制不同的是,DMR使用动态路由机制赋予了memory过程更好的灵活性,从而能够使用在每个meta task中不断变化的支撑集,路由结构即使是在训练结束之后,也可以动态的调整不同成分之间的连接系数,这对于小样本学习的泛化性有了很好的保障。
Dynamic memory routing 定义如下:
图7 DMR模块示意
在动态记忆模块中,我们使用监督学习阶段学到的参数W base为Memory,动态调整样本向量e(c,s),这一过程可以理解为基于已经掌握的知识,通过类比快速学习新的概念和知识:
Query增强的归纳模块
当样本向量经过了DMM模块的调整,query向量也经过了预训练语言模型的编码,我们则构建一个query 指导的归纳模块QIM,目的在于从支撑集中筛选出和当前query更为相关的成分。因为动态路由机制可以通过自动调整不同成分之间的连接系数来帮助增强相关的query和样本向量,惩罚不相关的成分,因此QIM复用了DMR的过程,将调整后的样本向量视为memory,进而通过筛选和query更相关的成分来归纳出类级别的向量表示。
相似度分类器
在最后的分类阶段,我们将新类别的类别向量和query向量一起送入监督学习阶段提到的分类器,并得到对应的类别打分,传统的分类器在这一阶段一般是使用点乘的方式来获得打分,然后通过softmax归一化,但是这种分类器不发适用于小样本学习中面临的全新的类别,在我们的工作中,我们使用cosine 相似度来计算这一分数。
通过这种方式训练的base 分类器,属于同一个类的特征向量必然会和对应的分类参数特别接近,所以最后的分类参数W就可以做为base类的类别特征,进而做为meta learning的记忆模块。
在meta learning阶段,我们将类别向量和query向量一起输入该分类器,得到新类别的分类打分。
实验与分析
实验设置
我们在miniRCV1和ODIC两个数据集上进行实验,在测试阶段,分别在两个测试集上进行100次和300次的元学习任务迭代,每次迭代中,在1-shot和5-shot场景下,为每个类别选取10个样本进行测试。
实验结果
在两个数据集上的实验结果分别如Table1 和 Table 2所示,我们可以看到DMIN始终优于所有现有模型,并且在两个数据集上均获得了最新的STOA。在单尾配对t检验下,DMIN与所有其他模型之间的显著性差异在95%左右。
实验分析
图8显示了我们的可视化分析,对于同一支撑集,可以发现其在DMM模块之后的可分性有了显著的提高,这也从侧面说明通过动态记忆模块引入监督学习信息能够编码出更加符合类别信息的语义特征,从而提升小样本分类的效果。
图 8 DMM模块分析
我们在ODIC数据集上变化监督学习阶段base类别的数量,然后观察其对小样本学习结果的影响,图9可以发现当base类别从30增长到100的时候,由于在监督学习阶段学到了更强的文本embedding特征,最终结果是随着base类的数量而提升的。但是在base类为120的时候出现下降,这是由于unseen 类别的占比太低的时候,模型整体对unseen类别的识别能力也会受到影响。
图 9 Base Class 分析
结论
在本工作中,我们针对小样本文本分类问题提出了动态记忆归纳算法,该网络基于动态路由机制和外部的记忆模块进行交互,使用记忆模块跟踪过去的学习经历,使用动态路由机制快速适应支撑集中新的类别。该模型在miniRCV1和ODIC数据集上获得了最新的SOTA结果。 由于动态记忆可能是一种比我们在这里进行过的小样本学习实验更通用的学习机制,因此我们在对话领域的其他任务上也会继续探索该模型的使用。
六、业务应用
笔者所在的达摩院Conversational AI团队打造了一个智能对话开发平台--Dialog Studio(DS),以赋能第三方开发者来开发各自业务场景中的任务型对话,目前已经在阿里云智能客服(即云小蜜)、钉钉、阿里集团多个BU、淘宝天猫商家以及Lazada东南亚6国得到了大规模应用。经过两年多的积累,当前我们Dialog Studio对话开发平台已经积累数万级别的意图,在将Few-shot Learning落地时,我们使用用平台积累的万级高质量意图训练行业元模型,而后再用具体的机器人配置进行Adapt,构建机器人的专属Few-shot Learning模型。相比无监督方法,我们的Few-Shot Learning意图识别模型将意图理解冷启动效果提升10%以上,目前已在集团内、公有云、私有云等各环境全量上线,成为阿里云智能客服机器人的标配。
团队招聘
阿里巴巴达摩院Conversational AI团队欢迎大家加入,一起围绕深层语言理解、多轮对话管理、Table Semantic Parsing、KBQA、多模态对话、大规模对话预训练模型等方向进行研究和实践。目前招聘职位包括:
【1】 研究型实习生(Research intern): 2021年之后毕业的博士/硕士,有顶会论文发表经验者优先;
【2】 校招:2021年毕业的优秀博士/硕士;
【3】 社招:自然语言处理方向 P7/P8/P9等算法专家;
内推邮箱: ruiying.gry@alibaba-inc.com
参考文献
- Zi-Yi Dou, Keyi Yu, and Antonios Anastasopoulos.2019. Investigating meta-learning algorithms for low-resource natural language understanding tasks. In Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Lan-guage Processing (EMNLP-IJCNLP), pages 1192–1197.
- Hu Z, Chen T, Chang K W, et al. Few-Shot Representation Learning for Out-Of-Vocabulary Words[J]. arXiv preprint arXiv:1907.00505, 2019.
- Gu J, Wang Y, Chen Y, et al. Meta-Learning for Low-Resource Neural Machine Translation[C]//Proceedings of the 2018 Conference on Empirical Methods in Natural Language Processing. 2018: 3622-3631.
- Gidaris S, Komodakis N. Dynamic few-shot visual learning without forgetting[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 4367-4375.
- Geng R, Li B, Li Y, et al. Induction Networks for Few-Shot Text Classification[C]//Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP). 2019: 3895-3904.
- Sun Q, Liu Y, Chua T S, et al. Meta-transfer learning for few-shot learning[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2019: 403-412.
- Qi H, Brown M, Lowe D G. Low-shot learning with imprinted weights[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 5822-5830.
- Wu J, Xiong W, Wang W Y. Learning to Learn and Predict: A Meta-Learning Approach for Multi-Label Classification[C]//Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP). 2019: 4345-4355.
- Yang Z, Zhang J, Meng F, et al. Enhancing Context Modeling with a Query-Guided Capsule Network for Document-level Translation[C]//Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP). 2019: 1527-1537.
- Ye Z X, Ling Z H. Multi-Level Matching and Aggregation Network for Few-Shot Relation Classification[C]//Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics. 2019: 2872-2881.
- Dou Z Y, Yu K, Anastasopoulos A. Investigating Meta-Learning Algorithms for Low-Resource Natural Language Understanding Tasks[C]//Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP). 2019: 1192-1197.
- Chen M, Zhang W, Zhang W, et al. Meta Relational Learning for Few-Shot Link Prediction in Knowledge Graphs[C]//Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing and the 9th International Joint Conference on Natural Language Processing (EMNLP-IJCNLP). 2019: 4208-4217.
- Allen K, Shelhamer E, Shin H, et al. Infinite Mixture Prototypes for Few-Shot Learning[J].
- Cai Q, Pan Y, Yao T, et al. Memory matching networks for one-shot image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 4080-4088.