【自然语言处理】【聚类】DeepAligned:使用深度对齐聚类发现新意图

《Discovering New Intents with Deep Aligned Clustering》

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

一、简介

  • 意图发现 在对话系统中,发现新的用户意图对于改善对话系统的服务至关重要。通过进一步分析发现的新意图,能够发现潜在的用户兴趣,并提供新的商业机会和改善对话系统。
  • 现有的方法 近些年,研究人员将意图发现作为无监督聚类问题,并尝试加入弱监督信号来指定聚类过程。举例来说,Hakkani-Tur \text{Hakkani-Tur}Hakkani-Tur等人利用语义解析图作为外部知识,从聚类中挖掘出新意图。Padmasundari \text{Padmasundari}Padmasundari则使用多种聚类技术共同发现相似语义的新意图。Haponchyk \text{Haponchyk}Haponchyk等人则人结构化输出的监督下将问题聚类至用户意图上。Shi \text{Shi}Shi等人使用自编码器抽取意图的特征,并使用层次聚类来自动标注意图。 但是,这些方法并没有利用已知意图的先验知识,并假设无标注样本仅有未发现的新意图构成。更加常见的情况是,无标注数据中混合了已知意图和新意图。本文的目标是使用有限的标注样本作为先验知识,从无标注样本中找出已知意图的样本和发现新意图。先前的工作CDAC+ \text{CDAC+}CDAC+直接解决了该问题。但是,使用成对相似性来作为弱监督信号,这样容易将无标注样本中的已知意图样本和未知意图样本混淆,导致新意图发现的效果下降。
  • 解决方案 总的来说,存在两个主要的困难。
  • 如何利用有限的标注数据,将已知意图的先验知识迁移至新意图?
  • 如何构造高质量的监督信号来学习有益于聚类的向量表示? 本文为了解决这些问题,提出了一种称为DeepAligned \text{DeepAligned}DeepAligned的方法。该方法首先会利用预训练语言模型BERT \text{BERT}BERT来抽取意图的特征表示。然而,利用有效的标注数据来进行模型的预训练,保留预训练的参数用于初始化意图表示。最后,在抽取的意图特征表示上执行聚类,并通过消除低置信度簇来估计簇的数量K K K。

二、相关工作

​ 许多研究人员尝试在对话系统中建模用户意图。建模方式主要分为两条线:(1) 通过其他任务来丰富意图,例如情感分类和槽填充;(2) 利用语义信息构造意图表示的监督信息。 本文按第二条线路建模意图。

​ 存在着许多经典的无监督聚类算法,例如基于划分的方法、层次方法和基于密度的方法。然而,在高维特征下会遭遇高计算复杂度和效果差的问题。通过特征降维和数据转换可以缓解这些问题,但是仍然无法捕获意图的高维语义特征。

  • 深度聚类 随着深度学习的发展,研究人员采用深度神经网络来抽取有益于聚类的特征。
  • JULE \text{JULE}JULE合并层次聚类和深度特征,但是在大规模数据集上需要大量的计算和内存消耗;
  • DEC \text{DEC}DEC使用自编码器来抽取特征,并通过KL \text{KL}KL散度来迭代优化簇中心;
  • DCN \text{DCN}DCN在DEC \text{DEC}DEC基础上,进一步引入了K-Means \text{K-Means}K-Means损失函数最为惩罚项;
  • DAC \text{DAC}DAC利用成对相似度作为学习目标,并采用自适应学习算法来选择训练样本; 但是,上面的方法都无法为特征表示学习提供监督信号。
  • DeepCluster \text{DeepCluster}DeepCluster通过结构化输出来改善卷积神经网的判别能力,交替执行K-Means \text{K-Means}K-Means和表示学习。

​ 无监督聚类方法无法利用先验知识来指导聚类过程。因此,一些研究人员通过使用约束聚类来利用标注数据。经典约束聚类算法会使用成对信息作为约束,来指导表示学习和聚类过程。

  • COP-KMeans \text{COP-KMeans}COP-KMeans使用实例级约束,并修改K-Means \text{K-Means}K-Means来满足这些约束;
  • PCK-means \text{PCK-means}PCK-means提出了一种成对约束聚类框架,并使用主动学习来挑选更具信息量的成对约束;
  • MPCK-means \text{MPCK-means}MPCK-means在PCK-means \text{PCK-means}PCK-means基础上合并了度量学习。
  • KCL \text{KCL}KCL使用深度网络来执行成对约束聚类,其先会使用标注的辅助数据集训练一个相似度二分网络,然后迁移成对相似度先验知识至目标数据集;
  • MCL \text{MCL}MCL使用元分类似然函数作为学习成对相似度的度量;
  • CADC+ \text{CADC+}CADC+专门为发现新意图设计的,其利用有效的标注数据来指导成对相似度。但是,它在提供监督信号方法存在局限性,且不能估计出新意图的数量;
  • DTC \text{DTC}DTC是计算机视觉中发现新类别的方法,其改善了DEC \text{DEC}DEC算法并利用标注数据的知识来估计新类别的数量;

