[模式识别-从入门到入土] 拓展-生成式模型
知乎:https://www.zhihu.com/people/byzh_rc
CSDN:https://blog.csdn.net/qq_54636039
注:本文仅对所述内容做了框架性引导,具体细节可查询其余相关资料or源码
参考文章:各方资料
文章目录
- [[模式识别-从入门到入土] 拓展-生成式模型](#[模式识别-从入门到入土] 拓展-生成式模型)
- 生成式模型
- 典例
-
-
- [步骤 1:计算 p ( Θ = i ∣ x ) p(\Theta=i|x) p(Θ=i∣x)(无标签样本)](#步骤 1:计算 p ( Θ = i ∣ x ) p(\Theta=i|x) p(Θ=i∣x)(无标签样本))
- [步骤 2:计算 p ( y = j ∣ Θ = i , x ) p(y=j|\Theta=i,x) p(y=j∣Θ=i,x)(有标签样本)](#步骤 2:计算 p ( y = j ∣ Θ = i , x ) p(y=j|\Theta=i,x) p(y=j∣Θ=i,x)(有标签样本))
- [步骤 3:代入公式计算 p ( y = j ∣ x ) p(y=j|x) p(y=j∣x),取最大值](#步骤 3:代入公式计算 p ( y = j ∣ x ) p(y=j|x) p(y=j∣x),取最大值)
- 总结
-
生成式模型
类别标记:样本 x 的类别 y ∈ Y = { 1 , 2 , ... , N } y \in Y=\{1,2,\dots,N\} y∈Y={1,2,...,N}
生成机制:样本由 高斯混合模型(GMM) 生成,每个类别对应一个高斯成分,样本的边缘概率为
p ( x ) = ∑ i = 1 N α i ⋅ p ( x ∣ μ i , Σ i ) p(x)=\sum_{i=1}^N \alpha_i \cdot p(x|\mu_i,\Sigma_i) p(x)=i=1∑Nαi⋅p(x∣μi,Σi)
其中:
- α i ≥ 0 , ∑ i = 1 N α i = 1 \alpha_i \ge 0,\ \sum_{i=1}^N \alpha_i=1 αi≥0, ∑i=1Nαi=1 (混合系数,满足归一化条件)
- p ( x ∣ μ i , Σ i ) p(x|\mu_i,\Sigma_i) p(x∣μi,Σi) :第 i 个高斯成分的概率密度函数
- μ i , Σ i \mu_i,\Sigma_i μi,Σi :第 i 个高斯成分的均值和协方差矩阵
预测规则
设 f ( x ) f(x) f(x) 为模型预测类别, Θ = i \Theta=i Θ=i 表示样本属于第 i 个高斯成分,则
f ( x ) = arg max j ∈ Y p ( y = j ∣ x ) = arg max j ∈ Y ∑ i = 1 N p ( y = j , Θ = i ∣ x ) = arg max j ∈ Y ∑ i = 1 N p ( y = j ∣ Θ = i , x ) p ( Θ = i ∣ x ) \begin{aligned} f(x) &=\arg\max_{j\in Y}p(y=j|x) \\ &=\arg\max_{j\in Y}\sum_{i=1}^N p(y=j,\Theta=i|x) \\ &=\arg\max_{j\in Y}\sum_{i=1}^N p(y=j|\Theta=i,x)\,p(\Theta=i|x) \end{aligned} f(x)=argj∈Ymaxp(y=j∣x)=argj∈Ymaxi=1∑Np(y=j,Θ=i∣x)=argj∈Ymaxi=1∑Np(y=j∣Θ=i,x)p(Θ=i∣x)
| 概率项 | 标签 | 含义 |
|---|---|---|
| $p(y=j | \Theta=i,x)$ | 需要 |
| $p(\Theta=i | x)$ | 不需要 |
优势 :可以同时利用有标签样本 D l D_l Dl 和无标签样本 D u D_u Du 完成分类
参数估计(EM 算法)
针对有标签样本集 D l D_l Dl 和无标签样本集 D u D_u Du,联合对数似然为:
L ( D l ∪ D u ) = ∑ ( x j , y j ) ∈ D l ln ( ∑ i = 1 N α i p ( x j ∣ μ i , Σ i ) p ( y j ∣ Θ = i , x j ) ) + ∑ x j ∈ D u ln ( ∑ i = 1 N α i p ( x j ∣ μ i , Σ i ) ) \begin{aligned} L(D_l\cup D_u) &=\sum_{(x_j,y_j)\in D_l}\ln\left(\sum_{i=1}^N \alpha_i p(x_j|\mu_i,\Sigma_i)p(y_j|\Theta=i,x_j)\right)\\ &+\sum_{x_j\in D_u}\ln\left(\sum_{i=1}^N \alpha_i p(x_j|\mu_i,\Sigma_i)\right) \end{aligned} L(Dl∪Du)=(xj,yj)∈Dl∑ln(i=1∑Nαip(xj∣μi,Σi)p(yj∣Θ=i,xj))+xj∈Du∑ln(i=1∑Nαip(xj∣μi,Σi))
l i l_i li :第 i 类有标签样本的数量
m = l + u m = l+u m=l+u :总样本数(l 为有标签样本数,u 为无标签样本数)
-
E 步 :计算后验概率(责任度)
Υ j i = α i p ( x j ∣ μ i , Σ i ) ∑ i = 1 N α i p ( x j ∣ μ i , Σ i ) \Upsilon_{ji}=\frac{\alpha_i p(x_j|\mu_i,\Sigma_i)}{\sum_{i=1}^N \alpha_i p(x_j|\mu_i,\Sigma_i)} Υji=∑i=1Nαip(xj∣μi,Σi)αip(xj∣μi,Σi)Υ j i \Upsilon_{ji} Υji 表示第 j j j 个样本属于第 i i i 个高斯成分的责任度
-
M 步 :更新模型参数
α i = 1 m ( ∑ x j ∈ D u Υ j i + l i ) μ i = ∑ x j ∈ D u Υ j i x j + ∑ ( x j , y j ) ∈ D l , y j = i x j ∑ x j ∈ D u Υ j i + l i Σ i = ∑ x j ∈ D u Υ j i ( x j − μ i ) ( x j − μ i ) T + ∑ ( x j , y j ) ∈ D l , y j = i ( x j − μ i ) ( x j − μ i ) T ∑ x j ∈ D u Υ j i + l i \begin{aligned} \alpha_i &=\frac{1}{m}\left(\sum_{x_j\in D_u}\Upsilon_{ji}+l_i\right)\\ \mu_i &=\frac{\sum_{x_j\in D_u}\Upsilon_{ji}x_j+\sum_{(x_j,y_j)\in D_l,y_j=i}x_j}{\sum_{x_j\in D_u}\Upsilon_{ji}+l_i}\\ \Sigma_i &=\frac{\sum_{x_j\in D_u}\Upsilon_{ji}(x_j-\mu_i)(x_j-\mu_i)^T+\sum_{(x_j,y_j)\in D_l,y_j=i}(x_j-\mu_i)(x_j-\mu_i)^T}{\sum_{x_j\in D_u}\Upsilon_{ji}+l_i} \end{aligned} αiμiΣi=m1 xj∈Du∑Υji+li =∑xj∈DuΥji+li∑xj∈DuΥjixj+∑(xj,yj)∈Dl,yj=ixj=∑xj∈DuΥji+li∑xj∈DuΥji(xj−μi)(xj−μi)T+∑(xj,yj)∈Dl,yj=i(xj−μi)(xj−μi)T
局限性
若假设的高斯混合模型与数据真实分布不符,引入无标签数据可能反而降低分类性能
典例
假设我们要对花朵的高度 x 进行分类,判断是玫瑰( y = 0 y=0 y=0)还是月季( y = 1 y=1 y=1),且数据由 2 个高斯成分混合而成:
- 高斯成分 1( Θ = 1 \Theta=1 Θ=1):代表 "矮株花" 的特征分布
- 高斯成分 2( Θ = 2 \Theta=2 Θ=2):代表 "高株花" 的特征分布
有标签样本:少量已知是玫瑰 / 月季的花,能计算 p ( y = j ∣ Θ = i , x ) p(y=j|\Theta=i,x) p(y=j∣Θ=i,x)
无标签样本:大量未知类别的花,只能计算 p ( Θ = i ∣ x ) p(\Theta=i|x) p(Θ=i∣x)
步骤 1:计算 p ( Θ = i ∣ x ) p(\Theta=i|x) p(Θ=i∣x)(无标签样本)
p ( Θ = i ∣ x ) p(\Theta=i|x) p(Θ=i∣x) 表示样本 x 属于第 i 个高斯成分的概率
-> 通过无监督的高斯混合模型(GMM) 训练得到,不需要标签
假设对一朵高度 x = 15 cm x=15\ \text{cm} x=15 cm 的花,通过 GMM 得到:
{ p ( Θ = 1 ∣ x = 15 ) = 0.8 ( 大概率属于矮株成分 ) p ( Θ = 2 ∣ x = 15 ) = 0.2 ( 小概率属于高株成分 ) \begin{cases} p(\Theta=1|x=15) = 0.8 \quad (\text{大概率属于矮株成分}) \\ p(\Theta=2|x=15) = 0.2 \quad (\text{小概率属于高株成分}) \end{cases} {p(Θ=1∣x=15)=0.8(大概率属于矮株成分)p(Θ=2∣x=15)=0.2(小概率属于高株成分)
步骤 2:计算 p ( y = j ∣ Θ = i , x ) p(y=j|\Theta=i,x) p(y=j∣Θ=i,x)(有标签样本)
p ( y = j ∣ Θ = i , x ) p(y=j|\Theta=i,x) p(y=j∣Θ=i,x) 表示在 "样本 x 属于成分 i" 的前提下,它属于类别 j 的概率
-> 通过有标签样本统计或训练得到
假设通过少量有标签样本,我们得到:
| 高斯成分 i | p ( y = 0 ∣ Θ = i , x ) p(y=0|\Theta=i,x) p(y=0∣Θ=i,x)(玫瑰概率) | p ( y = 1 ∣ Θ = i , x ) p(y=1|\Theta=i,x) p(y=1∣Θ=i,x)(月季概率) |
| ---------- | ------------------------------- | ------------------------------- |
| Θ = 1 \Theta=1 Θ=1 | 0.9 | 0.1 |
| Θ = 2 \Theta=2 Θ=2 | 0.2 | 0.8 |
解释:
- 矮株成分( Θ = 1 \Theta=1 Θ=1)的花,90% 是玫瑰,10% 是月季
- 高株成分( Θ = 2 \Theta=2 Θ=2)的花,20% 是玫瑰,80% 是月季
步骤 3:代入公式计算 p ( y = j ∣ x ) p(y=j|x) p(y=j∣x),取最大值
根据预测规则:
p ( y = j ∣ x ) = ∑ i = 1 2 p ( y = j ∣ Θ = i , x ) p ( Θ = i ∣ x ) p(y=j|x)=\sum_{i=1}^2 p(y=j|\Theta=i,x)\,p(\Theta=i|x) p(y=j∣x)=i=1∑2p(y=j∣Θ=i,x)p(Θ=i∣x)
我们分别计算 y = 0 y=0 y=0 和 y = 1 y=1 y=1 的概率:
-
计算 p ( y = 0 ∣ x = 15 ) p(y=0|x=15) p(y=0∣x=15)(玫瑰的总概率)
p ( y = 0 ∣ x = 15 ) = p ( y = 0 ∣ Θ = 1 , x ) ⋅ p ( Θ = 1 ∣ x ) + p ( y = 0 ∣ Θ = 2 , x ) ⋅ p ( Θ = 2 ∣ x ) = 0.9 × 0.8 + 0.2 × 0.2 = 0.72 + 0.04 = 0.76 \begin{aligned} p(y=0|x=15) &= p(y=0|\Theta=1,x)\cdot p(\Theta=1|x) + p(y=0|\Theta=2,x)\cdot p(\Theta=2|x) \\ &= 0.9\times0.8 + 0.2\times0.2 \\ &= 0.72 + 0.04 \\ &= 0.76 \end{aligned} p(y=0∣x=15)=p(y=0∣Θ=1,x)⋅p(Θ=1∣x)+p(y=0∣Θ=2,x)⋅p(Θ=2∣x)=0.9×0.8+0.2×0.2=0.72+0.04=0.76
-
计算 p ( y = 1 ∣ x = 15 ) p(y=1|x=15) p(y=1∣x=15)(月季的总概率)
p ( y = 1 ∣ x = 15 ) = p ( y = 1 ∣ Θ = 1 , x ) ⋅ p ( Θ = 1 ∣ x ) + p ( y = 1 ∣ Θ = 2 , x ) ⋅ p ( Θ = 2 ∣ x ) = 0.1 × 0.8 + 0.8 × 0.2 = 0.08 + 0.16 = 0.24 \begin{aligned} p(y=1|x=15) &= p(y=1|\Theta=1,x)\cdot p(\Theta=1|x) + p(y=1|\Theta=2,x)\cdot p(\Theta=2|x) \\ &= 0.1\times0.8 + 0.8\times0.2 \\ &= 0.08 + 0.16 \\ &= 0.24 \end{aligned} p(y=1∣x=15)=p(y=1∣Θ=1,x)⋅p(Θ=1∣x)+p(y=1∣Θ=2,x)⋅p(Θ=2∣x)=0.1×0.8+0.8×0.2=0.08+0.16=0.24
-
取概率最大值对应的类别
f ( x = 15 ) = arg max j ∈ { 0 , 1 } { 0.76 , 0.24 } = 0 f(x=15)=\arg\max_{j\in\{0,1\}} \{0.76,0.24\} = 0 f(x=15)=argmaxj∈{0,1}{0.76,0.24}=0
结论:这朵 15 cm 15\ \text{cm} 15 cm 高的花,预测为玫瑰
总结
无标签样本帮我们确定了 "花属于矮株 / 高株成分的概率"( p ( Θ = i ∣ x ) p(\Theta=i|x) p(Θ=i∣x))
有标签样本帮我们确定了 "某成分的花属于玫瑰 / 月季的概率"( p ( y = j ∣ Θ = i , x ) p(y=j|\Theta=i,x) p(y=j∣Θ=i,x))
两者结合,就能利用大量无标签数据提升分类效果,这也是半监督学习的核心思想
-> 用无标签数据 学习特征空间的概率结构 ,用有标签数据 在该结构上学习类别分布
-> 预测时通过对隐结构的边缘化,实现对类别后验的稳健估计
边缘化: 当某个随机变量不可观测(或不关心其具体取值)时,通过对它的所有可能取值求和 / 积分,把它"消掉",得到只依赖于观测变量的概率
对隐变量 Θ \Theta Θ 进行边缘化:
p ( y ∣ x ) = ∑ Θ p ( y , Θ ∣ x ) p(y \mid x) = \sum_{\Theta} p(y, \Theta \mid x) p(y∣x)=Θ∑p(y,Θ∣x)