微调数据为什么要去重?
简化版
重复样本会被训练多次,相当于给某些事实、模板和风格更高权重,容易造成背诵、回答模式单一和长尾覆盖下降。训练集与验证集近重复还会让指标虚高,掩盖真实泛化能力。
去重应分层进行:规范化后用哈希去精确重复;用 MinHash/SimHash 发现大段重叠;用 Embedding 或模板聚类发现语义近重复。删除时要保留来源质量更高的代表样本,并保护合法高频意图和低资源语言。
去重不是把相似内容全部删除,而是校正无意的采样权重,并阻断跨集合的信息泄漏。
详细版
假设一个模板被复制 1000 次,其他任务各出现 10 次。在逐样本均匀采样中,该模板的梯度贡献可能是普通任务的 100 倍,即使团队从未显式设置权重。
Jaccard 相似度可比较两个 shingles 集合:
J(A,B) = |A∩B| / |A∪B|
MinHash 用较小签名近似 Jaccard,再用 LSH 找候选对,适合大规模文本重叠检测。
| 方法 | 擅长发现 | 优点 | 局限 |
|---|---|---|---|
| 内容哈希 | 字节/规范化后完全相同 | 快、精确 | 抓不到改写 |
| MinHash + LSH | 大段词片重叠 | 可扩展 | 对语义改写弱 |
| SimHash | 局部文本相似 | 索引简单 | 阈值依赖语料 |
| Embedding 聚类 | 语义近重复 | 能抓同义改写 | 成本高、会误合并 |
| 模板抽取 | 槽位替换数据 | 可解释 | 需要领域规则 |
完整版教学
1. 重复数据如何改变训练目标
经验风险对每条样本求平均,重复样本会多次进入总和,等价于更高权重。模型更倾向复现其答案结构和事实。
有意过采样是可控策略,无意重复则缺少记录和评估,二者必须区分。
2. 精确重复有哪些来源
多次抓取、数据管道重跑、供应商重叠、格式转换和合并版本都可能产生完全重复。先统一换行、空格、Unicode 和无意义元数据,再计算内容哈希。
原始哈希与规范化哈希都可保留,帮助区分字节重复和内容重复。
3. 为什么近重复更难发现
添加前缀、替换实体、调整顺序或轻微改写后,哈希完全不同,但训练信息几乎相同。SFT 合成数据常用固定模板批量替换名词,尤其容易出现。
近重复会降低有效样本量,使验证集看似大,实质只覆盖少数模式。
4. MinHash 如何近似集合相似度
将文本切成 n-gram shingles,多个随机哈希取最小值组成签名。两条文本签名相等比例近似 Jaccard。
LSH 把签名分 Band,只比较落入同桶的候选,避免全量 O(N²) 两两比较。
signature(doc) = [min(h1(shingles)), ..., min(hk(shingles))]
estimated_Jaccard ≈ equal_signature_positions / k
5. n-gram 与阈值如何选择
较短 n-gram 对局部变化敏感但误报多,较长则可能漏掉改写。短问答与长文档不能使用完全相同参数。
阈值必须用人工标注候选对校准;直接复制其他语料的 0.8 阈值,可能删掉大量合法相似问题。
可按长度、语言和来源分别设置策略。
6. Embedding 去重为何有用也危险
向量能发现“如何重置密码”和“忘记密码怎么办”这类语义相似,但也可能把问题相似、答案边界不同的样本合并。
例如不同地区退款政策的问法几乎相同,删除其中一个会丢失关键条件。Embedding 适合召回候选,最终由规则或人工确认。
7. 对话数据应该按什么单位去重
可在消息级、轮次级和完整会话级检查。只比较用户问题会误删上下文不同的回答;只比较整会话又会漏掉重复回答模板。
| 单位 | 发现问题 | 注意点 |
|---|---|---|
| 单消息 | 固定 Prompt/答案重复 | 缺少上下文 |
| 轮次对 | 相同问答模板 | 多轮状态可能不同 |
| 整会话 | 全流程复制 | 长度使相似度稀释 |
通常多层同时运行。
8. 去重与验证集切分顺序
先在全数据上聚类去重,再以重复簇或模板簇为 Group 切分。这样同簇不会跨 Train/Validation。
切分后再做跨集合审计,查看最大相似样本对。只在分区内部去重无法阻止泄漏。
9. 一个重复簇保留哪条
优先保留来源可信、答案正确、格式完整、许可清楚、元数据丰富和时间更新的样本。不要随机保留把高质量样本删掉。
若多条包含互补上下文,可合并或保留不同条件,并记录选择原因和 Cluster ID。
10. 合法高频意图为什么不能全删
“重置密码”等高频意图在真实流量中确实重要。去重后可通过显式采样权重恢复真实频率,而不是保留成千上万内容相同的副本。
显式权重可审计、可调节,也不污染有效样本量统计。
11. 如何防止对低资源数据误伤
小语种或少数领域样本少且表达相似,统一阈值可能删除过多。按语言和领域报告去重率,设置最小覆盖并人工检查高删除率簇。
还要防止文本编码器对某些语言表示较差,导致 Embedding 相似度失真。
12. 如何评估去重效果
报告精确重复率、近重复簇大小、每来源删除率、跨集合泄漏率和下游训练消融。人工抽检“被合并”和“未合并高相似”两类候选。
训练固定 Token 预算的原始/去重模型,比较目标、长尾、记忆和通用能力,验证去重带来的实际收益。
13. 可追溯性如何保留
不要物理丢失所有副本信息。维护原始样本到 Canonical ID 的映射、相似度、规则版本和保留原因。
这样可以审计供应商重叠、恢复误删样本,并在许可证变化时定位全部来源。
14. 常见误区与追问
- 误区:重复只浪费训练时间,不影响模型。 它还会隐式加权、过拟合和制造验证泄漏。
- 误区:MD5/SHA 去重已经足够。 改写、模板替换和大段重叠需要近重复方法。
- 误区:语义相似就应只留一条。 相似问题可能因地区、时间和条件有不同正确答案。
- 误区:去重后高频业务会学不会。 可用显式采样权重表达频率,而不是保留无意副本。
- 误区:先随机切分再去重没有问题。 跨集合重复仍会泄漏,应先全局聚类。
- 追问:亿级数据如何避免 O(N²)? 用 MinHash/SimHash、LSH 或向量 ANN 先召回候选。
- 追问:怎样选择保留样本? 按来源、正确性、格式、许可、时效和元数据质量排序。
15. 加强记忆
- 重复等于隐式权重。
- 三层检测:哈希抓精确,MinHash 抓重叠,Embedding 抓语义。
- 先全局聚类再切分,最后跨集合泄漏审计。
- 保留最优代表,维护 Canonical ID 和来源映射。
- 频率显式化:真实高频用采样权重,不用无意副本表达。