解决对比学习中常常用到的大batch size问题,这种固有缺陷往往是由于InfoNCE损失函数带来的,本文试图修改该损失函数来降低batch size对对比学习过程中模型权重变更的影响。 二、方法 传统对比学习如SimCLR采用InfoNCE作为损失函数,其表达形式为: 这里k∈{1,2} ,表示正例样本的两种不同视角, i,j 表示batch内的样本。对...
总结来说,1是对batch size的要求,2是对增强策略的要求(例如其它文章有证明某些数据增强手段如高斯噪声...
按我的理解来说,自监督学习的代理任务普遍存在比较高的噪声。增大batch size,可以有效降低这种噪声对自...
达摩院研究员提出了一种对比损失(Contrastive Loss)的高效实现方式(Inf-CL),通过分块计算策略,在单台 A800 机器上就能把batch size扩展到400万。该方案突破了领域内“Contrastive loss 由于显存限制不能放大 batch size”的“共识”,实现了对比损失的 batch size 近乎无限的扩展。 论文标题: Breaking the Memory Ba...
对比学习通常负例来自batch其他样本,实验表明,batch_size非常影响效果,一般越大越高,但是当需要batch中两辆进行对比是,需要的时间复杂度,这就会导致batch size会受到显存大小的约束,给对比学习的应用带来了障碍。 另外一个更加重要的是希望缓解了负例方法负例存在的false-negative的问题,也就是batch内随机采样的负例...
具体的做法如上图所示,代理任务也选取了个体判别的任务,如果batch size是3,那么我们就能得到x1 x2 x3三张图片,对x1来说, x1'就是它的正样本,负样本就是其他图片,包括原始图片和对应数据增强的图片。即此时正样本数量是3,负样本是(3-1)×2=4,这里就和InstDisc不太一样了,因为InstDisc的负样本是从memory ...
3、总的来说,batch size越大越好,训练时间越长越好,见图12。(这两个结论后来都被别的工作证实不总是正确的) 图12 不同batch size和训练轮次对表示效果的影响[2] 还有一些其他有意思的结论感兴趣的读者可以阅读原文。 但是并不是所有机构都有像谷歌一样的算力能够用128核的TPU进行运算,同时越大的batch size,...
此外,本文也提出了对比学习的一些关键发现,包括对数据的argumentation的方式、batch size的大小、生成的embedding进行normalize、对对比学习loss的temperature进行调节都对对比学习效果有重要影响。融合了上述优化,本文提出SimCLR对比学习框架,以最大化同一个图像经过不同argumentation后...
一个对比损失层,用于在一个Batch的样本中计算对比损失,其思想是最大化同一个样本不同增强版本句向量的相似度,同时使得不同样本的句向量相互远离。 训练时,先从数据集DD中采样一个Batch的文本,设Batch size为NN。通过数据增强模块,每一个样本都通过两种预设的数据增强方法生成两个版本,得到总共2N2N条样本。这2N2N...
分布式训练靠多台机器增加batch_size,单节点的batch_size可以靠优化模型训练时的显存占用提高。根据ZeRO里的说明,模型在GPU上训练时,显存中会存在模型的参数、各层的激活值、优化器的状态、梯度等,要减少显存占用就要想办法优化这些数据的显存开销。 4.3.1 ZeRO ...