Machine Learning - 李宏毅 学习笔记 (7)

半监督学习往往考虑unlabeled data的分布,使用unlabel的方式往往伴随一些假设条件,并且半监督学习效果往往取决于这些假设符不符合实际或者颈部精确。

generative model 生成模型:学习得到联合概率分布P(x,y),即特征x和标记y共同出现的概率,然后求条件概率分布。能够学习到数据生成的机制。(生成模型 vs. 判别模型 )

监督生成模型:假设每个class分布都是一个高斯分布,根据数据集会得到各自的μ和Σ,我们就可以根据测试集的data做classification,并得到boundary决策边界位置

半监督生成模型对unlabeled date进行分类:

实现初始化参数,class1,class2的几率P,μ1,μ2,Σ1等,我们可以随机也可以使用labeled data进行估测,这些参数统称Θ

我们先根据现有的Θ计算出unlabelled data中属于class1的概率 - 根据高斯分布

然后算出这个概率后,开始循环update更新模型(更新参数)。

\(P\left ( C_{1} \right ) = \frac{N_{1}+\sum_{x^{u}}^{ }P(C_{1}|x^{u})}{N}\)

\({\mu}^{1}=\frac{1}{N}\sum_{x^{r}\epsilon C_{1}}^{ }x^{r}+ \frac{1}{\sum_{x^{u}}^{ }P(C_{1}|x^{u})}\sum_{x^{u}}^{ }P(C_{1}|x^{u})x^{u}\)

理论:最大似然估计,将所有加起来就是log total loss,接下来就是maximum迭代求解。(因为不是凸函数)

半监督生成模型常见的两个假设:

① Low-density Separation:意思是两个类别之间会存在一个很明显的决策边界,在决策边界处两个类的density密度都很低。

在该假设下最简单的方法是self-training:意思是label data训练出一个model,然后用这个model去求求unlabel data的label,这个label称之为Pseudo-label伪标签,之后再把这些新数据训练之前得到的model。 - 这种方法不能用来做regression回归,因为新加入的数据不会影响原model

self-training与之前的generative model相比,他们唯一的差别是hard label与soft model,前者强制unlabel属于某个class,而后者则是unlabel属于哪个class更好。显然hard比soft要好,因为soft是相当于自己证明自己,没有实际work。如果使用nerural network也是使用这种hard label的方式。

在上基础上进阶就是Entropy-based Regularization基于熵的正则化。 我们在nerural network输出分类分布(概率)时,我们希望在某个class上几率很大,这样我们认为这个结果很好。那么我们用label data上的cross entropy evaluate加上unlabel data的entropy作为损失函数来评价分布好坏。在这里unlabel data很像梯度下降中的正则项,同样作用也是不让模型overfitting。

除上之外还有Semi-sipervised SVM半监督支持向量机。SVM做的事就是根据输入的数据集,找到一个决策边界,一方面边界要有最大的margin余量(就是让这两个class分的越开越好),同时也要有最小的分类错误。SVM会穷举unlabel data所有可能的label,对每一个可能结果做一个SVM,然后找到最合适的label让margin最大且minimize error

② Smoothness Assumption:表面意思是如果x是相似的,那么label就应该相似。精确假设是x的分布是不均匀的,在某些地方集中某些地方分散,如果x在high density region高密度分布区域是相似的,中间是通过high density path相连,那么其label就应该是相似的。(就类似中间有过渡态,这些过渡态密集相当于这些都属于同一个class)

这在文章分类上十分有用,比如分类天文学和旅游类,每个类都有一个固定的word distribution,如果收集的unlabeled data足够多的话,那么就可以进行上述的平滑假设。

实践平滑假设最简单的方法就是cluster and then label分类再标记。这个方法在image图像里不一定有用,分类产生的cluster聚类一定要强,一般会使用deep autoendcoder深度自编码器提取特征后再进行聚类。

除上之外,另个方法是Graph-based Approach基于图路径,我用图路径来表达高密度路径连接,把所有的数据点建成一个图,high density path意思就是如果在图上是相连的,那么他们就是同一个class,如果没有相连,则即使实际距离不远也不算一个class。(图神经网络)

这种基于图的表示方式可以例如网页的分类,论文的分类等。一般用auto-encoder自编码器来计算<Xi, Xj>的相似度。计算完相似度后就可以建图。KNN就是一种这样的模型,设K为一个值,每个point跟它最近的三个point做标记,每个点只有跟它相似度超过一个threshold阈值,才会被连接起来,KNN选择的相似度计算是用的Gaussian Radial Basis function高斯径向基函数(<Xi, Xj>的距离乘以一个参数再取负算exp()指数)。基于图真正帮助的是它的class分类是会传递的,要想有效则需要训练数据集足够。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwsszd.html