概述
正是这个技巧使度量学习和目标检测快速准确地收敛。
深入探讨
当使用三元组或对比损失进行训练时,大多数随机采样的负样本已经远离锚点,因此它们产生零损失并且没有梯度,训练停止。负面挖掘通过选择硬负面来解决这个问题:错误地接近锚点的示例。在离线挖掘中,您需要定期扫描数据集来查找这些数据,但这种方式速度很慢并且会变得陈旧。在线挖掘在每个小批量中动态计算它们:在前向传递之后,您查看批量中的所有成对距离并选择最难的违规者。 FaceNet引入了半硬挖掘,选择比正值更远但仍在边缘内的负值,避免了绝对最难的负值在训练早期可能导致的不稳定。
现实世界的实施
人脸识别训练:FaceNet 使用半硬在线挖掘来学习区分相似个体的嵌入。
对象检测:SSD 和类似的检测器应用硬负挖掘来平衡大量的简单背景框和稀有对象框。
密集段落检索:搜索和 RAG 系统挖掘看似相关但实际上并不相关的硬负面文档,从而提高检索器的性能。
推荐系统:对用户未点击但与点击的项目相似的项目进行建模,从而在口味上进行更精细的区分。
在线和硬负挖掘的未来
训练困难的原则现在推动了对比自监督学习,其中大型批内负池(以及像 MoCo 这样的记忆库)在没有标签的情况下提供困难的比较。研究人员正在完善负面的难度,因为太难的负面往往会被贴错标签或几乎与正面重复,从而破坏训练。期望模型本身生成更智能、具有不确定性感知的挖掘和合成硬否定,以及与从真实用户查询中挖掘硬否定的检索系统更紧密的集成。
付诸实践
为什么这很重要
- 成本与预算. 多年来,架构决策决定着性能和运营成本。
- 更清晰的判决. 技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。
- 质量控制. 更好的工程选择可以减少生产中的可靠性事故。
留意
- 优化一项基准测试可以隐藏更广泛的系统弱点。
- 基础设施和维护成本常常被低估。
- 随着系统变得更加复杂,安全性和可观察性差距可能会扩大。
后续步骤
- 在实施之前定义延迟、质量和成本目标。
- 在实际负载和数据条件下进行基准测试。
- 仪器监控错误、漂移和用户影响。
- 在扩展之前准备回滚和事件响应路径。
不断探索
常见问题
什么是在线和硬负挖掘?
硬负挖掘选择信息最丰富、难以区分的示例进行训练,而不是将精力浪费在模型已经正确的简单示例上。正是这个技巧使度量学习和目标检测快速准确地收敛。
为什么大多数随机采样的负样本在三重态损失中提供的训练信号很少?
简单的负数远远超出了边界,已经满足了损失,并且基本上没有贡献梯度,因此训练停止。
在线挖矿和离线挖矿有什么区别?
在线挖掘每一步都会计算当前批次内的成对距离,而离线挖掘会定期扫描整个数据集,并且可能会过时。
FaceNet 中定义的“半困难”负片是什么?
半困难负样本比正样本距离锚点更远,但仍落在边缘内,从而提供有用、稳定的梯度,而不会出现绝对最困难情况的不稳定。
在批量硬挖掘中,为每个锚点选择哪个负数?
批量硬挖掘选择最困难的情况:对于每个锚点,它采用批次中最远的正值和最近的(最令人困惑的)负值。
为什么较大的批量大小往往会改善挖掘的度量学习结果?
更大的批次会产生更大的成对距离矩阵,因此有更多的候选负数可以从每个步骤中挖掘最难的。