大模型训练中的数据去重处理
在大模型微调过程中,数据质量直接影响模型性能。重复数据会引入偏差,降低训练效率,甚至导致过拟合。本文将介绍几种实用的数据去重方法。
去重方法论
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)
实践建议
- 建议先用哈希方法快速筛选,再用相似度算法精确处理
- 根据模型规模调整阈值,避免误删有效数据
- 处理前备份原始数据集
通过合理的数据去重策略,可以显著提升模型训练效果和资源利用率。

讨论