什么是无监督学习?

最好举出常见的 有监督学习 和 无监督学习 的算法
关注者
1,785
被浏览
779,665

70 个回答

从最简单的划分标准来看,人们会说无监督学习就是只有 X 而没有 y 的学习任务,判别条件就是是否存在对应的标签(可以是连续的如回归问题,可以是离散的分类问题)。

但我觉得这个解释还没有触及到问题的本质。在我看来,标签 y 其实是一种施加于对 X 进行压缩过程中的约束。这就是有监督学习,或者我更愿意叫它“有约束的压缩”。

所以绕回到原来的问题上,什么是学习?其实学习的本质就是信息压缩。我输入一个庞大而繁杂的 X ,学习的过程只是找到它更简单的表示(远小于 X 的尺寸),而我找到的新的表示需要至少符合以下两点要求:

  • 足够有效,能够支持下游的其他任务
  • 在有效的前提下尽量要小,去除和下游任务无关的冗余信息

换句话说,我学到的新的表示 Z 要足够小防止冗余,又要足够好能支持下游的任务。

假设我的输入信息 X 是猫、狗、人的照片,但现在不给你任何下游任务,只说我希望压缩信息,找到更小的数据表示,那么可以用PCA或者Autoencoder、VAE等模型来尝试使得重建误差(reconstruction error)尽量小,而中间的网络模型+ Z 就是我们学到的压缩空间,这是我们说的最常见的无监督学习。但其实这种情况只是我们定义了下游任务为重建输入X而已。

但监督学习的差别在哪里呢?我如果告诉你要区分猫和狗,并给定猫和狗的图像所对应的标签,那么你再训练一个网络,并用标签来引导网络学习,那么此时得到的压缩表示会根据 y 来产生,此时得到的表示 Z 和上面重建误差的所得到的表示 Z 是不同的。

一般来说,当你纯粹最小化重建误差时,得到的数据表示是更加通用的,而当你有标签时,相当于对于压缩过程有了更加明确的指引(或者说是约束),因此会得到更加适合标签所对应的的下游任务的数据表示。

因此用标签、有监督学习得到的数据表示不如无监督学习到的数据表示 Z 那么通用,但更适合下游特定的有监督任务,这也是一种平衡与取舍。再回到无监督范畴,重建误差最小也可以理解为令简单的令 y=X 。因为没有引入额外的约束条件,因此得到的数据表达更加适合通用任务,而不一定适合特定任务,因为特定任务可能只需要原始数据中的部分表示,更多的信息只是冗余。因此用特定标签 y 训练得到的数据表示 Z 并不一定拥有很强的可迁移性,因为可能很多有用的信息因为 y 的约束而被剔除了。相反的,这也解释了为什么把输入 X 作为目标,最小化重建误差往往能得到较好的通用数据表达,因为所谓的 y 并不是针对特定任务,约束性更低。

回到一开始的论述,广义上的无监督学习只是说你没有一个确定的下游任务,但其实重建误差也算是下游任务,因此或许也能被称为一种“监督学习”。而我们下游任务的标签 y ,其实只是一种对于压缩过程的约束,要求 X 的表达可以通过模型被映射到 y 上。但值得一提的是,在大部分监督学习中你不会学到一个显式的数据表达 Z ,这点和无监督的降维不同(PCA和AE/VAE都会给你压缩后空间)。在监督学习中,你更多的得到的是一个参数模型(比如)来作为数据+下游任务的一种“表达”。往小了说其实只是个思考角度问题,但或许能提供一种思路帮大家思考标签到底有什么意义。其实再引申一点,我们为特定任务选择的模型形式也是我们给任务加的一种约束,要求数据的映射符合所选择模型的形式。当我们选择的模型与下游任务的假设一致时,就可以做到用简单的模型完成复杂的任务,虽然这往往需要对于数据和任务的深度理解。


