百科问答小站 logo
百科问答小站 font logo



为什么 larger batch size 对对比学习的影响比对监督学习的影响要大? 第1页

  

user avatar   huo-hua-de-41 网友的相关建议: 
      

可能是因为logK诅咒,其中K是batch size。softmax后的交叉熵损失函数可以写成:

其中, 是正样本的分数, 是负样本的分数。

因为对比学习的正负样本差别是挺大的, 的分数很快就会趋近于0,此时损失函数的数值将趋近于 ,其中 可以简单理解为所有负样本 分数的平均值。当batch size比较小的时候,可以理解为 的值也会比较小,接近于0,这个时候浮点误差就会对计算结果造成比较大的影响,最后使得梯度变成随机噪音,使得模型无法进一步收敛。

以上分析来自于下面这篇FlatNCE的论文,详细地分析可以自己看下。

所以避免这个问题,最简单的解法就是使用比较大的batch size。或者改造一下损失函数,这也是FlatNCE的目的和贡献。


user avatar   wang-feng-98-82 网友的相关建议: 
      

supervised training的batch size不能简单地从字面上理解,最后一层fc的weight可以理解为每一类的template,它们代表了大量的负样本。

而contrastive learning的样本都是要过一整个网络的,负样本多少直接取决于batch size大小。


user avatar   feng-xia-chong-90 网友的相关建议: 
      

TL,DR:Batch越大,负例越多,可以缓解表示坍塌。补充 @Gordon Lee

资料来源于:


user avatar   gordon-lee 网友的相关建议: 
      

我的理解是这样的,不对的地方请指正:

对比学习一般是自监督学习的方式,相比于supervised方法,它的监督信号是自己构造的,也就是自己和自己的augmentation被认为是正例,负例是in batch的其他样本。

1.相比supervised使用来自数据集的监督信号,对比学习用自监督的方式需要更多的训练steps来收敛。

2.对比学习的一般做法就是拉齐正样本,排开负样本,实际上正样本很好拉齐,你可以用mse,或者cross entropy都可以。关键在于,怎么保证拉齐的同时,保持一个好的uniform。这时候负样本的采样就成了关键。之所以要更大的batch size,就是因为in batch的其他样本作为负样本,充当了防止表征崩塌的角色,batch size越大,用于对比的负样本越多,效果就越好。

3.也可以想象一个极端的场景。对比学习最终理想状态是,数据集里的每个样本都和它自己的augmentation接近,和其他所有样本都远离。要实现和其他所有样本都远离的话,那么batch size就要等于数据集的大小。但实际情况并不能做到这点,那只有尽量越大越好了。


user avatar   tylin98 网友的相关建议: 
      

女王:求求题主放过我,我可不敢有什么政绩。。。




  

相关话题

  KL散度衡量的是两个概率分布的距离吗? 
  为什么Transformer要用LayerNorm? 
  有哪些人工智能上的事实,没有一定人工智能知识的人不会相信? 
  2018年了,MXNet 发展的如何了? 
  为什么现在不看好 CV 方向了呢? 
  搞机器学习的生环化材是天坑吗? 
  请问下大家训练 SimCSE 时, loss 有没有这样的情况? 
  如何系统学习机器学习? 
  如何看待timm作者发布ResNet新基准:ResNet50提至80.4,这对后续研究会带来哪些影响? 
  ICML2020有哪些值得关注的工作? 

前一个讨论
怎么计算某一年的干支所表示的是一甲子中的第几年?
下一个讨论
澳洲的护理本科有多难学?





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利