synthetic data(合成データ)の作り方:LLM学習・評価・テストの実践ガイド

synthetic data(合成データ)をLLMの学習・評価やソフトウェアテストに使うための実践ガイドです。サポートチケットの例で、シードの選び方から候補の生成、重複除去、人によるレビューまでを解説します。生成ツールの使い分け、出力を学習に使う条件、プライバシーの検証、評価データを守る方法も整理します。

公開日

synthetic data(合成データ)の作り方:LLM学習・評価・テストの実践ガイド

synthetic data(合成データ)の生成は、事例を増やしたいときに役立ちます。ただし、生成した事例だけでは、システムが正しく動くことを独立に裏付けられません。用途は、挙動の評価、ファインチューニングによる挙動の学習、ソフトウェアテスト用データの作成という3つに分けて考えます。それぞれに異なる合格基準が必要です。

プロバイダーのドキュメントと出力の利用条件は、2026年10月22日に確認しています。 以下のサポートチケット例と試行用データの件数は、説明のために作成したものです。実際のモデル実験の結果ではありません。

合成データとは?synthetic dataの基本と用途

合成データ生成とは、目的を定めて人工的なレコードや事例を作ることです。大規模言語モデル(LLM)を使う開発者にとっては、仕様と少数の利用承認済みの例をもとに、問い合わせ、質問と回答のペア、情報抽出の例、会話などのテキストを生成する方法を指すことが多いでしょう。

運転シミュレーターを思い浮かべてください。実際の道路で同じ状況に出会うのを待たずに、難しい交差点を繰り返し練習できます。しかし、シミュレーターでうまく走れたからといって、その交差点が実際の交通でどの程度現れるかは分かりませんし、どんな道路にも対応できる証明にもなりません。合成データセットでも、練習で網羅できる範囲と、現実についての根拠は分けて考える必要があります。

生成方法によっても役割は異なります。ルールベースの生成器は、「注文合計を各明細の合計と一致させる」といった指示に従います。表形式データの合成器は、列をまたぐパターンを学習します。LLMは、プロンプトと与えられたコンテキストを条件に文章を生成します。これらを組み合わせ、コードで整合性のある注文を作り、その注文に対する顧客の苦情をLLMに書かせることもできます。

合成データと、レコードのマスキングも別物です。顧客の名前を置き換えても、その人に起きた出来事の詳細は残ります。データ拡張は、質問の言い換えなど、既存の例に手を加える方法であり、派生した例は元のデータとの関係を保っています。どちらの処理も、それだけでプライバシーを確保したり、独立した根拠を作り出したりするものではありません。

評価用データでは、期待する回答を独立に検証します

アプリケーション開発では、合成データによる評価は、情報の欠落、指示の矛盾、対応範囲外の依頼、珍しい言い回しなど、既知の失敗パターンを試すのに向いています。ここでいう評価とは、システムの挙動を繰り返し確認できるテストです。

たとえば、アカウントの問題が曖昧なときに、サポートアシスタントが確認を求める必要があるなら、曖昧な問い合わせを意図的に生成します。そのうえで、期待する対応がポリシーに合っているかを人が確認します。生成器の回答に自信が感じられるというだけで、それを正解にしてはいけません。

利用が許可された実際のやり取りがあれば、そこから別の評価セットを用意します。実データを使えない場合は、業務に詳しい人に、独立して事例を作成してもらいます。それによって仕様への適合性は確認できますが、本番環境の利用者全体に対する精度までは分かりません。

ファインチューニングでは、具体的な挙動を学習させます

モデルを用途に合わせて調整する場合、合成した例は、手元のデータに不足している出力形式、分類ルール、応答スタイルを示すのに役立ちます。ファインチューニングとは、例を使った学習によってモデルを更新することです。

出発点は、観察できる失敗にします。たとえば、曖昧なチケットをモデルが繰り返し請求担当に振り分けてしまう場合です。レビュー済みの曖昧な事例を追加し、学習や調整に使っていない例で、調整後のモデルと既存のベースラインを比較します。学習ファイルが大きくなったこと自体は、成功の指標にはなりません。

タスクと合否判定用のデータセットが固まったら、ファインチューニングの手順を使って進めます。問題が、事実に関するコンテキストの不足や変化にあるなら、生成した回答で知識を覚えさせる前に、アプリケーションへ渡すコンテキストを改善してください。

ソフトウェアテスト用の合成データを生成するには

