SeLa:Self Labeling Via Simultaneous Clustering and Representation Learning

方法论

有监督的分类任务实现

  • 给定一个将数据I映射至特征向量 x ∈ R D x ∈ R^D xRD 的深度神经网络 Φ Φ Φ ,即 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:RDRK 将特征向量转化为一个类别分数向量。
  • 最后通过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(py1,,yN)=N1i=1Nlogp(yixi)(1)

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

半监督方法

  • 计算机视觉中的半监督学习
  • https://amitness.com/2020/07/semi-supervised-learning/

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=1Ny=1Kq(yxi)logp(yxi)(2)

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

  • E ( p , q ) = E ( p ∣ y 1 , … , y N ) E ( p , q ) = E ( p ∣ y_1 , … , y_N ) E(p,q)=E(py1,,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 toy:q(yxi){0,1}andi=1Nq(yxi)=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.20.60.2
0.600.60
0.40.200.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):=minQU(r,c)  i,jQi,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):={QR+K×NQ1=r,Q1=c}

特殊化到本文

  • P y i = q ( y ∣ x i ) 1 N P_{y_i}=q(y|\textbf{x}_i)\frac{1}{N} Pyi=q(yxi)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(yxi)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):={QR+K×NQ1=r,Q1=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类别数11,c=N样本数11

使用新的符号重写等式(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) minQU(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} minQU(r,c)Q,logP+λ1KL(Qrc)(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λβ]y1i:βi[αPλ]i1

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

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

模型解释

​ 如果将数据的索引i ii看作是概率为p ( i ) = 1 / N p(i)=1/Np(i)=1/N的均匀分布随机变量,且后验概率重

最坏情况中最好的

code

  • https://paperswithcode.com/paper/self-labelling-via-simultaneous-clustering-1

CG

  • https://www.youtube.com/watch?v=d64KBkTOV_Q

  • https://papertalk.org/papertalks/4148

  • https://arxiv.org/pdf/1911.05371v3.pdf

  • https://medium.com/machine-intelligence-and-deep-learning-lab/self-labeling-via-simultaneous-clustering-and-representation-learning-6383dbf6f65e

  • https://blog.csdn.net/bqw18744018044/article/details/124218207

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1371.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Office如何通过VSTO进行WORD插件开发?

文章目录 0.引言1.工具准备2.WORD外接程序创建和生成3.外接程序生成并使用 0.引言 VSTO(Visual Studio Tools for Office )是VBA的替代,是一套用于创建自定义Office应用程序的Visual Studio工具包。VSTO可以用Visual Basic 或者Visual C#扩展…

华为ospf路由协议在局域网中的高级应用案例

关键配置: 1、出口为ospf区域0,下联汇聚依次区域1、2…,非骨干全部为完全nssa区域 2、核心(abr)上对非骨干区域进行路由汇总,用于解决出口两台路由的条目数量 3、ospf静默接口配置在汇聚下联接接入交换机的…

在Microsoft Excel中如何快速将上下两行数据合并为一行?

合并单元格是电子表格初学者最常用的选项之一。当一组单元格、行或列需要标题或标签时,合并单元格是一种常用的技术。 合并单元格时,仅保留区域左上角单元格中的值或公式,并将其显示在合并后的单元格中。将丢弃任何其他值或公式,那么如何在新的空白单元格中将两行数据合并…

基于FPGA的按键消抖

文章目录 基于FPGA的按键消抖一、按键消抖原理二、按键消抖代码三、仿真代码编写四:总结 基于FPGA的按键消抖 一、按键消抖原理 按键抖动:按键抖动通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性…

Makefile学习笔记

Makefile思想: 一个简单的 Makefile 文件包含一系列的“规则”,其样式如下: 目标:依赖 tab命令 例如: test : main.c sub.c sub.h gcc -o test main.c sub.c如果“依赖文件”比“目标文件”更加新,那么执…

如何保证消息的可靠性+延迟队列(TTL+死信队列+延迟队列)

目录 1.如何保证消息的可靠性 1.1.消息的可靠投递 confirm机制 return机制 1.2.如何保证消息在队列中不丢失 1.3.确保消息能可靠的被消费掉 2.延迟队列 2.1.TTL 2.2.死信队列 2.3.延迟队列 3.如何防止消费者重复消费消息 1.如何保证消息的可靠性 1.1.消息的可靠投递…

Ajax详解

文章目录 1. 概述1.1 Ajax工作原理1.2 Ajax的作用1.3 同步异步 2. 原生Ajax3. Axios3.1 Axios的基本使用3.2 Axios快速入门3.3 请求方法的别名 1. 概述 Ajax 是 “Asynchronous JavaScript and XML”(异步 JavaScript 和 XML)的缩写。它是一种在无需重新…

RabbitMQ知识掌握 【进阶篇】

一、如何保证消息的可靠性 🍉 1.保证消息的可靠性投递 🥝 在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复。于是&#xff0…

微服务Gateway网关(自动定位/自定义过滤器/解决跨域)+nginx反向代理gateway集群

目录 Gateway网关 1.0.为什么需要网关? 1.1.如何使用gateway网关 1.2.网关从注册中心拉取服务 1.3.gateway自动定位 1.4.gateway常见的断言 1.5.gateway内置的过滤器 1.6.自定义过滤器-全局过滤器 1.7.解决跨域问题 2.nginx反向代理gateway集群 2.1.配置…

什么是 TCP 和 UDP?Java 中如何实现 TCP 和 UDP 协议

在计算机网络中,TCP(传输控制协议)和UDP(用户数据报协议)是两种最常用的传输层协议。它们都用于在网络上传输数据,但是它们之间有很多不同之处。本文将介绍TCP和UDP的基本概念,以及在Java中如何…

ubuntu20.04配置vscode

下载: https://az764295.vo.msecnd.net/stable/660393deaaa6d1996740ff4880f1bad43768c814/code_1.80.0-1688479026_amd64.debhttps://az764295.vo.msecnd.net/stable/660393deaaa6d1996740ff4880f1bad43768c814/code_1.80.0-1688479026_amd64.deb 安装&#xff1a…

Ubuntu 放弃了战斗向微软投降

导读这几天看到 Ubuntu 放弃 Unity 和 Mir 开发,转向 Gnome 作为默认桌面环境的新闻,作为一个Linux十几年的老兵和Linux桌面的开发者,内心颇感良多。Ubuntu 做为全世界Linux界的桌面先驱者和创新者,突然宣布放弃自己多年开发的Uni…

回首2023上半年:成长、思考、感恩

文章目录 每日一句正能量前言一、目标达成情况总结二、工作和学习成果总结三、下半年规划总结四、个人想法 后记附录 每日一句正能量 做一个向日葵族,面对阳光,不自艾自怜,每天活出最灿烂的自己。曾经拥有的,不要忘记。不能得到的…

day52

思维导图 比较指令结果的条件码 练习 汇编实现1-100的累加 .text .global _strat _start: mov r0,#0mov r1,#0 add_fun:add r0,r0,#1cmp r0,#100addls r1,r1,r0bls add_fun .end

Vue 项目路由、自定义指令、api方法自动引入资源(require.context使用)

前端项目(当前我以Vue项目为例)当我们把api挂载在main上后 // 将api挂载到vue的原型上 import api from /api Vue.prototype.$apiapi在src下会有一个api文件夹,结构如下: 通常情况下,api文件夹的index.js文件我们通常…

ChatGPT 最佳实践指南之:使用外部工具

Use external tools 使用外部工具 Compensate for the weaknesses of GPTs by feeding them the outputs of other tools. For example, a text retrieval system can tell GPTs about relevant documents. A code execution engine can help GPTs do math and run code. If a …

8.postgresql--Update join 和 Delete using

Update join Update join用于基于另一张表更新表数据,语法如下: UPDATE t1 SET t1.c1 new_value FROM t2 WHERE t1.c2 t2.c2;CREATE TABLE product_segment (id SERIAL PRIMARY KEY,segment VARCHAR NOT NULL,discount NUMERIC (4, 2) );INSERT INTO…

基于C/S架构工作原理序号工作步骤和理论的区别

基于C/S架构工作原理序号工作步骤和理论的区别 SSH 概念 对称加密linux 系统加密,就是加密和揭秘都是使用同一套密钥。 非对称加密有两个密钥:“私钥”和“公钥”。私钥加密后的密文,只能通过对应的公钥进行揭秘。而通过私钥推理出公钥的…

不满足于RPC,详解Dubbo的服务调用链路

系列文章目录 【收藏向】从用法到源码,一篇文章让你精通Dubbo的SPI机制 面试Dubbo ,却问我和Springcloud有什么区别? 超简单,手把手教你搭建Dubbo工程(内附源码) Dubbo最核心功能——服务暴露的配置、使用…

数据可视化——用python绘制简单的折线图

文章目录 前言JSON使用 pyecharts 模块绘制折线图下载 pyecharts 模块使用 pyecharts 模块绘制简单的折线图添加配置选项 前言 前面我们已经学习了python的基础语法和面向对象,那么接下来我们将学习python编程语言的过人之处——数据的可视化之折线图。 JSON 说到…