机器学习(3)——无监督学习

什么是无监督学习?

顾名思义,无监督学习就是不受监督的学习。同监督学习建立在人类标注数据的基础上不同,无监督学习不需要人类进行数据标注,而是通过模型不断地自我认知、自我巩固,最后进行自我归纳来实现其学习过程。虽然目前无监督学习的使用不如监督学习广泛,但这种独特的方法论为机器学习的未来发展方向给出了很多启发和可能性,正在引起越来越多的关注。2015年,深度学习“三巨头”——YannLeCun、Yoshua Bengio、Geoffrey Hinton首次合作在Nature上撰文,在对深度学习未来展望写道:“无监督学习对于重新点燃深度学习的热潮起到了促进作用,我们期望无监督学习在长期内越来越重要,使我们能够通过观察发现世界的内在结构,而不是被告知每一个客观事物的名称。”
同监督学习相比,无监督学习具有很多明显优势,其中最重要的一点是不再需要大量的标注数据。如今,以深度学习为代表的机器学习模型往往需要在大型监督型数据集上进行训练,即每个样本都有一个对应的标签。比如,目前在图像分类任务当中被普遍使用的ImageNet数据集有一百多万张人为标记的图像,共分为1000类。而近期谷歌公司更是表示要着手建立10亿级别的数据集。很显然,要创建如此规模的数据集需要花费大量的人力、物力和财力,同时也需要消耗大量的时间。正因为无监督学习的重要意义,Yann LeCun有一个非常著名的比喻:“假设机器学习是一个蛋糕,强化学习是蛋糕上的一粒樱桃,监督学习是外面的一层糖衣,那么无监督学习才是蛋糕的糕体。”
我们可以用一个简单的例子来理解无监督学习。设想我们有一批照片,其中包含着不同颜色的几何形状。但是机器学习模型只能看到一张张照片,这些照片没有任何标记,也就是计算机并不知道几何形状的颜色和外形。我们通过将数据输入到无监督学习的模型中去,算法可以尝试着理解图中的内容,并将相似的物体聚在一起。在理想情况下,机器学习模型(无监督学习)可以将不同形状、不同颜色的几何形状聚集到不同的类别中去,而特征提取和标签都是模型自己完成的
实际上,无监督学习更接近我们人类的学习方式。比如,一个婴儿在开始接触世界的时候,父母会拿着一张照片或者一只小猫告诉他这是“猫”。但是接下来在遇到不同的猫的照片或者猫的时候,父母并不会一直告诉他这是“猫”。婴儿会不断地自我发现、学习、调整自己对“猫”的认识,从而最终理解并认识什么是“猫”。相比之下,目前的监督学习算法则要求我们一次次反复地告诉机器学习模型设么是“猫”,也许要高达数万甚至数十万次。很显然,无监督学习的模式更加接近我们的学习方式。关于无监督学习的更多内容可以参考Christopher M. Bishop的《模式识别与机器学习》
机器学习(3)——无监督学习_第1张图片

一、聚类

聚类是无监督学习中最重要的一类算法。在聚类算法中,训练样本的标记信息是未知的,给定一个由样本点组成的数据集,数据聚类的目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律,将样本点划分成若干类,使得属于同一类的样本点非常相似,而属于不同类的样本点不相似。需要说明的是,这些概念对聚类算法事先是未知的,聚类过程仅能自动形成簇结构,簇所对应的概念语义需由使用者来把握和命名。聚类既能作为一个单独过程用于找寻数据内在的分布结构,也可作为分类等其他学习任务的前驱过程,为进一步的数据分析提供基础。数据聚类在各科学领域的数据分析中扮演者重要角色,如计算机科学、医学、社会科学和经济学等。
简单来说,聚类是将样本集分为若干互不相交的子集,即样本簇。聚类算法的目标是使同一簇的样本尽可能彼此相似,即具有较高的类内相似度(intra-cluster similarity);同时不同簇的样本尽可能不同,即簇间的相似度(inter-cluster similarity)低。自机器学习诞生以来,研究者针对不同的问题提出了多种聚类方法,其中最为广泛使用的是K-均值算法
K-均值算法无论是思想还是实现都比较简单。对于给定样本集合,K-均值算法的目标是使得聚类簇内的平方误差最小化,即:
在这里插入图片描述
其中,K是认为指定的簇的数量,μi是簇Ci的均值向量,X是对应的样本特征向量。直观来看,这个误差刻画了簇内样本围绕簇均值向量的紧密程度,E值越小则簇内样本相似度越高。K-均值算法的求解通常采用贪心策略,通过迭代方法实现。算法首先随机选择K个向量作为初始均值向量,然后进行迭代过程,根据均值向量将样本划分到距离最近的均值向量所在的簇中,划分完成后更新均值向量直到迭代完成。
K-均值算法时间复杂度近于线性,适合挖掘大规模数据集。但是,由于损失函数是非凸函数,意味着不能保证取得的最小值是全局最小值。在通常的实际应用中,K-Means达到的局部最优已经满足需求。如果局部最优无法满足性能需要,简单的方法是通过不同的初始值来实现。
需要指出的是,K-Means算法对参数的选择比较敏感,也就是说不同的初始位置或者类别数量的选择往往会导致完全不同的结果。

如图7.7所示,当指定K-Means算法的簇的数量K=2后,如果选取不同的初始位置,实际上我们会得到不同的聚类结果。而在图7.8中可以看到,当簇的数量K=4,我们同样会得到不同的聚类结果。对比图7.7和图7.8会发现,当设置不同的聚类参数K时,机器学习算法也会得到不同的结果。而很多情况下,我们无法事先预知样本的分布,最优参数的选择通常也非常困难,这就意味着算法得到的结果可能和我们的预期会有很大不同,这时候往往需要通过设置不同的模型参数和初始位置来实现,从而给模型学习带来很大的不确定性。

二、自编码器

自编码器是利用神经网络实现无监督学习的一种典型方式,包括编码器和解码器两个典型部分。输入数据经过隐层的编码和解码到达输出层时,使输出的结果尽量与输入数据保持一致。经过训练后,自编码器能尝试将输入复制到输出。如图7.9所示,我们通过编码器将输入的样本映射到一个特征空间上得到样本的隐藏特征表达,进而通过解码器将该特征向量进行解码。这样做的好处是隐层能够抓住输入数据的特点,使其特征保持不变。但是,如果只是简单的复制,这个过程实际上没有任何的应用价值。在实际过程中,我们需要设计相应的约束和损失函数来决定数据的哪些部分需要被优先复制,从而学习到数据当中的有用特征。

目前,自编码器的应用主要有两个方面。
一是数据去噪,即通过自编码器将原图像当中的噪声去除。该方法通过引入合适的损失函数,使得模型可以学习到在受损的输入情况下依然可以获得良好特征表达的能力,进而恢复对应的无噪声输入。
二是数据降维,即通过对隐特征加上适当的维度和稀疏性约束,使得自编码器可以学习到低维的数据投影。例如,假设输入层有100个神经元、隐层只有50个神经元、输出层有100个神经元,通过自编码器算法,我们只用隐含层的50个神经元就找到了100个输入层数据的特点,能够保证输出数据和输入数据大体一致,从而实现降维目标。
目前,自编码器已被成功应用于降维和信息检索等任务当中。

你可能感兴趣的:(人工智能导论,机器学习,人工智能,深度学习)