大模型训练中的数据去重处理

SickProgrammer +0/-0 0 0 正常 2025-12-24T07:01:19 机器学习 · 数据预处理 · 大模型微调

大模型训练中的数据去重处理

在大模型微调过程中,数据质量直接影响模型性能。重复数据会引入偏差,降低训练效率,甚至导致过拟合。本文将介绍几种实用的数据去重方法。

去重方法论

1. 基于文本相似度的去重

使用TF-IDF向量化计算文本相似度,设置阈值过滤重复数据:

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np

def remove_duplicates(texts, threshold=0.95):
    vectorizer = TfidfVectorizer()
    tfidf_matrix = vectorizer.fit_transform(texts)
    similarity_matrix = cosine_similarity(tfidf_matrix)
    
    to_remove = set()
    for i in range(len(similarity_matrix)):
        for j in range(i+1, len(similarity_matrix)):
            if similarity_matrix[i][j] > threshold:
                to_remove.add(j)
    
    return [texts[i] for i in range(len(texts)) if i not in to_remove]

2. 基于哈希的快速去重

适用于大规模数据集,采用MinHash算法:

from datasketch import MinHash, MinHashLSH
import hashlib

def hash_text(text):
    return hashlib.md5(text.encode()).hexdigest()

# 构建LSH索引
lsh = MinHashLSH(threshold=0.8, num_perm=128)
minhashes = {}

for i, text in enumerate(texts):
    m = MinHash(num_perm=128)
    for word in text.split():
        m.update(word.encode('utf8'))
    minhashes[i] = m
    lsh.insert(i, m)

实践建议

  • 建议先用哈希方法快速筛选,再用相似度算法精确处理
  • 根据模型规模调整阈值,避免误删有效数据
  • 处理前备份原始数据集

通过合理的数据去重策略,可以显著提升模型训练效果和资源利用率。

推广
广告位招租

讨论

0/2000
Gerald249
Gerald249 · 2026-01-08T10:24:58
别再用TF-IDF+余弦相似度这套老掉牙的去重逻辑了,你以为文本相似度高就一定重复?实际场景里90%的‘重复’都是语义改写,这种传统方法直接把好数据给删了。建议换成基于BERT的语义向量去重,至少能保留同义表达。
SilentGuru
SilentGuru · 2026-01-08T10:24:58
MinHash确实快,但别迷信它。在大模型训练中,你得考虑的是‘伪重复’问题——比如同一句话换了个说法,或者长尾数据中的微小变化。单纯用LSH做去重,等于给模型喂了一堆‘看起来不一样、实则本质相同’的数据。
Judy356
Judy356 · 2026-01-08T10:24:58
现在主流做法是用嵌入向量+聚类算法做去重,比如用Sentence-BERT提取句子表示后做DBSCAN聚类。这样不仅能把真正重复的样本归为一类,还能保留语义多样性。但记住:去重不是为了减数据量,而是为了提升训练质量,别为了省计算资源牺牲模型泛化能力。