-
如何感知负例的难度?什么样的负例是有难度的?
-
在对比学习中,对于数据x,除了他的唯一正例x+外,所有其他的数据都是负例。但是,这些负例有一些和x比较像,有一些差异比较大,对于比较接近原始数据特征,难以进行区分的,难度比较大;对于区别度很大,存在的共同特征表较少的,难度比较小,区分比较容易。比如:原始图像为狗,需要区分的为狗和狼,难度比较大,需要区分的为树、人,难度比较小,便于区分。
-
将其映射到超球面上就是,比较像的、有难度的负例在超球面上距离比较近,比较容易区分的在超球面上距离比较远。也就是说,距离越近的负例越难区分,距离越远的负例越容易区分。
-
-
总而言之,温度参数T起到的作用:温度参数会将模型更新的重点,聚焦到有难度的负例,并对他们做相应的惩罚,难度越大,也即与x越接近,分配到的惩罚系数越多。所谓惩罚就是,就是在模型优化的过程中,需要将这些负例从x身上推开明时期的距离越远,是一种斥力。也就是,距离越近的负例护肤易更多的权重,会具有更大的斥力,需要将其推开的力越大。
-
如果温度超参数设置过小,会导致损失函数分配的惩罚项范围越窄,更加聚焦在比较近的范围之内负例之中。同时,如果这些被覆盖的负例,因为数量减少了,会导致分配到的每个负例上的权重更大,斥力会更大。在极端的情况下,如果温度系数接近于0,会导致infoNCE退化为Triplet(facenet人脸识别中的损失函数)。一般情况下,有效的负例智慧聚焦在距离最近的一到两个最难的实例。从上述分析可知:温度参数越小,那么超球面上的密集数据将会被打散,数据将会越来越均匀。
-
但是,温度参数也不是越小越好。由于在进行数据学习时,我们使用的是无监督,负例中有可能会存在一些潜在的正例,如果参数太小会导致比较近的潜在正例被推开,这样是不正确的。
因此,我们希望能够在温度参数能够在alginment和unifoemity之间找一个平衡点。