论文笔记与实战:对比学习方法MOCO

这篇具有很好参考价值的文章主要介绍了论文笔记与实战:对比学习方法MOCO。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


(好久没更新了~~~准备分享一些paper笔记以及在公司分享的内容)
(还是要记录呀,很多东西过段时间再看都有点想不起来了)

1. 什么是MOCO

MOCO: Momentum Contrast for Unsupervised Visual Representation Learning
MOCO是标题前两个单词的首两个字符缩写组成,翻译过来就是动量对比,是一种无监督(或者说是自监督)的方法。
moco 对比学习,深度学习,对比学习,MOCO,Contrastive

2. MOCO是干吗用的

从标题也可以看出是为了Unsupervised Visual Representation Learning,为了无监督视觉表征学习。即通过MOCO这种方法,学到有用的特征,可用于下游任务的使用。

3. MOCO的工作原理

3.1 一些概念

1. 无监督与有监督的区别

简单来说,有监督就是有标注信息,有X,有Y;对于无监督来说,只有X,没有Y。

2. 什么是对比学习

假设现在有两张dog的图片,一张cat的图片,首先提取图片的特征,利用提取的特征通过对比学习两张dog图片是同一类别,dog和cat的不同类别。
moco 对比学习,深度学习,对比学习,MOCO,Contrastive
对比学习可以是有label的,如上述我们举的例子;也可以是无label的,如MOCO这篇文章所介绍的方法。

3. 动量是什么

moco 对比学习,深度学习,对比学习,MOCO,Contrastive
当前时刻的状态,是由上一时刻的状态和当前时刻的更新状态共同得来的。其中α的取值范围是0~1,表示上一时刻的状态和当前时刻的更新状态对当前时刻状态影响的权重。

3.2 MOCO工作原理

1. 字典查找

moco 对比学习,深度学习,对比学习,MOCO,Contrastive
无监督对比学习可以看成是一种字典查找的方法,通过构建一个字典,当有一个样本query来了,需要到字典里去匹配查找,query应该与匹配到的key相似,与不匹配的key不相似,通过这种对比的学习去最小化损失。

2. 如何构建一个好的字典

moco 对比学习,深度学习,对比学习,MOCO,Contrastive

  • 学习的关键需要构建一个好的字典,好的字典包括两方面特点:
    (1)字典足够大
    学习到足够的差异性。
    (2)保持一致性
    字典里的keys(负样本的fetures)应该来自同一个或者相似的编码器。

  • 三种方法比较
    moco 对比学习,深度学习,对比学习,MOCO,Contrastive
    (a)end-to-end
    batch_size和字典的大小一样,但是受显存影响,batch_size一般不会设置太大(通常设置为128或256),字典不够大
    (b)memory bank
    将所有的负样本存储在一个memory bank里,字典够大,但是无法保证特征的一致性
    (c)moco
    利用队列来充当字典,可以保证字典够大;同时利用momentum encoder,保证了特征的一致性

3. 工作流程

moco 对比学习,深度学习,对比学习,MOCO,Contrastive

  1. 首先用encoder-q初始化encoder-k
  2. 输入图片x,x经过augmentation生成k+,x通过encoder-q生成特征向量query,k+通过encoder-k生成特征向量k0,query和k0构成一个正样本对,query和dictionary里的其他key都是负样本对
  3. 引入InfoNCE,计算loss,这里相当于对query作n+1分类,n为字典的大小,现在要做的就是把query分为第0类
  4. 计算梯度去更新encoder-q,用动量更新的方法去更新encoder-k;同时用最新的k0去更新dictionary
    moco 对比学习,深度学习,对比学习,MOCO,Contrastive

3.3 (伪)代码分析

moco 对比学习,深度学习,对比学习,MOCO,Contrastive