ソフトウェア開発で合成テストデータを作る目的は、アプリケーションのルールを実際に検証することです。フィールドの欠落、重複送信、極端な文章の長さ、不正な状態遷移、データベースの関連レコードなどを扱います。

購入手続きのテストでは、注文、顧客、支払いの関係に整合性が必要です。計算まで言語モデルに任せる必要はありません。制約はコードで実装し、配送先住所と食い違う配送メモなど、自然な文章に意味がある部分でLLMを使います。

データセットを購入する担当者は、どの用途のために作られたものかを確認すべきです。デモに適したデータセットが学習にも役立つとは限りませんし、学習用コーパスがそのまま評価セットになるわけでもありません。

実践例:シードからレビュー済みの候補を作る

まず、生成器に聞かなくても正しい回答を説明できる、範囲の狭いタスクを選びます。ここでは、架空のサポートチケットを billing、access、human_review に振り分けるための候補データを作ります。

架空のポリシーは単純です。支払いや請求書の問題は請求担当へ、サインインやパスワードの問題はアクセス担当へ、内容が不明確な問い合わせや両方の問題を含む問い合わせは人による確認へ回します。顧客が書いていない事実は推測しません。

合成データの例:ラベルを明示した6つのシード

説明用に作成した以下のシードで、分類の境界を示します。

  • 「カードに二重で請求されました。」→ billing
  • 「請求書に記載されているプランが違います。」→ billing
  • 「リセット用リンクの有効期限が切れています。」→ access
  • 「パスワードをリセットした後、サインインできません。」→ access
  • 「支払ったのにサインインできません。」→ human_review
  • 「まだ使えません。」→ human_review

