笔记:ML-LHY-12:Semi-supervised

这节课主要介绍半监督机器学习方法,首先解释为什么半监督有用,在概率分布的生成式模型中使用半监督算法(EM算法)
以及self-training和他们对比
剩下一半介绍两种正则方法,Entropy-based Regularization和Smoothness Assumption,前者基于信息论稳定理论,后者基于图结构连通(对近似进行RBF)
pdf 视频

介绍

监督学习:
{ ( x r , y ^ r ) } r = 1 R \left\{\left(x^{r}, \hat{y}^{r}\right)\right\}_{r=1}^{R} {(xr,y^r)}r=1R
其中, x r : x^{r}: xr: 输入数据 , y ^ r : , \hat{y}^{r}: ,y^r: 类标,一共有R笔(数据+类标)

半监督学习:
{ ( x r , y ^ r ) } r = 1 R , { x u } u = R R + U \left\{\left(x^{r}, \hat{y}^{r}\right)\right\}_{r=1}^{R},\left\{x^{u}\right\}_{u=R}^{R+U} {(xr,y^r)}r=1R,{xu}u=RR+U
一共有U笔未标签的数据,通常U>>R

Transductive learning:
测试的未标签的数据既是训练数据也是测试数据
Inductive learning:
测试的未标签的数据只作为测试数据

通俗地来说inductive learning是特殊到一般的学习,测试数据只是用来测试这个通用模型的好坏;transductive learning是特殊到特殊的学习,目的就是解决target domain的问题。分类的分法有很多种,如果把半监督学习,即有未标注数据参与训练的学习,分为inductive learning 和 transductive learning的话,如果这个未标注数据同时也是测试数据,则是transductive learning;如果这个未标注数据只是用于帮助训练而不用于测试的话,则是inductive learning。
作者:匿名用户
链接:https://www.zhihu.com/question/68275921/answer/551989257
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

为什么Semi-supervised有用?

假如有猫(蓝)和狗(红)的标签数据了,然后又有未标签的数据(灰),那么未标签的数据分布可以告诉我们一些信息,所以我们可以根据一些假设划分的分界如下:
在这里插入图片描述
但是也有可能划分错了,所以取决于假设
在这里插入图片描述

Semi-supervised Learning for Generative Model

Supervised Generative Model

回顾一下监督学习的生成模型
在这里插入图片描述

监督学习的生成模型一般是按照以下公式:
P ( C 1 ∣ x ) = P ( x ∣ C 1 ) P ( C 1 ) P ( x ∣ C 1 ) P ( C 1 ) + P ( x ∣ C 2 ) P ( C 2 ) P\left(C_{1} \mid x\right)=\frac{P\left(x \mid C_{1}\right) P\left(C_{1}\right)}{P\left(x \mid C_{1}\right) P\left(C_{1}\right)+P\left(x \mid C_{2}\right) P\left(C_{2}\right)} P(C1x)=P(xC1)P(C1)+P(xC2)P(C2)P(xC1)P(C1)
其中 P ( x ∣ C 1 ) P\left(x \mid C_{1}\right) P(xC1) P ( x ∣ C 2 ) P\left(x \mid C_{2}\right) P(xC2)未知。
然后求 C 1 C_1 C1分布,我们假设数据分布符合特定的概率模型,比如高斯分布,然后用极大似然求出均值 μ \mu μ和方差 Σ \Sigma Σ,当共享 Σ \Sigma Σ后,分界线可以变为线性分界,此时可以得到上面分界线。由于是二分类,求出 C 1 C_1 C1分布也就知道 C 2 C_2 C2分布。

Semi-supervised Generative Model

在这里插入图片描述

直觉上,半监督提供的未标签数据将会影响数据分布( P ( C 1 ) , P ( C 2 ) , μ 1 , μ 2 , Σ P\left(C_{1}\right), P\left(C_{2}\right), \mu^{1}, \mu^{2}, \Sigma P(C1),P(C2),μ1,μ2,Σ),从而影响决策边界


