论文解读:胶囊网络在小样本做文本分类中的应用(上)

2.1.png

论文提出用胶囊网络(Capsules Network)来处理短文本的类表示,从而能够进行小样本的学习。通过关系网络学习Query样本和类表示向量的相似行进行分类。

算法的框架图:

1.1.png

由三个部分组成:Encoder + Induction + Relation

1、Encoder

这个部分比较简单,就是提取特征的Bi-LSTM + Attention部分,这里的Attention精过实验会发现Self-Attention比用lstm_output和hidden计算的Attention效果要好。

image.png

self-attention

image.png

2、Induction

这个模块是论文的核心创新点:提出用胶囊网络(Capsules Network)来动态的表征类向量,句子向量低层特征通过动态路由算法(dynamic routing)映射到高层特征,在胶囊网络里可以称之为胶囊。通过这个网络就能够学习部分sample对某一类文本分类类别的贡献更大,那么就能够反应文本的类表示。

归纳网络induction net的训练过程如下:

4.1.png

需要将support训练得到的类表示向量c_i与query输入的查询向量做相似性比较,从而来判断query的文本是属于哪一类或者是属于新的类别

image.png

为了能够将胶囊网络学习的语义特征空间根据数据的维度映射到任意的维度,在做dynamic routing之前,论文提出先做一步线性映射,在压缩成胶囊尺寸的单位向量:

image.png

接下来就是根据上图所示的代码流程进行动态路由算法,超参数iterate设置的越大,训练会更慢,但是效果也会有一定的提升。动态调整上下两层胶囊的连接权重,并且和为1:

image.png

计算\hat{c}*j表示通过链接权重与encoder的点积得到的权重分配(相关性),再更新b*{ij}调节连接强度。

具体的胶囊网络的理解可以看看下一篇博客

3、Relation

通过induction模块得到support set的类表示,接下来就是衡量c_ie_{ij}之间的相关性,就是简单的dnn。论文中是通过定义的一个三维tensor建模类向量和query向量质检的交互关系,再stack起来,进全连接层对关系进行打分,这里用的是sigmoid。

但是通过实验,relation可以变化和优化的方法很多,直接计算PCC或者cosine距离都能够得到不错的效果。

image.png

下面是论文的具体算法过程:

3.1.png

在每个episode中来迭代模型,首先是从训练集类别中随机抽取C个类,然后从每个类中选择部分样本构成Support Set,并且会从剩余的样本中抽取样本构成Query Set。在论文中是能够不需要做finetune来泛化学习新的类别的。并且需要训练的episode非常大,需要超过C_{k_way}^{num_class}的次数。因此也可以尝试做一些finetune,也会达到不错的效果

论文地址:Dynamic Memory Induction Networks for Few-Shot Text Classification