Dynamic Memory Induction Networks for Few-Shot Text Classification
论文提出Dynamic Memory Induction Networks (DMIN) 网络处理小样本文本分类。
两阶段的(two-stage)few-shot模型:
在监督学习阶段(绿色的部分),训练数据中的部分类别被选为base set,用于finetune预训练Encoder和分类器也就是Pretrained Encoder和Classfiier图中的部分。
在元学习阶段(红色的部分),数据被构造成一个个episode的形式用于计算梯度和更新模型参数。对于C-way K-shot,一个训练episode中的Support Set是从训练数据中随机选择C个类别,每个类别选择K个实例构成的。每个类别剩下的样本就构成Query Set。也就是在Support Set上训练模型,在Query Set上计算损失更新参数。
Pretrained Encoder
用[CLS]预训练的句子的Bert-base Embedding来做fine-tune。 W b a s e W_{base} Wbase 就作为元学习的base特征记忆矩阵,监督学习得到的。
Dynamic Memory Module
在元学习阶段,为了从给定的Support Set中归纳出类级别的向量表示,根据记忆矩阵 W b a s e W_{base} Wbase 学习Dynamic Memory Module(动态记忆模块)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4DBqBKa2-1621581731522)(.\source\3.jpeg)]
给定一个 M M M ( W b a s e W_{base} Wbase )和样本向量 q , q 就是一个特征胶囊,所以动态记忆路由算法就是为了得到适应监督信息 $ W_{base} $ 的向量 q ′ q^{'} q′ ,
q ′ ← D M R ( M , q ) q^{'} \leftarrow DMR(M, q) q′←DMR(M,q)
学习记忆矩阵 M M M 中的每个类别向量 $M^{’} $ 进行更新,
m ^ i j ← s q u a s h ( W j m i + b j ) \hat{m}_{ij} \leftarrow squash(W_jm_i + b_j) m^ij←squash(Wjmi+bj)
q ^ j ← s q u a s h ( W j q + b j ) \hat{q}_j \leftarrow squash(W_jq + b_j) q^j←squash(Wjq+bj)
其中
s q u a s h ( x ) = ∥ x ∥ 2 1 + ∥ x ∥ 2 x ∥ x ∥ squash(x) = \frac{\parallel x \parallel^2}{1 +\parallel x \parallel^2} \frac{x}{\parallel x \parallel} squash(x)=1+∥x∥2∥x∥2