TensorFlow 2.0神经网络实践
上QQ阅读APP看书,第一时间看更新

1.3 无监督学习

与有监督学习相比,无监督学习在训练阶段不需要带标注的示例数据集,只有在测试阶段,当我们想要评估模型的性能时才需要标注。

无监督学习的目的是发现训练集中的自然划分。这是什么意思?想想MNIST数据集,它有10个类别,我们知道这一点,因为每个示例在[1,10]范围内都对应不同的标签。一个无监督学习算法必须发现数据集中有10个不同的对象,并通过在没有事先了解标签的情况下查看示例来实现。

显然,与有监督学习算法相比,无监督学习算法具有挑战性,因为它们不依赖于标签的信息,它们必须自己发现标签的特征并学习标签的概念。尽管具有挑战性,但它们的潜力是巨大的,因为它们能在数据中发现人类难以检测到的模式。需要从数据中提取价值的决策者经常使用无监督学习算法。

考虑一下欺诈检测的问题:有一组交易,人与人之间交换了巨额资金,并且你不知道其中是否存在欺诈交易,因为在现实世界中没有标签!

在这种情况下,应用无监督学习算法可以帮助你找到正常交易的自然分区,并帮助你发现异常值。

离群点是指数据中发现的任何分区(也称为类簇)之外的点,通常是远离这些分区的点,或者是分区本身具有某些特定特征的点,这些特征使其不同于普通分区。

因此,无监督学习经常用于异常检测任务以及许多不同的领域:不仅用于欺诈检测,还用于图像、视频流、来自生产环境中传感器的数据集流等的质量控制。

无监督学习算法也是两阶段算法。

·训练和验证:由于训练集内没有标签(如果存在的话,它们应该被丢弃),所以训练该算法来发现数据中存在的模式。如果有一个验证集,它应该包含标签。模型的性能可以在每轮训练结束时进行测试。

·测试:在算法的输入中给出标注数据集(如果存在这样的数据集),并将其结果与标签的信息进行比较。在这一阶段,我们使用标签的信息来度量算法的性能,以验证算法学会从人类也能检测到的数据中提取模式。

仅针对这些示例,无监督学习算法不是根据标签类型(作为有监督学习算法)进行分类,而是根据它们发现的内容进行分类。

无监督学习算法可分为以下几类。如图1-8所示。

·聚类:目的是发现类簇,即数据的自然分区。

·关联:在这种情况下,目标是发现描述数据及其之间关联的规则。这些通常用于提供建议。

图1-8 无监督学习系统有两大类算法

关联学习算法是数据挖掘领域的强大工具,它们被用来发现规则,例如“如果一个人正在购买黄油和面包,他可能也会购买牛奶”。学习这些规则在商业上是一个巨大的竞争优势。通过回顾前面的示例,为了最大限度地提高销售,商店可以把黄油、面包和牛奶放在同一个货架上售卖!

在聚类算法的训练阶段,我们感兴趣的是度量模型的性能,就像在有监督学习情况下一样。在无监督学习算法中,度量指标更为复杂,且依赖于要解决的任务。我们通常所做的是利用数据集中存在的、但在训练期间没有使用的额外标签,从而将问题重新引导到有监督学习问题上,并使用常用的度量指标。

在有监督学习的情况下,存在参数化模型和非参数化模型。

大多数非参数算法通过度量数据点与数据集中其他数据点之间的距离来实现的。然后,利用距离信息对不同区域的数据空间进行聚类。

像有监督学习案例一样,多年来已经开发了许多算法来寻找非标注数据集中的自然分区或规则。然而,神经网络已经被应用于解决无监督学习任务,并且取得了优异的性能,显示出了非常灵活的特性。这是本书仅关注神经网络的另一个原因。

无监督学习算法明确要求在训练阶段不包含任何标签信息。然而,既然标签可能存在于数据集中,为什么不利用它们的存在,同时仍然使用ML算法来发现数据中的其他模式呢?