在机器学习中,并非所有学习过程都相同。您可能熟悉那些学习预测结果的模型,例如根据房屋面积和卧室数量预测房价,或将电子邮件分类为垃圾邮件或非垃圾邮件。这些都是监督学习的常见例子。在监督学习中,算法从已经包含“答案”或“标签”的数据中学习。模型基本上会获得输入及其对应的正确输出示例,其任务是学习它们之间的对应关系。但如果没有这些明确的标签会怎样呢?如果您面临大量数据,并且目标是让机器自行找出有趣的模式、结构或关系,而没有任何预设的答案呢?这正是无监督学习的范畴。您可以将其想象成给一位历史学家一堆古代文物,却没有附带任何文字说明。他们的任务将是检查这些文物,比较它们,并尝试根据文物本身的固有特性来推断创造它们的文明的文化、技术或社会结构。无监督学习是机器学习的一个分支,其算法在未经标注、分类或归类的数据上进行训练。主要目标不是根据输入预测特定的输出,而是查看数据并找出其内部的固有结构或模式。算法会检查数据,并尝试识别相似点、不同点、分组或潜在原理,而无需明确指示这些可能是什么。我们来用一个简单的比喻。想象一下,您获得了一个装满各种积木的杂乱盒子。您不知道它们的官方名称,也不知道它们“应该”如何分类。在无监督的方式下,您可能会开始对它们进行分类。也许您会按颜色(所有红色积木放一起,所有蓝色积木等)、或按形状(立方体、圆柱体、金字塔),甚至按大小来分组。您纯粹根据这些积木可观察到的特征,在没有任何事先指令或标签的情况下,发现组织它们固有的方式。一个无监督机器学习模型以类似的精神处理数据。无监督学习技术可用于多种任务,包括:聚类: 这项任务是将一组对象分组,使得同一组(称为聚类)中的对象彼此之间比与其他组中的对象更相似。例如,一家电子商务公司可能会使用聚类来识别其客户群的不同细分市场,这是根据他们的浏览历史和购买模式进行的,即使公司最初没有预设的客户类型。graph G { rankdir=TB; layout=neato; node[style=filled, shape=circle, width=0.2, label=""]; A -- B; A -- C; B -- C; D -- E; D -- F; E -- F; G -- H; G -- I; H -- I; A[pos="1,2!", fillcolor="#ff8787"]; B[pos="1.3,1.7!", fillcolor="#ff8787"]; C[pos="0.7,1.7!", fillcolor="#ff8787"]; D[pos="2.5,2.5!", fillcolor="#74c0fc"]; E[pos="2.8,2.2!", fillcolor="#74c0fc"]; F[pos="2.2,2.2!", fillcolor="#74c0fc"]; G[pos="1.5,0.5!", fillcolor="#8ce99a"]; H[pos="1.8,0.2!", fillcolor="#8ce99a"]; I[pos="1.2,0.2!", fillcolor="#8ce99a"]; X[pos="3,0.8!", fillcolor="#adb5bd"]; Y[pos="0.5,1!", fillcolor="#adb5bd"]; }数据点根据相似性形成不同的聚类,其中包含一些未聚类的点。维度降低: 数据集,尤其是在现代应用中,可能包含数量众多的特征(或维度)。处理和分析这种高维数据计算成本可能很高,有时还会掩盖真正的模式。维度降低技术旨在减少特征数量,同时保留最重要的信息。这就像为一份非常冗长详细的报告创建一个简洁的摘要;摘要短得多,但仍传达了主要观点。您将在本课程中学习到,自编码器对此特别有效。异常检测: 这涉及识别那些显著偏离大部分数据且不符合预期模式的数据点、事件或观察结果。例如,检测网络流量中可能表明入侵的异常模式,或在生产线上识别稀有的缺陷产品。自编码器在这方面非常有用,因为它们可以学习“正常”数据是什么样子,从而更容易标记出偏差。那么,自编码器在这里有何作用呢?自编码器是本课程的重点,它是一种特定类型的人工神经网络,主要用于无监督学习任务。正如本章开头所述,它们的主要目的是学习输入数据的有效、压缩表示(常称为编码或潜在表示),然后尽可能准确地从这些压缩版本重建原始输入。这种学习有效压缩数据的过程,无需被告知哪些特征是重要的,本质上是一项无监督任务。自编码器必须自行找出如何将数据的核心提炼成更紧凑的形式,这种形式仍保留足够信息以忠实重建。自编码器学习到的压缩表示可以被视为一组新的、习得的特征,或原始数据的较低维度投影。这种能力使得自编码器成为无监督学习工具集中的一个强大且重要的工具,尤其适用于特征学习和维度降低。为了说明这一点,想象您有一个包含数千张手写数字图片(0到9)的数据集,但值得注意的是,这些图片是未标注的,您不知道哪张图片对应哪个数字。这是一个无监督学习问题。如果您在这些图片上训练一个自编码器,它将学习接收一张输入图片,将其压缩成一组小得多的数值(编码表示),然后尝试从这种紧凑形式重建原始图片。在此过程中,自编码器可能会学习到,例如,某些数字中常见的特征笔画、曲线或循环,或书写风格的变体,所有这些都无需被明确告知“这张图片是‘7’”或“那张图片是‘3’”。它只是通过努力擅长压缩和重建来学习这些潜在模式。