计算步骤:
初始化:
根据标签数据或者随机初始化 θ \theta θ
θ = { P ( C 1 ) , P ( C 2 ) , μ 1 , μ 2 , Σ } \theta=\left\{P\left(C_{1}\right), P\left(C_{2}\right), \mu^{1}, \mu^{2}, \Sigma\right\} θ={P(C1),P(C2),μ1,μ2,Σ}
Step 1:
根据已有概率分布 θ \theta θ计算未标签数据
P θ ( C 1 ∣ x u ) P_{\theta}\left(C_{1} \mid x^{u}\right) Pθ(C1xu)
Step 2:
更新模型
P ( C 1 ) = N 1 + ∑ x u P ( C 1 ∣ x u ) N P\left(C_{1}\right)=\frac{N_{1}+\sum_{x^{u}} P\left(C_{1} \mid x^{u}\right)}{N} P(C1)=NN1+xuP(C1xu)
N: 样本总数目
N1:属于类C1的数目
P ( C 1 ) P\left(C_{1}\right) P(C1)同理

μ 1 = 1 N 1 ∑ x r ∈ C 1 x r + 1 ∑ x u P ( C 1 ∣ x u ) ∑ x u P ( C 1 ∣ x u ) x u \mu^{1}=\frac{1}{N_{1}} \sum_{x^{r} \in C_{1}} x^{r}+\frac{1}{\sum_{x^{u}} P\left(C_{1} \mid x^{u}\right)} \sum_{x^{u}} P\left(C_{1} \mid x^{u}\right) x^{u} μ1=N11xrC1xr+xuP(C1xu)1xuP(C1xu)xu

1 N 1 ∑ x r ∈ C 1 x r \frac{1}{N_{1}} \sum_{x^{r} \in C_{1}} x^{r} N11xrC1xr是原始均值,加上未标签数据的权重平均。

这样就得到新的 θ \theta θ然后再回到Step 1。理论上这个方法会收敛,和Gradient Descent一样,结果很大程度取决于初始值。
补充:这些步骤在EM算法中,Step 1相当于 E Step,Step 2相当于 M Step


ok,上面是比较直觉的做法,现在解释为什么要用上面的算法:

如果都是标签数据,使用极大似然估计可以这么计算:

log ⁡ L ( θ ) = ∑ x r log ⁡ P θ ( x r , y ^ r ) \log L(\theta)=\sum_{x^{r}} \log P_{\theta}\left(x^{r}, \hat{y}^{r}\right) logL(θ)=xrlogPθ(xr,y^r)
其中
P θ ( x r , y ^ r ) = P θ ( x r ∣ y ^ r ) P ( y ^ r ) \begin{array}{l} P_{\theta}\left(x^{r}, \hat{y}^{r}\right) =P_{\theta}\left(x^{r} \mid \widehat{y}^{r}\right) P\left(\hat{y}^{r}\right) \end{array} Pθ(xr,y^r)=Pθ(xry r)P(y^r)
这个是有闭式解的,所以可以直接求出


如果标签数据+未标签数据,同样使用极大使然求解:
log ⁡ L ( θ ) = ∑ x r log ⁡ P θ ( x r , y ^ r ) + ∑ x u log ⁡ P θ ( x u ) \log L(\theta)=\sum_{x^{r}} \log P_{\theta}\left(x^{r}, \hat{y}^{r}\right)+\sum_{x^{u}} \log P_{\theta}\left(x^{u}\right) logL(θ)=xrlogPθ(xr,y^r)+xulogPθ(xu)
其中
P θ ( x u ) = P θ ( x u ∣ C 1 ) P ( C 1 ) + P θ ( x u ∣ C 2 ) P ( C 2 ) P_{\theta}\left(x^{u}\right)=P_{\theta}\left(x^{u} \mid C_{1}\right) P\left(C_{1}\right)+P_{\theta}\left(x^{u} \mid C_{2}\right) P\left(C_{2}\right) Pθ(xu)=Pθ(xuC1)P(C1)+Pθ(xuC2)P(C2)
因为 x u x^u xu来自 C 1 C_1 C1 C 2 C_2 C2,但是上面的式子不是convex的,所以才要用EM算法,迭代求解

Self-training

Generative方法是一种概率的方法,即有多大可能为C1。而Self-training方法是一种“非黑即白”的方法,同时直觉上也比较简单。

给定标签数据R笔: { ( x r , y ^ r ) } r = 1 R \left\{\left(x^{r}, \hat{y}^{r}\right)\right\}_{r=1}^{R} {(xr,y^r)}r=1R
未标签数据U笔: { x u } u = R R + U \left\{x^{u}\right\}_{u=R}^{R+U} {xu}u=RR+U

具体算法:


Repeat:
Step 1:求标签数据的模型 f ∗ f^{*} f(可以用机器学习方法求出,深度学习等)
Step 2:应用模型 f ∗ f^{*} f求未标签数据的标签,得到 { ( x u , y u ) } u = R R + U \left\{\left(x^{u}, y^{u}\right)\right\}_{u=R}^{R+U} {(xu,yu)}u=RR+U,称为伪标签(Pseudo-label)
Step 3:然后把这些带有伪标签的数据假如带标签数据集,重新训练模型 f ∗ f^{*} f,重新到Step1

