第一篇:自监督学习的进阶范式(MoCo, DINO, DINOv2)
1. 回顾对比学习 (Contrastive Learning)
-
核心概念:获取相似的对(正样本)和不相似的对(负样本),将相似对拉近,不相似对推开。
-
流程:输入未标记图像 x,应用两个随机变换。送入编码器(ViT/CNN)提取特征。计算 2N×2N 的相似度矩阵(NN张图,每张有2个变换版本)。
-
SimCLR的痛点:需要非常大的Batch Size(如8192)来提供足够的负样本,否则任务太简单,模型无法收敛。导致显存爆炸。
2. MoCo (Momentum Contrast, 动量对比学习)
-
核心设计:解耦 Batch Size 和负样本数量。
-
结构:
-
当前批次 :Query
通过编码器得到 q。
-
队列(Queue) :维护一个历史负样本队列 k0,k1,k2...。通过动量编码器得到 k。
-
-
动量更新(EMA) :
动量编码器不通过梯度下降更新,而是基于当前编码器的权重滑动平均:
-
梯度回传 :梯度只通过查询编码器。动量编码器由于计算图太庞大,不接收梯度,通过动量更新保证了负样本特征的一致性。
3. DINO (Self-Distillation with No Labels)
-
原理 :在 MoCo 的动量架构基础上,用KL散度 / 交叉熵代替点积,用 Vision Transformer (ViT) 代替 ResNet。
-
架构:
-
学生网络 (Student):输入 x1,Softmax得到 P1。
-
教师网络 (Teacher):输入 x2,Softmax得到 P2。教师网络由学生网络的EMA更新。
-
Loss:−P2logP1(交叉熵)。
-
-
💡 核心技巧:Centering + Sharpening (防坍塌):
- 直接训练会导致模型坍塌(所有输出相同)。教师网络的输出会先减去均值(Centering),再除以较小的温度系数 ττ(Sharpening),以此锐化概率分布,防止输出均匀化。
4. DINOv2
-
将数据规模从 1M (ImageNet) 扩大到 142M。
-
生成的视觉特征极强,在 PCA 降维可视化下,不同物体的特征呈现清晰的多彩聚类,是业界常用的自监督特征提取器。
第二篇:生成模型的理论基础
1. 监督 / 无监督学习对比
-
监督学习:数据为 (x,y)。学习 x→y 的映射。例如分类、检测、分割。容易"过拟合"训练集映射。
-
无监督学习 :数据只有 x。目标是寻找隐藏结构。例如 K-means 聚类 (寻找簇)、PCA 降维(寻找低维子空间)。任务是模糊的,但可以应用于下游任务。
2. 判别模型 vs 生成模型
-
判别模型 (Discriminative) :学习 p(y∣x)。预测给定图像 x 的标签分布。特点 :图像之间不存在概率质量竞争 ,每张图各自形成自己的标签分布,但也因此无法拒绝不合理的输入(如输入猴子图,模型被迫输出猫/狗的概率)。
-
生成模型 (Generative) :学习 p(x)。对所有可能的图像 x 建模,所有可能的图像都在竞争概率质量(Probability Mass)。
-
概率质量竞争 :密度函数 p(x) 必须满足 ∫p(x)dx=1∫。给一只猫分配了概率,给狗的概率就会减少。因此模型必须深入理解数据中的结构,才能分配好概率。它能够拒绝不合理输入(如给抽象画分配低概率)。
-
条件生成模型 (Conditional Generative):p(x∣y)。给定丰富的标签 y(如文本),生成对应的 x(如图像)。需要深度推理(比如:狗更可能站着还是坐着?)。
3. 贝叶斯公式的联结
-
P(y∣x) 是判别模型,P(x) 是无条件生成模型,P(y) 是先验分布。
-
理论上,已知任意两个可以求出第三个。但实践中不这么做,因为生成模型学习 p(x) 本身的创造力就足够了,引入判别模型反而容易学不到东西。
4. 最大似然估计 (MLE)
目标 :写出显式函数 p(x)=f(x,W)。
训练过程:
-
Log技巧:乘积容易导致数值下溢,取对数变成求和。
-
最大化似然,等价于最小化交叉熵(Cross Entropy)。使用梯度下降优化。
5. 生成模型分类学 (Taxonomy)
-
显式密度 (Explicit Density):能计算 p(x) 的具体值。
-
Tractable (可计算):自回归模型 (Autoregressive)。
-
Approximate (近似):变分自编码器 (VAE)。(优化下界)
-
-
隐式密度 (Implicit Density):无法计算 p(x),但能采样生成。
-
Direct (直接采样):生成对抗网络 (GAN)。
-
Indirect (间接采样):扩散模型 (Diffusion Models)。
-
第三篇:自回归模型 (Autoregressive Models)
1. 核心思想与公式
利用概率的链式法则,将高维数据 xx 建模为序列:
-
应用:RNN/LSTM 语言模型、Masked Transformer(GPT系列)。
-
直观理解:根据前面的词预测下一个词,根据前面的像素预测下一个像素。
2. 图像上的自回归
-
难点:图像不是一维序列,也不是自然离散的。
-
处理方法:将图像光栅化为长序列,每个像素3个8-bit子像素(0-255的整数),作为分类问题预测(256类)。
-
瓶颈:生成 1024x1024 图像 = 300万个序列长度,计算代价极大!
-
解决 :不预测单个像素,而是预测图像块(Tile)。
第四篇:变分自编码器 (VAE)
1. 普通自编码器 (Autoencoder)
-
结构 :输入 x -> 编码器 (Encoder) -> 潜在特征 z -> 解码器 (Decoder) -> 重构图像
。
-
损失函数 :L2 距离
。
-
功能:降维、特征提取。
-
缺点 :无法生成新图像! 虽然我们获得了一个 z,但我们不知道如何生成一个全新的 z′ 来输入解码器。
2. VAE 的概率化改造
-
先验分布:假设 z 来自标准正态分布 p(z)∼N(0,I)。这样我们就能从该分布采样 z′ 并送入解码器!
-
解码器 (生成模型) :
。
-
编码器 (推断模型) :
。注意,这里输出的是一个分布,而不是一个确定的数值。
3. 数学推导:证据下界 (ELBO)
目标 :最大化数据对数似然。
引入编码器分布 进行配凑:
乘除 :
代入期望的定义 并对数展开:
-
第三项(红色):KL散度必然 ≥0。但真实后验 pθ(z∣x) 无法计算。
-
结论 :前两项构成了
的下界(ELBO)。
- 我们的目标就是最大化 ELBO。
4. ELBO 的直观解读与损失博弈
-
重构损失(Reconstruction Loss) :
。
- 等价于最大化生成 xx 的概率,在高斯假设下,即最小化 L2 距离
。
- 等价于最大化生成 xx 的概率,在高斯假设下,即最小化 L2 距离
-
先验匹配损失(Prior Loss) :
。
- 强迫编码器输出的分布
接近标准正态分布 p(z)。
- 强迫编码器输出的分布
-
💡 损失博弈(对抗):
-
重构损失希望
且
唯一(便于确定性的解码)。
-
先验损失希望
,
(便于采样)。
-
网络训练就是在两者之间寻找平衡。
-
5. 重参数化技巧 (Reparameterization Trick) 与训练
-
梯度阻断问题:我们不能直接从 N(μ,Σ) 采样 z,因为"采样"是一个随机过程,梯度无法通过随机节点回传。
-
重参数化:引入外部随机噪声 ϵ∼N(0,I):
-
PyTorch 伪代码:
z = mu + torch.exp(0.5 * log_var) * epsilon。 -
这样,随机性被隔离在 ϵϵ 中,梯度可以流经 μz∣xμz∣x 和 Σz∣xΣz∣x 回传。
-
训练流程:
-
输入 x,编码器输出
和
。
-
计算先验损失(KL散度)。
-
重参数化采样得到 z。
-
将 z 输入解码器得到
。
-
计算重构损失(L2距离)。
-
反向传播,最小化总损失。
-
6. VAE 总结
-
优点:拥有坚实的概率论基础(最大化 ELBO);可以生成全新的样本;拥有平滑且结构化的潜在空间 z,方便进行插值和属性编辑。
-
缺点:生成图像往往比较模糊(L2损失倾向于生成平均值);优化的下界可能比较松,导致学到的分布不够精准。