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

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




  

相关话题

  深度学习方面的科研工作中的实验代码有什么规范和写作技巧?如何妥善管理实验数据? 
  ICLR 2021 有什么值得关注的投稿? 
  上学和读书有什么区别? 
  AlphaGo「理解」围棋吗? 
  神经网络的损失函数为什么是非凸的? 
  有尝试用多层自组织特征神经网络(MLSOM)来代替层次分析法(AHP)的吗?会有哪些问题需要注意? 
  为什么deep lab v3起,输出不再接 DenseCRF了? 
  BERT模型可以使用无监督的方法做文本相似度任务吗? 
  如何评价 NVIDIA 发布的 DGX-1? 
  算法岗位真的需要顶会才能入场吗? 

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





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