三、意图表示

​ 本文使用BERT \text{BERT}BERT来抽取意图的深度向量表示。首先,将第i i i个句子s i s_i s i ​输入至BERT \text{BERT}BERT,并从最后的隐藏层获得所有token的嵌入向量表示[ C L S , T 1 , … , T M ] ∈ R ( M + 1 ) × H [CLS,T_1,\dots,T_M]\in\mathbb{R}^{(M+1)\times H}[C L S ,T 1 ​,…,T M ​]∈R (M +1 )×H。然而,利用mean-pooling来获取句子的平均特征表示z i ∈ R H z_i\in\mathbb{R}^H z i ​∈R H:
z i = mean-pooling ( [ C L S , T 1 , … , T M ] ) \textbf{z}_i=\text{mean-pooling}([CLS,T_1,\dots,T_M])z i ​=mean-pooling ([C L S ,T 1 ​,…,T M ​])
其中,C L S CLS C L S文本分类向量,M M M是序列长度,H H H是隐藏层尺寸。为了进一步增强特征抽取能力,还添加了全连接层h h h来获得意图特征表示I i ∈ R D \textbf{I}_i\in\mathbb{R}^D I i ​∈R D:
I i = h ( z i ) = σ ( W h z i + b h ) \textbf{I}_i=h(z_i)=\sigma(W_h\textbf{z}_i+b_h)I i ​=h (z i ​)=σ(W h ​z i ​+b h ​)
其中,D D D是意图向量的维度,σ \sigma σ是Tanh \text{Tanh}Tanh激活函数,W h ∈ R H × D W_h\in\mathbb{R}^{H\times D}W h ​∈R H ×D是权重矩阵,b h ∈ R D b_h\in\mathbb{R}^D b h ​∈R D是对应偏置项。

四、从已知意图转移知识

​ 为了有效地转移知识,本文利用有限的标注数据来预训练模型,并利用训练好的意图特征来估计聚类算法中的簇数量。

​ 本文希望合并有限的先验知识来获取更好的向量表示来初始化意图表示,从而聚合已知意图和新意图。具体来说,使用标注数据进行有监督学习,从而达到预训练模型的效果。预训练后,移除分类器并使用余下的网络作为特征抽取器,用于后续的无监督聚类。

​ 在真实场景中,通常不知道新意图的数量。本文提出了一种简单的方法来估计新意图的数量K K K。

​ 首先,分配一个大的簇数量K ′ K’K ′。由于良好的特征初始化对于像K-Means \text{K-Means}K-Means这样基于划分的方法有帮助,所以本文使用预训练的模型来抽取意图特征表示。然后,在抽取的特征向量上执行K-Means \text{K-Means}K-Means。由于真实的簇趋向于稠密,那么尺寸大于某个阈值t t t的簇则更加的确信。本文中去掉尺寸小于t t t的低置信度簇,得到簇数量K K K
K = ∑ i = 1 K ′ δ ( ∣ S i ∣ ≥ t ) K=\sum_{i=1}^{K’}\delta(|S_i|\geq t)K =i =1 ∑K ′​δ(∣S i ​∣≥t )
其中,∣ S i ∣ |S_i|∣S i ​∣是第i i i个簇的大小;δ ( c o n d i t i o n ) \delta(condition)δ(c o n d i t i o n )是指示函数,当c o n d i t i o n condition c o n d i t i o n满足时为1,否则为0。特别地,阈值t t t为簇的平均尺寸N K ′ \frac{N}{K’}K ′N ​,N N N是样本数量。

五、深度对齐聚类

​ 已知意图中的知识迁移完成后,本文提出了一种高效聚类方法来寻找未标注样本中的已知类别样本和新类别样本。首先,执行聚类算法来获取簇分配和簇中心;然后,利用提出的策略为自监督学习提供对齐目标。

​ 受DeepCluster \text{DeepCluster}DeepCluster启发,可以利用BERT \text{BERT}BERT的鉴别能力来产生弱监督信号。具体来说,首先使用预训练模来抽取所有训练样本的特征向量表示。然后,使用标准的K-Means \text{K-Means}K-Means聚类算法,学习最优的簇中心矩阵C \textbf{C}C和样本分配{ y i } i = 1 N {y_i}{i=1}^N {y i ​}i =1 N ​
m i n C ∈ R K × D 1 N ∑ i = 1 N m i n y i ∈ { 1 , … , K } ∥ I i − C y i ∥ 2 2 \mathop{min}
{\textbf{C}\in\mathbb{R}^{K\times D}}\frac{1}{N}\sum_{i=1}^N\mathop{min}{y_i\in{1,\dots,K}}\parallel \textbf{I}_i-\textbf{C}{y_i} \parallel_2^2 min C ∈R K ×D ​N 1 ​i =1 ∑N ​min y i ​∈{1 ,…,K }​∥I i ​−C y i ​​∥2 2 ​
其中,N N N是训练样本的数量,∥ ⋅ ∥ 2 2 \parallel\cdot\parallel_2^2 ∥⋅∥2 2 ​是欧式距离平方。

