论文地址
github地址
这篇论文是阿里小蜜团队发表的一篇工作,主要是用来做对话场景中的意图识别中,所以本质上也是一篇文本分类中研究few-shot learning的工作。训练过程如下,简单来讲就是从训练集中,每一个episode的时候,都随机选择C个类(训练集中的类别个数大于C),然后每一个类别都同样随机选择K个样本,这样每一个episode中的数据样本个数便是C * K个,这CK个样本组成support set S,此外,再从剩余的样本中随机选择n个样本作为query set Q,每一个episode都在这样选择出来的S和Q上进行训练。我们将该策略称为基于episode的元训练,并且细节在算法1中展示。使用episodes使训练过程更加忠实于测试环境,从而改善了泛化。
我们的归纳网络,如图1所示(3-way 2-shot 模型的情况),由三个模块组成:编码器模块,归纳模块和关系模块。 在本节的其余部分,我们将展示这些模块在每个元训练episode中的工作原理。
编码器模块
这一个模块主要是做encoder,可以利用CNN,LSTM和Transformer等等,比如论文中使用LSTM,简单讲就是:针对每一个样本,将LSTM各个时刻的隐层输出h,做一次self-attention,最后得到一个向量e
归纳模块
这个模块是这篇论文的主要贡献,即利用了Capusule Network的动态路由概念,将每一个类别中的样本表征,最后转化凝练成为class-level的表征,可以用数学语言表达如下
具体来说,分为如下几个步骤:
- 将样本表征进行一次transformation,这里为了能够支持不同大小的C,对原Capsule Network中不同类别使用不同的W做了修改,也就是使用一个所有类别共享的W;
- 对转化之后的样本表征进行加权求和,得到初始的类别表征;
- 将类别表征进行squash;
- 对coupling coefficients进行更新;
整体算法如下:
为了进行类别,可以将上述过程和原有Capsule Network进行类比,可以发现Induction Network的主要应用的是右边半部分。
关系模块
损失函数
可视化效果
首先是可以看到Induction Network的transformation效果,可以发现transformation之前的5个类别中的样本分布相对比较紊乱,而transformation之后support set中的5个类别样本表征边界相对清晰
转换的影响 图2显示了在 5-way 10-shot场景下矩阵变换之前和之后的支持样本向量的可视化。 特别地,在ODIC测试集上随机选择一个包含50个文本(每类10个文本)的支持集,并在编码器模块之后获得样本向量,样本预测向量
。 首先是可以看到Induction Network的transformation效果,可以发现transformation之前的5个类别中的样本分布相对比较紊乱,而transformation之后support set中的5个类别样本表征边界相对清晰。 我们可以清楚地看到矩阵变换后的向量更加可分,证明了矩阵变换对低级样本特征和更高级别特征之间的语义关系进行编码的有效性。
查询文本向量可视化 我们发现我们的归纳模块不仅可以通过生成有效的类级别特征来完美地工作,而且还有助于编码器学习更好的文本向量,因为它在反向传播期间为实例和特征赋予不同的权重。 图3显示了在 5-way 10-shot场景下,关系网络和我们的归纳网络学习的文本向量的t-SNE [Maaten和Hinton,2008]可视化。 具体来说,从ODIC测试集中选择5个类,然后使用t-SNE将嵌入的文本投影到二维空间中。 很明显,归纳网络学习的文本向量在语义上比关系网络更好,既Query Set中的query经过Induction Network之后明显边界会更清晰。
结论
在本文中,介绍了归纳网络,一种针对小样本文本分类的新神经模型。 所提出的模型重建支持训练样本的分层表示,并动态地将样本表示引入类表示。 我们将动态路由算法与典型的元学习框架相结合,以模拟人类归纳能力。 结果表明,我们的模型优于其他最先进的小样本文本分类模型。