百科问答小站 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 网友的相关建议: 
      

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




  

相关话题

  深度学习应用在哪些领域让你觉得「我去,这也能行!」? 
  是不是对于任意 n×n 大小的围棋棋盘,人类都赢不了 AlphaGo Zero 了? 
  为什么 Bert 的三个 Embedding 可以进行相加? 
  如何评价余凯在朋友圈发表呼吁大家用 caffe、mxnet 等框架,避免使用 TensorFlow? 
  OpenAI 发布文字生成图像工具 DALL·E 2,它的画作水平如何?从技术角度如何评价它的能力? 
  请问下大家训练 SimCSE 时, loss 有没有这样的情况? 
  如何理解深度学习源码里经常出现的logits? 
  搞机器学习的生环化材是天坑吗? 
  请问下大家训练 SimCSE 时, loss 有没有这样的情况? 
  LSTM如何来避免梯度弥散和梯度爆炸? 

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





© 2025-04-11 - tinynew.org. All Rights Reserved.
© 2025-04-11 - tinynew.org. 保留所有权利