无监督学习笔记
参考资料:
-
无监督学习Cookbook 几乎总结了所有的自监督学习方法,阅读过程中,根据参考文献索,进一步深入阅读每个方法具体得细节,掌握该论文,基本上就掌握了所有自监督学习的方法与基础。
-
统计学习方法(李航) 随时可以查阅的书本教材
-
对比学习论文综述讲解-李沐
1 自监督学习(SSL)概念
概念:自监督学习(SSL)可以从大量未标记数据中学习数据中的特征
它可以应用到图像、语音、视频和时间序列等其他模式。如:
- NLP:目标是屏蔽文本中的单词并预测周围的单词,主要是为了捕获单词之间的关系
- CV:MAE和BYOL模型中使用了SSL技术,可以查看这两篇论文
SSL可能在医学领域受欢迎,因为此领域标签数据成本非常高昂。
1.1 为什么要写教程
主要讲了SSL学习门槛很高,没有统一的学习材料,论文中的方法也不一定很详细,术语表示也不统一,所以需要有一个教程。
2 SSL的前世今生
2.1 SSL的起源
主要讲述2020年之前SSL的主要idea
信息恢复
思路:掩盖或删除图像中的某些内容,训练网络去恢复这些缺失的信息
应用:
- 基于彩色化的SSL方法:将图像转化为灰度图像,然后训练网络预测原始的RGB
Learning Representations for Automatic Colorization
- 屏蔽(也称为删除)图像的一部分,然后训练网络来修复丢失的像素值
Context Encoders: Feature Learning by Inpainting
之后演变为自编码方法,如:Masked Autoencoders Are Scalable Vision Learners
在视频中使用时间关系
- 使用三元组损失来预训练模型,提高两个不同帧中对象表示的相似度
- 预测单帧中物体运动,调整所得特征解决单帧检测问题
- 预测给定多帧相机的自我运动
- 从视频中删除音轨,预测缺失声音
学习空间上下文
- 通过应用随机旋转来掩盖重力方向,然后要求模型预测旋转
Unsupervised Representation Learning by Predicting Image Rotations
- 将图像分解为一系列不相交的块并预测每个块的相对位置。
- 学习计数:模型经过训练以自我监督的方式输出图像中的对象数量。
分组相似图像
- K均值聚类
- 深度聚类方法
生成模型
- 贪心逐层预训练,使用自动编码器损失一次训练深度网络的各层
- 生成对抗网络GAN
多视图不变性
- 对比学习
- 使用训练较弱的网络将伪标签应用于图像,然后以标准监督方式使用这些标签进行训练
- 虚拟对抗训练:使用伪标签在图像上训练网络,并另外执行对抗训练,以便学习到的特征对于输入图像的小扰动几乎不变
2.2 深度度量学习家族
深度度量学习方法(Deep Metric Learning,简称DML)是基于鼓励输入的语义转换版本之间相似性的原则。
DML起源于对比损失。
对比损失(Contrastive Loss)是对比学习中常用的一种损失函数,它通过比较正样本对和负样本对之间的相似性,引导模型学习有意义的特征表示
设输入样本为 x i x_{i} xi 和 x j x_{j} xj,它们分别属于同一类别的正样本对,或者来自不同类别的负样本对。对于这两个样本,模型输出的特征表示分别为 f ( x i ) f(x_{i}) f(xi) 和 f ( x j ) f(x_{j}) f(xj),通常通过一个神经网络得到。对比损失的基本形式是欧氏距离(Euclidean Distance)的平方,如下:
L i j = 1 2 ⋅ y i j ⋅ ∥ f ( x i ) − f ( x j ) ∥ 2 2 + 1 2 ⋅ ( 1 − y i j ) ⋅ max ( 0 , m − ∥ f ( x i ) − f ( x j ) ∥ 2 ) 2 L_{ij} = \frac{1}{2} \cdot y_{ij} \cdot \| f(x_i) - f(x_j) \|_2^2 + \frac{1}{2} \cdot (1 - y_{ij}) \cdot \max(0, m - \| f(x_i) - f(x_j) \|_2)^2 Lij=21⋅yij⋅∥f(xi)−f(xj)∥22+21⋅(1−yij)⋅max(0,m−∥f(xi)−f(xj)∥2)2
其中:
- y i j y_{ij} yij 是指示函数,当样本 x i x_{i} xi 和 x j x_{j} xj 属于同一类别时为1,不同类别时为0。
- m m m 是一个控制负样本对间隔的超参数,通常称为margin。
- 欧氏距离用于度量样本对在特征空间中的距离。
- L i j L_{ij} Lij 表示样本对 x i x_{i} xi 和 x j x_{j} xj 的对比损失。
对比损失的含义是,在正样本对 x i x_{i} xi 和 x j x_{j} xj 属于同一类别时,通过最小化它们的特征表示间的距离来促使相似性增加;而在负样本对时,通过最小化它们的距离与margin之差的平方来促使相似性减小。
三元组损失类似于对比损失,由三元组组成:查询点(锚点),正例和反例。
当引入 ( N + 1 ) (N + 1) (N+1) 元组损失时,才发生了DML到SSL的转变。
InfoNCE损失是SSL的核心。
SimCLR
过程:
- 一张图像经过随机增强,获得两张图像
- 增强后的图像送到网络 f ( ⋅ ) f(\cdot) f(⋅) 里,产生两个特征向量 h h h
- h h h 经过MLP(投影操作 g ( ⋅ ) g(\cdot) g(⋅) )产生 z
- z 用于计算对比损失
- 我们想要的Representation是 h h h ,最终的特征提取器是 f ( ⋅ ) f(\cdot) f(⋅)
思想:通过鼓励图像的两个增强视图(数据增强包括随机调整大小、裁剪、颜色抖动和随机模糊)之间的相似性来学习视觉表示。
作用:对每个视图进行编码后,SimCLR 使用projector(通常是 MLP,后跟 ReLU激活)将初始嵌入映射到另一个空间,在该空间中应用对比损失以鼓励视图之间的相似性。对于下游任务,在projector之前提取表示已被证明可以提高性能。
2.3 自蒸馏家族
BYOL和SimSiam依赖于机制:将两个不同的视图提供给两个编码器,并通过预测器将一个编码器映射到另一个编码器。
BYOL
首先引入了自蒸馏作为避免崩溃的一种方法,可以在无需负样本对的情况下取得SOTA。
BYOL 使用两个网络和一个预测器将一个网络的输出映射到另一个网络。
预测输出的网络称为在线网络或学生网络,而产生目标的网络称为目标网络或教师网络。
每个网络接收由图像变换形成的不同视图,包括随机调整大小、裁剪、颜色抖动和亮度改变。
学生网络在整个训练过程中使用梯度下降进行更新。教师网络通过在线网络权重的指数移动平均 (EMA) 更新进行更新。指数移动平均线引起的缓慢更新造成了不对称性,这对于 BYOL 的成功至关重要。(具体来说,由于在线网络和目标网络的参数不同,因此它们会产生不同的特征分布。通过使用EMA,可以使得目标网络的特征分布更加平滑,从而减少了特征分布之间的差异,提高了模型的性能。)
BYOL无需负样本,它并不关心不同样本是否具有不同的表征,仅仅使相似的样本表征类似。BYOL在迭代过程中引导网络输出作为目标,所以训练过程中不需要负样本对。
SimSiam
SimSiam 表明,EMA 在实践中并不是必需的,即使它会带来性能的小幅提升。
DINO
使用running mean(以避免对小批量大小敏感)对学生网络的输出进行聚类,得到一些中心点,并通过 softmax 离散化(平滑)表示,其中 τ 通常取为 0.1 左右
iBOT
以DINO 为基础,并将其目标与直接应用于潜空间的掩模图像建模目标相结合。这里,目标重建不是图像像素,而是通过教师网络的相同 patch embedding。
DINOv2
进一步建立在 iBOT 的基础上,通过改进训练方案、架构以及引入 KoLeo 等额外的正则化器,显着提高了其在线性和 k-NN 评估中的性能
2.4 典型相关分析家族
VICReg
2.5 掩码图像建模
3
4
5
一系列不相交的块并预测每个块的相对位置。
- 学习计数:模型经过训练以自我监督的方式输出图像中的对象数量。