emmm..这个系列可能会有好几篇文章吧,用来弥补对黑色九月的无知..
Shi H, Wang C. Self-supervised document clustering based on bert with data augment[J]. arXiv preprint arXiv:2011.08523, 2020.
摘要导读
作者指出对比学习作为一种效果很好且并不复杂的模型设计,很容易与深度模型进行结合。在本文中,基于BERT,分别提出了自监督对比学习(SCL)和使用无监督数据增强(UDA)的小样本(few-shot)对比学习(FCL)用于文本聚类。对短文本和长文本的聚类中,SCL实现了无监督方法中的SOTA;FCL的性能则接近于有监督方法。
主要贡献点
- 针对SCL,设计了multi-language back translation(BT,多语言回译)以及random mask(RM,随机掩码)来生成正例样本。
- 针对FCL,提出了无监督数据增强(UDA)。
模型框架
用于FCL和SCL的学习框架如下所示。
笔者比较疑惑的一点是,在以字为输入的BERT中,其实停用词对于整个句子的embedding的影响不大。论文中这种直接去停用词的方式,是否会造成上下文语义的断层还有待考证。
(3)BERT由基于隐含表示的对比学习损失进行回调。在完成了学习的迭代之后,将数据集中的所有样本输入微调好的编码器中获取对应的样本隐含表示,并使用k-means得到聚类结果。首先给出笔者对该框架学习的伪代码理解:
given dataset, total_epochs and batch_size
for epoch in range(total_epochs):
for batch in batches:
training
# for scl & for fcl
obtain the fune-tuned Encoder
get the clustering results though the k-means
- Mini-batch Construction
这一部分的构建分为两种情况:
(1)针对SCL,数据集中的所有数据都用于模型的调整:
首先从数据集中随机的选取个样本,且并不要求这些样本来自不同的类簇。对于选定的文本,和分别是由BT和RM产生的文本。在进行batch的构建中,原始文本被排除在外,因此batch_size=。
(2)针对FCL,BERT则由对带有标签的少量文本进行调整,batch_size也是。具体来说,每个样本对和来自同一类簇,其他不同的文本对则来自个不同的类簇。为了对不同类簇中的文本进行完整的对比,这里建议。但是这种方法使得在选取负例样本时,存在一定的概率选到来自相同类簇的样本。至于这种偏差会带来多大的性能影响还未知。
- Contrastive Loss
前一部分是批训练中正负例样本的构建,这一部分是对比损失的计算。 - Unsupervised Data Augmentation
UDA原始用于二分类任务。针对FCL,数据集中的文本被BT为。BERT将给定的和中的三个文本作为输入,并且将输出喂给UDA以得到其对应的分布和,由此构造 -
Total Loss
至此,总体损失为:
我的疑虑:
未进行消融实验,不能直接说明性能的提升来自哪个部分。