无监督学习介绍与入门

Breeze Shane大约 10 分钟ArtificialIntelligenceArtificial Intelligence

什么是无监督学习?

无监督学习是机器学习的一种训练方式「或者是学习方式」。无监督学习的概念是相对有监督学习而言的。

有监督学习,顾名思义就是机器学习的有且必须要有人参与监督的一种学习方式。机器学习的训练离不了数据集,而它应该从数据集中学习什么是由人来决定的,人必须要给这一批量数据集完全做好标注才能交给模型用来训练。

从数学角度来看,有监督模型本质上是在学习与拟合从对象[1]映射到标签[2]的函数,并从中选取最优函数作为训练结果。

从这一角度来看的话,我们就不难理解无监督学习的概念该是如何的。

无监督学习不需要有人给数据集做标注,模型会从各批数据中分别提取一些深度特征、潜在特征来完成任务。

从数学角度来看,无监督模型本质上是一种统计手段,通过描述、计算高维空间的分布来驱动完成任务。

有监督学习无监督学习
目标明确目标不明确
需要带有标签的数据集不需要带有标签的数据集
效果容易评估效果很难评估
需要的数据规模大需要的数据规模小
模型规模巨大模型规模较小
一般训练耗时长、训练周期长一般训练耗时较短、训练周期较短

为什么会有无监督学习这个领域?

随着深度学习的火热膨胀,机器学习的发展蒸蒸日上,模型能完成的任务也越来越多,但随着任务的复杂程度增加,数据集的规模也相应地越来越大,要求人去手动给每一个数据一一做标注不仅耗时耗力,而且出现差错带来的损失代价也难以估量。

于是有人提问:能不能想个办法让机器不需要我们去明确告诉它,它自己就能学习呢?

由此,无监督学习就应运而生了。

题外话:无监督的诞生也带动了半监督、弱监督、迁移学习、表征学习等众多领域的启蒙与发展。

无监督学习与深度学习的关系?

大众常说的深度学习通常都是指有监督学习方式的学习模型,但实际上无监督学习与深度学习也是密不可分的。深度学习中的深度,一般而言是指构建的模型中神经网络部分层数较深,通过多层处理来将浅层特征逐步转化到深层特征,并通过使用学习到的深层特征完成驱动任务。

深度学习是一类模式分析方法的统称,可以认为,深度学习就是在进行“特征学习”或者“表示学习”。

过去一直都是由人来完成手动提取特征后利用特征来完成特定任务,特别的,在计算机视觉领域中这种技术被称作数字图像处理技术,而深度学习的产生,使得使用机器自动提取特征成为一种可能,并且它的产生也使得应用较过去更加广泛。

早期深度学习领域还是只有有监督学习方式实现的模型构建,而如今亦有人在进行有监督训练前会使用无监督方法进行数据预处理、数据清洗等操作,因此请初学者在心里一定要明白:

无监督学习有什么应用?

  1. 分类任务:
    1. 用户细分:通过使用无监督学习模型可以给用户做分类,根据各类别用户推荐广告。
    2. 推荐系统:根据用户的购买行为来给用户做分类,从而使投放广告更具有针对性。
  2. 数据生成:
    1. 动作迁移
    2. 图像修复
    3. 风格迁移
  3. 数据去噪清洗
  4. 深度特征提取
  5. ……

无监督学习的未来发展如何?

目前无监督学习尚在科研领域内部,并未真正获得落实应用,因此现在如果选择无监督学习,基本上是可以确定未来要走科研之路的。

至于为什么无监督学习未获得真正的落实,是因为在同等条件下,无监督模型的表现与性能要比深度学习模型略差一些,因此企业更倾向于选择性能更优的深度学习模型。

虽说这样,也是同样有企业在花费巨额资金来投入科研的,对于个人发展来说,未来也是可以考虑去某科研机构发展。

学习无监督学习要面对的学习要求

学习无监督学习,要掌握概率论和统计原理的基本理解,并且能够理解数学与算法的关系。除此之外,根据你具体选择的方向也会有相应的学科理论。

如果你选择了对抗学习这个方向,你需要面对如下理论:

  1. 博弈论
  2. 优化理论
  3. 凸函数
  4. 复分析
  5. 对偶理论
  6. 高维空间下的概率论与线性代数
  7. 数字图像处理
  8. 数字信号处理
  9. 信号与系统
  10. ……

