📚 半监督学习(Semi-Supervised Learning)笔记
半监督学习 = 利用“少量有标签数据 + 大量无标签数据”提升模型性能。现实数据中,标注成本高,无标签数据易得 → 半监督学习是“性价比之王”。
🎯 一、为什么需要半监督学习?
| 问题 | 说明 |
|---|---|
| 标注成本高 | 医学图像、语音、专业文本需专家标注,费时费力 |
| 无标签数据多 | 互联网文本、图像、日志数据海量,但无标签 |
| 监督学习瓶颈 | 仅用少量标签数据 → 模型欠拟合、泛化差 |
| 无监督学习局限 | 聚类/降维不利用标签 → 无法直接用于预测任务 |
📌 核心假设:
- 聚类假设(Cluster Assumption):同一簇样本很可能同属一个类
- 流形假设(Manifold Assumption):数据分布在低维流形上,相近样本应有相似标签
- 低密度分隔假设(Low-Density Separation):决策边界应穿过低密度区域
🧩 二、三大主流方法
| 方法类型 | 代表算法 | 核心思想 |
|---|---|---|
| 生成式方法 | 高斯混合模型(GMM) | 假设数据由生成模型产生,用EM算法利用无标签数据 |
| 半监督SVM | TSVM(Transductive SVM) | 寻找能穿过低密度区域的最大间隔超平面 |
| 图半监督学习 | Label Propagation, Label Spreading | 构建样本相似图,标签在图上“传播” |
🌟 三、生成式方法(Generative Methods)
假设数据由概率模型生成(如高斯混合模型),用 EM 算法同时拟合有标签和无标签数据。
✅ 1. 高斯混合模型(GMM) + EM 算法
设数据由 $K$ 个高斯分布混合生成:
- $\alpha_k$:第 $k$ 个高斯的混合系数
- $\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k$:均值和协方差
📌 半监督学习目标:利用有标签数据“锚定”部分高斯分量,再用无标签数据优化整体分布。
✅ 2. EM 算法步骤(半监督版)
| 步骤编号 | 步骤描述 |
|---|---|
| 1 | 输入:有标签数据$L = \{(\mathbf{x}_i, y_i)\}$,无标签数据 $U = \{\mathbf{x}_j\}$ |
| 2 | 初始化:用$L$ 初始化部分高斯参数(如已知类别对应高斯) |
| 3 | E 步(Expectation):对无标签样本 $\mathbf{x}_j$,计算其属于每个高斯分量的后验概率: |
|
| 4 | M 步(Maximization):用所有数据(含伪标签)更新参数:
- $\alpha_k = \frac{1}{ |
| 5 | 重复 E 步和 M 步直到收敛 |
| 6 | 预测:对新样本$\mathbf{x}$,计算 $P(y=k \mid \mathbf{x}) \propto \alpha_k \mathcal{N}(\mathbf{x} \mid \boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k)$,取最大概率类别 |
📌 优点:理论清晰,概率输出
📌 缺点:假设数据服从高斯分布,现实中常不成立
⚡ 四、半监督 SVM —— TSVM(Transductive SVM)
寻找一个超平面,不仅在有标签数据上间隔最大,还要穿过无标签数据的低密度区域。
✅ 1. 核心思想
- 传统 SVM:最大化有标签数据的间隔
- TSVM:同时优化有标签数据间隔 + 无标签数据“低密度分隔”
📌 优化目标:
s.t.
- $y_i (\mathbf{w}^T \mathbf{x}_i + b) \geq 1 - \xi_i, \quad \xi_i \geq 0, \quad i \in L$
- $\hat{y}_j (\mathbf{w}^T \mathbf{x}_j + b) \geq 1 - \hat{\xi}_j, \quad \hat{\xi}_j \geq 0, \quad j \in U$
- $\hat{y}_j \in \{-1, +1\}, \quad j \in U$(无标签样本的“伪标签”)
→ NP 难问题(因 $\hat{y}_j$ 是离散变量)
✅ 2. TSVM 近似求解步骤(常用启发式)
| 步骤编号 | 步骤描述 |
|---|---|
| 1 | 用有标签数据$L$ 训练一个初始 SVM,得到 $\mathbf{w}_0, b_0$ |
| 2 | 对无标签样本$U$,用初始模型预测伪标签 $\hat{y}_j = \text{sign}(\mathbf{w}_0^T \mathbf{x}_j + b_0)$ |
| 3 | 将$U$ 加入训练集,赋予较低惩罚 $C_u < C_l$,重新训练 SVM |
| 4 | 选两个伪标签“最不可靠”的样本(如 $ |
| 5 | 如果翻转后目标函数下降,则接受翻转 |
| 6 | 重复步骤 3~5 直到收敛或达到最大迭代 |
📌 优点:保持 SVM 的最大间隔特性
📌 缺点:计算复杂,易陷入局部最优
🌳 五、图半监督学习(Graph-Based Methods)
构建样本相似图,标签从有标签节点“传播”到无标签节点。
✅ 1. 核心思想
- 将所有样本(有标签 + 无标签)作为图的节点
- 边权重 $W_{ij}$ 表示样本 $\mathbf{x}_i$ 和 $\mathbf{x}_j$ 的相似度(如高斯核)
- 假设:相连节点应有相似标签
📌 目标函数(标签平滑):
- $\mathbf{f}$:所有节点的标签向量(有标签节点固定,无标签节点优化)
- $\mathbf{L} = \mathbf{D} - \mathbf{W}$:图拉普拉斯矩阵
- $\mathbf{D}$:度矩阵(对角矩阵,$D_{ii} = \sum_j W_{ij}$)
✅ 2. Label Propagation 算法步骤
| 步骤编号 | 步骤描述 | ||
|---|---|---|---|
| 1 | 输入:有标签数据$L$,无标签数据 $U$,相似度矩阵 $\mathbf{W}$ | ||
| 2 | 构建全图:节点 =$L \cup U$,边权重 $W_{ij} = \exp(-\gamma \ | \mathbf{x}_i - \mathbf{x}_j\ | ^2)$ |
| 3 | 初始化标签矩阵$\mathbf{Y}$: - 有标签节点:$Y_{ik} = 1$ if $y_i = k$,否则 0 - 无标签节点:$Y_{ik} = 0$ |
||
| 4 | 构造转移矩阵$\mathbf{S} = \mathbf{D}^{-1} \mathbf{W}$(行归一化) | ||
| 5 | 重复以下步骤直到收敛: - $\mathbf{Y}^{(t+1)} = \mathbf{S} \mathbf{Y}^{(t)}$ - 重置有标签节点:将 $\mathbf{Y}^{(t+1)}$ 中有标签行替换为真实标签(硬约束) |
||
| 6 | 输出:无标签节点的预测标签 =$\arg\max_k Y_{jk}$ |
📌 Label Spreading:软约束版本,不强制重置标签,而是加入正则项:
→ 有闭式解:$\mathbf{F} = (\mathbf{I} - \alpha \mathbf{S})^{-1} \mathbf{Y}$
📌 优点:直观、适合流形结构数据
📌 缺点:计算复杂度高($O(n^3)$),不适合大数据
📊 六、方法对比与选型指南
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| 生成式方法 | 数据近似高斯分布 | 概率输出,理论清晰 | 假设强,现实中常不成立 |
| TSVM | 二分类、小规模数据 | 保持最大间隔,精度高 | 计算复杂,难扩展到多分类 |
| 图半监督 | 数据有局部结构(如图像、文本) | 直观,适合流形假设 | 计算慢,存储$O(n^2)$ 相似矩阵 |
📌 工业界常用:深度学习 + 自训练(Self-Training)、一致性正则(Consistency Regularization)
✅ 七、一句话总结
半监督学习 = “用大量无标签数据,教会模型认识世界;用少量标签数据,告诉模型任务目标” —— 小标签,大作为!
📌 八、复习重点公式
| 概念 | 公式 |
|---|---|
| GMM 概率密度 |
|
| 图半监督目标 |
|
| Label Spreading |
|
| TSVM 目标(简化) |
|