【面试题】如何构造排序模型训练数据?解决正负样本不均?
训练数据构造方法:
-
基于隐式反馈
- 正样本:有点击的查询-文档对
- 负样本:有展示无点击的查询-文档对
- 注意:需要去噪,排除误点击和位置偏差
-
基于显式反馈
- 人工标注相关性标签(0-4分)
- 众包标注,确保标注一致性
- 成本:较高但质量最好
-
合成数据生成
- 使用LLM生成困难负样本(hard negatives)
- 通过查询改写生成扩展正样本
- 效果:显著提升模型泛化能力
解决正负样本不均的方案:
-
采样策略
- 负采样:随机采样负样本,控制正负比例(1:2到1:4)
- 难例挖掘:选择模型当前分错的样本加强训练
- 动态采样:根据训练进度调整采样策略
-
损失函数优化
- Focal Loss:降低易分类样本的权重,聚焦难样本
- Class-weighted Loss:为少数类样本赋予更高权重
- Pairwise Ranking Loss:直接优化排序指标而非分类准确率
-
数据增强
- 查询改写:使用同义替换、释义生成扩充正样本
- 负样本增强:使用不相关文档构造困难负样本
- 跨域迁移:利用其他领域数据预训练,本领域微调
-
集成方法
- 多模型集成:训练多个不同采样策略的模型集成
- Bagging/Boosting:使用集成学习技术改善样本不均问题
实践经验: 在我们的系统中,结合Focal Loss和难例挖掘,在正负比1:100的情况下仍能取得良好效果,AUC达到0.85+。