锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

【自然语言处理】【聚类】DCSC:利用基于对比学习的半监督聚类算法进行意图挖掘

时间:2023-02-03 00:00:00 9zj1b2连接器

利用基于比较学习的半监督聚类算法进行意图挖掘
《Semi-Supervised Clustering with Contrastive Learning for Discovering New Intents》

论文地址:https://arxiv.org/pdf/2201.07604.pdf

相关博客:
自然语言处理聚类基于神经网络的聚类算法DEC
自然语言处理聚类基于对比学习的聚类算法SCCL
自然语言处理聚类DCSC:利用基于比较学习的半监督聚类算法进行意图挖掘
自然语言处理聚类DeepAligned:对齐聚类发现新意图
自然语言处理聚类CDAC :通过深度自适应聚类发现新意图
计算机视觉聚类DeepCluster:深度聚类算法用于视觉特征无监督学习
计算机视觉聚类SwAV:学习基于对比簇分配的无监督视觉特征
计算机视觉聚类CC:对比聚类
计算机视觉聚类SeLa:自标注算法同时进行聚类和表示学习
自然语言处理聚类ECIC:短文本聚类通过迭代分类增强
自然语言处理聚类TELL:可解释神经聚类

一、简介

1. 意图挖掘

任务导向的对话系统依赖于自然语言理解( NLU \text{NLU} NLU),将对话分类为已知意图,并使用预先准备好的答案进行回复。如果你能尽可能多地找到新的意图,聊天机器人可以回答更多的问题,从而改善用户体验。聚类算法通常用来将意图相同的样本聚集在同一个簇中,每个簇都可以被视为意图。此外,由于聚类样本将用于训练分类模型,因此聚类的准确性对意图识别模型也非常重要。因此,一个好的聊天机器人不仅依赖它 NLU \text{NLU} NLU能力也取决于早期准备的工作,如聚类。

2. 聚类

提出了许多意图挖掘领域的工作。早期主要集中在无监督聚类算法上,基本方法是合并编码器模型和聚类模型。一般来说,使用特征提取编码器 BERT \text{BERT} BERT SBERT \text{SBERT} SBERT使用这种语言模型和聚类模型 K-Mean \text{K-Mean } K-Mean HDBSCAN \text{HDBSCAN} HDBSCAN等待机器学习方法。然而,这种分离编码步骤和聚类步骤的方法并不能通过聚类损失函数来优化编码器的向量表示。为了解决这个问题,一些早期工作使用基于深度学习的距离方法,如 DEC \text{DEC} DEC DCN \text{DCN} DCN。这些方法将向量表示和无监督聚类结合到相同的优化过程中,并提高最终效果。最近,一些研究试图引入比较学习损失函数来进一步提高效果。 DeepCluster \text{DeepCluster} DeepCluster SwAV \text{SwAV} SwAV基于深度学习的对比学习和聚类大大改善了下游任务的图像表示。 SCCL \text{SCCL} /span>SCCL则使用对比学习改善 DEC \text{DEC} DEC,在无监督文本聚类任务上取得了相当好的效果。

  • 半监督聚类

    一般来说,在真实场景中存在着少量已知意图的样本可以使用,但是还存在着大量的无标注语料等待着被分类到已知或者未知的意图。无监督聚类方法无法从这些标注数据中获益从而指定聚类过程,因此近期的研究尝试使用半监督模型来利用这些有限的监督信息。模型 CDAC+ \text{CDAC+} CDAC+使用成对相似标注样本来指定聚类过程; DeepAligned \text{DeepAligned} DeepAligned则通过标注样本先训练一个效果更好的编码器,然后使用 K-Mean \text{K-Mean} K-Mean产生的伪标签来迭代训练这个编码器。

3. 模型 DCSC \text{DCSC} DCSC

​ 总体来说,存在两个途径来改善聚类。

  • 利用标注好的意图样本来更好的初始化文本向量表示;
  • 构建一个联合优化向量表示和聚类的模型;

​ 论文提出了基于深度对比的半监督聚类算法 DCSC \text{DCSC} DCSC,该算法使用 BERT \text{BERT} BERT作为主干网络,并通过两阶段任务来训练。第一阶段, DCSC \text{DCSC} DCSC使用交叉熵和监督对比学习来利用标注样本,并利用无监督对比损失来利用未标注样本。第二阶段,我们通过分类器构建伪标签,然后使用交叉熵和监督对比损失函数来在真实标签和伪标签上进行训练。

​ 此外,论文在公开数据集 Clinc \text{Clinc} Clinc Banking \text{Banking} Banking上进行了实验,且实验设置与 DeepAligned \text{DeepAligned} DeepAligned保持一致。此外,论文使用 Accuarcy(ACC) \text{Accuarcy(ACC)} Accuarcy(ACC) Adjusted Rand Index(ARI) \text{Adjusted Rand Index(ARI)} Adjusted Rand Index(ARI) Normalized Mutual Infomation(NMI) \text{Normalized Mutual Infomation(NMI)} Normalized Mutual Infomation(NMI)作为评估指标。

二、相关工作

1. 对比学习

