Self-Supervised learning

自监督学习 = 用无标签数据训练 encoder ➕ 用少量标注数据解决真实任务

Bert

见李宏毅讲义

GPT

见李宏毅讲义

Visualizing Attention

soft $ hard

Contrastive Representation Learning

核心公式

跟交叉熵类似

SimCLR: A Simple Framework for Contrastive Learning

SImCLR Pipeline

Projection Head 的选择

投影头 = 损失函数的缓冲区

让对比损失不会直接干扰 encoder 的主特征表示。

非线性

Batch size 的影响

大的 batchsice, 但训练需用 TPU

InfoNCE 是 mutual information 的下界,batch 越大,下界越紧.

MoCo,(Momentum Contrast)

解决了SimCLR 需要大 batch 的问题

基本框架

  1. 生成正样本对(两次 data augmentation)

  2. 分别用:

    • query encoder

    • key encoder

      得到 query / key 表示;

  3. key 用 .detach() 防止梯度传播;

  4. 利用 queue 中的 key 构造负样本;

  5. 计算 InfoNCE Loss(使用 queue 里的所有负样本);

  6. 用 loss 反向传播更新

  7. 用 momentum 更新

    $$

\theta_k \leftarrow m \theta_k + (1 - m) \theta_q

$$

  1. 把当前 batch 的 key 加入 queue,移除最早的 key。

MoCo v2

来自 SimCLR 的改进:

  1. 非线性投影头(non-linear projection head)
  2. 更强的数据增强(strong data augmentation)

保留 MoCo 的优点:

  • Momentum Queue 机制

MoCo v1、SimCLR、MoCo v2 三者对比

Instance-level vs. Sequence-level Contrastive Learning

CPC(Contrastive Predictive Coding)

More Examples

MoCo v3

Masked Autoencoder

Dense Object Net

DINO

DINO v2

CLIP