ContrastNet 论文笔记

单位:北京航空航天大学,渥太华大学,利德大学
时间:2022.06
发表:AAAI
论文链接: https://ojs.aaai.org/index.php/AAAI/article/view/21292

一、前言

1. ContrastNet想做些什么?

主要想解决的问题是小样本(few-shot)文本分类中的判别表示和过拟合问题。

2. ContrastNet做到了什么?

提出了一个用于小样本文本分类的对比学习框架 ContrastNet,它学习相似类的判别文本表示,并解决任务和实例级的过度拟合问题。 ContrastNet 通过有监督的对比学习学习属于不同类别的区分文本表示,同时在任务和实例级别引入无监督对比正则化以防止过度拟合。对比实验效果如下。

ContrastNet 论文笔记_第1张图片

二、ContrastNet: A Contrastive Learning Framework for Few-Shot Text Classification

1. 方法

ContrastNet 论文笔记_第2张图片

1.1 Supervised Contrastive Learning

为了拉进相同分类,推远不同分类,提高不同类别之间查询文本表征的区分,缓解标签预测的矛盾,提出了监督对比学习方法。

作者在描述时借用了元学习的概念所以在描述时显得很复杂,其实简化来说就是,在同一 batch 内标签相同的句子互作正例,不同的句子互作反例,以此来进行对比学习。具体的公式如下, z 表示经过编码后的向量, c 表示一个 batch 内和 $X_t$ 同属一个分类的数量, $\tau$ 是温度因子超参数。

ContrastNet 论文笔记_第3张图片

1.2 Task-level Contrastive Regularization

为了解决小样本文本分类泛化性不强的问题,用一个基于随机抽样任务及其数据增强的无监督对比损失来约束模型。

做法是同一分类的平均向量与其经过数据增强后的平均向量互作正例,与不同分类的平均向量互作负例,以此进行任务级别的对比学习,其中数据集范围是所有数据集的并集。公式如下。

ContrastNet 论文笔记_第4张图片

1.3 Instance-level Contrastive Regularization

目标是通过学习源类和目标类之间可分离的文本表征来防止实例级的过拟合。

具体做法是从数据集里随机选取N个句子,将每个句子与其经过数据增强的句子作为正例,其它句子都作为负例。公式如下。

ContrastNet 论文笔记_第5张图片

2. 实验

注意,这里作者对不同的数据集用的编码器不同,也是些不太公平的小技巧。对4个意图识别数据集编码器选用别人在这几个数据集上预训练好的 bert-base ,对于新闻或评论分类数据集,我们使用纯预训练的 bert-base-uncased 模型,均取其 cls 向量当作该句子句向量。

使用 EDA 在 Amazon、Reuters 和 20News 数据集中当作数据增强,其它数据集使用 BART 重述句子当作数据增强

值得一提的是,预测标签时采用邻近算法,即判断 query 在编码后和 support 集里所有样本的距离,取与其最近的数据当作 query 的标签,该方法在以前的论文里已被证明过能些许提升精度。公式如下。

$L_{con}、L_{task}和L_{inst}$ 的温度因子分别设置为5.0、7.0和7.0。损失权重 α 初始化为 0.95,并使用损失退火策略,β设置为0.1。学习率为1e-6。将上述三个损失加权平均一起训练。

三、总结

提出了一个用于小样本文本分类的对比学习框架 ContrastNet,它学习相似类的判别文本表示,并解决任务和实例级的过拟合问题。 ContrastNet 通过有监督的对比学习来学习属于不同类别的文本表征,同时在任务和实例级别引入无监督对比正则化以防止过拟合。

四、值得思考的地方

1. 数据增强方法

作者在部分数据集上使用 BART 作为数据增强方法,其实在训练过程中相当于是引用了别的模型知识,可以看作是两个模型融合,操作成本大且有些不公平,且会不会加上增强后的句子直接训练效果差不多呢。。。

该数据增强方法结合先前的两次dropout等方法一起用可能会有些许加强,待实验尝试。

2. 任务级别对比学习

这个任务级别对比学习直观感觉上就比较诡异,在小样本上的表现还好,因为毕竟提前看了许多数据后取平均,但在样本稍微充足一点就什么用了,因为其本质上和第一个损失方法和目标是一样的,同其它数据集来比较因为分类标准不同效果也不大。

3. 实例级别对比学习

这个实例级别对比学习从实验来看起到的效果是很大的,比较意外的是分类方法对于这种句子与句子之间细粒度的比较,对粗粒度的分类方法起到的效果还挺不错,值得借鉴和思考。

你可能感兴趣的:(论文阅读,人工智能)