最後のような例は、分類が明らかな例と同じくらい重要です。判断できないという結果も正当だと生成器に伝えるからです。Few-shotプロンプティングのガイドでは、一般的な指示だけでは曖昧になりがちなルールを、例でどう伝えるかを説明しています。

  1. 派生例を生成する前に、元データを分割します

    何かを生成する前に、元データの系列を学習用、開発用、最終評価用に割り当てます。1つの系列には、元のレコードと、その言い換え、翻訳、後続の会話ターンが含まれます。文書を扱うタスクなら出典文書ごとに、サポート業務ならデータ漏洩を防げる場合に会話や顧客ごとにまとめます。

    この実践例では、6つのシードを生成用のデータ群に入れます。最終評価の事例は、生成された候補を見ていない別の人に作成してもらいます。実際のプロジェクトでは、その評価用資料を生成プロンプトにもフィルタリングの指示にも含めないでください。

    後の重複チェックで、保護している評価セットとの重なりが見つかった場合は、学習候補を隔離します。非公開の評価テキストを生成器に渡し直して、より違った言い換えを求めてはいけません。

  2. 漠然と多様性を求めず、網羅する範囲を決めます

    試行用の組み合わせ表には、対象ラベル3種類、口調2種類、長さ2種類、言語表現2種類を使います。組み合わせは24セルになります。各セルにつき5件を求めると、フィルタリング前の候補は120件です。

    口調は中立的か不満を示すもの、長さは1文か複数文、表現は直接的か、遠回しな表現または否定表現とします。これは今回の例で使う設定案であり、あらゆるデータセットに推奨する規模ではありません。

    セルは、特定の種類の例を求めるための指定です。モデルが条件を満たす例を返す保証ではありません。遠回しな請求の問い合わせが本当に曖昧になってしまった場合は、そのセルの候補から除外するか、レビューを経てラベルを付け直します。

  3. 網羅範囲の各セルを個別に生成します

    ポリシー、6つのシード、選択したセルをまとめて送ります。小さな単位でリクエストすれば、不合格になった例を、どの指示から生成されたかまで追いやすくなります。プロンプト、モデル識別子、生成設定、元データの系列を識別するIDを、ジョブと一緒に保存します。

    請求に関する、不満を示す口調の、1文で遠回しに表現するセルには、次の生成プロンプトを使います。

    振り分け分類器向けに、架空のサポートチケット候補を5件作成してください。

    ポリシー:billingは支払いや請求書の問題、accessはサインインやパスワードの問題、human_reviewは内容が不明確な問い合わせ、またはbillingとaccessの両方を含む問い合わせに対応します。不足している事実を推測してはいけません。

    シード例:「カードに二重で請求されました。」= billing、「請求書に記載されているプランが違います。」= billing、「リセット用リンクの有効期限が切れています。」= access、「パスワードをリセットした後、サインインできません。」= access、「支払ったのにサインインできません。」= human_review、「まだ使えません。」= human_review。

    指定するセル:billing、不満を示す口調、1文、遠回しな表現または否定表現。各候補は、シードの単語を同義語に置き換えるだけでなく、それぞれ異なる状況を記述してください。ポリシーに照らして請求の問題だと判別できるようにしてください。氏名、連絡先、アカウント番号、企業名、コピーした顧客の文章を加えてはいけません。

    JSON配列だけを返してください。各オブジェクトにはcase_id、text、proposed_label、policy_reasonを含めてください。proposed_labelはbilling、access、human_reviewのいずれかにしてください。policy_reasonには、内部の推論過程ではなく、該当するポリシーのルールを簡潔に示してください。このセルに有効な候補を作れなければ、件数を減らして返してください。重複で配列を埋めてはいけません。

    proposed_label は提案として扱います。その説明を、提案が正しいことの根拠にしてはいけません。

  4. モデルに品質を採点させる前に、不適合なデータを除きます

    JSONの形式不備、フィールドの欠落、空のテキスト、case_idの重複、許可されていないラベルを除外します。指定したセルに合っているかも、別途確認します。丁寧な口調の段落では、不満を示す1文という条件を満たしません。

    承認された環境で、個人を識別する情報、秘密情報、保護対象の原文との重なりを検査します。パターンマッチングは、明らかなメールアドレスやアカウント番号の形式を検出できますが、文章の内容に個人を特定できる詳細が含まれていないと保証することはできません。

    次に、意味がポリシーに合っているかを確認します。「また違うプランで請求ですか、いい加減にしてほしいです」は、請求の候補として妥当です。一方、「もう一度支払ったのに、まだログインできません」は、このポリシーでは人による確認に回す必要があります。生成器が後者にbillingというラベルを付けたなら、説明がもっともらしくても除外します。

  5. 文章と状況の両方について重複を除きます

    大文字と小文字、空白を正規化して完全一致する文章を検出しつつ、レビュー用に原文も残します。シードと生成候補を通じて、正規化したテキストの索引を保持します。同じ文章に矛盾するラベルがある場合は、関係するデータをまとめて隔離し、判断を仰ぎます。

    続いて意味を比較します。類似検索に用いるテキストの数値表現である埋め込みを使えば、よく似た候補を抽出してレビューできます。しきい値は、自分たちのタスクの例で調整してください。「ここからは重複」と判断できる万能の類似度しきい値はありません。

    語句が似ているというだけで、組になった例を消してはいけません。「サインインできます」と「サインインできません」は、判断を分ける点が異なります。逆に、有効期限が切れた同じリセットリンクへの苦情をいくら言い換えても、新たに網羅できる状況はほとんど増えないかもしれません。

  6. 人の判断で抜き取り確認し、用途に応じて公開可否を決めます

    試行では、各セルで残った候補からランダムに1件ずつ、最大24件を選びます。生成器のラベルや説明を見せずに、レビュアーにラベルを付けてもらいます。あわせて、意見の不一致、機微な内容の警告、ポリシーの境界に当たる事例としてフラグが付いたものは、すべて確認します。

    同じ誤りが繰り返し見つかった場合は、該当するセルを隔離して指示を修正し、修正後の出力をレビューします。抜き取った1行だけを直して、同じセルのほかの例も問題ないと考えてはいけません。この抜き取り確認は不具合を見つけるためのもので、データセットに誤りがないという統計的な保証ではありません。

    公開前に、最終評価セットに入れる期待回答をすべて人手で確認します。学習候補では、誤りがもたらす影響に応じてレビューの深さと合格基準を決めます。セルごとの採用件数、除外理由、レビュアーの判断、データセットのバージョンを記録してください。生成した評価用の難問は、改善の度合いを測るために手を付けずに残してあるセットと分けて保管します。

元データの系列を、派生例を含む学習用の枝と、隔離されたホールドアウト保管庫に分ける建築断面図
生成前に元データの系列を分割します。ホールドアウトは、生成と調整のループの外に置きます。

検証を通った候補は、たとえば次のような形になります。これは説明用のレコードであり、実際に取得したAPI出力ではありません。

JSON
{
  "case_id": "billing-frustrated-indirect-a",
  "text": "Another invoice with the wrong plan, seriously?",
  "proposed_label": "billing",
  "policy_reason": "The customer identifies an invoice problem."
}

