深度学习 (DL) 算法通常依赖于大量标记数据对。然而,就成本和时间而言,收集此类带注释的数据集通常是昂贵的。ImageNet 是当今最大的图像数据库,包含大约 1400 万张图像。其中的每张图片都由几位注释者使用名为 Amazon Mechanical Turk 的众包平台手工注释。还有其他一些图像数据集,如 PASCAL VOC 和 MS COCO,与 ImageNet(分别为 10k 和 100k)相比,它们包含的图像要少得多,并且可以在此类数据集上令人满意地训练 DL 网络以学习新任务。然而,深度学习文献的总体趋势表明,如果添加越来越多的数据,模型的性能可以进一步提高。
迁移学习
如上所述,深度学习算法本质上是需要大量数据的方法,需要大量数据来估计其数百万个参数。此属性有效地使其对训练数据有限的问题毫无用处。然而,DL 模型具有这种非凡的能力,其中在大型数据集上学习的表示可以有效地转移到训练数据量有限的任务中。[2] 探索了应用这个想法并将其应用于在有限的标记数据上训练深度 CNN 模型。观察到
CNN 可以作为中级图像表示的通用提取器,可以在一个数据集(源任务)上进行预训练,然后在其他目标任务上重新使用。
作者在 1000 类 ImageNet 数据上预训练了一个网络,并用于对 Pascal VOC 数据执行对象检测。与现有的基线结果相比,应用这种方法,他们能够显着提高性能。此外,迁移学习在其他计算机视觉任务中显示出巨大的潜力,例如分割 [3] 和识别 [4]。
虽然,迁移学习是在训练数据有限的情况下提高任务收益的一个非常有用的技巧,但它并没有利用互联网上可用的大量未标记数据。此外,如果任务涉及语音或文本识别**,它必须注释一部分目标数据**,这可能会被证明是相当多的。在这种情况下,必须手动正确转录每个单词和话语,这可能非常繁琐且耗时。
半监督学习
上述这些缺点可以通过半监督学习算法轻松克服,这些算法的设计方式是它们可以处理标记和未标记的数据。考虑谷歌图片或 Instagram。一个简单的查询可以为您获取数以千计的结果。但是,检索到的图像是非结构化和未注释的,如果我们使用监督学习算法,则无法使用。另一方面,半监督学习算法不仅利用标记的目标数据,还利用无数的未标记数据来学习更好的表示。这一特性使 SSL 算法优于传统的微调方法。主要存在两种实现 SSL 的方法。第一种方法涉及通过不同的增强和扰动传递未标记的图像。由于图像是恒定的,模型预测不应受到扰动的影响并预测相同的标签。强制模型在一组不同的噪声/扰动下做出相同的预测可以作为正则化的来源,并与监督损失项一起,帮助 DL 模型在测试过程中实现更稳定的泛化,并帮助模型学习更健壮的不变特征 [5, 6]。第二种方法涉及推断未标记数据的标签,然后是(它有助于 DL 模型在测试期间实现更稳定的泛化,还有助于模型学习更稳健的不变特征 [5, 6]。第二种方法涉及推断未标记数据的标签,然后是(它有助于 DL 模型在测试期间实现更稳定的泛化,还有助于模型学习更稳健的不变特征 [5, 6]。第二种方法涉及推断未标记数据的标签,然后是(伪标记数据)用于训练具有监督损失项的模型。第二种方法也称为伪标记属于转导学习类别,其中标记和未标记的数据都用于提高模型的性能。可以通过两种方式推断未标记数据的标签。1) 通过构建一个图并将标签从已知数据点传播到未知数据点,以及 2) 通过使用现有的预训练分类器来调用未标记数据点的标签。
标签传播
标签传播 [7, 8] 处理标记和未标记数据点之间的图的构建,该图稍后用于使用集群假设将标签从标记数据传播到未标记数据。标签传播包括两个步骤:图的构建和推理。在图构建阶段,标记数据和未标记数据的数据点形成节点,边表示数据点之间的相似性。较大的边缘权重表明数据点之间的相似性较高,反之亦然。创建图的最常用技术是使用聚类算法,例如 kNN,其中使用基于欧几里得的距离函数来获得边缘权重。在推理阶段,
自我训练
自训练 [9, 10] 是最早尝试使用未标记数据来提高模型性能的尝试之一。自训练包括两个阶段:最初,使用监督方法在有限数量的标记数据上训练模型。在下一阶段,学习模型用于预测未标记数据点的标签。最后,模型在标记数据和未标记数据上进行训练,其中未标记数据的预测被视为目标标签。自训练的主要问题之一是初始训练模型可能会错误地预测大量未标记的数据。这可能会降低模型在训练时的性能而不是改进。应注意尽量减少训练集中噪声预测的数量。这样做的一种方法是有效地筛选预测并仅包括模型高度自信的那些预测。尽管采取了筛选措施,一些嘈杂的预测仍然设法渗透到训练数据中,这阻碍了 ML 算法的学习。该领域的大多数工作都讨论了对输入数据或模型提供扰动作为克服确认偏差的一种方式。我们将在接下来的几节中看到如何将线性扰动称为mixup [11] 以及其他一些正则化方法用于提高文本识别系统在未标记目标数据集上的性能。
在下一篇文章中,我们将尝试在经典的计算机视觉问题(文本识别或更常见的 OCR)上实现自训练算法。
Ref: https://deepayan137.github.io/blog/markdown/2020/08/12/Self-Training.html