什么是半监督机器学习
2022年1月5日整理发布:机器学习已被证明在对图像和其他非结构化数据进行分类方面非常有效,而传统的基于规则的软件很难处理这一任务。但是在机器学习模型能够执行分类任务之前,它们需要在大量带注释的示例上进行训练。数据注释是一个缓慢且手动的过程,需要人类逐一审查训练示例并为其赋予正确的标签。
事实上,数据注释是机器学习的重要组成部分,该技术的日益普及为标记数据带来了巨大的市场。从亚马逊的 Mechanical Turk 到 LabelBox、ScaleAI 和 Samasource 等初创公司,有数十个平台和公司的工作是对数据进行注释以训练机器学习系统。
幸运的是,对于某些分类任务,您不需要标记所有训练示例。相反,您可以使用半监督学习,这是一种机器学习技术,可以在一些帮助下自动执行数据标记过程。
监督与无监督与半监督机器学习
您只需要用于监督机器学习任务的标记示例,您必须在训练期间为您的 AI 模型指定基本事实。监督学习任务的示例包括图像分类、面部识别、销售预测、客户流失预测和垃圾邮件检测。
另一方面,无监督学习处理您不知道基本事实并希望使用机器学习模型来查找相关模式的情况。无监督学习的例子包括客户细分、网络流量异常检测和内容推荐。
半监督学习介于两者之间。它解决了分类问题,这意味着您最终需要一个监督学习算法来完成任务。但与此同时,您希望在不标记每个训练示例的情况下训练模型,为此您可以从无监督机器学习技术中获得帮助。
使用聚类和分类算法的半监督学习
进行半监督学习的一种方法是结合聚类和分类算法。聚类算法是无监督机器学习技术,可根据数据的相似性将数据组合在一起。聚类模型将帮助我们在数据集中找到最相关的样本。然后我们可以标记这些并使用它们来训练我们的监督机器学习模型以进行分类任务。
假设我们想训练一个机器学习模型来对手写数字进行分类,但我们所拥有的只是一个包含未标记数字图像的大型数据集。注释每个示例是不可能的,我们希望使用半监督学习来创建您的 AI 模型。
首先,我们使用 k-means 聚类对我们的样本进行分组。K-means 是一种快速高效的无监督学习算法,这意味着它不需要任何标签。K-means 通过测量样本特征之间的距离来计算样本之间的相似性。在我们手写数字的情况下,每个像素都将被视为一个特征,因此 20×20 像素的图像将由 400 个特征组成。
在训练 k-means 模型时,您必须指定要将数据划分为多少个集群。自然地,由于我们正在处理数字,我们的第一个冲动可能是为我们的模型选择十个集群。但请记住,有些数字可以用不同的方式绘制。例如,您可以通过以下不同的方式绘制数字 4、7 和 2。您还可以考虑绘制 1、3 和 9 的各种方式。因此,一般情况下,您为 k-means 机器学习模型选择的聚类数应大于类数。在我们的例子中,我们将选择 50 个集群,这应该足以涵盖绘制数字的不同方式。
在训练 k-means 模型后,我们的数据将被分成 50 个集群。k-means 模型中的每个集群都有一个质心,一组值代表该集群中所有特征的平均值。我们选择每个集群中最具代表性的图像,它恰好是最接近质心的图像。这给我们留下了 50 张手写数字图像。
现在,我们可以标记这 50 张图像并使用它们来训练我们的第二个机器学习模型,即分类器,它可以是逻辑回归模型、人工神经网络、支持向量机、决策树或任何其他类型的监督学习引擎。
用 50 个示例而不是数千张图像训练机器学习模型听起来可能是个糟糕的主意。但由于 k-means 模型选择了最能代表我们训练数据集分布的 50 张图像,机器学习模型的结果将是显着的。事实上,上面的例子改编自优秀书籍Hands-on Machine Learning with Scikit-Learn、Keras 和 Tensorflow,表明仅在聚类算法选择的 50 个样本上训练回归模型的结果是 92%准确性(您可以在此 Jupyter Notebook 中找到 Python 中的实现)。相比之下,在 50 个随机选择的样本上训练模型会产生 80-85% 的准确率。
但是我们仍然可以从我们的半监督学习系统中获得更多。在我们标记了每个集群的代表性样本后,我们可以将相同的标签传播到同一集群中的其他样本。使用这种方法,我们可以用几行代码注释数千个训练示例。这将进一步提高我们机器学习模型的性能。
其他半监督机器学习技术
还有其他方法可以进行半监督学习,包括半监督支持向量机 (S3VM),这是 1998 年 NIPS 会议上引入的一种技术。S3VM 是一项复杂的技术,超出了本文的范围。但总体思路很简单,与我们刚刚看到的没有太大区别:您有一个由标记和未标记样本组成的训练数据集。S3VM 使用来自标记数据集的信息来计算未标记数据的类别,然后使用这些新信息进一步细化训练数据集。
如果您对半监督支持向量机感兴趣,请参阅原始论文并阅读Machine Learning Algorithms 的第 7 章,该章探讨了支持向量机的不同变体(可以在此处找到 S3VM 在 Python 中的实现)。
另一种方法是在数据集的标记部分训练机器学习模型,然后使用相同的模型为数据集的未标记部分生成标签。然后,您可以使用完整的数据集来训练新模型。
半监督机器学习的局限性
半监督学习并不适用于所有监督学习任务。与手写数字的情况一样,您的类应该能够通过聚类技术分开。或者,就像在 S3VM 中一样,您必须有足够的标记示例,并且这些示例必须涵盖一个公平的代表问题空间的数据生成过程。
但是当问题很复杂并且你的标记数据不能代表整个分布时,半监督学习将无济于事。例如,如果你想对从不同角度看起来不同的物体的彩色图像进行分类,那么半监督学习可能会有很大帮助,除非你有大量的标记数据(但如果你已经有大量的标记数据,那么为什么要使用半监督学习?)。不幸的是,许多实际应用都属于后一类,这就是为什么数据标记工作不会很快消失的原因。
但是半监督学习在简单的图像分类和文档分类任务等领域仍然有很多用途,这些任务可以使数据标记过程自动化。
半监督学习是一项出色的技术,如果您知道何时使用它,它就会派上用场。