重要な成果は、由来を追跡でき、レビューを終えた事例です。最初の生成で要求件数がすべて返ったかどうかは二の次です。目標件数を満たすためだけに、品質の低いセルを補充してはいけません。

合成データ生成ツールでできること:ドキュメントを読む

ツールは、工程のどこを担うかで選びます。モデルAPIは、コードからモデルの出力を要求するためのインターフェースです。バッチサービスは、そのリクエストの実行をスケジュールします。データセット用ライブラリは生成とフィードバックを整理し、表形式データの合成器は構造化データの関係を学習します。どれを使っても、合格基準を決める必要はなくなりません。

生成AIで合成データを作る:バッチAPIの役割

OpenAI APIのBatchでは、JSONLファイルで送信したリクエストを非同期に処理できます。JSONLは、1行につき1つのJSONオブジェクトを記述する形式です。ドキュメントでは、一意の custom_id が必要とされ、出力の順序が入力順と異なる可能性があると説明されています。識別子で結果を対応付け、失敗や生成の未完了を確認してから、候補データとしてパースします。OpenAI Batchのドキュメント。

非同期バッチリクエストの送信と結果の取得を説明するOpenAIのドキュメント
OpenAI API:Batch

AnthropicのClaude APIには、独立したMessagesリクエストを処理するMessage Batchesがあります。結果は成功、エラー、キャンセル、期限切れに分かれ、各結果と入力は custom_id で結び付きます。運用上の注意点は、バッチが受理されたことと、すべての例の処理が完了したことは別だという点です。データセット全体を生成し直すのではなく、識別子を使って未完了の処理を再試行します。Claudeのバッチ処理ドキュメント。

Message Batchesとリクエストごとの結果を説明するClaudeのドキュメント
Claude API:Message Batches

GoogleのGemini APIでは、リクエストオブジェクトを直接含める方法と、JSONLファイルをアップロードする方法でBatchを利用できます。ファイル方式のリクエストには、対応する結果を識別する key を付けます。大規模なオフラインデータセットにはファイル方式を使います。ドキュメントに記載された処理時間は目標なので、対話的なワークフローを即時完了に依存させないようにしてください。Gemini Batchのドキュメント。

リクエストを直接含める方式とファイル方式のバッチ送信を示すGeminiのドキュメント
Gemini API:Batch

以下は、リンク先のドキュメントで確認した、ジョブの分割に関わるバッチの制限です。複数のジョブを通じて作成できるデータセット全体の上限ではありません。

API送信時の上限処理時間結果の対応付けに使う識別子
OpenAI Batch50,000リクエスト、入力ファイル200 MB完了までの時間枠は24時間。未完了のリクエストは期限切れになる場合がありますcustom_id
Claude Message Batches100,000リクエストまたは256 MBの、先に達した方24時間後に期限切れになりますcustom_id
Gemini Batch直接含めるリクエストは20 MB未満、入力ファイルは最大2 GB処理完了の目標は24時間ファイル内リクエストの key

バッチのリクエストと候補の例は、別の単位です。成功したリクエストごとに複数の候補が返るなら、両方の件数を追跡します。通信エラーだけでなく、パースの失敗、応答拒否、出力の途中切れも記録します。HTTPレスポンスが成功しただけでは、そのデータを学習用の1行として使えるとは限りません。

Distilabel:生成とフィードバックを整理する

Distilabelは、合成データとAIフィードバックのためのフレームワークです。生成、評価、データ処理のステップを組み合わせてパイプラインにします。ドキュメントでは、分類、抽出、対話、指示データの生成といった用途が説明されています。使い捨てのスクリプトが、複数の生成・フィルタリング工程に膨らんできたときに役立ちます。Distilabelのドキュメント。

合成データとAIフィードバックのパイプラインを説明するDistilabelのドキュメント
Distilabel

このプロジェクトはApache-2.0ライセンスを採用しています。リポジトリには、元の開発者はプロジェクトを離れ、コミュニティの協力者が保守を担っているとも記載されています。採用するバージョンを固定し、検証してください。実務上の課題として残るのは評価器です。モデルの判断をワークフローに組み込んでも、その判断が独立したものになったり、正しくなったりするわけではありません。Distilabelのリポジトリ。

Faker:言語モデルを使わずにテストデータを用意する

Fakerは、プロバイダーを通じて架空のデータを生成するPythonパッケージです。ロケールの指定や乱数シードに対応しています。自然言語の推論よりも、値を制御したフィールドが必要な場合に、アプリケーションのテスト用フィクスチャを作るのに役立ちます。リポジトリでは、ライセンスはMITとされています。Fakerのドキュメント、Fakerのリポジトリ。

