Joint Unsupervised Learning of Deep Representations and Image Clusters

  • Introduction
  • Method
    • Agglomerative Clustering
    • Loss Function
  • Experiments
    • Image Clustering
    • Transferring Learned Representation
    • Image Classification
  • Conclusion

Introduction

通过前面几篇文章的介绍,我们已经直到自监督学习的目的是为了学习图像中的高级语义特征。然而,目前的自监督学习方法在很多任务上落后于ImageNet预训练模型,一个最可能的原因是自监督学习设计的pretext任务,不可避免的会学习到图像的颜色、纹理等低层次的特征,导致模型的泛华能力下降。而ImageNet预训练模型训练的时候使用的是具有分类标签的数据,可以有效地避免网络学习到颜色和纹理等不必要的特征,大大降低模型过拟合的程度。因此,我们可以很自然的想到,可不可以先用聚类为图像标注分类标签,之后训练分类网络,再利用分类网络提取的特征对分类标签进行调整,如此循环往复,最终得到或接近人工标注的结果。这个实际上也是实现无监督学习的一种方法,它可以利用聚类方法不需要手工标签和CNN强大的特征抽象能力。这篇博客介绍的论文就属于这一类方法,当然方法要更复杂一些,效果也更好 (实际上,上面的思路在实际上很可能是没用的,太简单了) ,改文章发表在CVPR2016上,论文地址。

Method

论文中提到的方法分为两个步骤,一个是利用CNN特征进行聚类,确定类别的标签;另一个是设计了损失函数,对CNN的特征进行调整。

Agglomerative Clustering

聚类方面,作者是使用了层次聚类的方法,关于该方法的详细介绍可以参考这篇博客:层次聚类。这里作者采用的是自下而上的合并型聚类方式,即初始阶段将每一个样本点都视为一个单独的类别,之后依次计算样本点之间的相似度(affinity or similarity),将相似度接近的样本聚合成一类,这里计算样本间相似度使用的是如下的方法:

样本iii和jjj的相似度用符号W(i,j)W(i,j)W(i,j)表示。随着迭代次数的增加,还需要计算的是不同簇之间的相似度,计算不同簇之间相似度有很多的方法,这里作者借鉴了这篇文章中的方法:计算簇相似度的方法。如果不想看原文的话,只需要记住,文中使用A(ci,cj)A(c_i,c_j)A(ci​,cj​)表示簇cic_ici​和cjc_jcj​的相似度,而且值越大,表示越接近,越有可能合并到一起。另外,文中还定义了其他的一些符号,包括I={I1,...,Ins}I=\{I_1,...,I_{n_s}\}I={I1​,...,Ins​​}表示输入图像,X={x1,...,xns}X=\{x_1,...,x_{n_s}\}X={x1​,...,xns​​}表示CNN从III中提取到的特征,C={C1,....,Cnc}C=\{C_1,....,C_{n_c}\}C={C1​,....,Cnc​​}表示聚类的簇,NiKsN^{K_s}_iNiKs​​表示xix_ixi​的KsK_sKs​近邻,NCiKsN^{K_s}_{C_i}NCi​Ks​​表示CiC_iCi​的KsK_sKs​近邻。最后需要说明的是,NCiKsN^{K_s}_{C_i}NCi​Ks​​中的簇是按照相似度降序排列的,也就是说NCiKs[1]N^{K_s}_{C_i}[1]NCi​Ks​​[1]表示CiC_iCi​的最近邻。

Loss Function

作者使用CNN提取图像的特征,之后利用聚类方法对其进行标注,但是训练CNN作者并不是使用的聚类标签,而是根据聚类的特点,设计了一个损失函数。这部分是文章的核心创新点,如果我们将CNN网络视为分类网络,直接使用聚类标签对其进行训练的话,很有可能得到理想的效果。
作者在这里采用的损失函数如下所示:

损失函数分为两部分,第一部分为衡量的是簇CiC_iCi​和它的最近邻之间的相似度,我们希望他们的相似度越大越好,也就是说这两个簇需要尽可能接近,这样下一次迭代的时候很有可能会合并。损失函数的第二部分看起来可能比较绕,但是要实现的目标很好理解,这部分的目的是保证簇CiC_iCi​的最近邻(假设为CjC_jCj​),与其他的簇的相似度尽可能小,也就是说尽可能远离其他的簇。如下图所示:

损失函数的第一项就是计算的b和d的相似度,他们需要越大越好,然后第二项是计算d和e,c等的相似度,使他们尽可能远离。

网络在迭代的时候,首先要根据CNN提取的特征计算各个聚类的重点P,之后计算损失函数,利用梯度反传,更新网络参数。感觉更新的过程就是这样,但是作者在原文里写的很复杂,不知道是不是自己理解的问题。下面是迭代过程的伪代码:

Experiments

为了验证本文中方法的效果,作者主要做了三个实验,分别来验证图像聚类的效果,跨域数据的聚类效果和图像分类的效果。

Image Clustering

作者在这里和12个聚类方法在8个数据集上进行了对比,对比的数据集如下:

对比的结果如下图所示:

作者使用NMI(Normalized Mutual Information)来衡量聚类的效果,可以看出,论文中提出的方法在所有数据集上都取得了最好的效果,证明了该方法的有效性。

Transferring Learned Representation

在这个部分,作者使用一个数据集上训练网络,在另一个数据集上对网络进行测试,结果如下:


列data表示直接使用目标域数据进行聚类,其他列表示从CNN的哪一层提取特征进行聚类,可以看出,论文中的方法取得了更好的效果,这证明该方法具有更强的泛华性能。