4. 其他一些问题

  1. 对于negative样本,应该使用哪个编码器?
    应该使用和positive一样的编码器,因为positive和negative样本都是相对于anchor而言,为了保持特征的一致性,应该让negative和positive样本使用同一个(或者相似的)编码器
  2. 为什么要使用队列当作字典?
    字典的作用是用来存储负样本,且要求字典要足够大,如果将这么多的负样本都导入计算机中,显存是吃不消的。使用队列当作字典的好处是,可以让字典足够大,且让字典的size和batch_size剥离开。
  3. 什么是代理任务pretext tasks?
    定义规则,规定什么是正样本、负样本。代理任务的作用就是去生成一个自监督的信号,从而去充当ground_truth这个标签信息。
  4. 选择的损失函数应该满足什么条件?
    (1)当选择的q和positive k+相似的时候,loss应该尽可能小
    (2)当选择的q和negative k不相似的时候,loss也应该尽可能小
  5. 什么是noise contrastive estimation
    对于对比学习来说,一张图片就是一个类别,当类别很多的时候,没法算softmax(没法算loss),NCE把问题简化为二分类问题,一个是数据类别,一个是噪声类别,每次拿两者做对比就行。estimation的意思是,从负样本中抽样一些数据去做计算(估计),而不是用所有的负样本。抽样的样本越多,与使用整个数据集的结果更相似,所以MOCO强调这个字典要够大。
    NCE loss就是把多分类问题变成二分类的问题,这样就可以继续使用softmax去计算。
  6. 什么是InfoNCE?
    moco 对比学习,深度学习,对比学习,MOCO,Contrastive
  • InfoNCE是NCE的一种变体,InfoNCE还是把问题看成是多分类问题。(实际做的是K+1分类任务)
  • 从公式可以看出,InfoNCE loss实际上就是cross entropy loss,不同的是InfoNCE loss中的K是负样本的个数,而cross entropy loss中的K是分类的类别数。
  • 公式中的q·k就是logit,公式中的t是一个温度超参数,一般用来控制分布的形状。
    • t越大,分布里的值变小,整个分布曲线更加扁平;
    • t越小,分布里的值变大,整个分布曲线更加peak;

5. MOCO v2和MOCO v3

5.1 MOCO v2

  • MOCO v2在v1的基础上,增加了以下几个措施:moco 对比学习,深度学习,对比学习,MOCO,Contrastive
    (1)在训练阶段,增加了MLP head;推理阶段去掉。
    moco 对比学习,深度学习,对比学习,MOCO,Contrastive
    (2) Augmentation
    moco 对比学习,深度学习,对比学习,MOCO,Contrastive
    (3)Cosine learning rate schedule
    moco 对比学习,深度学习,对比学习,MOCO,Contrastive
    moco 对比学习,深度学习,对比学习,MOCO,Contrastive
    moco 对比学习,深度学习,对比学习,MOCO,Contrastive

5.2 MOCO v3

  • MOCO v3引入了ViT(Vision Transformer)
  • (伪)代码分析
    moco 对比学习,深度学习,对比学习,MOCO,Contrastive
  • 计算过程参考CLIP论文所示:
    moco 对比学习,深度学习,对比学习,MOCO,Contrastive
    moco 对比学习,深度学习,对比学习,MOCO,Contrastive
    moco 对比学习,深度学习,对比学习,MOCO,Contrastive

6. 实战部分

  • 为了验证使用MOCO学习得来的特征是否更好,设计了一个4分类的图像分类实验(不是那么严谨),具体实验设置与结果如下所示:

6.1 数据

moco 对比学习,深度学习,对比学习,MOCO,Contrastive

6.2 模型与参数设置

设置了4个模型,分别为resent、moco_resnet、vit、moco_vit,训练50个epochs

6.3 实验结果

  • resnet和moco_resnet
    moco 对比学习,深度学习,对比学习,MOCO,Contrastive

moco 对比学习,深度学习,对比学习,MOCO,Contrastive

  • vit和moco_vit
    moco 对比学习,深度学习,对比学习,MOCO,Contrastive
    moco 对比学习,深度学习,对比学习,MOCO,Contrastive

moco 对比学习,深度学习,对比学习,MOCO,Contrastive

  • 实验小结
    • 准确率:resnet > moco_resnet50; vit < moco_vit
    • resnet和vit训练曲线振荡的比较厉害;而基于moco的预训练模型,训练曲线更加平滑
    • 该实验只是个初步实验,所用数据较少,且训练的epochs较少,只能用于简单参考
    • 可以看到,基于MOCO对比学习得到预训练模型,在下游分类任务中有一定优势

结束。文章来源地址https://www.toymoban.com/news/detail-570336.html

