最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

半监督学习笔记(一):综述,定义,方法

IT圈 admin 2浏览 0评论

半监督学习笔记(一):综述,定义,方法

这几天学习了一篇论文,名称就是An Overview of Deep Semi-Supervised Learning。是一篇关于半监督学习的综述,当然自己的理解也十分的肤浅,这篇文章是自己的学习笔记,发出来是希望各位大神对我的理解多指点指点!当然能给各位学习的同学们参考到就更好了!

本篇文章仅供参考,如有错误还请多多指正!

原文链接:.05278v2.05278v2

1.半监督学习介绍。

在传统的监督学习中,每一个training data都是由data和label构成的,但是一般情况下,只能获取大量的数据,而标记很难得到,并且给数据加上标签需要很多的先验知识,这就花掉了大量的成本。 

例如,做一个情感分类问题的时候,使用爬虫可以比较容易的从网上爬去一大堆信息,但是我们怎么给这些信息文本加上标记呢?多数情况下只能通过人工的方式去完成。再比如Cycle GAN中的思想,倘若要做一个风格迁移的任务时(比如把真实头像转换成3D头像),我们怎么知道目标的图像时什么呢?拍了一个人脸之后找大量的插画师进行绘图吗?这样就会花费大量的人力、物力成本,并且不同插画师画出来的画(也就是Label)不同,这时候我们应该如何更好的去利用这些数据呢?

所以,这就需要半监督学习(Semi-supervised-learning,SSL)了!

半监督学习是什么呢?顾名思义,半监督学习就是监督学习和无监督学习的折中版,而监督学习的核心就是回归,无监督学习的核心是分类,半监督学习一般的目标是找到一个函数迎合(也就是回归任务),然后用分类任务的信息去优化回归函数。

半监督学习能很好的解决一个数据集中只有少量的数据有标注的问题,可以建立一个更好的分类器,作为缺少标注数据的弥补。然而,为了防止对模型结构的糟糕拟合,半监督学习只在特定的假设下有效。比如决策边界不能在高密度区域,这样就能从一些没有标注的数据中提取额外的信息来正则化训练。

这里有一个难点词,是高密度区域(high density),我的理解是:假设训练集是对真实分布的一个提取&采样,高密度区域则为在一定的空间内,采样样本过多的地方。或者说,这个分布在这个地方的概率密度比较大。

同样,半监督学习的定义为:有标注的数据占比非常的小(只有1-10%)。半监督学习的目标是利用未标记的数据得到更好表现的模型。而未标记的数据集可以为我们提供关于数据真实分布的一些额外信息,如下图所示:

假设一堆数据集中只有6个样本被标注了,那么监督学习(比如SVM)只能利用这6个样本构建一个分类器,这里很多数据都被浪费了。如果用上半监督学习,那么可以用某些分类的方法将这些未标注的数据归类到已经标注的数据上(当然这要符合一些假定,比如目标分布非病态,然后相近的数据label应该相近或者相同等),后面的几种方法就训练了一个很好的分类器,不仅利用了有标记的数据分类,还利用了这些无标记的数据优化了回归决策边界。

1.2半监督学习的方法:

1、一致性回归

这是基于一种假设:假设一个很小的现实扰动被加入这个没有被标记的数据中(不是无穷小,是很小),这个数据的分类不会改变。

比如有两个东西摆在算法面前(假设是两张桌子),一个东西已经被标注为“桌子”,另外一个东西和之前的东西差不多,就是缺了一个脚,那么按照道理来说这个东西的标注应该和之前的那个东西差的不多。而不是缺了一个脚就直接成为了完全不一样的类别,比如“鞋子”。

但是这个假设在学习某些分类的情况是比较困难的,比如应用在studentnet去学习teacher net的分布,比如图像处理方面,现在网络攻防十分的发达,有些未经训练的模型只要改变一个像素,分类的结果就完全不一样,对于某些更加细致的分类而言,常常某些特征在某一个维度十分接近,这样就会造成不一样的分类结果。

2、代理标签方法

这就是用已经标记的训练集,基于一些启发式的方法来标注未标记的训练集,然后来生成一些额外的训练用例。