プロバイダーと生成フィールドの例を示すFakerのPythonドキュメント
Faker

業務上の関係は、自分でコードに落とし込む必要があります。住所、日付、取引を別々に生成しても、現実的な顧客履歴にはなりません。可能な限りテスト用に予約された識別子やドメインを使い、生成したフィクスチャがメッセージ送信などの本番処理を引き起こさないようにします。

Synthetic Data Vault:テーブルとその関係をモデル化する

Synthetic Data Vault、略してSDVは、表形式データの合成と統計的な評価を提供します。ドキュメントには、単一テーブル、系列データ、関連する複数テーブルを扱う方法が記載されています。学習済みの合成器は、与えられたデータから学習します。利用が許可された元データセットが必要であることに変わりはありません。SDVのドキュメント。

表形式データの合成と評価を説明するSynthetic Data Vaultのドキュメント
Synthetic Data Vault

SDVの GaussianCopulaSynthesizer は、古典的な統計手法で列の分布や関係を学習します。CTGANSynthesizer は、生成器と、それに対抗する識別器を使って学習するモデルである敵対的生成ネットワークを利用します。どちらも、データと、その構造を記述したメタデータを入力として受け取ります。これらは表形式データの合成器であり、汎用のチャットモデルではありません。Gaussian Copulaのドキュメント、CTGANのドキュメント。

課題は、タスクに必要な特性をどこまで保てるかです。列の分布が似て見えても、まれな組み合わせ、テーブル間のルール、後段のモデルの挙動が維持されている証拠にはなりません。子レコードと親レコードを結ぶ外部キーなど、アプリケーションが依存する関係を検証してください。

合成データ生成器は、何が不足しているかで選びます

言語表現のバリエーションが足りないなら、モデルAPIを使います。生成とフィードバックを再現可能な形で管理する価値が、依存関係を増やす負担を上回るなら、Distilabelを追加します。フィクスチャの値を制御したいならFakerを選びます。テーブル間の統計的な関係が重要で、モデル化が許可された元データを持っているなら、SDVを検討します。

ラベル付けのポリシーが曖昧な問題を、より大きな生成器の購入で解決しようとしてはいけません。それは、ここで紹介したどのツールを使うよりも前に解決すべき問題です。

生成した出力を学習に使う場合、利用規約はどうなっているか

ほかのモデルの学習に使う例を生成するモデル、つまり教師モデルを選ぶ前に、出力の利用制限を確認します。以下は、前述した3社のホスト型LLMプロバイダーの標準規約の要約です。個々の学習プロジェクトが条件を満たすと判断するものではありません。

  • OpenAI: Services Agreementは、出力を競合するAIモデルの開発に使うことを制限しています。明記された例外には、主な用途がデータのカテゴリ分け、分類、整理であり、第三者に配布されず、商用提供もされないモデルと、OpenAIが指定するサービスを使ったモデルのカスタマイズがあります。Services Agreement。
  • Anthropic: Commercial Termsでは、Anthropicが明示的に承認した場合を除き、競合するAIモデルの学習を含め、競合する製品やサービスを構築する目的でサービスにアクセスすることを禁じています。Commercial Terms。
  • Google: Gemini APIのAdditional Termsは、サービスを競合モデルの開発に使うことを禁じています。また、Google Search Groundingの条項では、Grounded ResultsやSearch Suggestionsを使った学習が別途禁止されています。Gemini APIの利用規約。

ライブラリのソフトウェアライセンスは、そのライブラリが呼び出すモデルの利用規約、モデルの重みのライセンス、元の例に対して自分が持つ権利とは別の問題です。出力の所有権だけでは、これらすべての問題に答えは出ません。

テストデータのプライバシーは、別途検証が必要です

合成されたデータであることは、プライバシーの保証にはなりません。機密レコードを未承認の生成サービスにコピーした場合、後から架空に見える代替データを作っても、その開示を取り消すことはできません。

Stadler、Oprisanu、Troncosoによる合成データ公開の研究では、評価対象のモデルによって、プライバシー上の利点と有用性が異なることが示されています。実務上の教訓は、「合成」という言葉を匿名性の証明とみなさず、公開するデータと生成プロセスを評価することです。USENIXの研究論文。