到了这里,关于论文笔记与实战:对比学习方法MOCO的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 03目标检测-传统方法与深度学习算法对比

    目录 一、目标学习的检测方法变迁及对比     二、深度学习目标检测算法基本流程 三、传统目标检测算法VS深度学习目标检测算法         “目标检测“是当前计算机视觉和机器学习领域的研究热点。从Viola-Jones Detector、DPM等冷兵器时代的智慧到当今RCNN、YOLO等深度学习土

    2024年02月07日
    浏览(33)
  • 机器学习基础知识之多模型性能对比评价方法

    在进行预测或分类对比实验时,通常需要比较两个或两个以上的模型性能,因此,下面将介绍两个常用的多模型性能对比评价方法,一种是交叉验证t检验,该方法主要用于同一个数据集上两个模型的性能比较,另一种是Friedman检验与Nemenyi后续检验,这一方法主要用于同一组数

    2024年02月06日
    浏览(30)
  • 科研学习|论文解读——信息世界映射方法

    题目:信息世界映射的下一步是什么?在情境中理解信息行为/实践的国际化和多学科方法(What is next for information world mapping? International and multidisciplinary approaches to understanding information behaviors/ practices in context) 信息世界映射(IWM) 是一种以艺术为基础的参与式方法 。 参与者

    2024年01月23日
    浏览(32)
  • 基于深度学习的指针式仪表倾斜校正方法——论文解读

    中文论文题目:基于深度学习的指针式仪表倾斜校正方法 英文论文题目:Tilt Correction Method of Pointer Meter Based on Deep Learning 周登科、杨颖、朱杰、王库.基于深度学习的指针式仪表倾斜校正方法[J].计算机辅助设计与图形学学报, 2020, 32(12):9.DOI:10.3724/SP.J.1089.2020.18288.        针对仪

    2024年02月12日
    浏览(33)
  • 深度学习论文解读分享之diffGrad:一种卷积神经网络优化方法

    diffGrad: An Optimization Method for Convolutional Neural Networks Shiv Ram Dubey , Member, IEEE, Soumendu Chakraborty , Swalpa Kumar Roy , Student Member, IEEE, Snehasis Mukherjee, Member, IEEE, Satish Kumar Singh, Senior Member, IEEE, and Bidyut Baran Chaudhuri, Life Fellow, IEEE Adaptive moment estimation (Adam), difference of gradient, gradient descent,

    2024年01月17日
    浏览(41)
  • 对比学习论文阅读:CoCLR算法笔记

    标题:Self-supervised Co-training for Video Representation Learning 会议:NIPS2020 论文地址:https://dl.acm.org/doi/abs/10.5555/3495724.3496201 官方代码:https://www.robots.ox.ac.uk/~vgg/research/CoCLR/ 作者单位:牛津大学 本文的研究目标是纯视觉的自监督视频表征学习。我们做出了以下贡献:①我们研究了在

    2024年02月03日
    浏览(48)
  • 龙格-库塔方法学习笔记

       龙格—库塔法是一种在工程上应用广泛的高精度单步算法,其中包括著名的欧拉法,用于数值求解微分方程。 由于此算法精度高,采取措施对误差进行抑制,所以其实现原理也较复杂。 在各种龙格—库塔法当中有一个方法十分常用,该方法主要是在已知方程导数和初值

    2024年02月15日
    浏览(28)
  • 【学习笔记】视频检测方法调研

    随着机器视觉技术应用领域的不断扩充,所面临的检测对象类型持续增加,基于单帧图像的检测方法已无法作为适用所有场景检测的通用方法,由此,基于视频的检测方法开始出现,其通过引入连续多帧图像中的时序信息,能够根据图像间关联做出准确判断,目前已成功被应

    2024年02月13日
    浏览(22)
  • 强化学习价值函数方法笔记

    在强化学习中,价值函数(Value Function)是一个核心概念,它用于衡量在不同状态或状态-动作对下,一个智能体(agent)可以获得的预期累积奖励。价值函数对于智能体做出决策和学习行为策略非常重要。 价值函数可以分为两种类型: 状态价值函数(State Value Function):记作

    2024年02月15日
    浏览(26)
  • 【论文阅读】一种基于图深度学习的互联网通信故障检测与定位方法

    论文原文:A Graph Deep Learning-Based Fault Detection and Positioning Method for Internet Communication Networks 一种基于图深度学习的 互联网通信故障检测与定位方法         新一代互联网在现代社会中,互联网接入的规模正在逐渐扩大。根据深度学习IC发布的最新报告,近一半已经成为网民

    2024年04月08日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包