无监督学习如何入门?

  1. 在本科阶段首先应该重视数学学科,高数、概率论与数理统计等。即使是大一,自己应该根据自己的实际情况学习概率论,这样在后面学习的时候对自己的理解也颇有裨益。

  2. 要重视理论,尤其是当你打算走科研的时候。或许在深度学习领域这里,你可能按照自己的猜想与理解尝试一些trick的组合后能得到效果的改进,但是这在无监督学习里会很难走,因为可能你的某种改动就会破坏掉原有的一些重要性质,尤其是不巧你又选了子方向对抗学习方向的时候,甚至会破坏掉某种平衡,这些都意味着模型大幅受损,这与深度学习领域的区别比较大。

  3. 要注重实操,实践是检验真理的唯一标准,因此不论设计的理论有多厉害多优秀,如果最终实验没能出结果,就说明理论还是不够准确,应该耐下心来,继续修改打磨你的理论。


  4. 做好以上觉悟后,就要开展无监督学习的入门了。

  5. 初次接触,建议先学习相关的经典算法,并尝试理解算法的背后思想,学习过程中也不要忘了关注理论设计与代码实践的具体对应关系。

  6. 当你接触了一段时间后,自己应该有一定程度的理解了,这时可以开始考虑自己想专精的某一方向了,我目前在做的是对抗学习这个方向。如果在为选择方向感到茫然的话,需要先看相应的综述论文,以便第一时间了解与掌握当前学术界的前沿问题,这样也会让你有一个初步的系统性知识体系。

  7. **当你选定某一个方向后,这个时候的你已经不能算是入门了,可以说是这个领域的一个新星。**这个时候我要推荐你学习主流框架(如PyTorch、TensorFlow 2.x等)的使用,学习整个机器学习的基本理论,建议在本科阶段打牢完整的知识架构体系。为了构建严谨、准确且完整的知识体系,我建议你去阅读《深度学习》(俗称“花书”)和《动手写深度学习》这两本书,还可以考虑阅读《机器学习》(俗称“西瓜书”),另外,为了让你不在数学方面上会产生疑惑,建议阅读《统计机器学习方法》(李航 著)来理解理论的构建与推导。

  8. 准备以上的学习资料以及下好苦心修炼的决心后,就可以正式开始在你选择的方向这里开始深入学习,一般而言比较理想的学习顺序应该是从最早的第一篇论文开始学起。阅读这第一篇论文一定要静下心来耐心阅读,尽力让自己适应英文刊物的阅读,不会的生词去查就是了,特别不推荐使用自动机器翻译,从理论上认为会导致信息传递的损失。在学习中请重视这第一篇论文,因为它是开山之作,这对于你去理解抽象理论大有裨益,一定要弄到熟稔于心才可进行下一步的学习。

    在这次学习中你要明白,他发现了什么问题?他做了什么?为什么这样做?效果又是如何的?他又产生或者导致了哪些问题?

  9. 当你走好第一步后,后面的步伐该如何去走,你自会明白。

剩下我想说的应该是:

无监督学习有什么经典算法?参考链接open in new window

  • 聚类方法(层次聚类、k均值聚类「硬聚类」、高斯混合模型「软聚类」)

  • 奇异值分解(SVD)

  • 主成分分析(PCA)

  • 潜在语义分析(LSA)

  • 概率潜在语义分析(PLSA)

  • 非负矩阵分解(NMF)

  • 潜在狄利克雷分配(LDA)

  • PageRank算法

  • 马尔可夫链蒙特卡罗法(MCMC,包括Metropolis-Hastings算法、吉布斯抽样)

  • 变分推理

  • 幂法


  1. 对象指数据集在描述的具体物体、人和动物等等,或者是在描述某个特定的抽象概念,比如衣服、人类、猫科动物等等。 ↩︎

  2. 标签指人给对象做的标注信息,标注信息可以由某个特征描述,也可以是由组合的特征共同描述。比如分类任务中的各分类名称「人、马、狗、猫、猪……」,目标检测任务中每个物体在图像中的所在位置(位置由框的左上角坐标、框宽、框高描述)和物体类别组合到一起共同作为标签。 ↩︎