注:所以初见会觉得“什么是监督、无监督”是一个很显然的问题,但其实会引导我们思考如何设计机器学习问题,包括如何学习的数据的表达,如何压缩,模型是否具备可迁移性等,其实是非常根本的问题。和这些概念相关的有两类方向可以继续研究,一类是从信息论看information bottleneck,一类是各种深度生成模型,尤其是显式的比如VAE。从这里还能再讨论disentanglement learning等,就不展开说了。总结来看,如何学习到更好的数据表达,其实是机器学习的根本问题,至于是A任务还B任务,只是修改模型结构和约束条件而选择对原始数据不同的表达。但正因为数据表达太复杂了,任务也太多了,因此没有任意一个模型可以完美的适配所有任务,这也是为什么往往标签 y 被称为归纳偏置(inductive bias)。

有朋友会问那无监督的聚类问题,比如K-means该怎么理解呢?其实K-means也是有隐式的目标,即使得形成的簇内平均距离更小,而簇间的距离要大。我感觉严格意义上说这种依赖于完整输入空间在欧氏距离的形式可能不算“学习”,而算是“计算”。但或许也可以把这种目标理解为一种约束吧,虽然过程中可能不涉及到压缩,但学到的簇概念本身就是关于数据的更好的表达。这个讨论过于玄学,止步于此。

这个问题可以回答得很简单:是否有监督(supervised),就看输入数据是否有标签(label)。输入数据有标签,则为有监督学习,没标签则为无监督学习。

但根据知乎惯例,答案还是要继续扩展的。

首先看什么是学习(learning)?一个成语就可概括:举一反三。此处以高考为例,高考的题目在上考场前我们未必做过,但在高中三年我们做过很多很多题目,懂解题方法,因此考场上面对陌生问题也可以算出答案。机器学习的思路也类似:我们能不能利用一些训练数据(已经做过的题),使机器能够利用它们(解题方法)分析未知数据(高考的题目)?

最简单也最普遍的一类机器学习算法就是分类(classification)。对于分类,输入的训练数据有特征(feature),有标签(label)。所谓的学习,其本质就是找到特征和标签间的关系(mapping)。这样当有特征而无标签的未知数据输入时,我们就可以通过已有的关系得到未知数据标签。

在上述的分类过程中,如果所有训练数据都有标签,则为有监督学习(supervised learning)。如果数据没有标签,显然就是无监督学习(unsupervised learning)了,也即聚类(clustering)。

目前分类算法的效果还是不错的,但相对来讲,聚类算法就有些惨不忍睹了。确实,无监督学习本身的特点使其难以得到如分类一样近乎完美的结果。这也正如我们在高中做题,答案(标签)是非常重要的,假设两个完全相同的人进入高中,一个正常学习,另一人做的所有题目都没有答案,那么想必第一个人高考会发挥更好,第二个人会发疯。

这时各位可能要问,既然分类如此之好,聚类如此之不靠谱,那为何我们还可以容忍聚类的存在?因为在实际应用中,标签的获取常常需要极大的人工工作量,有时甚至非常困难。例如在自然语言处理(NLP)中,Penn Chinese Treebank在2年里只完成了4000句话的标签……


这时有人可能会想,难道有监督学习和无监督学习就是非黑即白的关系吗?有没有灰呢?Good idea。灰是存在的。二者的中间带就是半监督学习(semi-supervised learning)。对于半监督学习,其训练数据的一部分是有标签的,另一部分没有标签,而没标签数据的数量常常极大于有标签数据数量(这也是符合现实情况的)。隐藏在半监督学习下的基本规律在于:数据的分布必然不是完全随机的,通过一些有标签数据的局部特征,以及更多没标签数据的整体分布,就可以得到可以接受甚至是非常好的分类结果。(此处大量忽略细节)

因此,learning家族的整体构造是这样的:

有监督学习(分类,回归)

半监督学习(分类,回归),transductive learning(分类,回归)

半监督聚类(有标签数据的标签不是确定的,类似于:肯定不是xxx,很可能是yyy)

无监督学习(聚类)

参考文献:

[1] 各种教材

[2] Semi-Supervised Learning Tutorial, pages.cs.wisc.edu/~jerr