DeepSeek 通过结合诸如加权损失函数、数据重采样和阈值调整等技术来解决微调期间的类别不平衡问题。这些方法确保模型不会过度偏向多数类别,同时保持在代表性不足的类别上的性能。该方法实用且根据特定的不平衡严重程度和数据集特征进行定制。
首先,DeepSeek 使用**加权损失函数**来调整训练期间类别的权重。 例如,在二元分类任务中,95% 的样本为负样本,则错误分类稀有正样本的损失乘以一个权重(例如,对于 1:19 的不平衡,权重为 19 倍)。 这迫使模型优先纠正少数类别中的错误。 在像 PyTorch 这样的框架中,可以通过将类权重传递给损失函数来实现这一点(例如,nn.CrossEntropyLoss(weight=class_weights)
)。 开发人员可以计算与类别频率成反比的权重,或者凭经验调整它们。 这种方法效率很高,不需要修改数据集,使其适合大规模训练。
其次,应用**数据重采样**来平衡类别分布。 例如,通过复制样本或使用 SMOTE(Synthetic Minority Oversampling Technique,合成少数类过采样技术)等技术生成合成数据来对少数类进行过采样,有助于使模型接触到更多不同的示例。 相反,对多数类进行欠采样会减少冗余,但有丢失有价值数据的风险。 DeepSeek 通常结合两者:例如,对稀有类别(例如,医疗异常)进行过采样,同时随机对频繁类别(例如,正常病例)进行欠采样。 此外,小批量采样策略可确保每个训练批次都具有平衡的混合,从而防止模型在单个梯度更新中偏向多数类。 像 imbalanced-learn
库或自定义数据加载器之类的工具简化了此过程。
最后,**后处理调整**优化预测。 训练之后,DeepSeek 可能会调整决策阈值(例如,降低少数类别的阈值)以提高召回率。 例如,在欺诈检测中,将阈值从 0.5 更改为 0.3 可能会标记出更多潜在的欺诈案例。 诸如 F1 分数或精确率-召回率曲线之类的指标会指导这些更改,而不是仅仅依靠准确性。 集成方法,例如在重采样的数据子集上训练多个模型并平均预测,可以进一步稳定性能。 这些步骤与在平衡的验证集上进行的严格评估配对,以避免过度拟合。 通过系统地解决多个阶段的不平衡问题,DeepSeek 确保模型保持稳健性并有效地泛化到所有类别。