Semi-supervised learning(半监督学习)
摘要:这节课主要学习了半监督学习,以及半监督学习的两种方法。
目录
二、Semi-supervised learning for generative model
首先看supervised learning for generative model
实际上Semi-supervised learning for generative model的做法
1.Semi-supervised learning low-density separation(非黑即白)
2.entropy-based regularization
2. Semi-supervised learning smoothness assumption (近朱者赤,近墨者黑)
一、什么是Semi-supervised learning
首先有R组数据(xr,yr)
Xr代表输入的图像,yr代表输出分类
Semi-supervised learning是指除了上述数据,还存在u组没有被分类的输入xu,通常情况下,u是远大于r。
Semi-supervised learning分为transductive learning和inductive learning。
区别在于transductive learning将未分类的数据视作测试数据
inductive learning没有将未分类的数据视作测试数据。
为什么要做Semi-supervised learning
收集数据是容易的,但是收集有标签的数据时很难的。
二、Semi-supervised learning for generative model
首先看supervised learning for generative model
给定r个有标签的xr属于两类c1和c2。
估测最可能的先验概率p(c1)和p(c2)。假设c1和c2是高斯分布的话,就是计算出μ1,μ2和Σ。有了上边的数据,就可以计算出未被分类x属于c1和c2的概率p(c1|x)
(Classification那节课讲的内容)
在Semi-supervised learning for generative model中
绿色的点代表xu
没有标签的xu会重新影响p(c1)和p(c2),μ1,μ2和Σ,进而影响边界线。
实际上Semi-supervised learning for generative model的做法
1.初始化p(c1)和p(c2),μ1,μ2和Σ
2.计算每一个无标签数据xu的后验概率pθ(c1|xu)
3.更新模型:考虑上无标签数据的因素。N是总的数据个数,N1是属于C1的数据个数。
P(c1)=(c1的个数加上所有xu属于c1的概率之和)/总个数
μ1=原有的μ1+(xu*xu输入c1的概率)求和/ xu输入c1的概率的和
4.通过第三步得到新的p(c1)和μ1,再重复计算每一个无标签数据xu的后验概率pθ(c1|xu),(循环2,3步)
理论上,这个结果会收敛,不过初始值会影响收敛的结果。
(本质上就是通过无标签数据来xu来优化p(c1),p(c2),μ1,μ2和Σ)
为什么要这样做?
只考虑xr,极大似然估计是可以通过带入公式求得
同时考虑xr和xu时,由于L(θ)不是凸函数,需要重复的进行上面的步骤,每次循环可以使L(θ)增加一点。最终收敛到最优解。
三. 半监督学习的两种方法
1.Semi-supervised learning low-density separation(非黑即白)
即两个不同种类之间的界限明晰,即在交界处的样品密度较低——Low-density Separation
实现方法:
1.自我训练
有标签的数据xr,无标签数据xu
- 通过xr训练出一个模型f*
- 将xu输入到f*中,得到xu的类别yu
- 将xu中拿出一部分数据,加入到xr中,这样有了更多的xr
- 重复1到3步。
自我训练的步骤与Semi-supervised learning for generative model是相似的
自我训练是属于硬分类,半监督学习生成式属于软分类。
使用神经网络的话,应该采取硬分类的方法(非黑即白)
对自我训练的进阶版:
2.entropy-based regularization
用entropy of yu来评估yu的分布是否集中。E(yu)越小越好
2. Semi-supervised learning smoothness assumption (近朱者赤,近墨者黑)
X是不平均的,某些地方集中,某些地方分散
如果x1和x2是通过high density path相连,则它们的输出是一样的
在图中x1和x2在高密度区域是相近的,所以输出y1和y2时相同的。
这样做的原因:
数字识别,两个“2”图片之间的那些图片,就可以视为高密度区?
实现方法:
1.cluster and then label
蓝色的点是无标签数据。
将图像中的点分成三个cluster聚类.
每个聚类中属于哪一类的点多,就将这个聚类中的点分类为该类型。
2.Graph-based approach
基于图的方法,是将样本之间的联系看成是两点之间具有相连的路径
将所有的数据点画在图上,用这种方法来表示x1和x2是通过高密度区域来联系。
论文的分类,可以通过论文的引用来建立在它们之间的关系。
有时候需要自己建立图上点与点之间的联系。
自己建立联系的方法:(主要靠经验)
- 定义两个点xi和xj之间的相似度s(xi,xj)
- 添加边:两种方法 K nearest neighbor e-neighborhood
- 边的权重与s()是成比例的
定义相似度的方法:Gaussian radial basis function
Graph-based approach的想法
已经有标签的数据会影响它们的邻居,这种影响是可传递的
下面拿具体的数值来举例:两点之间的数值为相似度
用具体的数值来衡量图中数据的平滑度
S=1/2ΣWi,j(yi-yj)2 越小意味着越平滑
可以整理成S=YTLY
Y是r+u维度的向量 L是(r+u)*(r+u)的矩阵(Graph Laplacian)
L=D-W W就是图的邻接矩阵 D就是将每列(行)的值相加,组成的对角矩阵
S的结果是依赖于网络的参数
当把graph的信息考虑到神经网络的训练时,也就是在原来的loss函数的基础上,增加一个λS(正则项)
衡量数据的平滑度S也可以放在中间层
总结:
半监督学习将含有标记数据和无标记数据的训练数据同时利用起来,在实践中,通常情况下从数据提取相关特征以及标记是非常耗时,这时候采取半监督学习是一种很好的方法。相比于无监督学习,半监督学习中的深度学习网络仍然可以从小比例的有标记数据中受益,并提高其数据的准确性。