比如有10个物体,他们是10个平板电脑。你(算法)开始不知道这是平板电脑,但是粗略的知道这10个东西大概是一类的。这时候你得到了一个信息就是其中的一个东西是“平板电脑”。这时候你(算法)很就会通过“代理标签”的方法认定这10个东西都是平板电脑。一般情况下这也没啥问题,但是有时候还是会造成分类的错误,比如说这10个东西中有几个样本其实是“显示屏”,而你没有提前告诉算法有“显示屏”这一类,这样分类器就很可能会错过了对“显示屏”的分类。 

3、生成模型

类似于监督设置,其中一个任务上的学习特征可以转移到其他下游任务。能够从数据分布p(x)生成图像的生成模型必须学习可转移的特征,以用于目标为y的给定任务p(y | x)

4、图生成模型

这个应该就是类似于构建一个生成树然后生成决策边界,我也不是很明白。

在SSL的各种方法中,一致性回归和代理标签的方法是比较接近的。

半监督学习可以根据两种主要的学习范式进行分类,一种是迁移学习,一种是归纳学习。迁移学习主要尝试在训练的时候把分类器应用到未标记的实例中。在这种情况下,迁移学习就忽视了很多没有标记的实例,错而把数据集的分布当成了真实的数据分布。而归纳学习则更加流行,它尝试学习一个分类器,在测试时对未出现的实例也加以应用。

1.3 半监督学习的假设 

1、平滑性假定

如果两个点在高密度区域中(数据分布的概率密度比较大),且这两个点距离很近,那么他们的输出也会十分的接近。

2、聚类假定:

如果两个点在相同的聚类中,那么他们趋向于被分成同一类。

3、流形假定:

高维的数据一般都会处于一个低维的流形中。那么问题来了,这个流形是什么呢?

流形是局部具有欧几里得空间性质的空间,在数学中用于描述几何形体。用更简单的实例表述,就是:

假设一个三维空间R3,那么在这个三维空间的低维分布,或者说低维嵌入,比如曲面函数

是一个流形,再往下,三维空间中的一维分布也是流形,如下图所示

 以此类推,高维空间中的低维分布就是我理解中的流形。

1.4相关问题

1.主动学习

算法从一个大的无标签数据库中学习,但是算法有权利从这个无标签数据库中提取其标签。主动学习的目标是仔细的选取有标签数据,以至用最少的有标签数据更准确的拟合真实的数据分布。这种学习算法可以在数据集很大,但是获取标签的代价很昂贵的情况下获得。

从中联想到奈奎斯特率,采样的频率至少要是真实频率分布的0.5倍才能完全的复制出信号,这两个算法应该有一定的相关性。

不过现在还没有被证明找到了一个足够好的主动学习的信息提取策略,现在仍然有很多启发式的方法被证明是有效的,两个比较有用的数据选择标准是信息性和代表性。

信息性衡量了这个没有标签的实例在多大的程度上帮助减少了模型的随机性和不确定性(使得模型的预测更加稳定,训练了一个更好的分类器);代表性衡量了一个实例在多大程度上代表了输入模式的结构(采样分布)。

2.迁移学习和域适应

迁移学习的目标是通过模型学习一个领域的知识,进而应用到另一个领域。例如,可以教模型如何玩英雄联盟,然后让模型去打王者荣耀;或者教模型去识别人类,然后让模型去识别某类动物等。这种应用可以在首先用一个比较容易获得label的分布训练模型,然后再用目标分布的数据对模型进行微调。当然,这两个分布最好要有一定的相似性,这样模型的准确率也会比较高。

半监督学习和无监督学习域适应最大的不同就是,半监督学习中所有的数据都来自于同样的分布,但是域适应的两个数据集来自于不同的分布。但是这两个领域的方法都是都是可以相互应用的。

3.弱监督学习

在一般的情况下,label都是十分的精确的,但是在某些特定的情况下(比如语义分割任务),获取精确的label代价十分的大,这时候一种选择是把精确的label替换为不那么精确的label,比如一个框。然后再用半监督学习的方法去克服这些label不精确的问题。

4.在有噪声的情况下学习

噪声分成两种情况,一种是标签噪声,另外一种是数据噪声。而在标签上加噪声对神经网络的性能影响比较大。现在多数的方法都尝试修正损失函数来对噪声进行建模。SSL可以从噪声标签中进行学习,然后将噪声标签对应的数据视为未标记的数据,并且用SSL的方法对训练规范化。

