SeLa:Self Labeling Via Simultaneous Clustering and Representation Learning

方法论

有监督的分类任务实现

  • 给定一个将数据I映射至特征向量 x ∈ R D x ∈ R^D x∈RD 的深度神经网络 Φ Φ Φ ,即 x = Φ ( I ) x = Φ ( I ) x=Φ(I)。
  • 使用有N个样本 I 1 , ... , I N I_1 , ... , I_N I1,...,IN, 且具有标签 y 1 , ... , y N ∈ { 1 , ... , K } y_1 , ... , y_N ∈ \{ 1 , ... , K \} y1,...,yN∈{1,...,K}的数据集训练该模型。
  • 分类头 h : R D → R K h : R^D → R^K h:RD→RK 将特征向量转化为一个类别分数向量。
  • 最后通过softmax将类别分数映射为类别概率 p ( y = ⋅ ∣ x i ) = s o f t m a x ( h ∘ Φ ( x i ) ) p ( y = ⋅ ∣ x i ) = softmax ( h ∘ Φ ( x i ) ) p(y=⋅∣xi)=softmax(h∘Φ(xi))。
  • 模型通过最小化平均交叉熵来学习。

E ( p ∣ y 1 , ... , y N ) = − 1 N ∑ i = 1 N log    p ( y i ∣ x i ) (1) E(p|y_1,\dots,y_N)=-\frac{1}{N}\sum_{i=1}^N\text{log}\;p(y_i|\textbf{x}_i) \tag{1} E(p∣y1,...,yN)=−N1i=1∑Nlogp(yi∣xi)(1)

今天求佛x_i =1,明天中彩票的概率和明天不中彩票的概率

半监督方法

Self-training 是最简单的半监督方法之一,其主要思想是找到一种方法,用未标记的数据集来扩充已标记的数据集。算法流程如下

  1. 首先,利用已标记的数据来训练一个好的模型,然后使用这个模型对未标记的数据进行标记。
  2. 然后,进行伪标签的生成,因为已训练好的模型对未标记数据的所有预测都不可能都是完全正确的,因此对于经典的 Self-training,通常是使用分数阈值(confidence score)过滤部分预测,以选择出未标记数据的预测标签的一个子集。
  3. 其次,将生成的伪标签与原始的标记数据相结合,并在合并后数据上进行联合训练。
  4. 整个过程可以重复 n 次,直到达到收敛。

Self-training 最大的问题在就在于伪标签非常的 noisy,会使得模型朝着错误的方向发展。以下文章大多数都是为了解决这个问题

退化解

  • 如果能够获取一部分的标签,那么该方法就可以使用。但是,在无监督分类中,该方法会导致退化解。也就是,可以通过将数据数据样本分配到同一个标签来实现等式(1)的最小化。

E ( p , q ) = − 1 N ∑ i = 1 N ∑ y = 1 K q ( y ∣ x i ) log    p ( y ∣ x i ) (2) E(p,q)=-\frac{1}{N}\sum_{i=1}^N\sum_{y=1}^K q(y|\textbf{x}_i)\text{log}\;p(y|\textbf{x}_i) \tag{2} E(p,q)=−N1i=1∑Ny=1∑Kq(y∣xi)logp(y∣xi)(2)

  • 若后验概率分布(密度函数) q ( y ∣ x i ) = δ ( y − y i ) q(y∣x i)=δ(y−y_i) q(y∣xi)=δ(y−yi)是确定的,那么等式(1)和等式(2)就是等价的,即

  • E ( p , q ) = E ( p ∣ y 1 , ... , y N ) E ( p , q ) = E ( p ∣ y_1 , ... , y_N ) E(p,q)=E(p∣y1,...,yN)

  • 在本方法中,优化分布q就等价于重写分配标签,这会导致退化解。

  • 为了避免退化解问题,该方法为标签的重新分配添加了均等划分约束。

  • 一开始以为这是贝叶斯公式 P(A|B) = P(B|A) * P(A) / P(B) ,后来发现这有点类似"任意信号都可以用冲激信号的组合表示"。

min p , q    E ( p , q ) subject to ∀ y : q ( y ∣ x i ) ∈ { 0 , 1 }    and ∑ i = 1 N q ( y ∣ x i ) = N K (3) \mathop{\text{min}}_{p,q}\; E(p,q)\quad\text{subject to}\quad\forall y:q(y|\textbf{x}i)\in\{0,1\}\; \text{and}\sum{i=1}^N q(y|\textbf{x}_i)=\frac{N}{K} \tag{3} minp,qE(p,q)subject to∀y:q(y∣xi)∈{0,1}andi=1∑Nq(y∣xi)=KN(3)

该约束意味着每个样本 x i x_i xi 都会被均等的分配至每个标签上,也就是整体N个样本被均匀分配到K个类别上。

transportation polytope求解满足条件的q

