最近在看Ng的深度学习教程,看到self-taught learning的时候,对一些概念感到很陌生。作为还清技术债的一个环节,用半个下午的时间简单搜了下几个名词,以后如果会用到的话再深入去看。
监督学习在前一篇博客中讨论过了,这里主要介绍下迁移学习、自我学习。因为监督学习需要大量训练样本为前提,同时对训练样本的要求特别严格,要求训练样本与测试样本来自于同一分布。要是满足不了这要求咋办?那您看看下面几种学习方法能不能帮上忙吧。
- 迁移学习 transfer learning
有时候困扰大家的一个问题在于训练数据的标定。这将会耗费大量的人力与物力。另外,机器学习假设训练数据与测试数据服从相同的数据分布。然而许多情况下,这种同分布假设并不满足。通常可能发生的情况如训练数据过期,也就是好不容易标定的数据要被丢弃,而另外有一大堆新的数据要重新标定。迁移学习的目标是将从一个环境中学到的知识用来帮助新环境中的学习任务。讲白了,就是当前只有少量新的标记的数据,但是有大量旧的已标记的数据(甚至是其他类别的有效数据),这时通过挑选这些旧数据中的有效的数据,加入到当前的训练数据中,训练新的模型。用一句原话则是:
Transfer learning is what happens when someone finds it much easier to learn to play chess having already learned to play checkers, or to recognize tables having already learned to recognize chairs; or to learn Spanish having already learned Italian。
迁移学习的代表作是《Boosting for Transfer Learning》有关它的介绍可以看这里,我就不多说啥了,多的我也不懂。
- 自我学习 self-taught learning
自我学习和半监督学习一样,当前手头上只有少量训练样本,但是周围手头上还有大量无标注样本。举一个经典的例子,分离大象和犀牛。对于监督学习来说,我们手头有大量大象的样本和犀牛的样本,接下来训练分类器,进行分类,大家都知道的。对于迁移学习,则是指我们手头上有大量羊的样本和马的样本(已标记),少量的大象和犀牛的样本,接下来就要从羊和马的样本中选出有效的样本分别加入到大象和犀牛的标记样本中,然后再用监督学习的方法训练分类器。而非监督学习,则是手上仅有少量大象和犀牛的已标记样本,另外有一堆大象和犀牛的没有标记的数据(注意它们中要么是大象要么是犀牛,没有其他物种)。半监督学习就是利用这些样本训练分类器,实现分类。而自我学习,同样是手上仅有少量大象和犀牛的已标记样本,另外有一大堆自然图像。所谓自然图像,就是有大象和犀牛的图片,还有各种其他物种的图片。自我学习比半监督学习更适合实际场景-----哪有一堆只有大象和犀牛的图片给你呢?而自然图像的来源更加广泛,可以从互联网上随便下载。
自我学习实现的方法如下图所示。首先通过未标注的自然图像提取一组特征(如稀疏字典,sparse coding,很神奇的一个东西,以后还会再研究)。这样任何一个标注和未标注的图像都可以用这组特征表示出来。由于每一个标注后的样本都被表示成了这些特征------注意这些特征捕捉了图像的高层结构,将表示后的标注的样本训练一个分类器进行分类。