©作者 | 陈督兵

来源 | 机器之心

来自南京理工大学和牛津大学的研究者提出了一个即插即用的分类器模块,只需修改一行代码就能大幅提升生成型零样本学习方法的效果,减少了分类器对于生成伪样本质量的依赖。

零样本学习(Zero-Shot Learning)聚焦于对训练过程中没有出现过的类别进行分类,基于语义描述的零样本学习通过预先定义的每个类别的高阶语义信息来实现从可见类(seen class)到未见类(unseen class)的知识迁移。传统零样本学习在测试阶段仅需要对未见类进行识别,而广义零样本学习(GZSL)需要同时识别可见类和未见类,其评测指标是可见类类平均准确率与未见类类平均准确率的调和平均。

一种通用的零样本学习策略是使用可见类样本和语义训练从语义空间到视觉样本空间的条件生成模型,再借助未见类语义生成未见类的伪样本,最后使用可见类样本和未见类伪样本训练分类网络。

然而,要学习两个模态(语义模态与视觉模态)间的良好映射关系通常需要大量样本(参照 CLIP),这在传统零样本学习环境下无法实现。因此,使用未见类语义生成的视觉样本分布通常和真实样本分布存在偏差(bias),这意味着以下两点:1. 这种方法获得的未见类准确率有限。2. 在未见类平均每类生成伪样本数量与可见类平均每类样本数量相当的情况下,未见类准确率与可见类准确率存在较大差值,如下表 1 所示。

我们发现就算只学习语义到类别中心点的映射,并将未见类语义映射为的单一样本点复制多次再参加分类器训练也能得到接近使用生成模型的效果。这意味着生成模型生成的未见类伪样本特征对分类器来说是较为同质(homogeneity)的。

先前的方法通常通过生成大量未见类伪样本来迎合 GZSL 评测指标(尽管大的采样数量对未见类类间判别没有帮助)。然而这种重采样(re-sampling)的策略在长尾学习(Long-tail Learning)领域被证明会导致分类器在部分特征上过拟合,在这里即是与真实样本偏移的伪未见类特征。这种情况不利于可见类和未见类真实样本的识别。那么,能否舍弃这种重采样策略,转而将生成未见类伪样本的偏移性和同质性(或者可见类与未见类的类别不平衡)作为归纳偏置(inductive bias)植入分类器学习呢?

基于此,我们提出了一个即插即用的分类器模块,只需修改一行代码就能提升生成型零样本学习方法的效果。每个不可见类只需生成 10 个伪样本,就能达到 SOTA 水平。与其他生成型零样本方法相比,新方法在计算复杂度上具有巨大优势。研究成员来自南京理工大学和牛津大学。

论文标题:

Zero-Shot Logit Adjustment

收录会议:

IJCAI 2022

论文链接:

https://arxiv.org/pdf/2204.11822.pdf

代码链接:

https://github.com/cdb342/IJCAI-2022-ZLA

本文以一致化训练与测试目标为指引,推导出广义零样本学习评测指标的变分下界。以此建模的分类器能够避免使用重采用策略,防止分类器在生成的伪样本上过拟合对真实样本的识别造成不利影响。所提方法能够使基于嵌入的分类器在生成型方法框架上有效,减少了分类器对于生成伪样本质量的依赖。

方法

1.1 引入参数化先验

我们决定从分类器的损失函数上着手。假设类别空间已经被生成的未见类伪样本所完善,先前的分类器以最大化全局准确率为优化目标:

其中 为全局准确率, 表示分类器输出, 表示样本分布, 为样本 X 对应标签。而 GZSL 的评测指标为:

其中 和 分别代表可见类和未见类集合。训练目标和测试目标的不一致意味着先前的分类器训练策略没有考虑可见类和未见类的差异。自然而然地,我们试图通过对 进行推导来实现训练与测试目标一致的结果。经过推导,我们得到了其下界:

其中 代表可见类 - 未见类先验,其与数据无关,在实验中作为超参数进行调整, 代表可见类或未见类内部先验,在实现过程中用可见类样本频率或均匀分布代替。通过最大化 的下界,我们得到了最终的优化目标:

由此,我们的分类建模目标相较先前发生了以下改变:

通过使用交叉熵(cross-entropy)拟合后验概率:

