1. 半监督学习的基本概念
1.1 什么是半监督学习?
半监督学习(Semi-Supervised Learning, SSL)是一种机器学习方法,结合了少量标注数据(labeled data)和大量未标注数据(unlabeled data)来训练模型。它介于监督学习(所有数据都有标签)和无监督学习(所有数据无标签)之间,旨在通过未标注数据的潜在结构信息提升模型的泛化能力。
- 监督学习:数据集 D = { ( x i , y i ) } i = 1 n D = \{(x_i, y_i)\}_{i=1}^n D={(xi,yi)}i=1n,每个样本 x i x_i xi 都有标签 y i y_i yi。
- 无监督学习:数据集 D = { x i } i = 1 n D = \{x_i\}_{i=1}^n D={ xi}i=1n,没有标签,通常用于聚类或降维。
- 半监督学习:数据集 D = D l ∪ D u D = D_l \cup D_u D=Dl∪Du,其中:
- 标注数据集 D l = { ( x i , y i ) } i = 1 l D_l = \{(x_i, y_i)\}_{i=1}^l Dl={(xi,yi)}i=1l,数量少( l l l 小)。
- 未标注数据集 D u = { x j } j = l + 1 l + u D_u = \{x_j\}_{j=l+1}^{l+u} Du={ xj}j=l+1l+u,数量多( u ≫ l u \gg l u≫l)。
目标:学习一个模型 f : X → Y f: X \to Y f:X→Y,利用 D l D_l Dl 和 D u D_u Du 最小化测试误差。
1.2 为什么需要半监督学习?
- 标注成本高:标注数据需要大量人力、时间和专业知识。例如,医学影像标注需要医生,文本情感分析需要语言专家。
- 未标注数据丰富:未标注数据易于获取,如网络图片、用户日志、传感器数据。
- 性能提升:半监督学习能在标注数据稀缺时显著提高模型性能,接近甚至超越全监督学习。
1.3 半监督学习的基本假设
半监督学习的有效性依赖于以下假设:
- 平滑性假设:如果 x 1 , x 2 x_1, x_2 x1,x2 在特征空间中接近( ∣ ∣ x 1 − x 2 ∣ ∣ ||x_1 - x_2|| ∣∣x1−x2∣∣ 小),则标签 y 1 ≈ y 2 y_1 \approx y_2 y1≈y2。
- 簇假设:数据点形成簇,同一簇内的点通常属于同一类别。
- 流形假设:高维数据位于低维流形上,未标注数据帮助学习流形结构。
- 低密度分离假设:决策边界应通过低密度区域,避免穿过高密度区域。
这些假设确保未标注数据能提供有用的信息。
2. 半监督学习的数学框架
半监督学习的数学框架通过联合优化监督损失和无监督损失,利用标注数据和未标注数据的特性来训练模型。以下是详细的数学形式化描述和推导。
2.1 数据定义
- 标注数据: D l = { ( x i , y i ) } i = 1 l D_l = \{(x_i, y_i)\}_{i=1}^l Dl={(xi,yi)}i=1l,其中 x i ∈ R d x_i \in \mathbb{R}^d xi∈Rd 是特征向量, y i ∈ Y y_i \in Y yi∈Y 是标签(分类任务中 Y = { 1 , 2 , … , C } Y = \{1, 2, \dots, C\} Y={ 1,2,…,C},回归任务中 Y ⊆ R Y \subseteq \mathbb{R} Y⊆R)。
- 未标注数据: D u = { x j } j = l + 1 l + u D_u = \{x_j\}_{j=l+1}^{l+u} Du={ xj}j=l+1l+u,其中 x j ∈ R d x_j \in \mathbb{R}^d xj∈Rd。
- 总数据集: D = D l ∪ D u D = D_l \cup D_u D=Dl∪Du,通常 u ≫ l u \gg l u≫l。
- 测试数据: D test = { ( x k , y k ) } k = 1 m D_{\text{test}} = \{(x_k, y_k)\}_{k=1}^m Dtest={(xk,yk)}k=1m,用于评估模型。
2.2 目标
学习一个映射 f : X → Y f: X \to Y f:X→Y,参数化为 f θ f_\theta fθ,通过优化以下目标函数最小化泛化误差:
min θ E ( x , y ) ∼ p ( x , y ) [ ℓ ( f θ ( x ) , y ) ] \min_\theta \mathbb{E}_{(x, y) \sim p(x, y)} [ \ell(f_\theta(x), y) ] minθE(x,y)∼p(x,y)[ℓ(fθ(x),y)]
其中, ℓ \ell ℓ 是损失函数(如交叉熵或均方误差), p ( x , y ) p(x, y) p(x,y) 是真实数据分布。由于 p ( x , y ) p(x, y) p(x,y) 未知,半监督学习通过 D l D_l Dl 和 D u D_u Du 近似优化。
2.3 损失函数
半监督学习的损失函数通常由两部分组成:
L ( θ ) = L l ( θ ) + λ L u ( θ ) L(\theta) = L_l(\theta) + \lambda L_u(\theta) L(θ)=Ll(θ)+λLu(θ)
- 监督损失 L l L_l Ll:基于标注数据的损失,衡量模型在 D l D_l Dl 上的预测误差。
- 无监督损失 L u L_u Lu:基于未标注数据的损失,捕捉数据分布或结构信息。
- 超参数 λ \lambda λ:平衡监督和无监督损失的权重。
2.3.1 监督损失
对于分类任务,监督损失通常是交叉熵损失:
L l ( θ ) = 1 l ∑ i = 1 l CE ( f θ ( x i ) , y i ) L_l(\theta) = \frac{1}{l} \sum_{i=1}^l \text{CE}(f_\theta(x_i), y_i) Ll(θ)=l1∑i=1lCE(fθ(xi),yi)
其中,交叉熵定义为:
CE ( f θ ( x i ) , y i ) = − ∑ c = 1 C 1 ( y i = c ) log p θ ( y i = c ∣ x i ) \text{CE}(f_\theta(x_i), y_i) = - \sum_{c=1}^C \mathbb{1}(y_i = c) \log p_\theta(y_i = c | x_i) CE(fθ(xi),yi)=−∑c=1C1(yi=c)logpθ(yi=c∣xi)
其中, p θ ( y i = c ∣ x i ) = f θ ( x i ) c p_\theta(y_i = c | x_i) = f_\theta(x_i)_c pθ(yi=c∣xi<