LLMの学習データセットから重複・類似テキストを検出・除去する技術。MinHash LSHやSuffix Arrayなどのアルゴリズムを用い、学習効率の向上とmemorization(暗記)リスクの軽減を実現する。
LLMデータ重複除去(Data Deduplication for LLM)は、大規模学習データセット内の重複・準重複テキストを効率的に検出し除去する技術である。同じテキストが複数回学習されると、モデルがそのテキストを「暗記」してしまい、汎化性能の低下やプライバシーリスクの増大につながるため、重複除去はデータキュレーションの必須工程となっている。
| 問題 | 影響 | 深刻度 |
|---|---|---|
| Memorization | 学習データの逐語的な再生成 | 高(プライバシー・著作権リスク) |
| 学習効率低下 | 同じデータの重複学習でトークンあたりの情報量減少 | 中 |
| 評価汚染 | テスト/評価データが学習データに混入 | 高(ベンチマーク不正) |
| バイアス増幅 | 特定ソースの過剰代表 | 中(公平性問題) |
Leeら(2022)の研究では、C4データセットから重複を除去するだけでモデルのパープレキシティが改善し、memorization率が大幅に低下することが実証されている。
ハッシュ値(SHA-256等)の一致で完全重複を検出する。計算コストが最も低いが、1文字でも異なると検出できないため、前処理としての位置づけ。
文書をn-gramの集合として表現し、MinHashで固定長シグネチャに圧縮。LSH(局所性鋭敏型ハッシュ)でJaccard類似度が閾値以上のペアを高速に検出する。
主要パラメータ:
文書を単一のハッシュ値に圧縮し、ハミング距離で類似度を判定する。MinHashより高速だが精度は若干劣る。Google検索の重複排除で実用化された手法。
全テキストを連結しSuffix Arrayを構築、共通部分文字列の長さで重複を検出する。段落・文レベルの部分重複検出に優れるが、メモリ使用量が大きい。
埋め込みベクトルの余弦類似度で意味的重複を検出する。表現が異なるが内容が同じテキスト(パラフレーズ)を除去できるが、計算コストが最も高い。
| 粒度 | 手法 | 用途 |
|---|---|---|
| 文書レベル | MinHash LSH | Web crawlデータの大域的重複除去 |
| 段落レベル | Suffix Array | ボイラープレート・定型文除去 |
| 文レベル | Exact hash | テンプレート文・引用文除去 |
| セマンティック | SemDeDup | パラフレーズ・翻訳重複除去 |
A1: Jaccard類似度0.7〜0.8が標準的な出発点。0.7未満にすると類似だが異なるトピックの文書まで除外されるリスクがある。小規模モデルでアブレーションスタディを行い、下流タスク性能を確認して最適値を決めるのが推奨される。
A2: Common Crawlの場合、MinHash LSH(閾値0.7)で約30〜50%のデータが重複として除去される。ソースの多様性が低い場合(単一サイトのクロールなど)は80%以上が除去されることもある。
A3: 必須。学習データ内の重複除去とは別に、テスト/評価データとの重複(data contamination)チェックが必要。これを怠るとベンチマークスコアが不当に高くなり、モデルの真の性能を正しく評価できなくなる。