softmax + NCE + infoNCE

softmax

下面是softmax的公式:
y ^ + = softmax ⁡ ( z + ) = exp ⁡ ( z + ) ∑ i = 0 k exp ⁡ ( z i ) (1) \hat{y}_{+}=\operatorname{softmax}(z+)=\frac{\exp (z+)}{\sum_{i=0}^k \exp \left(z_i\right)} \quad \tag{1} y^+=softmax(z+)=i=0kexp(zi)exp(z+)(1)

交叉熵损失函数如下:
L ( y ^ ) = − ∑ i ∈ K y i log ⁡ ( y ^ i ) (2) L(\hat{y})=-\sum_{i \in K} y_i \log \left(\hat{y}_i\right)\quad \tag{2} L(y^)=iKyilog(y^i)(2)

在有监督的学习中,标签是一个one-hot向量,将softmax出来的结果取 − log ⁡ -\log log,再和标签想成,即得到如下交叉熵损失:
− log ⁡ exp ⁡ ( z + ) ∑ i = 0 k exp ⁡ ( z i ) (3) -\log \frac{\exp (z+)}{\sum_{i=0}^k \exp \left(z_i\right)}\quad \tag{3} logi=0kexp(zi)exp(z+)(3)
上面的 k k k在有监督学习里指的是这个数据集一共有多少类别,比如cifar-10数据集,则k=9;ImageNet数据集有1000类,则k=999。

对于ImageNet数据集来说,此数据集有128万张图片,我们使用数据增强手段(比如,随机裁剪,随机颜色失真,随机高斯模糊)来产生对比学习正样本对,每张图片就是单独的一类,那$k$就是128万类,而不是1000类了, 有多少张图就有多少类。

对于对比学习来说,理论上也可以用上面的公式去计算loss,但实际上是行不通的。为什么?

因为每张图只和自己增强的图算正样本对。
在使用对比学习的方法时,尤其是当采用如ImageNet这类大规模数据集时,每张图片会与其经过数据增强后生成的图像形成正样本对。这意味着每张图片实际上会在特征空间中与其增强版本形成一个正样本对,而与其他所有图片生成的特征表示会成为负样本对。
具体分析

  1. 正样本对
  • 对于每张原始图片 x i x_i xi,我们通过各种数据增强手段(如随机裁剪、颜色失真、模糊等)生成多个增强图像。例如,如果我们对每张图片生成两张增强图像,那么每张图片 x i x_i xi 会形成三个图像之间的正样本对:原始图像和两个增强图像。
  1. 负样本对
  • 每张图片的增强图像会与数据集中其他图片的特征表示形成负样本对。这意味着,如果数据集中有 N N N 张图片,那么每张图片的增强版本会与其他 N − 1 N-1 N1 张图片的增强版本形成负样本对。
  1. 类别数
  • 在这种对比学习的框架下,每张图片及其增强版本被视为一个单独的类别。因此,对于ImageNet数据集中的128万张图片,类别数 k k k 实际上是128万,而不是数据集中原始的1000类。这是因为在对比学习的上下文中,每张图片及其增强版本被视为一个类别,这种方法利用了所有图像之间的对比信息。
    损失函数中的类别数
    在 InfoNCE 损失函数中:
    L InfoNCE = − 1 N ∑ i = 1 N log ⁡ exp ⁡ ( sim ( z i , z i + ) ) exp ⁡ ( sim ( z i , z i +
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值