M7-010M7: Retrieval, Ranking & RecSysDense Retrieval & Dual-EncodersMedium
Mastery:
Dense Retrieval & Dual-Encoders: 解释难负样本挖掘的作用与方法。
📐 Mathematical Definition
⚡ Executive Summary
Core Concept: 随机负样本太易(梯度小);难负样本(相似但不相关)提供更强信号;方法:BM25 挖、模型挖、迭代挖。
📌 Key Takeaways
- •随机负样本:太易(模型已能区分,梯度小)
- •难负样本:模型认为相似但不相关 → 强梯度信号
- •方法:BM25 挖、当前模型挖、迭代挖掘;需防'过难'与假负样本
📐 Mathematical Derivations
数学机理:<strong>负样本难度的谱系</strong>——(1) <strong>随机负样本(easy negatives)</strong>——从语料随机采样;<strong>问题</strong>——与查询'毫不相关',模型已能轻松区分(相似度低),故<strong>梯度信号弱</strong>(对比损失中它们的 e^{s/τ} 很小)。(2) <strong>难负样本(hard negatives)</strong>——与查询'相似但不相关'(如主题相同但没回答问题);<strong>优点</strong>——模型的相似度较高,故在 softmax 中占显著权重,<strong>梯度信号强</strong>(迫使模型学习'细粒度区分')。(3) <strong>过难负样本(too hard / false negatives)</strong>——实际<strong>相关</strong>但被当作负样本(如'同一问题的另一个正确答案');<strong>危害</strong>——教模型'把相关文档推远'(<strong>有害梯度</strong>);故需识别与过滤。<strong>挖掘方法</strong>——(a) <strong>BM25 挖</strong>——用 BM25 检索 top-k,取'排名靠前但不相关'的;<strong>优点</strong>——便宜、无需训练;<strong>缺点</strong>——BM25 的'难'与嵌入模型的'难'不完全一致。(b) <strong>模型挖(model-based)</strong>——用<strong>当前嵌入模型</strong>检索 top-k,取'相似度高但不相关'的;<strong>优点</strong>——针对模型的弱点;<strong>缺点</strong>——需训练/迭代(冷启动时无模型)。(c) <strong>迭代挖掘(iterative)</strong>——先用 BM25 挖训练第一版模型 → 用该模型挖更难负样本 → 再训练;<strong>优点</strong>——逐步提升难度;<strong>缺点</strong>——多轮训练成本。(d) <strong>跨 batch 挖</strong>(cross-batch negatives)——用更大范围的候选(配 GradCache)。(e) <strong>生成式</strong>——用 LLM 生成'看似相关但错误'的负样本。<strong>'太难'的问题</strong>——(a) <strong>假负样本</strong>(实际相关)→ 有害;(b) <strong>训练不稳</strong>(过难负样本使损失难降、梯度大);故常用'<strong>半难(semi-hard)</strong>'——即'比正样本稍远但仍比随机近'的负样本(FaceNet 的 semi-hard mining 思想)。<strong>避免假负样本的方法</strong>——(a) <strong>人工/自动标注</strong>(判定是否真不相关);(b) <strong>多模型交叉验证</strong>(多模型都认为不相关才用);(c) <strong>去偏损失</strong>(如'对高相似度的负样本降权');(d) <strong>从高质量数据构造</strong>(如用'同一问题的不同答案'作为正、'其他问题的答案'作为负)。<strong>实证</strong>——(a) 难负样本显著提升检索效果(DPR 加 1 个 BM25 难负样本即提升);(b) 但'过多/过难'会损害(故需平衡);(c) 有研究显示'半难负样本'最优。<strong>实践</strong>——(a) <strong>起步</strong>用 in-batch negatives(零成本);(b) <strong>加</strong> BM25 或模型挖的难负样本(1~7 个/查询);(c) <strong>迭代</strong>挖掘(逐步提升难度);(d) <strong>防假负样本</strong>(标注/交叉验证/去偏);(e) <strong>监控</strong>(训练损失与验证指标)。<strong>度量</strong>——(a) 召回指标(Recall@k);(b) 难负样本的'难度分布';(c) 假负样本率。
🏭 Production Trade-offs
深度剖析与工程权衡:① <strong>'负样本难度决定信号强度'是核心</strong>——随机负样本太易(梯度小)、难负样本提供强信号;面试中能指出这一点是深度理解的标志。② <strong>'半难负样本最优'</strong>——太易无信号、太难有假负样本风险;故需在中间。③ <strong>'假负样本是有害的'</strong>——它会教模型'把相关文档推远';故需识别与过滤(这是实践中的关键细节)。④ <strong>'BM25 挖 vs 模型挖'</strong>——前者便宜但'难'的定义不匹配;后者针对模型弱点但需迭代。⑤ <strong>'迭代挖掘'是提升效果的标准流程</strong>——多轮训练逐步提升负样本难度。⑥ <strong>面试要点</strong>——被问'难负样本怎么挖',应给出'<strong>难度谱系(随机/难/过难)+ 方法(BM25/模型/迭代)+ 防假负样本 + 半难最优</strong>';能指出'假负样本有害'是深度理解的标志。
⚠️ Common Interview Pitfalls
- ✕只用随机负样本(信号弱)
- ✕用过难负样本不检查假负样本(有害梯度)
🎯 Interviewer Follow-ups
- ?为什么'太难'的负样本反而有害?
- ?如何避免假负样本?
📚
Associated Knowledge Base Guides & Mindmaps
Explore the comprehensive technical article, exam cards, and global architecture tree.