1. Constrained Deep Adaptive Clustering with Cluster Refinement
论文: https://ojs.aaai.org/index.php/AAAI/article/view/6353
代码: https://github.com/thuiar/CDAC-plus
参考:
文献+代码—AAAI'20 对话系统新意图发现( Constrained Deep Adaptive Clustering with Cluster Refinement)
https://zhuanlan.zhihu.com/p/467248262
2. Discovering New Intents with Deep Aligned Clustering
论文: https://arxiv.org/pdf/2012.08987.pdf
代码: https://github.com/thuiar/DeepAligned-Clustering
动机:
现有的方法没有将先验知识从已知意图转移到新意图上,而且提供高质量的监督信号给无标签意图学习更好的聚类表征是比较困难的。基于此,论文提出了一种Deep Aligned Clustering方法,在有限的已知意图数据下发现新意图。
目标:
通过有限的有标签数据,在剩下的无标签数据中找到已知意图和发现新意图。
两个挑战:
1. 如何高效地在有限的有标签数据下,将已知意图的先验知识转移到新意图上;
2. 构建高质量的监督信号去学习无标签已知意图和新意图的聚类表征是困难的
方法步骤
1. 意图表征
取BERT作为一层输出(包括[CLS]和所有token的embedding)的平均池化(维度为H),再通过一个全连接层得到维度为D的intent representation.
2. 知识转移
- Pre-training: 拿有限的有标签数据进行分类任务,训练完成后移除最后的分类器,剩下的网络作为后续无监督聚类任务的特征提取器。
- 预测K: K也就是新意图的个数。先设K'为所有簇的个数(可以是意图类别真实数量的两倍),将K-Menas作用在上面得到的intent rerepresentation, 得到K'个簇,通过阈值t,过滤低置信度(簇中样本量小于t)的簇,剩下簇的总个数为预测的K值。
3. 深度对齐聚类 (Deep Aligned Clustering)
- Unsupervised Learning by Clustering: 首先通过上面经过有标签数据预训练后的BERT模型,生成所有训练数据的特征,然后用K-Means得到最有的簇质心矩阵C,和每个样本的聚类分配(cluster assignment)$y_i$,并将聚类分配作为特征学习的伪标签
- Self-supervised Learning with Aligned Pseudo-labels: 聚类和模型的参数更新是交替进行的,而每一轮的聚类,簇的index都会被打乱,每轮需要通过对齐质心来调整不一致的聚类分配。利用匈牙利算法得到一个映射,将上一个epoch的质心矩阵映射为当前epoch的质心矩阵,再利用逆映射
,从当前伪标签
得到对齐后的伪标签
, 使用对齐后的伪标签进行自监督学习,损失如下:
其中, 表示伪分类器(pseudo-classifier).
使用轮廓洗漱Silhouette Coefficient评估聚类质量:
模型整体框架如下图所示:
详细论文解析参考:
1. 论文阅读:Discovering New Intents with Deep Aligned Clustering(用深度对齐聚类来发现新意图)
https://blog.csdn.net/anxiaomai520/article/details/123638953
3. New Intent Discovery with Pre-training and Contrastive Learning
论文: https://aclanthology.org/2022.acl-long.21.pdf
代码: https://github.com/fanolabs/NID_ACLARR2022
两个问题:
1. 怎么生成更好的句子表征
2. 怎么更好的聚类
方法步骤
1. 多任务预训练MTP
先用公开标注数据集做分类任务进行监督学习,再用领域数据的有标签数据做分类任务,同时,所有有标签+无标签数据一起做MLM训练
损失为两个任务损失的相加
2. 最近邻对比学习 CLNN (Contrastive Learning with Nearest Neighbors)
- 给每个样本找到topk个最相近的句子,构建一个相似样本集合(代码中用的是faiss检索)(论文中说,根据经验,最优topk是每个意图平均样本量的一半)
- 从相似样本集合中采样一个相似样本,利用数据增强分别生成对应的新样本
和
,作为一对正样本,若训练时的batch大小是
,则会构建一个
的邻接矩阵,元素为0/1,表示两个样本是否是正样本(是相邻样本或拥有相同的标签)
- 训练损失为对比损失