ソフトウェアテストの目的を満たせるなら、承認されたスキーマとポリシーをもとに書いた架空のシードを優先します。実際の統計的パターンを保つ必要がある場合は、承認された環境で元データを扱い、生成データセットからどのような情報が明らかになり得るかを評価します。

直接的な識別子、コピーされた文章、まれな組み合わせ、相手がすでに知っているかもしれない情報との照合可能性を確認します。名前を変えても、特徴的な出来事、場所、日付を残せば、本人を特定できる場合があります。機微なデータを公開する際は、少数の目視確認と重複検査だけでは不十分です。想定する脅威と提供先に見合ったプライバシー評価が必要です。

プロバイダー自身が学習にデータを使うかというポリシーと、自分が出力を学習に使えるかという権利は、別の話です。たとえばGeminiの無料サービスの規約は、機微な情報を送信しないよう注意を促しています。一方、有料サービスのデータ利用条件では、プロンプトと応答をGoogle製品の改善に使わないとしています。また、EEA、スイス、英国では、無料での利用にも有料サービスのデータ利用ルールが適用されます。Geminiのデータ利用条件。

プロバイダーが学習に使わないと約束していても、ローカルで実行していても、できあがったデータセットを安全に共有できる証明にはなりません。公開前の審査が終わるまで、来歴情報とアクセス制御を維持します。

合成データへの期待は、どこから過剰になるのか

最も大きな誤解は、生成する行数を増やせば、根拠の不足を埋められるというものです。生成データは練習の幅を広げ、失敗をあぶり出せますが、同じ思い込みを大規模に再生産することもあります。

表現が違っても、状況は同じかもしれません

文章がすべて異なるデータセットでも、ごく少数の状況を繰り返しているだけかもしれません。フィルタリング後に、業務ルール、曖昧さ、失敗パターンのどれが残っているか、シナリオの網羅範囲を追跡します。

チケットの例では、請求書への苦情を何度繰り返しても、請求とアクセスの両方に関わる問い合わせの不足は補えません。類似度の高い例をレビューし、採用した例だけでなく除外した例も確認します。品質フィルターが厳しすぎると、追加したかった難しい事例を、気付かないうちに取り除いてしまうことがあります。

言い換えてもバイアスは残ります

偏りのあるシードを言い換えれば、その前提まで消えるとは限りません。文体、方言、つづりの正確さ、関係する利用者層をまたいで、ラベルの選び方を確認します。ポリシー上の根拠がなければ、不満を示す問い合わせや誤字の多い問い合わせを、別の宛先に振り分けるべきではありません。

判断に無関係な属性だけを変えた対応する事例を、レビュアーに比較してもらいます。ラベルが変わったら、シード、プロンプト、フィルターをまとめて調べます。生成器と評価器が、同じ誤りを強め合うこともあります。

モデルの自己採点は、もっともらしく見えてしまいます

Zhengらは、LLMを評価者として使った場合に、提示順、冗長さ、自己優遇に関するバイアスがあることを報告しています。モデルは、測りたい特性ではなく、言葉遣いや見せ方を高く評価する場合があります。LLM-as-a-judgeの研究。

答えを機械的に検証できる箇所では、結果が一意に決まるルールで確認します。主観を伴う評価では、人の判断を基準に評価器を調整し、可能な範囲で生成器の正体を伏せ、判断が食い違う例をレビューします。評価器のプロバイダーを変えれば、共通する依存要因を減らせることはありますが、誤りが互いに独立になる保証はありません。

LLM-as-a-judgeのガイドでは、スコアを信頼する前に評価器を確認する方法を説明しています。合成データ生成では、どの例を学習上の正解とするかを評価器に決めさせる前に、この確認を済ませます。

候補が検証、重複除去、人によるレビュー、公開へと進む検査経路を、不合格の経路とともに描いた建築図
生成で得られるのは候補です。検証、重複除去、人による確認を通じて、公開できるデータを決めます。

モデル崩壊は特定のリスクであり、すべてに当てはまる結論ではありません

Shumailovらは、生成データを使った再帰的な学習を研究し、元の分布のうち出現頻度が低い部分が失われ得ることを示しました。これは、元の根拠となるデータを、モデル自身から派生したデータで繰り返し置き換えることに注意が必要だと示しています。ただし、レビュー済みでタスクに特化した合成データによるファインチューニングが、必ず失敗するという証明ではありません。Natureの研究論文。

