【Novel Category Discovery】Open World Semi-Supervised Learning in ICLR 2022 个人理解

文章介绍了ICLR2022会议上关于OpenWorldSemi-SupervisedLearning的任务,即在部分样本有标签,部分无标签的数据集上进行分类和新类发现。方法包括使用SimCLR预训练网络,创建大型分类头以及应用三个损失函数:监督目标损失、成对目标损失和正则化项,以同步已知类与新类的学习,保持概率分布均匀,并确保样本正确分类和聚类。

一、简介

题目: Open World Semi-Supervised Learning
会议: ICLR 2022
任务: 给定一个数据集,其中部分样本有标签(这里称其为已知类),其余样本无标签(可能属于已知类也可能属于未知类),要求将无标签样本中属于已知类的样本正确分类,对属于未知类的样本进行聚类或称发现新类。
Note: 这里的Open World Semi-Supervised Learning与Generalized Category Discovery讲的是同一件事情。
方法:
(1)使用SimCLR进行网络预训练以获得更好的特征表达。预训练是以自监督的方式在目标数据集的全部有标签和无标签数据上进行;
(2)通过在Backbone后接一个大的分类头来实现对已知类的分类和新类的发现。大的分类头是指SoftMax层的神经元个数远大于已知类的个数,这样已知类样本可以激活对应的神经元得到分类概率,而新类别则会激活其余神经元(并非其余的全部,因为初始的分类头较大);
(3)为了使网络能够达到(2)中所期望的效果,作者提出了三个损失:
  a. Supervised objective with uncertainty adaptive margin。用于控制网络对已知类的学习速度,使其不会过快,达到与新类的学习速度同步的目的;
  b. Pairwise objective。用于确保有标签样本能与同类别样本分到同一组,并使无标签样本与最近邻样本(可能是有标签的样本也可能是无标签的样本)分到同一组;
  c. Regularization term。用于确保概率预测结果不会集中在某个或某些类别上。

开放世界半监督学习
如上图所示,Open World Semi-Supervised Learning的目标是将属于已知类的无标签集中的样本正确分类,并将属于新类别的样本聚到一个新的组。

二、详情

1. 网络结构

在Backbone(比如ResNet-50)后加一个大的分类头。大的分类头是指SoftMax层的神经元个数远大于已知类的个数,这样已知类样本可以激活对应的神经元得到分类概率,而新类别则会激活其余神经元(并非其余的全部,因为初始的分类头较大)。

2. 损失函数设置

为达到划分已知类并发现新类的目的,作者设置了一个包含3个成分的损失函数:

其中, η 1 \eta_1 η1 η 2 \eta_2 η2为调节因子,作者均设置成了1。

A. Supervised objective with uncertainty adaptive margin

此项的目的为缩小已知类的类内方差与新类的类内方差的差距,以避免新类样本被分到已知类中。说白了就是不希望网络只学习有标签的数据,也关心一下无标签数据中新类的学习。

类内方差由不确定性衡量。目标函数如下:

其中, W W W为Backbone到分类头的权重, z z z为Backbone的输出(即所提取出的特征), Z l \mathcal Z_l Zl是有标签样本所提特征的集合, u ˉ \bar u uˉ为不确定性, λ \lambda λ为调节因子, s s s是控制交叉熵的一个参数。

Note: 经过理解和对比源码第95行,我发现此处 + λ u ˉ +\lambda\bar u +λuˉ应该是写错了,应改为 − λ u ˉ -\lambda\bar u λu

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fulin_Gao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值