Paper Reading《Supporting Clustering with Contrastive Learning 》
@author: SUFEHeisenberg
Paper url(Accepted by NAACL 2021). Github url. B站讲解. B站代码解析。
1. Intuition
通过TSNE可视化出数据进行聚类、对比学习之后的embedding分布我们可以看出:
- 数据本身特性分布就是重叠交叉的,单纯的聚类通过优化不同的基于距离或相似度的聚类目标得到的聚类纯度较差。
- 而基于实例的对比学习(Instance-Contrastive-Learning,下称Ins-CL)分散不同的实例,同时在某种程度上隐式地将相似的实例聚集在一起。
- Ins-CL可以通过分散重叠的类别来支持聚类。从而更好地分离不同的聚类,同时通过显式地将该聚类中的样本聚在一起来收紧每个聚类。
![image-20210913100916136](https://i-blog.csdnimg.cn/blog_migrate/d5072a9b135a1e23f0a522053061a2e0.png)
Contributions
- 提出一种新型端到端的无监督聚类框架SCCL,提高短文本聚类数据集的SOTA。且本方法更简单,其他方法通常需要多阶段独立训练。
- 分析并演示如何有地结合自上而下的聚类(top-down clustering )和自下而上的实例对比学习(bottom-up instance discrimination ),以实现更好的类间距离和类内距离。
- 探讨用于SCCL的各种文本增强技术,不同于CV领域,结果表明在文本域使用复合增强并不总是有益的。
2. Model Architecture
本文的模型由三个组件组成。神经网络 ψ ( ⋅ ) \psi(\cdot) ψ(⋅)首先将输入数据映射到表示空间(特征生成器),两个不同的头 g ( ⋅ ) g(\cdot) g(⋅)和 f ( ⋅ ) f(\cdot) f(⋅)分别应用对比损失和聚类损失。
因为涉及到Ins-CL,本文的数据包括原始数据和增强数据。具体来说,对于随机抽样的minibatch B = { x i } i = 1 M B = \{x_i\}^M_{i=1} B={xi}i=1M,本文对 B B B 中的每个数据实例随机生成一对增强数据,得到一个规模为 2 M 2M 2M 的扩增集 B a = { x i } i = 1 2 M B_a = \{x_i\}^{2M}_{i=1} Ba={xi}i=12M。
2.1 Instance-wise Contrastive Learning
对于每个minibatch B B B, Instance-CL 损失是定义在$ B_a $的数据增强对上。
设
i
1
∈
{
1
,
⋯
,
2
M
}
i^1\in\{1,\cdots,2M\}
i1∈{1,⋯,2M} 表示扩增集
B
a
B_a
Ba 中任意实例的索引,
i
2
∈
{
1
,
⋯
,
2
M
}
i^2\in\{1,\cdots,2M\}
i2∈{1,⋯,2M} 为
B
a
B_a
Ba 中另一个实例的索引,和原集合
B
B
B 中同一实例索引一致。将
x
~
i
1
,
x
~
i
2
∈
B
a
\tilde{x}_{i^1},\tilde{x}_{i^2}\in B_a
x~i1,x~i2∈Ba作为一个正样本对,而将
B
a
B_a
Ba 中的其他
2
M
−
2
2M-2
2M−2 例子作为这个正样本对的负样本。
z
j
~
=
g
(
ψ
(
x
~
j
)
)
,
j
=
i
1
,
i
2
.
\tilde{z_j}=g(\psi(\tilde{x}_j)),j=i^1,i^2.
zj~=g(ψ(x~j)),j=i1,i2.作为
g
g
g后相关的输出。通过最小化
l
i
1
I
l^{I}_{i^1}
li1I来将正样本对和其他负样本对分离开
ℓ
i
1
I
=
−
log
exp
(
sim
(
z
~
i
1
,
z
~
i
2
)
/
τ
)
∑
j
=
1
2
M
1
j
≠
i
1
⋅
exp
(
sim
(
z
~
i
1
,
z
~
j
)
/
τ
)
\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^{1}}, \tilde{z}_{j}\right) / \tau\right)}
ℓi1I=−log∑j=12M1j=i1⋅exp(sim(z~i1,z~j)/τ)exp(sim(z~i1,z~i2)/τ)
本文中
τ
=
0.5
\tau=0.5
τ=0.5,使用一对标准化的点积(据实验经验,标准化后的相似性计算对下游任务更加友好。Chen et al. 2020)作为相似度函数:
sim
(
z
i
~
,
z
j
~
)
=
z
i
~
T
z
j
~
/
∥
z
i
~
∥
2
∥
z
j
~
∥
2
\text{sim}(\tilde{z_i},\tilde{z_j})=\tilde{z_i}^T\tilde{z_j}/\|\tilde{z_i}\|_2\|\tilde{z_j}\|_2
sim(zi~,zj~)=zi~Tzj~/∥zi~∥2∥zj~∥2
将所有小批量
B
a
B_a
Ba 的 loss 平均数作为 Instance-CL loss :
L
Instance-CL
=
∑
i
=
1
2
M
ℓ
i
I
/
2
M
\mathcal{L}_{\text {Instance-CL }}=\sum_{i=1}^{2 M} \ell_{i}^{I} / 2 M
LInstance-CL =i=1∑2MℓiI/2M
2.2 Clustering
通过无监督聚类将语义类别结构编码到表示中。与 Instance-CL 不同,聚类侧重于高维语义概念,并试图将来自相同语义类别的实例聚集在一起。假设数据由$ K $个语义类别组成,每个类别在表示空间中以其质心为特征, μ k , k ∈ { 1 , ⋯ , K } \mu_k ,k \in \{1,\cdots,K\} μk,k∈{1,⋯,K}。设 e j = ψ ( x j ) e_j=\psi(x_j) ej=ψ(xj)为特征生成器的输出,受Hinton(2008)启发使用 t-分布来计算当前样本 x j x_j xj分配到类簇集合 k k k的概率, α \alpha α为t-分布的自由度,在此取 α = 1 \alpha=1 α=1。
q j k = ( 1 + ∥ e j − μ k ∥ 2 2 / α ) − α + 1 2 ∑ k ′ = 1 K ( 1 + ∥ e j − μ k ′ ∥ 2 2 / α ) − α + 1 2 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}}} qjk=∑k′=1K(1+∥ej−μk′∥22/α)−2α+1(1+∥ej−μk∥22/α)−2α+1
为何公式(3)是一个t分布?
乍一看好像和 Z = X Y / n ∼ t ( n − 1 ) Z=\frac{X}{\sqrt{Y/n}}\sim t(n-1) Z=Y/nX∼t(n−1)的经典形式没什么关系。
但简单点来看,当 α = 1 \alpha=1 α=1时简化一下可以看到单独挑出分子来看其实是服从柯西分布的。
Cauchy Distuibution: f ( x ∣ θ ) = 1 π 1 1 + ( x − θ ) 2 f(x|\theta)=\frac{1}{\pi}\frac{1}{1+(x-\theta)^2} f(x∣θ)=π11+(x−θ)21。柯西分布本质上是一种**“低峰厚尾的病态的正态分布”**。
如DEC(Xie et al. 2016)本文使用一个线性层
f
(
⋅
)
f(\cdot)
f(⋅)来近似每个聚类的质心,并利用DEC提出的辅助分布迭代细化。(为什么利辅助统计量后迭代细化并没有解释,应该是在DEC论文中有详细阐述)。其中
p
j
k
p_{jk}
pjk表示辅助概率,定义为.
p
j
k
=
q
j
k
2
/
f
k
∑
k
′
q
j
k
2
/
f
k
′
p_{jk}=\frac{q^2_{jk}/f_k}{\sum_{k^{\prime}}q^2_{jk}/f_{k^{\prime}}}
pjk=∑k′qjk2/fk′qjk2/fk
其中
f
k
=
∑
j
=
1
M
q
j
k
f_k=\sum_{j=1}^Mq_{jk}
fk=∑j=1Mqjk。
What is 辅助统计量?
Def:如果统计量 S ( X ) S(\mathbf{X}) S(X)的分布与 θ \theta θ无关,则称 S ( X ) S(\mathbf{X}) S(X)为 θ \theta θ的辅助统计量。
一般而言分为两种
位置族辅助统计量
e.g. X 1 , ⋯ , X N X_1,\cdots,X_N X1,⋯,XN的 p d f pdf pdf为 f ( x − μ ) f(x-\mu) f(x−μ), 极差 R = X ( n ) − X ( 1 ) R=X_{(n)}−X_{(1)} R=X(n)−X(1)是辅助统计量。
尺度族辅助统计量
e.g. X 1 , ⋯ , X N X_1,\cdots,X_N X1,⋯,XN的 p d f pdf pdf为 1 σ f ( x / σ ) \frac{1}{\sigma}f(x/\sigma) σ1f(x/σ),则 X 1 / X n , ⋯ , X n − 1 / X n X_1/X_n,\cdots,X_{n-1}/X_n X1/Xn,⋯,Xn−1/Xn这 n − 1 n-1 n−1个与统计量都是辅助统计量。
位置-尺度族辅助统计量
e.g. X 1 , ⋯ , X N X_1,\cdots,X_N X1,⋯,XN的 p d f pdf pdf为 1 σ f ( ( x − μ ) / σ ) \frac{1}{\sigma}f((x-\mu)/\sigma) σ1f((x−μ)/σ),则 X ˉ − μ σ \frac{\bar{X}-\mu}{\sigma} σXˉ−μ是辅助统计量。
f k f_k fk可以解释一个minibatch中的软聚类频率。该目标分布首先通过平方提高了(原文为sharpens,Oxford释义:~ (sth) (up)to become or make sth better, more skilful, more effective, etc. than before (使)提高,改善)软分配概率 q j k q_{jk} qjk,然后用聚类频率 f k f_k fk对其进行归一化。通过这样做,可以鼓励从聚类器学习到高置信簇分配分布,同时克服不均衡聚类带来的偏倚。
之后通过优化目标之间的 KL 离散度,将聚类分配概率推向目标分布,
ℓ
j
C
=
K
L
[
p
j
∥
q
j
]
=
∑
k
=
1
K
p
j
k
log
p
j
k
q
j
k
\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}}
ℓjC=KL[pj∥qj]=k=1∑Kpjklogqjkpjk
聚类的 loss 最终可以表示为
L
Cluster
=
∑
j
=
1
M
ℓ
j
C
/
M
\mathcal{L}_{\text {Cluster }}=\sum_{j=1}^{M} \ell_{j}^{C} / M
LCluster =j=1∑MℓjC/M
Xie 等人(2016)最初提出的该种Loss是要进行Layer-wise的更新的,本文通过公式(6)取了平均之后简化为端到端训练,每次迭代再更新分布。
2.3 Overall objective
L
=
L
Instance-CL
+
η
L
Cluster
=
∑
j
=
1
M
ℓ
j
C
/
M
+
η
∑
i
=
1
2
M
ℓ
i
I
/
2
M
\begin{aligned} \mathcal{L} &=\mathcal{L}_{\text {Instance-CL }}+\eta \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}
L=LInstance-CL +ηLCluster =j=1∑MℓjC/M+ηi=1∑2MℓiI/2M
η
\eta
η用于平衡SCCL的对比损失和聚类损失,本文选取
η
=
10
\eta=10
η=10 。
3. Experiments
3.1 Exp results
![image-20210913113352481](https://i-blog.csdnimg.cn/blog_migrate/bc6da08b92001777cb300144bbb752b4.png)
除了Biomedical这种文本语料比较特异的文本,其他数据集都表现较好且提升幅度较大。(不过baseline是不是有点少?)
3.2 Ablation study
![](https://tva1.sinaimg.cn/large/008i3skNly1gug7gnoosxj61lw0qqn2t02.jpg)
SCCL-seq是指先对比学习再聚类,而不是放到一个框架中优化loss之和。Fig.3可以看到还是融合框架中更具有竞争力。
![image-20210914155006232](https://tva1.sinaimg.cn/large/008i3skNly1gug7hd0qd7j60s60q842802.jpg)
实线:groundtruth真值标签;虚线:模型预测的标签
对于给定的簇,簇内距离是质心与该簇内所有样本之间的平均距离,簇间距离是与其最近的近邻簇之间的距离。
聚类是趋向于增大簇内距离减小簇间距离的学习过程,但是我们观察到左上角的图用groundtruth的时候500个iteration之后聚类内的簇内距离是会变大的,可能就是来自不同的ground-truth聚类的数据在聚类开始之前通常在嵌入空间中有很大的重叠,此时只用聚类很难将其分开。
而Instance-CL只关注实例区分,会趋向于分散embedding空间,增大簇内距离减小簇间距离,SCCL利用clustering和Instance-CL进行优势互补。
4. Problems
- 感觉像几个组件的简单拼接,没有什么实质性的创新
- baseline较少
- 对比学习过程有点像《SCAN: Learning to Classify Images without Labels》。SCAN是在对比学习后面接了个softmax近邻分类,第三阶段用的self-labeling(聚类其实就是一个self-labeling的过程)