1.5评估SSL方法 

传统评估SSL的方法都是用一些比较大规模的,带标签的数据集,然后把标签去掉,然后比较SSL和其他算法的优劣。同样的,一个科学家提出了改进该试验的方法:

1.共享操作

为了比较不同的SSL方法,他们在应用时必须分享共同的基本结构和其他的细节。

毕竟评估等是一个算法的优劣,超参数(比如采用Adam这种优化算法的学习率,或者带动量梯度下降的动量值),以及神经网络的初始化参数(统一地使用正态分布、均匀分布等,设置一个初始化点),包括对数据集进行增强(使用不同的数据集结果肯定不一样了!一个天天写高考卷,一个天天做野鸡卷,显然是有信息不对称的),还有正则化操作(这也是在优化环节的策略,和模型的关系并不大)。都应该是相同的。

2.和迁移学习比较

采用半监督学习的方法,如果数据集越大效果越好当然更好。另一种方法就是先用另一个domain的labeled dataset对其进行训练,然后再用target domain的少量labeled set,也是一个评价半监督学习的方法。

3.考虑类别分布的不匹配

因为数据集都是从真实数据分布的一种采样,一般采样频率是无法满足奈奎斯特率的,所以说很多情况下是不能完美的复原出真实数据的分布的。而这种分布的不匹配在估计时经常被忽视。而带标签数据和不带标签的数据这两个数据集,虽然都是从真实数据分布的一种采样,但是还原出来的这两个分布仍然有可能不匹配。这种不匹配仍然值得被注意。

4.改变标记和未标记数据的数量

这也是一个常见的做法,通常来评估SSL的有效性,比如在相对较小的未标记数据集下进行训练。

 好了,到这里半监督学习的Introduction部分就结束了!下篇文章来尝试总结一下“一致性正则化”。

先说一下,为什么要一致性正则化呢?因为基于最开始的“平滑性假定”,这就要求模型在一个输入被噪声微扰的情况下的输出保持鲁棒,因此这个模型需要足够的平滑,也就是一个Manifold。一致性正则化的方法就是用来训练一个平滑的模型的!

机器学习才入门不久,希望各位大大看官们在评论区多多指正!

半监督学习笔记(一):综述,定义,方法

这几天学习了一篇论文,名称就是An Overview of Deep Semi-Supervised Learning。是一篇关于半监督学习的综述,当然自己的理解也十分的肤浅,这篇文章是自己的学习笔记,发出来是希望各位大神对我的理解多指点指点!当然能给各位学习的同学们参考到就更好了!

本篇文章仅供参考,如有错误还请多多指正!

原文链接:.05278v2.05278v2

1.半监督学习介绍。

在传统的监督学习中,每一个training data都是由data和label构成的,但是一般情况下,只能获取大量的数据,而标记很难得到,并且给数据加上标签需要很多的先验知识,这就花掉了大量的成本。 

例如,做一个情感分类问题的时候,使用爬虫可以比较容易的从网上爬去一大堆信息,但是我们怎么给这些信息文本加上标记呢?多数情况下只能通过人工的方式去完成。再比如Cycle GAN中的思想,倘若要做一个风格迁移的任务时(比如把真实头像转换成3D头像),我们怎么知道目标的图像时什么呢?拍了一个人脸之后找大量的插画师进行绘图吗?这样就会花费大量的人力、物力成本,并且不同插画师画出来的画(也就是Label)不同,这时候我们应该如何更好的去利用这些数据呢?

所以,这就需要半监督学习(Semi-supervised-learning,SSL)了!

半监督学习是什么呢?顾名思义,半监督学习就是监督学习和无监督学习的折中版,而监督学习的核心就是回归,无监督学习的核心是分类,半监督学习一般的目标是找到一个函数迎合(也就是回归任务),然后用分类任务的信息去优化回归函数。

半监督学习能很好的解决一个数据集中只有少量的数据有标注的问题,可以建立一个更好的分类器,作为缺少标注数据的弥补。然而,为了防止对模型结构的糟糕拟合,半监督学习只在特定的假设下有效。比如决策边界不能在高密度区域,这样就能从一些没有标注的数据中提取额外的信息来正则化训练。

这里有一个难点词,是高密度区域(high density),我的理解是:假设训练集是对真实分布的一个提取&采样,高密度区域则为在一定的空间内,采样样本过多的地方。或者说,这个分布在这个地方的概率密度比较大。