需要注意的是:回归问题不能使用这个方法,因为把带有伪回归值( f ∗ f^{*} f输出)的数据加入训练集,我们说同一组参数做了同样事情,所以并不会改变模型 f ∗ f^{*} f


Generative和Self-training对比

其实两者都是迭代算法,不同之处在于给未标签数据进行伪标签时,Generative是Soft label,而Self-training是Hard label

考虑神经网络计算得出模型 f ∗ f^{*} f,即参数 θ ∗ \theta^{*} θ来自标签数据,那么
在这里插入图片描述
如果用Soft label是不生效的,和回归问题一样,同一组参数做了同样事情,所以并不会改变模型 f ∗ f^{*} f。也许真是非黑即白的假设使得模型 f ∗ f^{*} f得以迭代更新。但是非黑即白是不是有点太武断了,所以提供了Entropy-based Regularization方法。

Entropy-based Regularization

Entropy-based Regularization也是基于非黑即白的假设。即数据分布的约集中越好,看下图:
在这里插入图片描述
那如何判断模型的分布是集中的呢?
可以利用信息熵,信息熵越大说明数据越不稳定,越小说明数据越稳定。比如上图,我们可以根据下面公式判断:

E ( y u ) = − ∑ m = 1 5 y m u ln ⁡ ( y m u ) E\left(y^{u}\right)=-\sum_{m=1}^{5} y_{m}^{u} \ln \left(y_{m}^{u}\right) E(yu)=m=15ymuln(ymu)

和L1、L2正则类似,加到损失函数后面:

L = ∑ x r C ( y r , y ^ r ) + λ ∑ x u E ( y u ) \begin{aligned} L &=\sum_{x^{r}} C\left(y^{r}, \hat{y}^{r}\right) + \lambda \sum_{x^{u}} E\left(y^{u}\right) \end{aligned} L=xrC(yr,y^r)+λxuE(yu)
其中 ∑ x r C ( y r , y ^ r ) \sum_{x^{r}} C\left(y^{r}, \hat{y}^{r}\right) xrC(yr,y^r)来自标签数据,正则项 λ ∑ x u E ( y u ) \lambda \sum_{x^{u}} E\left(y^{u}\right) λxuE(yu)来自未标签数据

Outlook: Semi-supervised SVM

SVM需要做的是找一个边界使得Margin最大,分类Error最小。

在有未标签数据情况下,如下图有4个灰色未标签数据,穷举分类可能
在这里插入图片描述
比如:
在这里插入图片描述
如果是2分类问题,每个数据有2种可能,那么上图有4个点,所以就有 2 4 = 16 2^4=16 24=16种可能分类情况。上图列举3个,其中中间的Margin最大。如果有1万笔未标签数据,一次性穷举会太多了。所以可以逐批数据添加,如果使得Margin变大,Error不变大,就更新边界,然后继续添加。

Smoothness Assumption

通俗的理解就是有相似的x那么也会有相似的y
核心思想:近朱者赤,近墨者黑
但是有时也有例外,可能x近似,有不同y,所以添加个**高密度区域hightdensity region)**约束,更准确的描述:

  1. X是不平均分布的,即有部分集中,有部分分散
  2. 假如x1和x2在高密度区域,即可以通过**高密度路径(hightdensity path)**连通,则认为y1和y2是一样的

比如下面数据分布:
在这里插入图片描述
x1和x2中间有密密麻麻的点,组成高密度路径,也就是它们在高密度区域,所以x1和x2有相同y
x2和x3则没有高密度路径,,所以x1和x2有不相同y

举个实际例子1:
在这里插入图片描述
如果单独考虑中间的图片更像右边的3,但是左边存在高密度路径,所以可以认为中间的图片字和最左边的图片有相同的类别2。

举个实际例子2:
在这里插入图片描述
同样的道理,如果不作处理,那么不同人的侧脸和同一个人的侧脸和正脸比较起来是更近似的。但是如果图片够多,一个人的脸有多张,那么也就存在高密度路径,可以认为正侧面通过45度侧面连通到正面,所以它们有相同y

举个实际例子3:
在这里插入图片描述
文本分类也是同理,未标签数据如果和标签数据有重叠,则近似认为有相同y

