【机器学习基础】第五十七课:[半监督学习]生成式方法

生成式方法

Posted by x-jeff on February 17, 2025

【机器学习基础】系列博客为参考周志华老师的《机器学习》一书,自己所做的读书笔记。
本文为原创文章,未经本人允许,禁止转载。转载请注明出处。

1.生成式方法

本章节没太理解,在此仅作记录,相关公式的详细推导可参考南瓜书PumpkinBook

生成式方法(generative methods)是直接基于生成式模型的方法。此类方法假设所有数据(无论是否有标记)都是由同一个潜在的模型“生成”的。这个假设使得我们能通过潜在模型的参数将未标记数据与学习目标联系起来,而未标记数据的标记则可看作模型的缺失参数,通常可基于EM算法进行极大似然估计求解。此类方法的区别主要在于生成式模型的假设,不同的模型假设将产生不同的方法。

给定样本$\mathbf{x}$,其真实类别标记为$y \in \mathcal{Y}$,其中$\mathcal{Y} = \{ 1,2,…,N \}$为所有可能的类别。假设样本由高斯混合模型生成,且每个类别对应一个高斯混合成分。换言之,数据样本是基于如下概率密度生成:

这个假设意味着混合成分与类别之间一一对应。

\[p(\mathbf{x}) = \sum_{i=1}^N \alpha_i \cdot p (\mathbf{x} \mid \mu_i,\Sigma_i) \tag{1}\]

其中,混合系数$\alpha_i \geqslant 0, \sum_{i=1}^N \alpha_i = 1$;$p (\mathbf{x} \mid \mu_i,\Sigma_i)$是样本$\mathbf{x}$属于第$i$个高斯混合成分的概率;$\mu_i$和$\Sigma_i$为该高斯混合成分的参数。

令$f(\mathbf{x}) \in \mathcal{Y}$表示模型$f$对$\mathbf{x}$的预测标记,$\Theta \in \{ 1,2,…,N \}$表示样本$\mathbf{x}$隶属的高斯混合成分。由最大化后验概率可知:

\[\begin{align} f(\mathbf{x}) &= \arg\max_{j \in \mathcal{Y}} p(y=j \mid \mathbf{x}) \\&= \arg\max_{j \in \mathcal{Y}} \sum_{i=1}^N p(y=j, \Theta = i \mid \mathbf{x}) \\&= \arg\max_{j \in \mathcal{Y}} \sum_{i=1}^N p (y = j \mid \Theta = i, \mathbf{x}) \cdot p (\Theta = i \mid \mathbf{x}) \end{align} \tag{2}\]

其中

\[p(\Theta =i \mid \mathbf{x}) = \frac{\alpha_i \cdot p(\mathbf{x} \mid \mu_i,\Sigma_i)}{\sum_{i=1}^N \alpha_i \cdot p(\mathbf{x} \mid \mu_i, \Sigma_i)} \tag{3}\]

为样本$\mathbf{x}$由第$i$个高斯混合成分生成的后验概率,$p(y=j\mid \Theta = i,\mathbf{x})$为$\mathbf{x}$由第$i$个高斯混合成分生成且其类别为$j$的概率。由于假设每个类别对应一个高斯混合成分,因此$p(y=j\mid \Theta = i,\mathbf{x})$仅与样本$\mathbf{x}$所属的高斯混合成分$\Theta$有关,可用$p(y=j\mid \Theta = i)$代替。不失一般性,假定第$i$个类别对应于第$i$个高斯混合成分,即$p(y=j\mid \Theta = i)=1$当且仅当$i=j$,否则$p(y=j\mid \Theta = i)=0$。

不难发现,式(2)中估计$p(y=j\mid \Theta = i,\mathbf{x})$需知道样本的标记,因此仅能使用有标记数据;而$p(\Theta = i \mid \mathbf{x})$不涉及样本标记,因此有标记和未标记数据均可利用,通过引入大量的未标记数据,对这一项的估计可望由于数据量的增长而更为准确,于是式(2)整体的估计可能会更准确。由此可清楚地看出未标记数据何以能辅助提高分类模型的性能。

