区别
自我学习和半监督学习一样,当前手头上只有少量训练样本,但是周围手头上还有大量无标注样本。举一个经典的例子,分离大象和犀牛。
对于监督学习来说,我们手头有大量大象的样本和犀牛的样本,接下来训练分类器,进行分类,大家都知道的。
对于迁移学习,则是指我们手头上有大量羊的样本和马的样本(已标记),少量的大象和犀牛的样本,接下来就要从羊和马的样本中选出有效的样本分别加入到大象和犀牛的标记样本中,然后再用监督学习的方法训练分类器。
而非监督学习,则是手上仅有少量大象和犀牛的已标记样本,另外有一堆大象和犀牛的没有标记的数据(注意它们中要么是大象要么是犀牛,没有其他物种)。
半监督学习就是利用这些样本训练分类器,实现分类。而自我学习,同样是手上仅有少量大象和犀牛的已标记样本,另外有一大堆自然图像。所谓自然图像,就是有大象和犀牛的图片,还有各种其他物种的图片。
而自我学习,同样是手上仅有少量大象和犀牛的已标记样本,另外有一大堆自然图像。所谓自然图像,就是有大象和犀牛的图片,还有各种其他物种的图片。自我学习比半监督学习更适合实际场景—–哪有一堆只有大象和犀牛的图片给你呢?而自然图像的来源更加广泛,可以从互联网上随便下载。
理论分析
如果已经有一个足够强大的机器学习算法,为了获得更好的性能,最靠谱的方法之一是给这个算法以更多的数据。机器学习界甚至有个说法:“有时候胜出者并非有最好的算法,而是有更多的数据。”
人们总是可以尝试获取更多的已标注数据,但是这样做成本往往很高。例如研究人员已经花了相当的精力在使用类似 AMT(Amazon Mechanical Turk) 这样的工具上,以期获取更大的训练数据集。相比大量研究人员通过手工方式构建特征,用众包的方式让多人手工标数据是一个进步,但是我们可以做得更好。具体的说,如果算法能够从未标注数据中学习,那么我们就可以轻易地获取大量无标注数据,并从中学习。自学习和无监督特征学习就是这种的算法。尽管一个单一的未标注样本蕴含的信息比一个已标注的样本要少,但是如果能获取大量无标注数据(比如从互联网上下载随机的、无标注的图像、音频剪辑或者是文本),并且算法能够有效的利用它们,那么相比大规模的手工构建特征和标数据,算法将会取得更好的性能。
在自学习和无监督特征学习问题上,可以给算法以大量的未标注数据,学习出较好的特征描述。在尝试解决一个具体的分类问题时,可以基于这些学习出的特征描述和任意的(可能比较少的)已标注数据,使用有监督学习方法完成分类。
在一些拥有大量未标注数据和少量的已标注数据的场景中,上述思想可能是最有效的。即使在只有已标注数据的情况下(这时我们通常忽略训练数据的类标号进行特征学习),以上想法也能得到很好的结果。
特征学习
我们已经了解到如何使用一个自编码器(autoencoder)从无标注数据中学习特征。具体来说,假定有一个无标注的训练数据集 (下标 代表“不带类标”)。现在用它们训练一个稀疏自编码器(可能需要首先对这些数据做白化或其它适当的预处理)。
利用训练得到的模型参数 ,给定任意的输入数据
,可以计算隐藏单元的**量(activations)
。如前所述,相比原始输入
来说,
可能是一个更好的特征描述。下图的神经网络描述了特征(**量 )的计算。
这实际上就是之前得到的稀疏自编码器,在这里去掉了最后一层。
假定有大小为 的已标注训练集
(下标
表示“带类标”),我们可以为输入数据找到更好的特征描述。例如,可以将
输入到稀疏自编码器,得到隐藏单元**量
。接下来,可以直接使用
来代替原始数据
(“替代表示”,Replacement Representation)。也可以合二为一,使用新的向量
来代替原始数据
(“级联表示”,Concatenation Representation)。
经过变换后,训练集就变成 或者是(取决于使用
替换
还是将二者合并)。在实践中,将
和
合并通常表现的更好。但是考虑到内存和计算的成本,也可以使用替换操作。
最终,可以训练出一个有监督学习算法(例如 svm, logistic regression 等),得到一个判别函数对 值进行预测。预测过程如下:给定一个测试样本
,重复之前的过程,将其送入稀疏自编码器,得到
。然后将
(或者
)送入分类器中,得到预测值。
数据预处理
在特征学习阶段,我们从未标注训练集 中学习,这一过程中可能计算了各种数据预处理参数。例如计算数据均值并且对数据做均值标准化(mean normalization);或者对原始数据做主成分分析(PCA),然后将原始数据表示为 (又或者使用 PCA 白化或 ZCA 白化)。这样的话,有必要将这些参数保存起来,并且在后面的训练和测试阶段使用同样的参数,以保证数据进入稀疏自编码神经网络之前经过了同样的变换。例如,如果对未标注数据集进行PCA预处理,就必须将得到的矩阵 保存起来,并且应用到有标注训练集和测试集上;而不能使用有标注训练集重新估计出一个不同的矩阵 (也不能重新计算均值并做均值标准化),否则的话可能得到一个完全不一致的数据预处理操作,导致进入自编码器的数据分布迥异于训练自编码器时的数据分布。
参考:
https://blog.csdn.net/qq_34216467/article/details/60136537
https://blog.csdn.net/hjh1705072347/article/details/53736005
推荐:
https://blog.csdn.net/u011826404/article/details/74358913 周志华的半监督学习的理论分析及应用