对比学习历程

对比学习定义

根据同类别个体在高维空间特征相近,不同个体高维空间特征不相近的思想,通过构成正负样本对配合loss的方式来进行特征学习与训练以达到上述思想的目的。(正样本同类别,负样本不同类别)

对比学习发展历程

论文1: Instance Discrimination(经典baseline) 个体判别工作

动机:如下图所示,受有监督学习的启发,喂给一个训练好的神经网络某类别的输入图片,他给出的高分响应仍然是和该类别相关的,而不相关的其他类别则分数较低(以豹为例,分数高的仍是某类豹子或者动物,而其他类别的物体则分数低)。但产生这种现象的原因并不是因为图片所给的label语义相似,而是因为类别object本身相似(特征共性)从而提出了个体判别任务。
把每一个图片(Instance)作为一个类别,目标是学习一个特征,使得能够把每一张图片区分开来。
代理任务:分类
在这里插入图片描述
架构
在这里插入图片描述
使用对比学习的方法去训练一个图像编码器使得获取的特征能够将每一个个体作为不同类别。本文特点使用memory Bank来存储样本特征(构造正负样本对),每个学习到的特征,在memory bank里面进行更新,不停地迭代更新编码器和memory bank,使学到的特征更具区分性。

不足:缺乏特征一致性(该次memory bank里面的生成特征的编码器无法保证与前后时刻编码器参数相同)

论文2: Unsupervised Embedding Learning via Invariant and Spreading Instance Feature (SimCLR前身 InvaSpread)

动机:同一实例在不同数据增强下的特征应是类似的(下图同一行),而不同实例的特征应是分离的(下图同一列)。
代理任务:分类
在这里插入图片描述
架构
在这里插入图片描述
亮点:与上文不同没有使用额外的数据结构存储负样本,正负样本均来自统一个minibatch,并且只是用一个编码器进行端到端的学习。
不足:负样本不足够多(batch_size只有256),缺少数据增广。

论文3: Representation Learning withContrastive Predictive Coding (CPC)

代理任务:预测
架构
在这里插入图片描述
方法过程:输入可以是音频、图片、文本等也可用于强化学习。
以音频为例,时间序列输入到编码器(genc)获取特征,并将每个序列的特征送入自回归模型(gar),输出红色特征用于预测下一时刻序列特征 Z,Z和下一时刻输入形成正样本对,与任意不对齐时刻形成负样本对,完成训练。
特点:模型通用性强,非常灵活,

论文4: Contrastive Multiview Coding (CMC)

动机:多传感器,多视角,强大的特征具有视角不变性(不管是看到狗还是听到狗叫声均可以判断出狗),学习所有视角下的互信息,抓住关键因素。(如下图Vi同类,Vj不同类)
正负样本定义:不同视角(模态)相同内容为正样本,不同内容则为负样本
在这里插入图片描述
局限:使用几个视角(模态)就需要几个类型的编码器,计算代价过高。

论文5: Momentum Contrast for Unsupervised Visual Representation Learning (MoCo_v1)

codehttps://github.com/facebookresearch/moco
亮点

  1. 使用队列构建动态字典(负样本不足问题)
  2. 动量编码器 (特征一致性问题)
  3. 较好的下游任务迁移性

架构
在这里插入图片描述
MoCo通过使用contrastive loss将被编码的q和字典内被编码的keys匹配来训练一个视觉表示编码器。keys是通过队列构建的动态字典(当前的mini-batch进来,以前的mini-batch出队)并由缓慢进展的编码器编码,缓慢进展的编码器由查询编码器动量更新来驱动。

对比学习机制的比较
在这里插入图片描述
(a)端到端的方式:使用两个编码器同时进行更新(两个编码器可以不同)。由于计算性能的限制,可能会有负样本不足的问题。
(b)memory bank:key由memory bank采样获得。面临特征一致性问题。
(c)MoCo:采用动态字典以及动量更新的方式进行训练获得视觉表示编码器。
动量更新方式:
Θ k ← m Θ k + ( 1 − m ) Θ q \Theta_{k} \leftarrow m\Theta_{k} + (1-m)\Theta_{q} ΘkmΘk+(1m)Θq
伪代码如下:
在这里插入图片描述

论文6: Improved Baselines with Momentum Contrastive Learning (MoCo_v2)

MOCo_v2是MoCo_v1与SimCLR_v1(论文9)的结合
与MoCo_v1比较, 使用了MLP projection head (用于编码器后)和更多的数据增强。

论文7: An Empirical Study of Training Self-Supervised Vision Transformers (MoCo_v3)

较之前主要不同:Backbone替换为ViT
伪代码:
在这里插入图片描述
出现问题:替换后训练回产生振荡影响实验效果。
在这里插入图片描述
论文中解决方案使训练更稳定:冻住ViT中patch projection layer层参数。

论文8: Emerging Properties in Self-Supervised Vision Transformers (DINO)

SimSiam(论文13)+MoCo_v3(论文7)前身BYOL(论文12)
动机:与卷积神经网络相比自监督学习是否为ViT提供了新的特性。
由下图可知,将无监督学习中ViT注意力层可视化可以看到它学习到了明显的物体边界特征。甚至优于分割网络。