给定有标记样本集$D_l = \{ (\mathbf{x}_1,y_1),(\mathbf{x}_2,y_2),…,(\mathbf{x}_l,y_l) \}$和未标记样本集$D_u = \{ \mathbf{x}_{l+1},\mathbf{x}_{l+2},…,\mathbf{x}_{l+u} \},l \ll u, l+u=m$。假设所有样本独立同分布,且都是由同一个高斯混合模型生成的。用极大似然法来估计高斯混合模型的参数$\{ (\alpha_i,\mu_i,\Sigma_i) \mid 1 \leqslant i \leqslant N \}, D_l \cup D_u$的对数似然是:

半监督学习中通常假设未标记样本数远大于有标记样本数,虽然此假设实际并非必须。

\[\begin{align} LL(D_l \cup D_u) &= \sum_{(\mathbf{x}_j,y_j) \in D_l} \ln \left( \sum_{i=1}^N \alpha_i \cdot p(\mathbf{x}_j \mid \mu_i, \Sigma_i) \cdot p(y_i \mid \Theta = i,\mathbf{x}_j) \right) \\&+ \sum_{\mathbf{x}_j \in D_u} \ln \left( \sum_{i=1}^N \alpha_i \cdot p(\mathbf{x}_j \mid \mu_i,\Sigma_i) \right) \end{align} \tag{4}\]

式(4)由两项组成:基于有标记数据$D_l$的有监督项和基于未标记数据$D_u$的无监督项。显然,高斯混合模型参数估计可用EM算法求解,迭代更新式如下:

  • E步:根据当前模型参数计算未标记样本$\mathbf{x}_j$属于各高斯混合成分的概率。可通过有标记数据对模型参数进行初始化。

    \[\gamma_{ji} = \frac{\alpha_i \cdot p(\mathbf{x}_j \mid \mu_i, \Sigma_i)}{\sum_{i=1}^N \alpha_i \cdot p(\mathbf{x}_j \mid \mu_i , \Sigma_i)} \tag{5}\]
  • M步:基于$\gamma_{ji}$更新模型参数,其中$l_i$表示第$i$类的有标记样本数目。

    \[\mu_i = \frac{1}{\sum_{\mathbf{x}_j \in D_u} \gamma_{ji}+l_i} \left( \sum_{\mathbf{x}_j \in D_u} \gamma_{ji} \mathbf{x}_j + \sum_{(\mathbf{x}_j,y_j)\in D_l \land y_j = i } \mathbf{x}_j \right) \tag{6}\] \[\Sigma_{i} = \frac{1}{\sum_{\mathbf{x}_j \in D_u} \gamma_{ji}+l_i} \left( \sum_{\mathbf{x}_j\in D_u} \gamma_{ji}(\mathbf{x}_j - \mu_i)(\mathbf{x}_j - \mu_i)^T + \sum_{(\mathbf{x}_j,y_j)\in D_l \land y_j = i } (\mathbf{x}_j - \mu_i)(\mathbf{x}_j - \mu_i)^T \right) \tag{7}\] \[\alpha_i =\frac{1}{m} \left( \sum_{\mathbf{x}_j \in D_u} \gamma_{ji} + l_i \right) \tag{8}\]

以上过程不断迭代直至收敛,即可获得模型参数。然后由式(3)和式(2)就能对样本进行分类。

将上述过程中的高斯混合模型换成混合专家模型、朴素贝叶斯模型等即可推导出其他的生成式半监督学习方法。此类方法简单、易于实现,在有标记数据极少的情形下往往比其他方法性能更好。然而,此类方法有一个关键:模型假设必须准确,即假设的生成式模型必须与真实数据分布吻合;否则利用未标记数据反倒会降低泛化性能。遗憾的是,在现实任务中往往很难事先做出准确的模型假设,除非拥有充分可靠的领域知识。