对比学习通常负例来自batch其他样本,实验表明,batch_size非常影响效果,一般越大越高,但是当需要batch中两辆进行对比是,需要的时间复杂度,这就会导致batch size会受到显存大小的约束,给对比学习的应用带来了障碍。 另外一个更加重要的是希望缓解了负例方法负例存在的false-negative的问题,也就是batch内随机采样的负例...
1)固定预训练emb,训练一个分类器,下图x轴表示batch-size或者队列长度,y轴表示分类器的acc。可以看到moco效果更好且能够使用更多负样本。end-to-end方式受限于batch-size,最大batch-size为1024。 2)不同 m 超参的值对应的acc效果 3)后面作者也做了很多实验,比如在不同的模型框架下使用预训练的emb效果对比,MoCo...
对角位置就是相关的文本和图像的相似度,即 sim(Q, P),其他位置就是不相关的文本和图像的相似度 sim(Q, N),所以这个 batch 的稀疏label就是(0,1,2,...,batch_size-1)。
lr=args.eval.base_lr*args.eval.batch_size/256, momentum=args.eval.optimizer.momentum, weight_decay=args.eval.optimizer.weight_decay)# define lr schedulerlr_scheduler = LR_Scheduler( optimizer, args.eval.warmup_epochs, args.eval.warmup_lr*args.eval.batch_size/256, args.eval.num_epochs, arg...
达摩院研究员提出了一种对比损失(Contrastive Loss)的高效实现方式(Inf-CL),通过分块计算策略,在单台 A800 机器上就能把batch size扩展到400万。该方案突破了领域内“Contrastive loss 由于显存限制不能放大 batch size”的“共识”,实现了对比损失的 batch size 近乎无限的扩展。
dim=1).reshape([batch_size,]) score 和 loss计算: batch_emb 会先 norm,再计算任意两个向量之间的点积,得到向量间的余弦相似度,维度是:[batch_size, batch_size]。 但是对角线的位置,也就是自身的余弦相似度,需要 mask 掉,因为它肯定是 1,是不产生 loss 的。
batch_size = N,对每个batch内的每张图片,随机从 τ 中选择两种data augmentation,得到两张图片,这两张图片就是一个正样本对,总共可以生成2N个样本,每个样本有一个样本和自己是正样本对,剩下的2N-2都是负样本,这里是用了一个softmax+temperature的loss SimCLR算法 实验 实验图太多就不贴了,想看detail的可以直...
3、总的来说,batch size越大越好,训练时间越长越好,见图12。(这两个结论后来都被别的工作证实不总是正确的) 图12 不同batch size和训练轮次对表示效果的影响[2] 还有一些其他有意思的结论感兴趣的读者可以阅读原文。 但是并不是所有机构都有像谷歌一样的算力能够用128核的TPU进行...
影响对比学习性能的核心因素是 contrastive pairs 的数量,这使得模型能够从更多的负样本中学习,体现在两个最具代表性的方法 SimCLR [2] 和 MoCo [3] 中分别为 batch size 和 memory bank 的大小。然而在长尾视觉识别任务中,由于类别不均衡,增加 contrastive pairs 的数量所带来的增益会产生严重的边际递减效应,...
在 MoCo 基础上得到了进一步的提升,然后作者还也明确的点名了 SimCLR,称不需要使用那么大的 batch size 也能超过它,可能这就是神仙打架吧。 4.2 SimCLR-v2 知识蒸馏 具体结构 5. 有监督对比学习 论文标题:Supervised Contrastive Learning 论文链接:https://arxiv.org...