非监督给ViT带来的优势:

  1. 很好的分割效果
  2. 只有一个基础的KNN分类器,不加任何微调线性分类器以及数据增强效果也很好
    在这里插入图片描述
    架构
    在这里插入图片描述
    teacher和student网络架构相同但是参数不同,tencher网络出来后的特征进行了center处理(见下图),teacher停止梯度回传使用动量更新,student正常更新。
    在这里插入图片描述
论文9: A Simple Framework for Contrastive Learning of Visual Representations (SimCLR_v1)

目标:不需要专门的框架和内存库,只需要简单的框架就能实现自监督算法。

数据增强方式
在这里插入图片描述
架构
在这里插入图片描述
过程:样本X经过数据增强得到i j 两个样本,均为正样本,其余为负样本(正样本数为N,负样本数为2(N-1)),经过参数共享的编码器f, 获取特征h, 后接一个projection head(g),再做相似性比较,在预测时不使用projection head。
贡献:对比学习需要很强的对比增强技术,增加g函数也就是mlp层,用了更大的batch_size同时训练的时间更久。
g函数:线性层+Relu+线性层
不足:Batch_size太大,需要的算力太大。

论文10: Big Self-Supervised Models are Strong Semi-Supervised Learners (SimCLR_v2)

架构:
在这里插入图片描述

内容:1. SimCLR v2 自监督对比学习训练一个大模型; 2. 小部分有标签的数据去做有监督的微调,获得teacher; 3. 利用teacher模型生成很多伪标签,这样就可以在更多无标签数据集上进行自学习。
模型改进点:更大的模型; 加深projection head(一层变为两层); 使用动量编码器

论文11: Unsupervised Learning of Visual Features by Contrasting Cluster Assignments (SwAV)

做法:将对比学习和聚类的方式合在了一起
架构
在这里插入图片描述
思路:左侧为通用对比学习,两个Z特征去做对比,右侧该论文的方法两个特征 Z(BD)和聚类中心C(DK)相作用产生目标特征 Q。
下游代理任务:如果Z特征为正样本对,那么两个特征应该是可以相互预测的(Z1点乘C和Q2是可以相互预测的,这里Q2充当了ground truth)

优点:负样本数少了,样本更有意义并且更均衡
性能提升点:训练track:Multi-crop:多个crop,获取更多的局部特征,并且为了减少计算代价,取得crop由2224224变为2160160+49696,这样计算代价也没有增大,且crop增多

论文12: Bootstrap Your Own Latent A New Approach to Self-Supervised Learning (BYOL)

特点:不使用负样本,loss: MSE
架构:
在这里插入图片描述

论文13: Exploring Simple Siamese Representation Learning (SimSiam)

不使用下列任何方法也可以使连体网络有效。
(i)负样本对,(ii)大批量,(iii)动量编码器。
停止梯度回传是防止模型坍塌的有效手段
架构
在这里插入图片描述
过程:一个样本的两个图像增强样本由相同的编码器网络(Backbone+MLP)处理,然后一边使用MLP h 一边停止梯度,最大化二者的相似性,该过程既不是用负样本对也不使用动量更新。

参考链接:
https://www.bilibili.com/video//BV19S4y1M7hm

https://www.bilibili.com/video/BV1C3411s7t9

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB是一个功能强大的数值分析工具,可以用于改进粒子群优化算法(PSO)。对比而言,基本的PSO算法存在一些缺点,如收敛速度慢、易陷入局部最优解等问题。为了改进PSO算法,可以采取以下几种方法。 首先,可以利用自适应惯性权重来改进PSO算法。传统的PSO算法中,惯性权重是固定的,在搜索过程中不能动态调整。而自适应惯性权重可以根据搜索的进展情况来动态地调整粒子的速度和位置更新,从而加速收敛速度和增加全局搜索能力。 其次,引入局部搜索机制,如局部最佳位置(pbest)和全局最佳位置(gbest)。pbest代表每个粒子在其搜索历程中找到的最佳位置,而gbest则代表在整个群体中找到的最佳位置。将这些信息结合起来,可以在搜索过程中引导粒子向更优解的方向移动,从而提高搜索效率。 另外,通过引入多种优化策略进一步提升PSO算法的性能。例如,可以结合模拟退火算法或遗传算法等其他优化方法与PSO相结合,形成混合算法,以提高搜索的全局性和快速性。 最后,考虑使用自适应学习因子来改进PSO算法。学习因子可以动态地调整粒子的速度和位置更新。通过自适应地更新学习因子,PSO算法可以更好地平衡全局搜索和局部搜索的权衡,从而提高算法的性能和稳定性。 总之,借助MATLAB这个强大的工具,我们可以通过改进PSO算法的各个方面来提高其效果。灵活运用自适应惯性权重、引入局部搜索机制、结合其他优化策略以及使用自适应学习因子等方法,都可以对PSO算法进行有效的改进,提高其搜索能力和收敛速度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值