同样,半监督学习的定义为:有标注的数据占比非常的小(只有1-10%)。半监督学习的目标是利用未标记的数据得到更好表现的模型。而未标记的数据集可以为我们提供关于数据真实分布的一些额外信息,如下图所示:

假设一堆数据集中只有6个样本被标注了,那么监督学习(比如SVM)只能利用这6个样本构建一个分类器,这里很多数据都被浪费了。如果用上半监督学习,那么可以用某些分类的方法将这些未标注的数据归类到已经标注的数据上(当然这要符合一些假定,比如目标分布非病态,然后相近的数据label应该相近或者相同等),后面的几种方法就训练了一个很好的分类器,不仅利用了有标记的数据分类,还利用了这些无标记的数据优化了回归决策边界。

1.2半监督学习的方法:

1、一致性回归

这是基于一种假设:假设一个很小的现实扰动被加入这个没有被标记的数据中(不是无穷小,是很小),这个数据的分类不会改变。

比如有两个东西摆在算法面前(假设是两张桌子),一个东西已经被标注为“桌子”,另外一个东西和之前的东西差不多,就是缺了一个脚,那么按照道理来说这个东西的标注应该和之前的那个东西差的不多。而不是缺了一个脚就直接成为了完全不一样的类别,比如“鞋子”。

但是这个假设在学习某些分类的情况是比较困难的,比如应用在studentnet去学习teacher net的分布,比如图像处理方面,现在网络攻防十分的发达,有些未经训练的模型只要改变一个像素,分类的结果就完全不一样,对于某些更加细致的分类而言,常常某些特征在某一个维度十分接近,这样就会造成不一样的分类结果。

2、代理标签方法

这就是用已经标记的训练集,基于一些启发式的方法来标注未标记的训练集,然后来生成一些额外的训练用例。

比如有10个物体,他们是10个平板电脑。你(算法)开始不知道这是平板电脑,但是粗略的知道这10个东西大概是一类的。这时候你得到了一个信息就是其中的一个东西是“平板电脑”。这时候你(算法)很就会通过“代理标签”的方法认定这10个东西都是平板电脑。一般情况下这也没啥问题,但是有时候还是会造成分类的错误,比如说这10个东西中有几个样本其实是“显示屏”,而你没有提前告诉算法有“显示屏”这一类,这样分类器就很可能会错过了对“显示屏”的分类。 

3、生成模型

类似于监督设置,其中一个任务上的学习特征可以转移到其他下游任务。能够从数据分布p(x)生成图像的生成模型必须学习可转移的特征,以用于目标为y的给定任务p(y | x)

4、图生成模型

这个应该就是类似于构建一个生成树然后生成决策边界,我也不是很明白。

在SSL的各种方法中,一致性回归和代理标签的方法是比较接近的。

半监督学习可以根据两种主要的学习范式进行分类,一种是迁移学习,一种是归纳学习。迁移学习主要尝试在训练的时候把分类器应用到未标记的实例中。在这种情况下,迁移学习就忽视了很多没有标记的实例,错而把数据集的分布当成了真实的数据分布。而归纳学习则更加流行,它尝试学习一个分类器,在测试时对未出现的实例也加以应用。

1.3 半监督学习的假设 

1、平滑性假定

如果两个点在高密度区域中(数据分布的概率密度比较大),且这两个点距离很近,那么他们的输出也会十分的接近。

2、聚类假定:

如果两个点在相同的聚类中,那么他们趋向于被分成同一类。

3、流形假定:

高维的数据一般都会处于一个低维的流形中。那么问题来了,这个流形是什么呢?

流形是局部具有欧几里得空间性质的空间,在数学中用于描述几何形体。用更简单的实例表述,就是:

假设一个三维空间R3,那么在这个三维空间的低维分布,或者说低维嵌入,比如曲面函数

是一个流形,再往下,三维空间中的一维分布也是流形,如下图所示

 以此类推,高维空间中的低维分布就是我理解中的流形。

1.4相关问题

1.主动学习

算法从一个大的无标签数据库中学习,但是算法有权利从这个无标签数据库中提取其标签。主动学习的目标是仔细的选取有标签数据,以至用最少的有标签数据更准确的拟合真实的数据分布。这种学习算法可以在数据集很大,但是获取标签的代价很昂贵的情况下获得。

