Induction Networks for Few-Shot Text Classification

reference

一文入门元学习(Meta-Learning)(附代码)
Induction Networks for Few-Shot Text Classification
meta learining leason
code for induction network

Problem Definition

Few-shot classification is a task in which a classifier must be adapted to accommodate new classes not seen in training, given only a few examples of each of these new classes. We have a large labeled training set with a set of classes C t r a i n C_{train} Ctrain. However, after training, our ultimate goal is to produce classifiers on the testing set with a disjoint set of new classes C t e s t C_{test} Ctest, for which only a small labeled support set will be available. If the support set contains K labeled examples for each of the C unique classes, the target few-shot problem is called a C-way Kshot problem. Usually, the K is too small to train a supervised classification model. Therefore, we aim to perform meta-learning on the training set, and extract transferable knowledge that will allow us to deliver better few-shot learning on the support set and thus classify the test set more accurately.

一般的ML分类任务无法识别新的类别(因为训练集中没有这个标签的数据),因此few-shot 分类任务可以学习到适应于新的类别的function。如果我们要进行C-ways,K-shot的文本分类任务(数据中包含C个类别,每个类别有K个文本),一般来说,K值一般足够小,以至于我们没法用它来进行有监督学习模型。因此,论文中在training set中使用meta-learning,从而能够提升新的类别的表现力。

其训练流程如下:
在这里插入图片描述

Model

在这里插入图片描述
模型总共包含三个模块:Encoder,Induction和Relation。

Encoder模块:
Encoder模块是为了获取每个样本的语义表示,可以使用典型的CNN,LSTM和transformer。

本文的做法是:
给定一个输入文本 x = ( w 1 , w 2 , ⋯   , w T ) x=(w_1,w_2,\cdots,w_T) x=(w1,w2,,wT) w i w_i wi表示第i个word的embedding,然后我们对其做如下处理:
step 1:
在这里插入图片描述
step 2:
在这里插入图片描述
step 3:
在这里插入图片描述
step 4:
在这里插入图片描述
Induction模块:
Induction模块用于从支撑集的样本语义中归纳出类别特征。

support set通过eq4得到的称之为 e s e^s es,query set通过eq4得到的称之为 e q e^q eq,本节的目的就是通过induction 模块得到一个非线性的映射,该映射可以学到class vector c i c_i ci:
在这里插入图片描述
接下来,要对 e i j s e_{ij}^s eijs进行非线性变换:

这里的故事是说:
In order to accept any-way any-shot inputs in our model, a weight-sharable transformation across all sample vectors in the support set is employed. All of the sample vectors in the support set share the same transformation weights W s ∈ R 2 u × 2 u W_s ∈ R^{2u×2u} WsR2u×2u and bias b s b_s bs, so that the model is flexible enough to handle the support set at any scale.
共享相同的变换权重和偏置项,这样模型就具有足够的弹性可以处理各种规模的支撑集,这样的原因可能是:我们希望通过这种编码建立一种从样本特征到不变的语义特征的关系

在这里插入图片描述
其中squash是一个非线性的函数,该函数能够保证向量的方向不变但是减少向量的大小。对于一个给定的向量x,squash函数的定义如下:
在这里插入图片描述
为了保证类向量能够自动的封装该类的样本特征向量,因此迭代的应用动态路由算法:
在这里插入图片描述
这里使用的是胶囊网络的概念。以下是我对胶囊网络动态路由的理解,如有不对,欢迎指正:

一般的神经元output的是一个标量,而胶囊网络输出的是一个vec。从其输出可以看出一个Capsule的输出能够表达出更多的信息,比如 识别人眼,【杏仁眼】、【丹凤眼】在神经元中应该是两个不同的神经元被激活,但是胶囊网络可以表达出人眼的信息,对于【杏仁眼】、【丹凤眼】只是输出的vec不同。
计算如下:
在这里插入图片描述
这个 c 1 , c 2 c^1,c^2 c1,c2就是coupling coefficients(与 Algorithm2中的b是一个作用),那么这个 c c c是怎么确定的?在这里插入图片描述
从上图可以看出这个 c c c有点类似attention中的 α \alpha α,如果 u i u^i ui和最终的 a r a^r ar不相似,它的weight就会越来越小。

relation 模块
用于度量query和类别之间的语义关系:
在这里插入图片描述
在这里插入图片描述

LOSS FUNCTION

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值