利用が許可された元の根拠となるデータを保持し、まれな事例を意図的に残し、後段の挙動を手を加えていないベースラインと比較します。この評価を代替できる、合成データと実データの万能な混合比率はありません。

次の開発で、何を変えるべきか

不足している事例を具体的に挙げ、正しい挙動を書き、安定したルールに照らして生成候補をレビューできるなら、今すぐ着手できます。小さな組み合わせ表から始め、役立つ事例が増えるセルだけを広げます。

レビュアーの間で正解ラベルが一致しない場合や、独立した合否判定用のセットがない場合は、ファインチューニングを待ちます。先にポリシーと評価の問題を解決してください。

目的がデータベースへのデータ投入、境界値の確認、取引の整合性の検証であれば、通常のフィクスチャを使います。より単純なデータでは試せない挙動がある箇所にだけ、生成した文章を追加します。

次のリリース前に、学習や調整に使っていない同じ事例で、ベースラインと変更後のシステムを比較します。サポートの振り分けなら、誤った振り分けやエスカレーションの見落としをカテゴリ別に調べます。狙った挙動が改善し、ほかの箇所で許容できない悪化が起きない場合に限り、その合成データを使い続けます。

合成データについてよくある質問

合成データを無料で生成できるツールはありますか?

オープンソースの選択肢にはFakerとDistilabelがあります。Fakerは架空のフィールドやフィクスチャを生成し、Distilabelは合成データとフィードバックのワークフローを整理します。ただし、ホスト型モデルの呼び出しや、ワークフローで使用する計算資源には料金が発生する場合があります。これらのソフトウェアライセンスが、接続先モデルプロバイダーの利用規約に優先するわけではありません。

データサイエンスで代表的なアルゴリズムを5つ挙げると何ですか?

すべてに通用する順位はありません。線形回帰、ロジスティック回帰、決定木、ランダムフォレスト、k-meansは、それぞれ異なるタスクで使われる一般的な例です。ただし、この一覧は合成データの手法を選ぶためのものではありません。必要なデータと挙動に応じて、ルール、表形式データの合成、言語生成を選びます。

データセットの主な3種類とは何ですか?

モデル開発の流れでは、通常、学習セット、検証セット、テストセットを指します。学習セットでモデルを学習させ、検証セットで開発の方向を決め、最終テストセットで選び終えたモデルを確認します。関連する元レコードとそこから生成した派生データは、適切な分割先の中にまとめて保管します。

Pythonで架空のデータを生成するにはどうすればよいですか?

架空のフィールドにはFakerを使い、利用が許可された元データから学んだ関係が重要なら、表形式データの合成器を使います。LLMで生成した文章は構造化レコードとして保存し、検証して、元データの識別子を残します。Pythonでワークフローを組み立てることはできますが、生成した例が正しいことや、プライバシーが守られていることまで自動で確かめられるわけではありません。

合成データはどのような手順で生成しますか?

用途と合格基準を定め、利用が承認されたシードを選び、狙いを絞って候補を生成します。不適合なレコードを除外し、文章と意味の両方で重複を除き、業務に詳しい人とサンプルをレビューします。最終評価に使う期待回答は、独立に検証します。

ダミーデータの生成は何から始めればよいですか?

アプリケーションのスキーマと制約から始めます。検証したいルールごとに、有効なフィクスチャと、意図的に不正にしたケースを作ります。レコード間の関係を保ち、指定されたテスト用識別子を使い、人工的に作ったデータだと分かる表示を残します。

架空のデータセットを作るにはどうすればよいですか?

デモ用なら、架空の仕様からレコードを生成します。統計的な代表性を持つ代替データが必要なら、利用が許可された元データと適切な合成器を使い、有用性とプライバシーの両方を評価します。もっともらしく見えるデータセットでも、その分布が実際の顧客を反映している証拠にはなりません。

人工的に作るデータと、データの捏造はどう違いますか?

人工的に作ったことを明示し、テストやモデル化のために意図して用意するレコードは、合成データやモックデータです。作り上げた観測結果を、実測した証拠として示す行為はデータの捏造です。生成した例と、実際に観測した結果を、見て分かる形で区別してください。

AIでデータを生成できますか?

はい。言語モデルはテキストの候補を生成でき、表形式の生成モデルは構造化レコードを作れます。ただし、その候補を人が頼るデータセットにする前に、有用性、正確性、利用の可否、プライバシーを確認する責任は利用者にあります。

AIシステムの構築と評価に役立つ実践ガイドを、ニュースレターで受け取ることができます。