Image Classification

最后,作者在CIFAR-10数据集上验证了该方法的分类性能:

Conclusion

这篇文章总体上看,更像是一篇介绍无监督方法的文章,和之前我们介绍的自监督方法在应用上有些差别。但是该方法完全可以应用到自监督任务中,所以这里也对这篇文章进行了介绍。自监督与聚类方法的结合,可能会产生比单纯设计pretext task更好的效果。

自监督学习(四)Joint Unsupervised Learning of Deep Representations and Image Clusters相关推荐

  1. 自监督学习(十)Unsupervised Learning of Visual Representations by Solving Jigsaw Puzzles

    Unsupervised Learning of Visual Representations by Solving Jigsaw Puzzles Introduction Method 排列选择 p ...

  2. [ICML19] Challenging Common Assumptions in the Unsupervised Learning of Disentangled Representations

    谷歌等一篇名为<挑战无监督分离式表征的常见假设>的论文,表明 (没有归纳偏置的) 无监督方法学不到可靠的分离式表征 (Disentangled Representations) .本篇是I ...

  3. ECCV2016【论文笔记】Unsupervised Learning of Visual Representations by Solving Jigsaw Puzzles

    1.INTRO 本文作者旨在通过解决拼图问题来进行self-supervised learning,这样可以训练一个网络去识别目标的组成部分. 2.Solving Jigsaw Puzzles 当前一 ...

  4. Challenging Common Assumptions in the Unsupervised Learning of Disentangled Representations学习与理解

    这篇论文是ICML2019两篇best paper之一,针对无监督解耦进行了分析,从理论上证明无监督解耦是不可能的,虽然知乎上存在一些对这篇论文的负面评论,但个人感觉还是对解耦这个概念理解不一致造成的 ...

  5. 文献学习(part13)--A Sober Look at the Unsupervised Learning of Disentangled...

    学习笔记,仅供参考,有错必纠 文章目录 A Sober Look at the Unsupervised Learning of Disentangled Representations and th ...

  6. 无监督特征学习——Unsupervised feature learning and deep learning

    无监督学习近年来很热,先后应用于computer vision, audio classification和 NLP等问题,通过机器进行无监督学习feature得到的结果,其accuracy大多明显优 ...

  7. Machine Learning Algorithms Study Notes(4)—无监督学习(unsupervised learning)

    1    Unsupervised Learning 1.1    k-means clustering algorithm 1.1.1    算法思想 1.1.2    k-means的不足之处 1 ...

  8. ML之UL:无监督学习Unsupervised Learning的概念、应用、经典案例之详细攻略

    ML之UL:无监督学习Unsupervised Learning的概念.应用.经典案例之详细攻略 目录 无监督学习Unsupervised Learning的概念 无监督学习Unsupervised ...

  9. 【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记

    文章目录 Unsupervised Learning Word Embedding 用一个vector来表示一个word的几种方法 1-of-N Encoding Word Class Word Em ...

  10. 机器学习:什么是无监督学习(Unsupervised Learning)?

    概念 上一片文章我们了解了监督学习,监督学习是一种目的明确的训练方式,通过已知因素和已知的结果,通过机器训练,是机器能学会通过已知因素得到未知的结果.而无监督学习是通过给未知的数据,进行分类,也许你就 ...

最新文章

  1. 在你的 Rails App 中开启 ETag 加速页面载入同时节省资源
  2. HUD 1043 Eight 八数码问题 A*算法 1667 The Rotation Game IDA*算法
  3. java语言实验报告,Java语言 实验报告(二)
  4. pandas_profiling :教你一行代码生成数据分析报告
  5. 关于nsurlsession
  6. 交流电的有效值rms值_交流电路中的电源
  7. ASP.NET Core SignalR:集线器Hub
  8. Data Structure Problem
  9. python之异常处理_Python之异常处理
  10. 在英文Win7操作系统上部署C#开发的Web系统出现乱码的解决方法
  11. java技术学习路线(自用)
  12. 系统接口框架设计与实现
  13. 代码查重实验(深大算法实验4)报告+代码
  14. 朋友圈装逼高考证图片怎么在线生成制作,高考证怎么写上自己的名字?
  15. 菜鸟菜鸟菜鸟菜鸟编程之路
  16. dockers安装Jenkins
  17. GUVB-T11GD-L 太阳光紫外线传感器TO-46韩国GenUV光电二极管杀菌灯监控
  18. websphere 实用_将WebSphere Cast Iron Studio PGP活动与外部PGP实用程序一起使用
  19. 快收下这份拼接视频方法攻略,制作出你想要的视频
  20. 纯js实现省市区三级联动

热门文章

  1. 常熟理工php实验三_三位教师获评常熟理工学院首届科研支撑教学奖
  2. Chrome 屏蔽广告
  3. 计算机脚本模板,mv分镜头脚本范文mv的分镜头脚本格式.doc
  4. 对于程序员的技术发展和职业规划能否给大家一些建议呢?
  5. endnote x9打开闪退_Endnote X9 详细教程
  6. 真心推荐8个高质量Java学习网站,一起从入门到精通java语言,大厂java面试真题分享,建议码住!...
  7. 上海亚商投顾:沪指缩量跌0.43%
  8. 编写一个JSP页面,实现根据一个人的18位身份证显示出生日的功能,要求把表达式声明和Scriptlet全部用到,并把结果显示在表格中
  9. 人物摄影中的基本取景法 特写和大特写
  10. 机器学习-数据科学库 12 美国人口数据分析案例