一般是logits/temperatue。
总结一下温度超参数
当分类结果正确时,当temperature越小时,softmax输出各类别的分数差别越大,loss越小。
当分类结果错误时,当temperature越小时,softmax输出各类别的分数差别越大,loss越大。
温度超参能让概率分布差别更明显
在对比学习loss中加入temperature参数解决的核心问题:困难负样本问题。
困难负样本,就是一张图像经过特征提取网络后,发现自己相较于自身数据增强后的图片特征,更相似于其他图片提取出的特征。
但是,相似度并没有差很多。这样的样本我们就叫他困难负样本。
如果没有引入temperature参数,当有困难负样本过来时,loss相对较小,对参数的惩罚也就较小。由于我们希望所有特征向量尽量远离。
因此,必须对所有错误分类的样本都加大惩罚,所以,要加入一个小于1的temperature参数,来放大对于困难负样本的惩罚。
考虑一下出现困难负样本的原因,有可能是因为两张图片确实非常相似,通常是两张图片有着相同的前景,让算法产生了混淆。也就是说,其实网络已经学到了一定的语义特征,这对下游任务是有帮助的,强行将两张非常相似图片提取出的特征相互远离,有可能打破这种语义信息,导致在执行下游任务时,效果不升反降。
so,temperature参数太高不能很好的训练特征提取网络,太低又会打破模型学到的语义信息,损害下游任务的准确度。
之前一直不理解应用场景,放图 神器CLIP:连接文本和图像,打造可迁移的视觉模型 - 知乎
以第一列为例,狗的图片进行预测,预测的prob中dog和person竟然差不多。但是理想情况它们俩的概率应该拉的更远才对。
这时候prob/(小于1的数)就可以实现了。
a = torch.Tensor([[0.26,0.21,0.18,0.2,0.16]])
print(a/0.3) # tensor([[0.8667, 0.7000, 0.6000, 0.6667, 0.5333]])