当前位置: 首页 > news >正文

教授你的模型从自身学习

原文:towardsdatascience.com/teaching-your-model-to-learn-from-itself-8b5ef13eb173?source=collection_archive---------1-----------------------#2024-09-16

基于迭代和置信度的伪标签分类案例研究

https://medium.com/@niklasvmoers?source=post_page---byline--8b5ef13eb173--------------------------------https://towardsdatascience.com/?source=post_page---byline--8b5ef13eb173-------------------------------- Niklas von Moers

·发表于 Towards Data Science ·6 分钟阅读·2024 年 9 月 16 日

在机器学习中,更多的数据通常会带来更好的结果。但标记数据可能非常昂贵且耗时。如果我们能够利用通常很容易获得的大量未标记数据呢?这就是伪标签方法的用武之地。

TL;DR:我在 MNIST 数据集上进行了案例研究,并通过应用迭代的、基于置信度的伪标签方法,将模型的准确率从 90%提高到了 95%。本文涵盖了伪标签的详细内容,以及我实验中的实用技巧和洞察。

它是如何工作的?

伪标签是半监督学习的一种方式。它弥合了监督学习(所有数据都有标签)和无监督学习(没有标签数据)之间的差距。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/6daf2b07ddb532f3f4dbe1575ddeab4b.png

过程示意图,展示了在 MNIST 数据集上执行的步骤。来源:Yann LeCun、Corinna Cortes 和 Christopher J.C. Burges。根据 CC BY-SA 3.0 许可授权。

我遵循的具体步骤如下:

虽然这种方法可能会引入一些错误标签,但它的好处在于大幅增加了训练数据的数量。

回声室效应:伪标签方法能有效吗?

模型从自己预测中学习的想法可能会引起一些质疑。毕竟,我们不是在尝试从无到有,而是在依赖一个“回音室”,模型只是不断强化自己最初的偏见和错误,不是吗?

这个担忧是合理的。这可能让你想起传奇人物明茨豪森男爵,他曾声称自己通过自己的头发把自己和他的马从沼泽中拉了出来——这是物理上不可能的。类似地,如果一个模型完全依赖于自己可能存在缺陷的预测,它就有可能陷入自我强化的循环,就像那些被困在回音室中的人们,只听到自己信仰的回响。

那么,伪标签化真的可以有效避免陷入这个陷阱吗?

答案是肯定的。虽然明茨豪森男爵的故事显然是一个童话故事,但你可以想象一位铁匠随着时代的进步。他从基本的石器工具(最初的标注数据)开始,利用这些工具从原矿(无标签数据)中锻造出粗糙的铜器工具(伪标签)。这些铜器工具虽然仍然很粗糙,但使他能够进行之前不可行的任务,最终创造出青铜、铁等材料制成的工具。这个迭代过程至关重要:你不能仅用石锤锻造钢剑。

就像铁匠一样,在机器学习中,我们可以通过以下方式实现类似的进展:

当伪标签化正确执行时,它可以成为最大化利用小型标注数据集的强大工具,正如我们在接下来的案例研究中将看到的那样。

案例研究:MNIST 数据集

我在 MNIST 数据集上进行了实验,MNIST 是一个经典的 28×28 像素手写数字图像集合,广泛用于机器学习模型的基准测试。它包含 60,000 张训练图像和 10,000 张测试图像。目标是根据 28×28 像素的图像,预测所写的数字是什么。

我用 1,000 张带标签的图像训练了一个简单的 CNN 模型,剩下的 59,000 张图像没有标签。然后,我用训练好的模型预测无标签图像的标签。对于置信度高于某个阈值(例如 95%)的预测结果,将其添加到训练集中,并标上预测的标签。接着,模型在这个扩展的数据集上重新训练。这个过程反复进行,最多进行十次,或者直到没有更多的无标签数据为止。

此实验使用不同数量的最初标记图像和置信度阈值进行了重复。

结果

以下表格总结了我的实验结果,比较了伪标签与在完整标记数据集上训练的表现。

即使初始标记的数据集较小,伪标签仍然能产生显著的效果,对于 1,000 个初始标记样本,准确率提高了 4.87 个百分点。当仅使用 100 个初始样本时,这一效果更为显著。然而,手动标记超过 100 个样本会更明智。

