特征学习 (Self_taught Learning)

特征学习 (Self_taught Learning)

简介 

         如果已经有一个足够强大的机器学习算法,为了获得更好的性能,最靠谱的方法之一是给这个算法以更多的数据。机器学习界甚至有个说法:“有时候胜出者并非有最好的算法,而是有更多的数据。”

     在自学习和无监督特征学习问题上,可以给算法以大量的未标注数据,学习出较好的特征描述。在尝试解决一个具体的分类问题时,可以基于这些学习出的特征描述和任意的(可能比较少的)已标注数据,使用有监督学习方法完成分类。

     我们已经了解到如何使用一个自编码器(autoencoder)从无标注数据中学习特征。假定有一个无标注的训练数据集(下标u代表“不带类标”)。现在用它们训练一个稀疏自编码器(可能需要首先对这些数据做白化或其它适当的预处理)。

      利用训练得到的模型参数W和b,给定任意的输入数据 x,可以计算隐藏单元的激活量(activations)a 。如前所述,相比原始输入 x 来说,a可能是一个更好的特征描述。下图的神经网络描述了特征(激活量 )的计算。

      这实际上就是之前得到的稀疏自编码器,在这里去掉了最后一层。

      假定有个的已标注训练集(下标 l 表示“带类标”),我们可以为输入数据找到更好的特征描述。例如,可以将X_l输入到稀疏自编码器,得到隐藏单元激活量 a_l。接下来,可以直接使用a_l来代替原始数据X_l(“替代表示”,Replacement Representation)。也可以合二为一,使用新的向量来代替原始数据(“级联表示”,ConcatenationRepresentation)。

       最终,可以训练出一个有监督学习算法(例如 svm, logisticregression 等),得到一个判别函数对y值进行预测。预测过程如下:给定一个测试样本X_test,重复之前的过程,将其送入稀疏自编码器,得到a_test。然后将a_test送入分类器中,得到预测值。

无监督特征学习的术语

      有两种常见的无监督特征学习方式,区别在于你有什么样的未标注数据。自学习(self-taughtlearning)是其中更为一般的、更强大的学习方式,它不要求未标注数据X_u和已标注数据X_l来自同样的分布。另外一种带限制性的方式也被称为半监督学习,它要求X_u和X_l服从同样的分布。下面通过例子解释二者的区别。

      假定有一个计算机视觉方面的任务,目标是区分汽车和摩托车图像;也即训练样本里面要么是汽车的图像,要么是摩托车的图像。哪里可以获取大量的未标注数据呢?

      最简单的方式可能是从互联网上下载一些随机的图像数据集,在这些数据上训练出一个稀疏自编码器,从中得到有用的特征。这个例子里,未标注数据完全来自于一个和已标注数据不同的分布(未标注数据集中,或许其中一些图像包含汽车或者摩托车,但是不是所有的图像都如此)。这种情形被称为自学习

       相反,如果有大量的未标注图像数据,要么是汽车图像,要么是摩托车图像,仅仅是缺失了类标号(没有标注每张图片到底是汽车还是摩托车)。也可以用这些未标注数据来学习特征。这种方式,即要求未标注样本和带标注样本服从相同的分布,有时候被称为半监督学习

        在实践中,常常无法找到满足这种要求的未标注数据(到哪里找到一个每张图像不是汽车就是摩托车,只是丢失了类标号的图像数据库?)因此,自学习在无标注数据集的特征学习中应用更广。

 

手写体识别算法流程

    原始数据:6万个28*28的手写体图片数据mnistData ,带标签0到9.

Step1:

      将6万个原始数据,按照标签分成两部分,

部分1:unlabeledData(标签为5到9的数据),命名为unlabeledData是因为训练时丢掉标签,采用无标签数据进行特征学习,学习训练的参数W和b;

部分2:labeledSet(标签为0到4的数据),再把labeledSet分为两部分,trainData(用于训练softmax回归模型参数)和testData(用于测试)

Step2:

运用自学习算法SparseAutoEncoder,训练unlabeledData,得到网络的参数W和b

Step3:

提取trainData和testData的特征 trainFeatures和testFeatures,用来进行训练softmax的模型和精度预测

Step4:

用trainFeatures来有监督训练softmax的模型参数

Step5:

用testFeatures进行精度预测

数据的图表示

 

 实验结果以及代码:http://www.cnblogs.com/tornadomeet/archive/2013/03/24/2979408.html

主要参考文献:http://deeplearning.stanford.edu/wiki/index.php/Exercise:Self-Taught_Learning

 

posted @ 2015-11-16 21:48  菜鸡一枚  阅读(1049)  评论(0编辑  收藏  举报