1 min read 104 words Updated May 01, 2026 Created May 03, 2026

核心设计基于这样一个洞察点:数据增强后,其隐空间分布是相近的。

那么对于这个子监督学习的方法,我们自然的根据模型在隐空间上的分布距离来设计损失函数:

$$\begin{aligned} {\rm sim} (z_i, z_j) &= \frac {u^T v}{\| u \| \cdot \| v \|} \\ {loss}_{i, j} &= - \log {\rm softmax}_j \ {\rm sim\ }(z_i, z_j) \\ {\mathcal L} &= {\mathbb E} [loss_{2n, 2n + 1} + loss_{2n + 1, 2n}] \end{aligned} $$

值得注意的是,$h_i$ 才是真正的输出空间,而 $z_i$ 是经过一个新的可训练网络 $g(\cdot)$ 之后的投影空间:

$$g(h) = W^{g2} \sigma(W^{g1} h) $$

所以对于 SimCLR 的训练过程:

  1. 训练 $x \to h \to z$ 的模型
  2. 保留 $x \to h$ 的网络:
    1. 微调 $x \to h$ 的网络
    2. 训练一个 $h \to y$ 的分类头(线性评估,精度最高)

$\Delta$ 由于负样本,也就是 $loss_{i, j}$ 中对于所有样本的参与,当 $z_i$ 与其他的图片编码相似时,会放大 $\sum \exp$ 的分母,从而使得 $loss_{i, j}$ 更大,所以这个比较方式可以防止表征坍塌。