有趣的是,使用 100 个初始训练样本的实验最终测试准确率超过了正确训练标签的比例。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/d4a4cbc4693970537bde69c9d7f89ca4.png

相较于第一次迭代,按阈值(x 轴)和每次迭代(颜色)计算的准确率提升(y 轴)。更高的阈值和更多的迭代呈现出明显的改善趋势。图像由作者提供。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/6e5333817dec9573ecd7c8d114e0bdfd.png

每次迭代中按阈值划分的正确训练标签的比例和总训练数据点数量。更高的阈值导致更稳健但更慢的标记。图像由作者提供。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/d29c6bdf6c94983a13d687ecb5eccb40.png

每次迭代中按阈值划分的高置信度和低置信度预测的准确率。更高的阈值会导致更好的准确率,但随着时间推移,每个阈值选择的准确率都会下降。图像由作者提供。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/0a15634d4ea5ccafd780fb5816c2aa9f.png

与第一次迭代相比,按阈值对 100 个和 10,000 个最初标记的训练样本(分别位于左侧和右侧)计算的每次迭代的准确率提升。注意不同的刻度。图像由作者提供。

通过观察上述图表,可以明显看出,通常情况下,更高的阈值会导致更好的结果——只要至少有一些预测超过了阈值。在未来的实验中,可以尝试在每次迭代时变化阈值。

此外,准确率在后期迭代中仍然有所提高,这表明迭代的性质确实带来了真正的好处。

主要发现和经验教训

链接

包含实验代码的仓库可以在这里找到。

相关论文:使用深度特征注释和基于置信度的采样的迭代伪标签方法

http://www.jsqmd.com/news/800219/

相关文章:

  • Redis集群高可用:从主从复制到Cluster模式生产实战
  • EdgeDB数组操作完全指南:高效处理多维数据集合的10个技巧
  • 树莓派Wi-Fi配置全攻略:从图形界面到命令行实战
  • ARM GIC-500中断控制器调试架构与实战技巧
  • 2026热镀锌钢格板优选厂家推荐:技术过硬的不锈钢钢格板、压焊钢格板源头厂家 - 栗子测评
  • 继电器驱动器节能模式原理与应用实践
  • 调试与热重载:ASP.NET Core的完美结合
  • 从零到一:手把手教你用Python模拟金属-半导体接触的能带弯曲(附代码)
  • SPT-AKI存档编辑器:终极逃离塔科夫单机版存档修改指南
  • 图像去雾数据集总汇
  • 从TI Z-Stack到你的单片机:OSAL调度器核心源码精讲与移植避坑指南
  • 五年旅程的四个收获
  • 设计模式-工厂模式
  • 超节点大单交付公告时连续中标背后的“隐性护城河”:宝德的运营商生意为什么越做越稳
  • AR/VR立体深度计算优化:SteROI-D系统解析
  • GrandNode社区与支持:如何参与开源项目并获得帮助的完整指南
  • FMCP:多通道串口调试与自动化工具实战指南
  • 从‘破解失败’到‘成功弹窗’:复盘一次CrackMe逆向中的常见思维误区与调试技巧
  • Nacos服务发现与配置中心:微服务注册中心实战
  • C++——智能指针 weak_ptr
  • 终极指南:3大微服务性能测试工具对比(JMeter vs Gatling vs k6)
  • 从‘古董’工具Cain看网络安全演进:当年的ARP欺骗与密码嗅探,今天还管用吗?
  • claude-recall:为AI编程助手赋予记忆,自动化你的重复工作流
  • 解决汉化在线版加载后显示英文问题的技术分析
  • 5个方法掌握FModel:解锁虚幻引擎游戏资源的终极指南
  • Free List Allocator实现原理:memory-allocators中的通用内存分配器
  • 网盘直链下载助手:技术实现与高级使用指南
  • 从CTFHub靶场实战,聊聊JWT那些容易被忽略的安全坑(附工具和脚本)
  • NCRF++模型对比分析:CharLSTM vs CharCNN vs WordLSTM性能测评终极指南
  • Vidispine Hull镜像:快速搭建企业级媒体资产管理开发测试环境