自监督学习(四)Joint Unsupervised Learning of Deep Representations and Image Clusters
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}NCiKs表示CiC_iCi的KsK_sKs近邻。最后需要说明的是,NCiKsN^{K_s}_{C_i}NCiKs中的簇是按照相似度降序排列的,也就是说NCiKs[1]N^{K_s}_{C_i}[1]NCiKs[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相关推荐
- 自监督学习(十)Unsupervised Learning of Visual Representations by Solving Jigsaw Puzzles
Unsupervised Learning of Visual Representations by Solving Jigsaw Puzzles Introduction Method 排列选择 p ...
- [ICML19] Challenging Common Assumptions in the Unsupervised Learning of Disentangled Representations
谷歌等一篇名为<挑战无监督分离式表征的常见假设>的论文,表明 (没有归纳偏置的) 无监督方法学不到可靠的分离式表征 (Disentangled Representations) .本篇是I ...
- ECCV2016【论文笔记】Unsupervised Learning of Visual Representations by Solving Jigsaw Puzzles
1.INTRO 本文作者旨在通过解决拼图问题来进行self-supervised learning,这样可以训练一个网络去识别目标的组成部分. 2.Solving Jigsaw Puzzles 当前一 ...
- Challenging Common Assumptions in the Unsupervised Learning of Disentangled Representations学习与理解
这篇论文是ICML2019两篇best paper之一,针对无监督解耦进行了分析,从理论上证明无监督解耦是不可能的,虽然知乎上存在一些对这篇论文的负面评论,但个人感觉还是对解耦这个概念理解不一致造成的 ...
- 文献学习(part13)--A Sober Look at the Unsupervised Learning of Disentangled...
学习笔记,仅供参考,有错必纠 文章目录 A Sober Look at the Unsupervised Learning of Disentangled Representations and th ...
- 无监督特征学习——Unsupervised feature learning and deep learning
无监督学习近年来很热,先后应用于computer vision, audio classification和 NLP等问题,通过机器进行无监督学习feature得到的结果,其accuracy大多明显优 ...
- 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 ...
- ML之UL:无监督学习Unsupervised Learning的概念、应用、经典案例之详细攻略
ML之UL:无监督学习Unsupervised Learning的概念.应用.经典案例之详细攻略 目录 无监督学习Unsupervised Learning的概念 无监督学习Unsupervised ...
- 【李宏毅机器学习】Unsupervised Learning - Word Embedding 无监督学习 - 词嵌入(p22) 学习笔记
文章目录 Unsupervised Learning Word Embedding 用一个vector来表示一个word的几种方法 1-of-N Encoding Word Class Word Em ...
- 机器学习:什么是无监督学习(Unsupervised Learning)?
概念 上一片文章我们了解了监督学习,监督学习是一种目的明确的训练方式,通过已知因素和已知的结果,通过机器训练,是机器能学会通过已知因素得到未知的结果.而无监督学习是通过给未知的数据,进行分类,也许你就 ...
最新文章
- 在你的 Rails App 中开启 ETag 加速页面载入同时节省资源
- HUD 1043 Eight 八数码问题 A*算法 1667 The Rotation Game IDA*算法
- java语言实验报告,Java语言 实验报告(二)
- pandas_profiling :教你一行代码生成数据分析报告
- 关于nsurlsession
- 交流电的有效值rms值_交流电路中的电源
- ASP.NET Core SignalR:集线器Hub
- Data Structure Problem
- python之异常处理_Python之异常处理
- 在英文Win7操作系统上部署C#开发的Web系统出现乱码的解决方法
- java技术学习路线(自用)
- 系统接口框架设计与实现
- 代码查重实验(深大算法实验4)报告+代码
- 朋友圈装逼高考证图片怎么在线生成制作,高考证怎么写上自己的名字?
- 菜鸟菜鸟菜鸟菜鸟编程之路
- dockers安装Jenkins
- GUVB-T11GD-L 太阳光紫外线传感器TO-46韩国GenUV光电二极管杀菌灯监控
- websphere 实用_将WebSphere Cast Iron Studio PGP活动与外部PGP实用程序一起使用
- 快收下这份拼接视频方法攻略,制作出你想要的视频
- 纯js实现省市区三级联动
热门文章
- 常熟理工php实验三_三位教师获评常熟理工学院首届科研支撑教学奖
- Chrome 屏蔽广告
- 计算机脚本模板,mv分镜头脚本范文mv的分镜头脚本格式.doc
- 对于程序员的技术发展和职业规划能否给大家一些建议呢?
- endnote x9打开闪退_Endnote X9 详细教程
- 真心推荐8个高质量Java学习网站,一起从入门到精通java语言,大厂java面试真题分享,建议码住!...
- 上海亚商投顾:沪指缩量跌0.43%
- 编写一个JSP页面,实现根据一个人的18位身份证显示出生日的功能,要求把表达式声明和Scriptlet全部用到,并把结果显示在表格中
- 人物摄影中的基本取景法 特写和大特写
- 机器学习-数据科学库 12 美国人口数据分析案例