​ 优化以上目标函数中的q是一个难以优化的组合优化问题。但是,其可以看做是一个相对容易求解的最优运输问题的实例。

最优传输

Transportation polytope 是一个数学概念,用于描述运输问题的解空间。在运输问题中,需要确定如何将一组货物从供应地点运送到需求地点,以最小化总运输成本。

一个例子:考虑一个运沙子的问题,第一堆沙子的分布为r=(0.6,0.4),第二堆沙子的分布为c=(0.2,0.6,0.2)。下表就描述了一种搬运方式: 即把0.6的第一堆沙子全搬到第二堆, 把0.4的第二堆沙子平均搬到的第一堆和第三堆.

0.2 0.6 0.2
0.6 0 0.6 0
0.4 0.2 0 0.2

给定2 × 3的代价矩阵M,如果求最小cost就成了最优化问题。从r映射到c的代价可以用传输矩阵(transport matrix)(或联合概率)量化为:
d M ( r , c ) : = m i n Q ∈ U ( r , c )    ∑ i , j Q i , j M i , j = ⟨ Q , M ⟩ d_{\color{red}M}(r,c):=min {Q ∈ U ( r , c )}    \sum{i,j}Q_{i,j}{\color{red}M}_{i,j}= ⟨ Q, M ⟩ dM(r,c):=minQ∈U(r,c)  i,j∑Qi,jMi,j=⟨Q,M⟩

因此在分布 r 、c 约束下,问题解空间可以做如下定义:
U ( r , c ) : = { Q ∈ R + K × N ∣ Q 1 = r , Q ⊤ 1 = c } U(r,c):=\{Q\in\mathbb{R}_+^{K\times N}|Q\textbf{1}=r,Q^\top\textbf{1}=c\} U(r,c):={Q∈R+K×N∣Q1=r,Q⊤1=c}

特殊化到本文

  • 令 P y i = q ( y ∣ x i ) 1 N P_{y_i}=q(y|\textbf{x}_i)\frac{1}{N} Pyi=q(y∣xi)N1 表示由模型估计的、大小为K × N 的联合概率矩阵(N个样本得到的分布)。
  • 类似地,令 Q y i = p ( y ∣ x i ) 1 N Q_{y_i}=p(y|\textbf{x}_i)\frac{1}{N} Qyi=p(y∣xi)N1表示分配后的联合概率矩阵。

这里放松矩阵Q为transportation polytope上的元素,即
U ( r , c ) : = { Q ∈ R + K × N ∣ Q 1 = r , Q ⊤ 1 = c } (4) U(r,c):=\{Q\in\mathbb{R}_+^{K\times N}|Q\textbf{1}=r,Q^\top\textbf{1}=c\} \tag{4} U(r,c):={Q∈R+K×N∣Q1=r,Q⊤1=c}(4)

其中, 1 \textbf{1} 1表示具有合适维度的全1向量,所以r和c是矩阵Q在行和列上的投影。在本方法的例子中,需要Q是均等划分数据的条件概率分布矩阵,即需要满足
r = 1 K 类别数 ⋅ 1 , c = 1 N 样本数 ⋅ 1 r=\frac{1}{K类别数}\cdot\textbf{1},\quad c=\frac{1}{N样本数}\cdot\textbf{1} r=K类别数1⋅1,c=N样本数1⋅1

使用新的符号重写等式(3)的目标函数为
E ( p , q ) + l o g    N = ⟨ Q , − l o g    P ⟩ ( 5 ) (5) E ( p , q ) + log    N = ⟨ Q , − log    P ⟩ (5) \tag{5} E(p,q)+log  N=⟨Q,−log  P⟩(5)(5)

其中,⟨ ⋅ ⟩ 是两个矩阵的Frobenius点积,log应用在每个元素上。

因此,基于目标函数(3)来优化Q等价于求解下面的问题
m i n Q ∈ U ( r , c )    ⟨ Q , − l o g    P ⟩ ( 6 ) min Q ∈ U ( r , c )    ⟨ Q , − log    P ⟩ (6) minQ∈U(r,c)  ⟨Q,−log  P⟩(6)

这是一个线性规划问题,其可以在多项式时间内求解。在实际求解中,该线性规划可能涉及数百万个样本和上千个类别。传统求解运输问题的算法很难求解这种规模的问题,本文采用了一种称为Sinkhorn-Knopp的快速求解方法。这相当于引入正则化项

min Q ∈ U ( r , c )    ⟨ Q , − log    P ⟩ + 1 λ KL ( Q ∥ r c ⊤ ) (7) \mathop{\text{min}}_{Q\in U(r,c)}\;\langle Q,-\text{log}\; P\rangle+\frac{1}{\lambda}\text{KL}(Q\parallel rc^\top) \tag{7} minQ∈U(r,c)⟨Q,−logP⟩+λ1KL(Q∥rc⊤)(7)