那么如何求高密度区域,或者说高密度路径呢?下面有2种方法

Cluster and then Label

在这里插入图片描述
这种方法,就是进行聚类,但是这一般很难,因为这个取决于聚类算法的准确性。就拿图片来说,有可能不同class长得像也可能不像,只用像素是没法很好聚类的。那么聚类错误就会导致performance不高。如果没有很强的算法对image进行cluster,后期会提到deep autocoder来描述图片,此时也行就能比较好进行聚类。

Graph-based Approach

引入图结构来表示连通。那么所谓高密度路径,在图上就是2点可以连通。
在这里插入图片描述
怎么构建图呢?
如果做web或者paper的分类,那么它们本身是存在link或者reference。这样可以直接构建图

其他分类则需要自己构建图,通常的做法:

  1. 定义相似度 s ( x i , x j ) s\left(x^{i}, x^{j}\right) s(xi,xj),如果图片的话可以基于像素或者auto decoder的特征算相似度
    再用径向基函数RBF进一步处理,RBF函数的存在使相似度具有局部响应的特性,也就是靠的足够进,相似度才大
    s ( x i , x j ) = exp ⁡ ( − γ ∥ x i − x j ∥ 2 ) s\left(x^{i}, x^{j}\right)=\exp \left(-\gamma\left\|x^{i}-x^{j}\right\|^{2}\right) s(xi,xj)=exp(γxixj2)
    分析一下RBF函数
    在这里插入图片描述
    确实是在 ∥ x i − x j ∥ \left\|x^{i}-x^{j}\right\| xixj很小时有比较高的值,一旦远一些就会急剧下降接近0。题外话:RBF神经网络其实也就是RBF作为激活函数,目的也许与这里一致,具有局部响应的特性,只对样本附近的输入有反应。

  2. 建图:
    可以根据KNN算法
    比如k=3,去相似度最大的前3个
    在这里插入图片描述
    e-Neighborhood
    给定阈值e,相似度只要超过e,就认为连通
    在这里插入图片描述
    连通即构建边

  3. 给边设置权重,是和相似度成正比

构建好图后:
在这里插入图片描述
不光会影响邻居,也还会传染。
在这里插入图片描述
ok,上面是定性的说怎么使用图,下面是定量使用图方法:

定义一个东西,叫做label的smoothness,表示有多符合上面提到的Smoothness Assumption

S = 1 2 ∑ i , j w i , j ( y i − y j ) 2 S=\frac{1}{2} \sum_{i, j} w_{i, j}\left(y^{i}-y^{j}\right)^{2} S=21i,jwi,j(yiyj)2
对于所有数据(无论是否标记),更小意味着更smooth

在这里插入图片描述
所以,希望得出的label,根据上式越小越好

计算上可以化简一下:
S = 1 2 ∑ i , j w i , j ( y i − y j ) 2 = y T L y S=\frac{1}{2} \sum_{i, j} w_{i, j}\left(y^{i}-y^{j}\right)^{2}=y^{T} L y S=21i,jwi,j(yiyj)2=yTLy

其中y是R+U维向量
L是(R+U)*(R+U)矩阵(Graph Laplacian)
L = D − W L=D-W L=DW
比如:
在这里插入图片描述
的W和D

W = [ 0 2 3 0 2 0 1 0 3 1 0 1 0 0 1 0 ] D = [ 5 0 0 0 0 3 0 0 0 0 5 0 0 0 0 1 ] W=\left[\begin{array}{cccc}0 & 2 & 3 & 0 \\ 2 & 0 & 1 & 0 \\ 3 & 1 & 0 & 1 \\ 0 & 0 & 1 & 0\end{array}\right] \quad D=\left[\begin{array}{cccc}5 & 0 & 0 & 0 \\ 0 & 3 & 0 & 0 \\ 0 & 0 & 5 & 0 \\ 0 & 0 & 0 & 1\end{array}\right] W=0230201031010010D=5000030000500001

怎么使用这个S?
在用神经网络求解模型时,S就取决于神经网络的参数,所以
和Entropy-based Regularization方法一样,作为正则项来使得S更小。

L = ∑ r r C ( y r , y ^ r ) + λ S L=\sum_{r^{r}} C\left(y^{r}, \hat{y}^{r}\right)+\lambda S L=rrC(yr,y^r)+λS

如果是Deep Network,不仅仅可以接在output,也可以接在其它层,或者多层同时都要smooth
在这里插入图片描述

以上参考李宏毅老师视频和ppt,仅作为学习笔记交流使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值