wakafengfan / simcse-pytorch

pytorch版simcse无监督语义相似模型
MIT License
22 stars 3 forks source link

你好,对 loss_func 有点疑问 #2

Open wulaoshi opened 3 years ago

wulaoshi commented 3 years ago

我记得论文里的 loss 为 InFoNCE loss,而在你的代码实现里使用的是 BCEWithLogitsLoss,请问 BCEWithLogitsLoss 是 InFoNCE 吗?

wakafengfan commented 3 years ago

你好,NCE(噪音对比估计)就是负样本采样,就是在做二分类问题,不知道这样解释有没有说清楚

wulaoshi commented 3 years ago

你好,NCE(噪音对比估计)就是负样本采样,就是在做二分类问题,不知道这样解释有没有说清楚

谢谢,我搞清楚了。

suluo commented 3 years ago

为啥用用的是BCE而不是CE,BCE相当于在做多标签分类,会造成类别极度不均衡吗?正例B,负例B*2 - B

看InfoNCE的公式 是softmax,BCE是sigmoid

wulaoshi commented 2 years ago

为啥用用的是BCE而不是CE,BCE相当于在做多标签分类,会造成类别极度不均衡吗?正例B,负例B*2 - B

看InfoNCE的公式 是softmax,BCE是sigmoid

应该是CE,这里应该是写错了,我记得二分类一直用的都是CE

liangzz1991 commented 2 years ago

对的,感觉有问题,这里如果采用bce,标签为0的地方也会产生loss值。应该用ce,label其实是一个onehot的,只对正-正对应的地方产生loss,infonce在对比学习上用的很多,都是ce啊