公開日
カテゴリー
Build
RLHFとは?人間の評価で変わるAIの応答とDPOとの違い

RLHFとは?人間の評価で変わるAIの応答とDPOとの違い

RLHFは、人間の評価を使ってAIの応答をどう変えるのでしょうか。報酬モデルと強化学習の仕組みを、返金対応の回答例で解説します。SFT・DPO・RLAIF・RLVRとの違い、小規模企業が使える選好学習API、データの作り方と評価の要点を整理。好まれる回答が正しいとは限らない理由と、導入前に確認すべき条件が分かります。2026年10月22日Build
モデルルーティングの仕組みと検証方法:品質を守るLLMの使い分け

モデルルーティングの仕組みと検証方法:品質を守るLLMの使い分け

モデルルーティングで小型LLMと高性能モデルをどう使い分けるか。サポートアプリを例に、振り分けルール、再試行を含む費用計算、評価セットでの品質検証を解説します。OpenRouter、LiteLLM、Vercel AI Gateway、Microsoft Foundryの機能の違いと、段階的な導入の確認点も整理します。2026年10月21日Build
セマンティックキャッシュとは?LLMの回答を安全に再利用する設計

セマンティックキャッシュとは?LLMの回答を安全に再利用する設計

セマンティックキャッシュは、意味の近い質問に保存済みの回答を返し、LLMの呼び出しを減らす仕組みです。完全一致・プロンプトキャッシュとの違い、回答を再利用する4ステップ、しきい値・TTL・ユーザー権限の設計を解説。Kong、Redis、GPTCacheの実装例と、リクエストに基づくコスト削減の計算方法も紹介します。2026年10月21日Build
AIエージェントフレームワーク比較:Pydantic AIとLangChainの選び方

AIエージェントフレームワーク比較:Pydantic AIとLangChainの選び方

Pydantic AIとLangChainを、同じ問い合わせ振り分けコードで比較します。型付き出力、外部連携、LangGraphによる中断・再開、トレーシングと評価、移行時の注意点を整理。既存のPythonサービスに機能を加える場合と、承認を伴うワークフローを組む場合、それぞれの要件に合う選び方を解説します。2026年10月21日Build
Cursor 料金・機能比較【2026年】Zedとの違いと移行の判断基準

Cursor 料金・機能比較【2026年】Zedとの違いと移行の判断基準

CursorとZedはどちらを選ぶべきか。操作感、AIエージェント、モデルの選択肢、共同編集を比較します。個人と5人チームの月額料金を、同じトークン使用量で試算。ZedでCursorのエージェントを使う方法やMCP・会話履歴の制限、移行前に確認したい拡張機能と管理機能まで整理します。2026年10月21日Build
LLM 推論の仕組みと高速化:待ち時間の測定から運用方式の選び方まで

LLM 推論の仕組みと高速化:待ち時間の測定から運用方式の選び方まで

LLM 推論を、プロンプトを処理するプリフィルと回答を生成するデコードに分けて解説します。最初のトークンまでの時間と生成速度の測り方、KVキャッシュや量子化、バッチ処理の効果と限界を整理。公開APIのレスポンス例で待ち時間を分解し、モデルAPI、推論サービス、自前のGPU運用を選ぶ判断軸を紹介します。2026年10月21日Build
セマンティック検索とは?仕組み・キーワード検索との違い・実装の選び方

セマンティック検索とは?仕組み・キーワード検索との違い・実装の選び方

セマンティック検索の仕組みを、埋め込み・インデックス・候補取得・ランキングの流れで解説します。キーワード検索やベクトル検索、RAGとの違い、ハイブリッド検索とリランカーの役割を整理。Pinecone、pgvector、Elasticsearch、Algoliaの選び方から、権限・更新・費用・検索品質の評価まで扱います。2026年10月21日Build
コーディングエージェント「Factory AI」導入ガイド:料金・機能・比較

コーディングエージェント「Factory AI」導入ガイド:料金・機能・比較

コーディングエージェントFactory AIの機能、料金、使い方を公式資料に基づいて解説します。Droidsの作業計画、モデル選択、リモート実行を整理し、Claude Code・Codex・Cursorとの選び方を比較。Teamsの席数上限やBYOKの制約、レビュー工数を含む総費用まで、導入の判断材料をまとめました。2026年10月21日Build
ニュースレター

毎週日曜、一通の手紙。動くシステムの話。感想戦ではなく。

週刊。スパムなし。いつでも解除できます。