我们得到分类器损失为:

这与长尾学习中的逻辑调整(Logit Adjustment)类似,因此我们称之为零样本逻辑调整(ZLA)。至此,我们实现了通过引入参数化先验将可见类与未见类的类别不平衡作为归纳偏置植入到分类器训练中,并且在代码实现中只需对原始 logits 加上额外偏置项就能达到以上效果。

1.2 引入语义先验

到目前为止,零样本迁移的核心,即语义先验(semantic prior)仅在训练生成器与生成伪样本阶段发挥作用,对未见类的识别完全取决于生成的未见类伪样本的质量。显然,如果能够在分类器训练阶段引入语义先验,将会有助于未见类的识别。在零样本学习领域有一类基于嵌入(embedding-based)的方法能够实现这一功能。然而,这一类方法与生成模型学习到的知识是相似的,即语义与视觉间的联系(semantic-visual link),这导致在先前的生成型框架中(参照论文 f-CLSWGAN)直接引入基于嵌入的分类器无法取得比原先更好的效果(除非这种分类器本身就有更好的零样本性能)。

通过本文提出的 ZLA 策略,我们能够改变生成的未见类伪样本在分类器训练中扮演的角色。从原先的提供不可见类信息到现在的调整不可见类与可见类间的决策界限(decision boundary),我们得以在分类器训练阶段引入语义先验。

具体地,我们采用了原型学习的方法将每个类别的语义映射为视觉原型(即分类器权值),再将调整的后验概率(adjusted posterior)建模为样本与视觉原型间的余弦相似度(cosine similarity),即:

其中 为温度系数。在测试阶段,样本被预测为与其余弦相似度最大的视觉原型对应类别。

实验

我们将所提出的分类器与基础 WGAN 结合,在每个未见类生成 10 个样本的情况下达到了媲美 SoTAs 的效果。另外我们将其插入到更加先进的 CE-GZSL 方法中,在不改变其他参数(包括生成样本数量)的情况下提升了初始效果。

在消融实验中,我们将基于生成的原型学习器(prototype learner)与纯原型学习器进行了比较。我们发现,最后一个 ReLU 层对于纯原型学习器的成功至关重要,因为将负数置零可以增大类别原型与未见类特征的相似度(未见类特征同样经过 ReLU 激活)。然而将部分数值置零也限制了原型的表达,不利于更进一步的识别性能。借助伪未见类样本来弥补未见类信息不仅能在使用 RuLU 时达到更高性能,更能在没有 ReLU 层的情况下实现进一步的性能超越。

在另一项消融研究中,我们将原型学习器与初始分类器进行比较。结果显示当生成大量未见类样本时,原型学习器与初始分类器相比没有优势。而在使用本文提出的 ZLA 技术时,原型学习器显示出其优越性。正如前文所说,这是因为原型学习器和生成模型都在学习语义 - 视觉联系,所以语义信息很难被充分利用。ZLA 使生成的未见类样本能够调整决策边界,而不是仅仅提供未见类信息,从而对原型学习器起到激活作用。

更多阅读

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