从中联想到奈奎斯特率,采样的频率至少要是真实频率分布的0.5倍才能完全的复制出信号,这两个算法应该有一定的相关性。

不过现在还没有被证明找到了一个足够好的主动学习的信息提取策略,现在仍然有很多启发式的方法被证明是有效的,两个比较有用的数据选择标准是信息性和代表性。

信息性衡量了这个没有标签的实例在多大的程度上帮助减少了模型的随机性和不确定性(使得模型的预测更加稳定,训练了一个更好的分类器);代表性衡量了一个实例在多大程度上代表了输入模式的结构(采样分布)。

2.迁移学习和域适应

迁移学习的目标是通过模型学习一个领域的知识,进而应用到另一个领域。例如,可以教模型如何玩英雄联盟,然后让模型去打王者荣耀;或者教模型去识别人类,然后让模型去识别某类动物等。这种应用可以在首先用一个比较容易获得label的分布训练模型,然后再用目标分布的数据对模型进行微调。当然,这两个分布最好要有一定的相似性,这样模型的准确率也会比较高。

半监督学习和无监督学习域适应最大的不同就是,半监督学习中所有的数据都来自于同样的分布,但是域适应的两个数据集来自于不同的分布。但是这两个领域的方法都是都是可以相互应用的。

3.弱监督学习

在一般的情况下,label都是十分的精确的,但是在某些特定的情况下(比如语义分割任务),获取精确的label代价十分的大,这时候一种选择是把精确的label替换为不那么精确的label,比如一个框。然后再用半监督学习的方法去克服这些label不精确的问题。

4.在有噪声的情况下学习

噪声分成两种情况,一种是标签噪声,另外一种是数据噪声。而在标签上加噪声对神经网络的性能影响比较大。现在多数的方法都尝试修正损失函数来对噪声进行建模。SSL可以从噪声标签中进行学习,然后将噪声标签对应的数据视为未标记的数据,并且用SSL的方法对训练规范化。

1.5评估SSL方法 

传统评估SSL的方法都是用一些比较大规模的,带标签的数据集,然后把标签去掉,然后比较SSL和其他算法的优劣。同样的,一个科学家提出了改进该试验的方法:

1.共享操作

为了比较不同的SSL方法,他们在应用时必须分享共同的基本结构和其他的细节。

毕竟评估等是一个算法的优劣,超参数(比如采用Adam这种优化算法的学习率,或者带动量梯度下降的动量值),以及神经网络的初始化参数(统一地使用正态分布、均匀分布等,设置一个初始化点),包括对数据集进行增强(使用不同的数据集结果肯定不一样了!一个天天写高考卷,一个天天做野鸡卷,显然是有信息不对称的),还有正则化操作(这也是在优化环节的策略,和模型的关系并不大)。都应该是相同的。

2.和迁移学习比较

采用半监督学习的方法,如果数据集越大效果越好当然更好。另一种方法就是先用另一个domain的labeled dataset对其进行训练,然后再用target domain的少量labeled set,也是一个评价半监督学习的方法。

3.考虑类别分布的不匹配

因为数据集都是从真实数据分布的一种采样,一般采样频率是无法满足奈奎斯特率的,所以说很多情况下是不能完美的复原出真实数据的分布的。而这种分布的不匹配在估计时经常被忽视。而带标签数据和不带标签的数据这两个数据集,虽然都是从真实数据分布的一种采样,但是还原出来的这两个分布仍然有可能不匹配。这种不匹配仍然值得被注意。

4.改变标记和未标记数据的数量

这也是一个常见的做法,通常来评估SSL的有效性,比如在相对较小的未标记数据集下进行训练。

 好了,到这里半监督学习的Introduction部分就结束了!下篇文章来尝试总结一下“一致性正则化”。

先说一下,为什么要一致性正则化呢?因为基于最开始的“平滑性假定”,这就要求模型在一个输入被噪声微扰的情况下的输出保持鲁棒,因此这个模型需要足够的平滑,也就是一个Manifold。一致性正则化的方法就是用来训练一个平滑的模型的!

机器学习才入门不久,希望各位大大看官们在评论区多多指正!

发布评论

评论列表 (0)

  1. 暂无评论