独自のドメイン知識を持ったカスタムLLMを構築するための、データクリーニングとトークナイザーのカスタマイズ
はじめに
こんにちは、NKKTech Global 技術チームです。
医療、金融、製造、あるいは特定の企業独自の技術文書など、一般的なLLM(GPT-4やLlama 3など)が十分にカバーしていないドメイン知識を学習させる場合、単純にデータを流し込むだけでは十分な精度は得られません。
「Garbage In, Garbage Out(ゴミを入れればゴミが出る)」の原則通り、専門性の高いモデル構築において最も重要なのは、**「データの純度をどこまで高められるか」と「専門用語を正しく認識できるか」**です。本記事ではその核心となる手法を解説します。
1. データクリーニング:質の高いドメイン知識を抽出する
ドメイン特化型モデルの学習では、汎用データセットに比べてデータ量が限られるため、1件あたりの「情報の密度」を最大化する必要があります。
① 重複排除(Deduplication)
Webスクレイピングや社内Wikiからデータを集めると、同じ内容やわずかに異なるだけの文章が大量に含まれます。これらは過学習(Overfitting)の原因となります。
-
手法:
MinHashやLSH (Locality Sensitive Hashing)を用いて、意味的に近い文章を特定し、重複を排除します。
② ノイズ除去と構造化
PDFやHTMLから抽出したテキストには、ヘッダー、フッター、広告、文字化けした記号などの「ノイズ」が含まれます。
- 手法: 正規表現による定型文の削除に加え、LLM自体(あるいは軽量な分類モデル)を用いて「その文章が学習に値する品質か」をスコアリングし、低品質なデータ(Perplexityが異常に高いものなど)を切り捨てます。
③ PII(個人情報)の削除
エンタープライズ用途では、顧客名や電話番号、機密情報が含まれないよう、NER(命名エンティティ認識)を用いてマスキング処理を徹底します。
2. トークナイザーのカスタマイズ:専門用語を「一塊」で扱う
LLMはテキストを「トークン」という単位に分割して処理します。デフォルトのトークナイザー(例:Llama 3のBPE)では、専門用語が細切れに分割されてしまい、学習効率が著しく低下することがあります。
なぜデフォルトでは不十分なのか?
例えば、「NKKTech」という固有名称をデフォルトのトークナイザーにかけると、N, KK, Tech のように3つのトークンに分かれるかもしれません。
- 弊害: モデルは「3つのトークンの組み合わせ」として学習する必要があり、コンテキストウィンドウを無駄に消費し、意味の理解も不安定になります。
カスタマイズの戦略
-
新しいトークンの追加 (
add_tokens):
専門用語や製品IDなどを「1つのトークン」として辞書に追加します。既存の語彙を壊さずに済みますが、追加したトークンの埋め込み(Embedding)を一から学習させる必要があります。 -
トークナイザーの再学習 (
train_new_from_iterator):
ドメインデータを用いて、トークナイザー自体をトレーニングし直します。- メリット: そのドメインで頻出する単語の組み合わせが最適化され、推論時のスループット(速度)も向上します。
実装イメージ(Hugging Face tokenizers)
from tokenizers import ByteLevelBPETokenizer
# 既存のトークナイザーをベースにドメインデータで再学習
tokenizer = ByteLevelBPETokenizer()
paths = ["domain_specific_corpus.txt"]
tokenizer.train(files=paths, vocab_size=52000, min_frequency=2, special_tokens=[
"<s>", "<pad>", "</s>", "<unk>", "<mask>",
])
# 専門用語が1つのトークンとして扱われるか確認
output = tokenizer.encode("NKKTechGlobal_Internal_System")
print(output.tokens)
3. 実践:データとトークナイザーの相乗効果
ドメイン特化型LLMを成功させるためのフローは以下の通りです。
- コーパス作成: 徹底的なクリーニングと、Markdown形式などへの構造化。
- 統計分析: 頻出する単語を抽出し、現在のトークナイザーでの分割状況を調査。
- トークナイザー調整: 頻出する専門用語が適切に1トークンになるまで調整。
- 継続的学習 (Continued Pre-training): 調整したトークナイザーとクリーニング済みデータを用いて学習。
まとめ
独自のドメイン知識を持つLLMの構築は、モデルの重みをいじる前に、**「言葉の定義(トークナイザー)」と「知識の純度(データクリーニング)」**を整えることから始まります。この基礎が盤石であれば、より少ない計算リソースで、より精度の高い専門特化モデルを生み出すことが可能です。
NKKTech Globalでは、各業界に特化したカスタムLLMの構築支援を行っています。データの収集から、最適なトークナイザーの設計、効率的な学習パイプラインの構築まで、グローバルな視点でサポートいたします。
お問い合わせ先
独自のデータセットを用いたAIモデルの開発や、LLMのカスタマイズに関する技術的なご相談は、下記よりお気軽にお問い合わせください。
- Webサイト: https://nkktech.com/
- メール: contact@nkk.com.vn
- LinkedIn: NKKTech Global Official
著者:NKKTech Global 技術チーム
私たちは、グローバルな知見と確かな技術力で、次世代のAI活用を支える技術パートナーです。