IJCAI 2022 | 即插即用分类器模块:一行代码大幅提升零样本学习方法效果相关推荐

  1. IJCAI 2022 | 用一行代码大幅提升零样本学习方法效果!南京理工牛津提出即插即用分类器模块...

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 点击进入-> CV 微信技术交流群 转载自:机器之心  |  作者:陈督兵 来自南京理工大学和牛津大学 ...

  2. 灰色的rgb值_一行代码实现图片的灰色效果

    今天是清明节,警笛长鸣,万众默哀.送别英雄,生活继续. 大部分的app配图,今天都是灰色.这种图片的转换在python里非常容易实现.一行代码搞定. 下面是DE8UG上次说个故事:再见VB.你好,精彩 ...

  3. 如何用一行代码实现网页变灰效果?

    今天是 2020 年 4 月 4 日,星期六,清明节. 我们的国家经历了非常惨痛的时刻,很多英雄在救助他人的路上倒下,更有很多烈士英雄保卫人民的安危遇难,今天全国下降半旗,北京时间 10 点全国默哀三 ...

  4. 技术大揭秘:百度、淘宝、QQ那些官网如何就只用一行代码实现网页变灰效果?...

    转自进击的Coder,作者崔庆才 今天是 2020 年 4 月 4 日,星期六,清明节. 我们的国家经历了非常惨痛的时刻,很多英雄在救助他人的路上倒下,更有很多烈士英雄保卫人民的安危遇难,今天全国下降 ...

  5. [iOS]一行代码集成空白页面占位图(基于runtime+MJRefresh思想)

    LYEmptyView 此框架是本人在5,6个月前,公司启动新项目的时候,一起开始着手编写的,经过这个项目的验证与考验,不断的进行完善,在此特将这份框架分享出来供大家参考与学习. github地址:h ...

  6. 简简单单一行代码实现textarea内容原样输出,与微博展示效果类似

    写在最前 最近在做一个项目,碰到一个问题,其应用场景十分常见,类似于发微博的效果. 问题 比如我在编辑时: 在内容编辑时,使用简单的 <textarea> 进行内容的获取,其中添加分段.空 ...

  7. python 新闻_Python一行代码竟能干这种事,同学都欢呼:要向女神表白!

    @数据分析师攻略 公众号 关注.学习更多数据分析的知识与资讯 ------ Python的语法十分简洁,简洁到只需要一行代码,即可输出意想不到的效果.一行代码到底有什么独特的魅力,下面一起来感受一下吧 ...

  8. 如何一行代码安装ROS|2022最新版|一行代码安装ROS2|一行代码解决rosdep|一行代码配置多ROS环境

    2022最新版本V3.0 大家好,我是小鱼,经过一周多的完善 还是熟悉的一行代码 wget http://fishros.com/install -O fishros && bash ...

  9. Python 3,一行代码处理各种时间转换,从此跟datetime,time模块说拜拜 ~ ~ 不收藏算我输!!!

    pendulum模块详细介绍 1.引言 2.pendulum模块介绍 2.2 介绍 2.2 安装 2.3 实例化时区 2.3.1 默认时区展示 2.3.2 时区本地化 2.3.3 时区切换 2.3.4 ...

  10. python jit_牛掰的numba库jit模块:一行代码让 Python 的运行速度提高100倍

    python一直被病垢运行速度太慢,但是实际上python的执行效率并不慢,慢的是python用的解释器Cpython运行效率太差. "一行代码让python的运行速度提高100倍" ...

最新文章

  1. 用Handler的post()方法来传递线程中的代码段到主线程中执行
  2. centos普通用户修改文件权限_centos修改文件及文件夹权限
  3. SQL Server 2005 Integration Services (SSIS) (2) - 导入/导出向导
  4. [转载] 菜鸟举例理解字节流和字符流区别
  5. 12 DOM操作的相关案例
  6. UIImageView的animationImages动画
  7. 下docfetcher先下Java,DocFetcher ── 以 JAVA 编写的开源桌面本地文件全文搜索工具...
  8. Web前端工程师工资逐年增长,背后有哪些因素?
  9. PLG软件的运行环境设置
  10. springboot2 security 登陆成功后无法跳转到指定页面,还是默认页面
  11. 2021-2027全球及中国红外探测器芯片行业研究及十四五规划分析报告
  12. 按降序显示奇数python_程序在Python中分别以升序和降序对所有偶数和奇数进行排序...
  13. OpenNLP进行自然语言处理
  14. 字符串变量string
  15. 本科毕业、硕士毕业和博士毕业PPT制作和预答辩、答辩注意事项
  16. Android如何修改使用默认使用GPS提供时间
  17. js插件动态加载js、css解决方案
  18. Spring WebClient实战
  19. 网络攻防学习路线[菜鸟借鉴其他大佬]
  20. RIP协议与OSPF协议

热门文章

  1. 简化sqp唯一数据的逻辑
  2. 解释外显子,内含子,CDS、cDNA、EST、mRNA、ORF间的区别
  3. 张靓颖同学2006年日程表
  4. deflate php,我可以告诉mod_deflate和PHP只跳过一个目录上的压缩吗?
  5. Go语言的errors
  6. 高德视觉技术中心招聘计算机视觉研发(社招/校招/实习岗位)
  7. wordpress+000webhost+dot.tk 搭建免费独立博客
  8. Swipe 移动端滑动插件使用详解
  9. 穷举法(枚举法)实例解析
  10. 鲁冠球:冲向世界的打铁匠