基于对比学习的聚类以及新意图发现
Contrastive Clustering
- AAAI 2021, paper, code, official blog
- 现有的大部分深度聚类(Deep Clustering)算法需要迭代进行表示学习和聚类这两个过程,利用聚类结果来优化表示,再对更优的表示进行聚类,此类方法主要存在以下两个缺陷,一是迭代优化的过程中容易出现误差累计,二是聚类过程通常采用 k-means 等需要全局相似性信息的算法,使得需要数据全部准备好后才能进行聚类,故面临不能处理在线数据的局限性。针对上述问题,本文提出了一种基于对比学习的聚类算法,其同时进行表示学习和聚类分析,且能实现流式数据的聚类。
- 本文将聚类任务统一到表示学习框架下,对每个样本学习其聚类软标签作为特征表示。具体地,本文认为样本特征矩阵的行和列事实上分别对应实例和类别的表示。
也即,特征矩阵的列是一种特殊的类别表示,其对应批样本在某一类别上的概率分布。基于此,本文提出同时在特征矩阵的行空间与列空间,即实例级别和类别级别,进行对比学习即可进行聚类。
Supporting Clustering with Contrastive Learning
- NAACL2021, paper, code
- 本文提出了一个聚类训练框架SCCL,它结合了bottom-up的实例对比学习和top-down的聚类学习,收获了更好的类内距离和类间距离。
- 对比损失:
$$
\ell_{i^{1}}^{I}=-\log \frac{\exp \left(\operatorname{sim}\left(\tilde{z}_{i^{1}}, \tilde{z}_{i^{2}}\right) / \tau\right)}{\sum_{j=1}^{2 M} \mathbb{1}_{j \neq i^{1}} \cdot \exp \left(\operatorname{sim}\left(\tilde{z}_{i}, \tilde{z}_{j}\right) / \tau\right)} \\
\mathcal{L}_{\text {Instance-CL }}=\sum_{i=1}^{2 M} \ell_{i}^{I} / 2 M
$$
- 聚类损失:$u_{k}$代表第k个类簇,随机初始化得到;$e_{j}$代表第j个样本的句子表征;注意聚类损失只在原始的batch内样本集合上计算,不考虑增强后的样本。
$$
q_{j k}=\frac{\left(1+\left|e_{j}-\mu_{k}\right|_{2}^{2} / \alpha\right)^{-\frac{\alpha+1}{2}}}{\sum_{k^{\prime}=1}^{K}\left(1+\left|e_{j}-\mu_{k^{\prime}}\right|_{2}^{2} / \alpha\right)^{-\frac{\alpha+1}{2}}}\\
p_{j k}=\frac{q_{j k}^{2} / f_{k}}{\sum_{k^{\prime}} q_{j k}^{2} / f_{k^{\prime}}},f_{k}=\sum_{j=1}^{M} q_{j k}, k=1, \ldots\\
\ell_{j}^{C}=\mathrm{KL}\left[p_{j} | q_{j}\right]=\sum_{k=1}^{K} p_{j k} \log \frac{p_{j k}}{q_{j k}} \\
\mathcal{L}_{\text {Cluster }}=\sum_{j=1}^{M} \ell_{j}^{C} / M
$$
- 整体损失:
$$
\begin{aligned}
\mathcal{L} &=\mathcal{L}_{\text {Instance-CL }}+\mathcal{L}_{\text {Cluster }} \\
&=\sum_{j=1}^{M} \ell_{j}^{C} / M+\eta \sum_{i=1}^{2 M} \ell_{i}^{I} / 2 M
\end{aligned}
$$
- 聚类结果可视化:
Open Intent Discovery through Unsupervised Semantic Clustering and Dependency Parsing
- paper
- 作者定义了一个新任务:Open Intent Discovery,是指从无标注的对话数据中自动挖掘意图集合,并进行分类,整体框架如下:
Discovering New Intents with Deep Aligned Clustering
- AAAI2021, paper, code
- 本文提出了一种半监督意图聚类方法,能有效利用少量先验知识指导新意图发现。该方法将少量有标签已知意图样本信息泛化到无标签意图上,并在新意图类别数量未知时有效估计意图数量。为了提升聚类效果,论文提出了一种对齐策略,能结合聚类簇中心和簇分配信息,构建高质量自监督信号用于表示学习。
- 模型主要分为三个部分: 意图特征提取,知识迁移,深度对齐聚类。首先,利用BERT作为特征提取器获得深度意图特征表示。其次,利用有限的已知意图标注数据进行知识迁移,即将少量已知意图先验知识泛化到大量无标签意图(包括已知和未知意图)上。最后,提出了一个聚类对齐策略,利用对齐的簇分配作为自监督信号用于意图表示学习。在训练收敛之后,再一次聚类对模型进行评估。
意图特征提取: 利用BERT语言模型提取意图特征。对于输入BERT的一句话,经过全部Transformer编码层之后,提取最后一层输出的词嵌入表示。然后,通过平均池化(mean-pooling)操作获得句向量表示,再经过一层致密层(Dense Layer)获得意图特征。
知识迁移: 为了充分利用少量有标签已知意图样本进行知识迁移,我们进行预训练和预测意图数量K两个步骤。预训练是利用简单的交叉熵损失函数,将已知意图分类作为下游任务,微调BERT模型参数,对意图特征进行初始化。为了预测意图数量K,我们事先定义一个较大的簇数目K’(如实际值两倍),然后利用经过初始化的意图特征进行聚类。当聚类簇个数较大的时候,不同簇的大小往往有差别,我们将簇包含的样本数量看作其置信度。真正的意图簇由于簇内样本之间相似性较高,置信度会更大。尽管意图特征只在已知意图上进行训练,但是其学到的弱语义相似性特征仍然有助于新意图聚类。因此,我们通过移除低置信度聚类簇,计算满足条件的簇个数(置信度高于阈值)来预测K:
$$
K=\sum_{i=1}^{K^{\prime}} \delta\left(\left|S_{i}\right|>=t\right)
$$
其中,阈值t设置为平均置信度,即以训练样本数量为全集、$K^{\prime}$为划分数的平均簇大小。为了进一步将已知意图知识迁移到无监督数据上,我们去掉预训练好的模型分类层,并保留剩余部分参数信息用于新意图发现。
深度对齐聚类: 分为两个步骤,无监督聚类和利用对齐伪标签进行自监督学习。首先,我们利用K-Means算法进行无监督聚类,产生最优簇分配和簇中心,利用簇分配作为伪标签用于特征的自监督学习。在这个过程中,深度神经网络训练和强大的特征提取能力会获得对聚类友好的特征表示,聚类过程则结合特征相似性为神经网络产生训练目标(即簇分配),二者交替进行彼此促进。然而,由于聚类簇分配序号是随机的,直接利用簇分配作为监督信号会导致不同迭代目标不一致的问题。因此,DeepCluster需要每轮迭代之前重新初始化分类层参数,无法保存历史模型参数信息,效果仍然不够理想。我们观察到DeepCluster只利用簇分配作为训练目标,而忽略了聚类簇中心。但是在每次聚类过程中,簇中心恰恰是产生簇分配的来源,即每一样本结合欧式距离最近的簇中心产生簇分配序号。我们假设相邻迭代之间,同一意图簇中心欧式距离位置较近,利用Hungarian算法(The Hungarian method for the assignment problem)在欧式空间上获得当前迭代簇中心Cc和上一迭代簇中心Cl的对齐映射G:
$$
\boldsymbol{C}^{c}=G\left(\boldsymbol{C}^{l}\right)
$$
相邻迭代簇中心和簇分配的对齐映射是一致的,由于Hungarian算法产生的是一一映射,我们将逆映射作用在当前迭代产生的簇分配,获得和上一迭代对齐的簇分配作为伪标签。我们使用结合交叉熵损失函数,利用对齐伪标签作为自监督学习目标,通过下游分类任务微调模型参数。
- 主实验结果:
Referecne
- https://mp.weixin.qq.com/s/qg56LhHj9WzZGoEtSfTMog