​ 对比学习从不同的视角对样本进行增强,然后令模型区分相同样本的不同视角下的增强。例如 SimCLR \text{SimCLR} SimCLR通过对比学习在下游任务中实现了很好的效果。 SimCSE \text{SimCSE} SimCSE则使用简单有效的方法实现了 NLP \text{NLP} NLP任务的数据增强,并在语义相似度任务上实现了非常好的效果。此外,对比学习被扩展至监督任务上,在嵌入空间中将相同类别的样本拉近,将不同类别的样本拉远。

2. 深度聚类

​ 使用深度网络联合优化向量表格和聚类,可以使向量表示更加适合聚类空间。 DEC \text{DEC} DEC这样的早期工具,使用神经网络替换 K-Means \text{K-Means} K-Means,然后迭代优化神经网络。但是,这种方法可能会导致平凡解,即大多数的实例可能被分配至同一个簇。 SwAV \text{SwAV} SwAV则将聚类问题转换为运输问题,然后使用 Sinkhorn-Knopp \text{Sinkhorn-Knopp} Sinkhorn-Knopp算法来产生软、伪分配。

3. 半监督聚类

​ 一些研究尝试利用半监督聚类算法进行意图发现。 DeepAligned \text{DeepAligned} DeepAligned提出了两阶段训练策略,骨干网络使用分类标签获取更好的向量表示,然后通过 K-Mean \text{K-Mean} K-Mean产生的伪标签训练分类模型。

三、方法

DCSC \text{DCSC} DCSC的目标是从原始语料中发现新意图,主要包括两个阶段:warm up阶段和聚类阶段。

1. Warm Up阶段

DCSC \text{DCSC} DCSC的主干网络是语言模型,其使用语言模型的隐藏层输出,然后使用mean pooling聚合出维度为 D D D的文本向量表示,并使用全连接层获取最终的向量表示。在数据增强阶段,使用 SimCSE \text{SimCSE} SimCSE相同的策略,也就是使样本输入具有dropout骨干网络来获得2个不同视角的样本。给定一个batch的样本 X = { x 1 , x 2 , … , x N } X=\{x_1,x_2,\dots,x_N\} X={ x1,x2,,xN},然后通过骨干网络得到的两个不同视角的输出为 Z = { z 1 , z 2 , … , z N } Z=\{z_1,z_2,\dots,z_N\} Z={ z1,z2,,zN} Z ′ = { z N + 1 , z N + 2 , … , z 2 N } Z'=\{z_{N+1},z_{N+2},\dots,z_{2N}\} Z={ zN+1,zN+2,,z2N},其中索引 I = { 1 , 2 , … , 2 N } I=\{1,2,\dots,2N\} I={ 1,2,,2N}

​ 对于那些有标注样本,其具有标注 Y = { y 1 , y 2 , … , y N } Y=\{y_1,y_2,\dots,y_N\} Y={ y1,y2,,yN} DCSC \text{DCSC} DCSC会计算交叉熵损失函数 L c e w a r m u p \mathcal{L}_{ce}^{warmup} Lcewarmup
L c e w a r m u p = − 1 N ∑ i = 1 N l o g    exp ( w y i ⋅ z i ) ∑ j = 1 K exp ( w j ⋅ z i ) \mathcal{L}_{ce}^{warmup}=-\frac{1}{N}\sum_{i=1}^Nlog\;\frac{\text{exp}(w_{y_i}\cdot z_i)}{\sum_{j=1}^K\text{exp}(w_j\cdot z_i)} Lcewarmup=N1i=1Nlogj=1Kexp(wjzi)exp(wyizi)
其中, K K K是已知意图的数量, W = { w 1 , w 2 , … , w n } W=\{w_1,w_2,\dots,w_n\} W={ w1,w2,,wn}形状为 ( K , D ) (K,D) (K,D)的分类器权重。这个warm up 步骤类似于 DeepAligned \text{DeepAligned} DeepAligned,但是作者认为这种分类任务并不能为聚类产生理想的向量表示。为此,本文添加了另一个监督对比学习损失函数,用于调整同一类别和不同类别样本间的距离。监督对比损失函数为
L s c w a r m u p = ∑ i = 1 2 N − 1 ∣ P ( i ) ∣ ∑ p ∈ P ( i ) log    exp ( z i ⋅ z p / τ ) ∑ j ∈ A ( i ) exp ( z i ⋅ z j / τ ) \mathcal{L}_{sc}^{warmup}=\sum_{i=1}^{2N}\frac{-1}{|P(i)|}\sum_{p\in P(i)}\text{log}\;\frac{\text{exp}(z_i\cdot z_p/\tau)}{\sum_{j\in A(i)}\text{exp}(z_i\cdot z_j/\tau)} Lscwarmup=i=12NP(i)1pP(i)logjA(i)exp(zizj/τ)exp(zizp/τ)
其中, A ( i ) ≡ I ∖ { i } , P ( i ) ≡ { p ∈ A ( i ) : y ~ p = y ~ i } A(i)\equiv I\setminus \{i\},P(i)\equiv\{p\in A(i):\tilde{y}_p=\tilde{y}_i\} A(i)I{ i},P(i){ pA(i):y~p=y~i},且 τ ∈ R + \tau\in\mathcal{R}^+ τR元器件数据手册
IC替代型号,打造电子元器件IC百科大全!

相关文章