​ DeepCluster \text{DeepCluster}DeepCluster会交替的执行聚类和网络参数更新,其使用K-Means \text{K-Means}K-Means生成的簇分配作为软标签,然后利用这些软标签训练神经网络。然而,在每个epoch训练中K-Means \text{K-Means}K-Means是索引是随机排列的,因此分类器参数在每个epoch之前都需要重新初始化。本体提出了新的对齐策略来解决簇分配索引不一致的问题。

​ DeepCluster \text{DeepCluster}DeepCluster并没有使用簇中心矩阵C \textbf{C}C。然而,C \textbf{C}C包含了最优分配的目标,至关重要。由于每个样本的嵌入向量会被分配至欧式空间中最接近的簇中心,那么在不同epoch间使用C \textbf{C}C作为先验知识来调整簇分配的不一致问题。也就是说,将问题转换为簇中心对齐问题。尽管意图的向量表示在不断的更新,但是相似的意图会被分布在接近的地方。簇中心综合了该簇中所有的意图样本,所以其更加的稳定并适合指定对齐过程。

​ 假设训练过程中的连续epoch,簇中心在欧式空间中的分布相对一致,那么采用Hungarian \text{Hungarian}Hungarian算法来获取最优簇中心映射G \text{G}G
C c = G ( C l ) \textbf{C}^c=G(\textbf{C}^l)C c =G (C l )
其中,C c \textbf{C}^c C c和C l \textbf{C}^l C l分别表示当前epoch和上一个epoch的簇中心矩阵。

​ 随后,利用G ( ⋅ ) G(\cdot)G (⋅)获取对齐的伪标签
y a l i g n = G − 1 ( y c ) y^{align}=G^{-1}(y^c)y a l i g n =G −1 (y c )
其中,G − 1 G^{-1}G −1表示G G G的逆映射,y c y^c y c表示当前训练epoch的伪标签。

​ 最后,使用对齐的伪标签执行自监督学习,损失函数为L s \mathcal{L}s L s ​:
L s = − 1 N ∑ i = 1 N log e x p ( ϕ ( I i ) y i a l i g n ) ∑ j = 1 K e x p ( ϕ ( I i ) j ) \mathcal{L}_s=-\frac{1}{N}\sum
{i=1}^N\text{log}\frac{exp(\phi(\textbf{I}i)^{y_i^{align}})}{\sum{j=1}^K exp(\phi(\textbf{I}_i)^j)}L s ​=−N 1 ​i =1 ∑N ​log ∑j =1 K ​e x p (ϕ(I i ​)j )e x p (ϕ(I i ​)y i a l i g n ​)​
其中,ϕ ( ⋅ ) \phi(\cdot)ϕ(⋅)是自监督学习的伪分类器,ϕ ( ⋅ ) j \phi(\cdot)^j ϕ(⋅)j表示第j j j个类别的logit \text{logit}logit。

​ 在每个epoch中K-Means \text{K-Means}K-Means训练之后,使用CVI(cluster validity index) \text{CVI(cluster validity index)}CVI(cluster validity index)评估簇的质量。具体来说,采样无监督独立Silhouette Coefficient \text{Silhouette Coefficient}Silhouette Coefficient进行评估
S C = 1 N ∑ i = 1 N b ( I i ) − a ( I i ) max { a ( I i , b ( I i ) ) } SC=\frac{1}{N}\sum_{i=1}^N\frac{b(\textbf{I}_i)-a(\textbf{I}_i)}{\text{max}{a(\textbf{I}_i,b(\textbf{I}_i))}}S C =N 1 ​i =1 ∑N ​max {a (I i ​,b (I i ​))}b (I i ​)−a (I i ​)​
其中,a ( I i ) a(\textbf{I}_i)a (I i ​)是I i \textbf{I}_i I i ​与第i i i个簇中所有样本的平均距离,其表示簇内的凝聚度。b ( I i ) b(\textbf{I}_i)b (I i ​)是I i \textbf{I}_i I i ​与非第i i i个簇的所有样本的最小距离,其表示簇间的分离度。S C SC S C的范围介于-1和1之间,并且高分数意味着更好的聚类结果。

Original: https://blog.csdn.net/bqw18744018044/article/details/123598985
Author: BQW_
Title: 【自然语言处理】【聚类】DeepAligned:使用深度对齐聚类发现新意图

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/528562/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球