其中,KL 是Kullback-Leibler 散度, r c ⊤ r c^⊤ rc⊤能够被看作是K × N的概率矩阵。添加这个正则化项的好处是,最小化等式(7)能够被重写为,推导过程添加链接描述
Q = d i a g ( α ) P λ d i a g ( β ) (8) Q = diag ( α ) P ^λ diag ( β ) \tag{8} Q=diag(α)Pλdiag(β)(8)

  • 其中,指数操作是元素级别,α 和β是选择的缩放稀疏向量,因此得到的矩阵Q仍然是一个概率矩阵。通过简单的矩阵缩放迭代就能够获得向量α和β。

​ 当λ非常大时,目标函数(7)等价于目标函数(6)。但是,即使只使用适度的λ,两个目标函数也往往具有类似的优化目标。λ的选择是收敛速度和运输问题求解精确度的一个折中。在本文中,使用一个固定的λ是合理的,因此本文感兴趣的是最终聚类和表示学习的结果,而不是准确的求解运输问题。

最终的算法描述

通过求解等式(6)来学习模型 h ∘ Φ h ∘ Φ h∘Φ 和标签分配Q,其中Q是概率矩阵,而模型 h ∘ Φ h ∘ Φ h∘Φ决定了预测结果 P y i = softmax y ( h ∘ Φ ( x i ) ) P_{y_i}=\text{softmax}_y(h\circ\Phi(\textbf{x}_i)) Pyi=softmaxy(h∘Φ(xi)) 。交替执行两面的两个步骤

步骤1:表示学习

给定一个当前的标签分配Q,通过最小化等式(6)来更新h ∘ Φ 的参数。这相当于普通分类问题的交叉熵损失函数。

步骤2:自标注

给定当前的模型h ∘ Φ ,计算对数概率P PP。然后通过使用等式(8)进行迭代更新来寻找Q
∀ y : α ← [ P λ β ] y − 1 ∀ i : β i ← [ α ⊤ P λ ] i − 1 \forall y:\alpha\leftarrow[P^\lambda\beta]_y^{-1}\quad\forall i:\beta_i\leftarrow[\alpha^\top P^\lambda]_i^-1 ∀y:α←[Pλβ]y−1∀i:βi←[α⊤Pλ]i−1

每次迭代更新都涉及到O ( N K )复杂度的矩阵乘法。所以,在数百万样本和上千个标签的情况下,速度也很快。在实际训练中,在ImageNet上使用GPU的话,可以在2分钟内达到收敛。

需要类似Deep一样的对所有样本数据的操作吗?是的

模型解释

-​ 如果将数据的索引i看作是概率为 p ( i ) = 1 / N p ( i ) = 1 / N p(i)=1/N 的均匀分布随机变量,且后验概率重写为数据索引i的概率 p ( y ∣ x i ) = p ( y ∣ i ) p ( y ∣ x i ) = p ( y ∣ i ) p(y∣xi)=p(y∣i)和 q ( y ∣ x i ) = q ( y ∣ i ) q ( y ∣ x i ) = q ( y ∣ i ) q(y∣xi)=q(y∣i) 。那么,等式(5)可以重写为

最坏情况中最好的

code

CG

相关推荐
B站计算机毕业设计超人2 小时前
计算机毕业设计Python+Flask微博情感分析 微博舆情预测 微博爬虫 微博大数据 舆情分析系统 大数据毕业设计 NLP文本分类 机器学习 深度学习 AI
爬虫·python·深度学习·算法·机器学习·自然语言处理·数据可视化
羊小猪~~2 小时前
深度学习基础案例5--VGG16人脸识别(体验学习的痛苦与乐趣)
人工智能·python·深度学习·学习·算法·机器学习·cnn
AI大模型知识分享5 小时前
Prompt最佳实践|如何用参考文本让ChatGPT答案更精准?
人工智能·深度学习·机器学习·chatgpt·prompt·gpt-3
小言从不摸鱼7 小时前
【AI大模型】ChatGPT模型原理介绍(下)
人工智能·python·深度学习·机器学习·自然语言处理·chatgpt
酱香编程,风雨兼程11 小时前
深度学习——基础知识
人工智能·深度学习
#include<菜鸡>12 小时前
动手学深度学习(pytorch土堆)-04torchvision中数据集的使用
人工智能·pytorch·深度学习
拓端研究室TRL12 小时前
TensorFlow深度学习框架改进K-means聚类、SOM自组织映射算法及上海招生政策影响分析研究...
深度学习·算法·tensorflow·kmeans·聚类
i嗑盐の小F13 小时前
【IEEE出版,高录用 | EI快检索】第二届人工智能与自动化控制国际学术会议(AIAC 2024,10月25-27)
图像处理·人工智能·深度学习·算法·自然语言处理·自动化
卡卡大怪兽14 小时前
深度学习:数据集处理简单记录
人工智能·深度学习
菜就多练_082814 小时前
《深度学习》深度学习 框架、流程解析、动态展示及推导
人工智能·深度学习