归纳 记忆:让机器像人一样从小样本中学习

作者|耿瑞莹,黎槟华,武玉川,李永彬

单位|阿里巴巴达摩院Conversational AI 团队

近年来,对话式 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 学习机制,在成千上万的元学习任务之间切换的过程中往往会产生灾难性遗忘的问题,有一些工作尝试使用记忆机制来解决,但是现有的记忆机制是一种静态记忆,所有的参数在训练完成后就不再更新,这对于 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。
其中 为连接系数的逻辑值,在第一次迭代时初始化为 0。对于给定的样本预测向量,每个候选类向量是 的加权求和。
然后使用一个非线性的 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 集 ,损失函数定义如下:
训练完成之后,我们的模型在识别全新的类别时不需要任何 finetune,因为在 meta 训练阶段已经赋予了模型足够的泛化能力,而且会随着模型的迭代不断累加。

实验与分析

实验设置


我们基于 ARSC 和 ODIC 数据集实验,ARSC 数据集由 Yu 等人在 NAACL 2018 提出,取自亚马逊多领域情感分类数据,该数据集包含 23 种亚马逊商品的评论数据,对于每一种商品,构建三个二分类任务,将其评论按分数分为 5、4、 2 三档,每一档视为一个二分类任务,则产生 23*3=69 个 task,然后取其中 12 个task(4*3)作为测试集,其余 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。

5.1 模型

5.1.1 整体结构

DMIN 的模型是基于两阶段的训练框架,如图所示,绿色表示监督学习阶段,红色表示 meta-learning 阶段。在监督学习阶段我们选出训练集类别的一个子集作为 base set,共有 个类别作为 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模型结构

5.1.2 预训练编码器

我们希望小样本学习的训练可以从最新的预训练语言模型中受益,我们使用 Google BERT-base 模型作为句子编码器,BERT 模型是一个多层的双向注意力机制的 Transformer,在句首插入一个特殊字符 [CLS],句尾插入 [SEP],我们使用 [CLS] 位置的 embedding 向量作为整个句子的表示,预训练的 BERT encoder 提供了一个强大的上下文相关的句子表示,对于小样本学习的任务具有很好的适用性。
监督学习阶段首先在所有训练数据中采出一个 base set,然后基于 bert encoder 和 cosine 距离分类器训练监督学习参数,如此最后一层的参数 可以作为每个 base 类的特征表示,在 meta learning 阶段,我们将 作为一个基础的记忆模块,并且继续 finetune 对应的参数以更新记忆模块。
5.1.3 动态记忆模块

在 meta learning 阶段,为了有效利用上一阶段的学习经历,我们基于监督学习的知识设计了一个动态记忆路由算法(DMR),和传统的静态记忆机制不同的是,DMR 使用动态路由机制赋予了 memory 过程更好的灵活性,从而能够使用在每个 meta task 中不断变化的支撑集,路由结构即使是在训练结束之后,也可以动态的调整不同成分之间的连接系数,这对于小样本学习的泛化性有了很好的保障。
Dynamic memory routing 定义如下:
▲ 图7 DMR模块示意
在动态记忆模块中,我们使用监督学习阶段学到的参数 为 Memory,动态调整样本向量 ,这一过程可以理解为基于已经掌握的知识,通过类比快速学习新的概念和知识:
5.1.4 Query增强的归纳模块

当样本向量经过了 DMM 模块的调整,query 向量也经过了预训练语言模型的编码,我们则构建一个 query 指导的归纳模块 QIM,目的在于从支撑集中筛选出和当前 query 更为相关的成分。
因为动态路由机制可以通过自动调整不同成分之间的连接系数来帮助增强相关的 query 和样本向量,惩罚不相关的成分,因此 QIM 复用了 DMR 的过程,将调整后的样本向量视为 memory,进而通过筛选和 query 更相关的成分来归纳出类级别的向量表示。
5.1.5 相似度分类器

在最后的分类阶段,我们将新类别的类别向量和 query 向量一起送入监督学习阶段提到的分类器,并得到对应的类别打分,传统的分类器在这一阶段一般是使用点乘的方式来获得打分,然后通过 softmax 归一化,但是这种分类器不发适用于小样本学习中面临的全新的类别,在我们的工作中,我们使用 cosine 相似度来计算这一分数。
通过这种方式训练的 base 分类器,属于同一个类的特征向量必然会和对应的分类参数特别接近,所以最后的分类参数 W 就可以做为 base 类的类别特征,进而做为 meta learning 的记忆模块。
在 meta learning 阶段,我们将类别向量和 query 向量一起输入该分类器,得到新类别的分类打分:
5.2 实验与分析
5.2.1 实验设置

我们在 miniRCV1 和 ODIC 两个数据集上进行实验,在测试阶段,分别在两个测试集上进行 100 次和 300 次的元学习任务迭代,每次迭代中,在 1-shot 和 5-shot 场景下,为每个类别选取 10 个样本进行测试。
5.2.2 实验结果

在两个数据集上的实验结果分别如 Table1 和 Table 2 所示,我们可以看到 DMIN 始终优于所有现有模型,并且在两个数据集上均获得了最新的 STOA。在单尾配对 t 检验下,DMIN 与所有其他模型之间的显著性差异在 95% 左右。
5.2.3 实验分析

图 8 显式了我们的可视化分析,对于同一支撑集,可以发现其在 DMM 模块之后的可分性有了显著的提高,这也从侧面说明通过动态记忆模块引入监督学习信息能够编码出更加符合类别信息的语义特征,从而提升小样本分类的效果。
▲ 图8 DMM模块分析
我们在 ODIC 数据集上变化监督学习阶段 base 类别的数量,然后观察其对小样本学习结果的影响,图 9 可以发现当 base 类别从 30 增长到 100 的时候,由于在监督学习阶段学到了更强的文本 embedding 特征,最终结果是随着 base 类的数量而提升的。但是在 base 类为 120 的时候出现下降,这是由于 unseen 类别的占比太低的时候,模型整体对 unseen 类别的识别能力也会受到影响。
▲ 图9 Base Class 分析
5.3 结论
在本工作中,我们针对小样本文本分类问题提出了动态记忆归纳算法,该网络基于动态路由机制和外部的记忆模块进行交互,使用记忆模块跟踪过去的学习经历,使用动态路由机制快速适应支撑集中新的类别。
该模型在 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

参考文献

[1] 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.

[2] 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.

[3] 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.

[4] 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.

[5] 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.

[6] 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.

[7] 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.

[8] 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.

[9] 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.

[10] 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.

[11] 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.

[12] 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.

[13] Allen K, Shelhamer E, Shin H, et al. Infinite Mixture Prototypes for Few-Shot Learning[J].

[14] 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.

(0)

相关推荐