Data Provenance
データプロベナンスとは、データの出所、取り扱った人、適用された権利、モデルの学習前に行われた変更を記録したものです。PROV、用途、ツールを解説します。
データプロベナンスとは、データの出所、作成者または収集者、適用されるライセンスや同意、モデルに取り込まれるまでに行われたすべての変換を記録した履歴です。機械学習では、生画像やテキスト、それらに適用されたデータラベリング、クリーニングやデータ前処理の手順、データセットの分割やバージョン、データを使用した学習実行を追跡します。これにより、デプロイ済みのモデルを、その基となった正確な学習データまでたどることができます。データリネージは同義語として使われることがよくあります。両者を区別する場合、リネージはパイプラインやシステム内でのデータの流れと変換を示し、プロベナンスは出所、所有権、利用権も含みます。
W3C PROVモデル#
W3Cは2013年、プロベナンスを表現する一連の標準としてPROVを公開しました。あらゆる履歴を、ファイルやデータセットなどのエンティティ、アノテーションや学習などエンティティを利用・生成するアクティビティ、アクティビティに責任を持つ人物、組織、ソフトウェアなどのエージェントという3種類で記述します。ビジョンデータセットに適用すると、記録は次のようなグラフになります。
プロベナンスが重要な理由#
プロベナンスはまず、デバッグと再現性に役立ちます。本番環境で精度が低下したり、データドリフトが発生したりした場合、エンジニアは問題の原因となったラベリングバッチ、撮影元カメラ、クリーニング手順を特定し、まったく同じデータで学習を再実行できます。同じ記録は、昼間や特定の国だけで撮影された歩行者データセットなどのデータセットバイアスも明らかにし、データポイズニングへの対処にも役立ちます。各サンプルの出所が分かれば、侵害された出所のサンプルをすべて削除できるためです。
第2の課題は権利です。Data Provenance Initiativeは2023年に1,800件を超えるテキストデータセットを監査し、主要なホスティングサイトでは70%超でライセンスが記載されておらず、50%超で誤分類されていることを明らかにしました。医用画像解析では、プロベナンス記録により、各スキャンを提供した病院、その利用に対する同意または法的根拠、識別子を削除したかどうかを追跡できます。これらは、データプライバシー法令に基づいて組織が証明する必要のある事項です。生成画像やテキストがオンラインで広まるなか、どのサンプルが合成データかを追跡することはモデル崩壊の回避にも役立ち、Content Credentialsはそのプロベナンスをメディアファイル自体に保持します。
規制によっても記録が求められるようになりました。EU AI法は、高リスクシステムのプロバイダーにデータ収集プロセスとデータの出所の文書化を義務付けています。また、汎用AIモデルのプロバイダーには、欧州委員会が2025年7月に公開したテンプレートを使って学習コンテンツの概要を公表することを求めています。
実務におけるプロベナンスの記録#
プロベナンスは3つのレベルで収集します。Timnit Gebruらが2018年に提案したDatasheets for Datasetsなどのデータセット文書では、データセットの目的、構成、収集プロセス、前処理、想定用途に関する質問に回答し、そのデータセットで学習したモデルのモデルカードと併用します。バージョン管理ツールはデータセットのスナップショットを作成し、コンテンツハッシュでファイルを識別するため、モデルから変更不可能なデータセットのバージョンを参照できます。パイプラインツールは、OpenLineageなどのオープン仕様に従い、ジョブの実行中にリネージイベントを出力します。
第3のレベルは、アーティファクト自体に保存されるメタデータです。Ultralytics YOLOの各学習実行では、データセットのYAMLパスやデータ拡張設定など、完全な設定が実行ディレクトリ内のargs.yamlに書き込まれます。保存されたチェックポイントには、Ultralyticsのバージョンと保存日とともに、同じ学習引数が含まれます。
from ultralytics import YOLO
# チェックポイントを読み込みます。Ultralyticsの重みファイルには、その重みを生成した実行の記録が保存されています
model = YOLO("yolo26n.pt")
ckpt = model.ckpt
# 学習に使用したデータセットと設定、パッケージのバージョン、保存日
print(ckpt["train_args"]["data"], ckpt["train_args"]["epochs"], ckpt["train_args"]["imgsz"])
print(ckpt["version"], ckpt["date"])この記録によって、モデルの重みが、重みの生成に使われたデータ参照と設定に結び付きます。これは、AIの透明性やAIガバナンスの審査で必要となる証拠です。学習が完了すると、Ultralyticsはサイズを小さくするためbest.ptからオプティマイザー状態を削除しますが、これらのフィールドは保持するため、デプロイされるファイルにも記録が残ります。










