SimCLR损失函数详解

图片来源:Self-Supervised Learning 超详细解读 (二):SimCLR系列

1. 数据增强

有一批batchsize为N的样本,论文中N=8192,下图以N=2为例;

对一个batch中的每个样本都进行2次随机的数据增强(随机裁剪之后再resize成原来的大小、随机色彩失真、随机高斯模糊3种方式)

对每张图片 x i x_i xi得到2个不同的数据增强结果( x i 1 和 x i 2 x_i^1和x_i^2 xi1xi2),所以1个Batch 一共有 N*2 个增强样本图片。

在这里插入图片描述

2. 获得图片表征

经过resnet网络提取特征+预测头,提取到了最终的visual representation。
在这里插入图片描述

3. 正样本和负样本构建

对于一个batch中,由同一张图片数据增强过的两张图片( x i 1 和 x i 2 x_i^1和x_i^2 xi1xi2)组成一个positive pair,他们互为正样本
其余任意两两图片之间的组合组成的图片对即为负样本。即N组pair中有一对positiveN-1对negative样本。

在这里插入图片描述

4. 计算相似度

使用余弦相似度衡量两两向量之间的相似度,公式如下所示:
在这里插入图片描述

5. 计算图片之间相似的概率

使用softmax计算概率:

在这里插入图片描述

该计算表达的 x i 1 x_i^1 xi1 x i 2 x_i^2 xi2最相似的概率,即第一张图片作为参考,计算另外三张图片,哪个最像

分子为 x i 1 x_i^1 xi1 x i 2 x_i^2 xi2的相似性取对数,分母为 x i 1 x_i^1 xi1与一个batch中另外 2 N − 1 2N-1 2N1张图片的相似性求对数的和。故分子为1对的相似性,分母为2N-1对图片的相似性的和

6. 损失函数

我们希望上面的softmax的结果尽量大(同一张图片增强出来的两张图片互为正样本,相似度越大越好),所以损失函数取了softmax的负对数:
在这里插入图片描述
接下来再计算是 x i 2 x_i^2 xi2 x i 1 x_i^1 xi1最相似的概率然后取-log, 即对第一对的计算交换顺序再计算一遍;

在这里插入图片描述
最后,计算每个Batch里面的所有Pair(共有N个图片对,2N个交换顺序之后的pair) 的损失之和取平均:

在这里插入图片描述

为什么需要大规模的batchsize?

更大的训练批量和训练轮数,可以提供更多的负样本,促进模型收敛。

可以增加负样本的数量,在计算概率的时候,计算公式的分母中就包含了负样本的计算
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45662399/article/details/134965255