近年来,对话式 AI(Conversational AI)无论在学术界还是在工业界都在迅猛发展,背后的核心驱动力在于,人机对话在各行各业的实际场景中存在着广泛的需求,并且当前的技术进展已经能够大规模落地应用。
以笔者所在的达摩院 Conversational AI 团队为例,过去几年,通过阿里云智能客服(即云小蜜)产品矩阵,将人机对话在政务、银行、保险、医疗、教育、交通、水利、电力等众多行业进行大规模应用,更在 2020 年初疫情爆发初期,打造了全国最大的疫情外呼机器人平台,帮助 27 个省拨打了 1800 多万通电话,协助政府工作人员进行疫情的摸排防控。
在对话式 AI 大规模落地应用的过程中,面临众多技术难题,其中一个是低资源小样本的问题。在有大量标注数据的场景,今天的深度学习模型已经能够将问题的解决的比较好了,但在是标注数据很小的场景中,怎么让机器进行学习呢?面对这个难题,过去两年,我们团队从人类的小样本学习机制入手进行思考和研究:
人类之所以能够从很小的样本中就能进行很好的学习,主要在于两个能力,一个是归纳(induction)能力,即能够从个例中抽象出通用规则,基于此我们提出了归纳网络(Induction Network),已发表在 EMNLP2019;
另一个是记忆(memory)能力,即能够将学过的东西记下来并在需要时进行类比,对此我们提出了动态记忆网络(Dynamic Memory),已发表在 ACL 2020。本文将围绕这些内容进行详细的阐述。
低资源小样本是普遍存在的问题
对话机器人在各行业落地的过程中,无论是在冷启动场景,还是在规模化推广的场景,都面临小样本的问题。
1.1 冷启动场景的小样本问题
统计 POC 环境下的 45 个对话机器人,总共 711 个意图,所有意图的训练样本平均只有 5.8 条,是个典型的小样本问题。
1.2 规模化场景的小样本问题
当对话机器人的解决方案成熟后,就可以在同行业同场景中进行规模化推广。在规模化推广过程中,客户还需要针对自己的场景进行个性化的定制,这个过程中新增的大量意图,训练样本数量也都较少。比如,在浙江政务 11 地市的 12345 热线机器人进行规模化推广时,会在新的地市出现大量内置意图之外的新意图,其中 42% 的意图的训练样本数少于 10 条。
▲ 图1 规模化推广中每个新场景都会定制个性化的小样本意图
利用Few-Shot Learning解决小样本学习问题
人类非常擅长通过极少量的样本识别一个新物体,比如小孩子只需要书中的一些图片就可以认识什么是“斑马”,什么是“犀牛”。在人类的快速学习能力的启发下,研究人员希望机器学习模型也具备这种能力,对于新的类别,只需要少量的样本就能快速学习,这就是 Few-shot learning 要解决的问题。
小样本学习的的目标是模型在大量类别中学会通过少量数据正确地分类后,对于新的类别,只需要少量的样本就能快速学习。如图 2 所示,形式化来说,few-shot learning 的训练集中包含了大量的类别,每个类别中有少量样本。
在训练阶段,会在训练集中随机抽取 C 个类别,每个类别 K 个样本(总共个 CxK 数据)构建一个 meta-task,作为模型的支撑集(Support set)输入;再从这 C 个类中抽取一批样本作为模型的询问集(Query set)。即要求模型从 CxK 个数据中学会如何区分这 C 个类别,这样的任务被称为 C-way K-shot 问题。
模型训练的过程中在每次迭代时把支撑集送入模型,并优化模型在询问集上产生的损失函数,这种训练方式一般称为 Episode-based meta-training。值得注意的是这种训练机制使得模型很难过拟合,假设我们训练集中包含 159 个类,可以产生 个不同的 5-way 任务。
▲ 图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