Dataset Bias
データセットバイアスとは、学習データとモデルが使用される実世界との不一致であり、精度の偏りを引き起こします。主な種類、事例、検出・修正方法を解説します。
データセットバイアスとは、機械学習モデルの学習に使うデータと、モデルが対象とする人々、場所、条件との間にある系統的な不一致です。モデルは学習データに含まれるあらゆる規則性を学習するため、収集方法に由来する偶然の偏りも学習します。その結果、偏ったデータセットで学習したモデルは、頻繁に見た状況ではうまく機能しても、それ以外では性能が低下します。テストデータは通常、同じ収集元から得られるため、この問題はデプロイまで表面化しないことがよくあります。Antonio TorralbaとAlexei Efrosは2011年、「Name That Dataset」というゲームでこの点を示しました。単純な分類器でも、12種類の有名な画像データセットのどれに画像が由来するかを偶然よりはるかに高い確率で判別できました。それぞれのデータセットに固有のスタイルがあったためです。
データセットバイアスの種類#
- 選択バイアス: 対象集団ではなく、入手しやすい情報源からデータを集めます。Web上の写真は裕福な欧米の状況に偏っています。また、商用物体認識サービスの精度は、月収50米ドル未満の世帯の家庭用品に対して、月収3,500米ドルを超える世帯の家庭用品より約10%低く、米国とソマリアまたはブルキナファソで撮影された品目の間には15~20ポイントの差がありました。
- 表現バイアス: 一部のグループやクラスの出現頻度が低すぎて、モデルが十分に学習できません。Gender Shadesの監査では、商用の性別分類器が肌の色の濃い女性を最大34.7%の割合で誤分類する一方、肌の色の薄い男性の誤分類率は最大でも0.8%でした。物体検出における希少クラスのロングテールも、クラス単位で見た同じ問題です。
- 測定・撮影バイアス: データとデプロイ先で、カメラ、センサー、撮影場所、照明条件が異なります。胸部X線画像で肺炎を検出する深層学習モデルが、画像の撮影病院を特定できることもありました。病院によって肺炎の発生率が異なるため、この手掛かりは精度を水増しし、新しい施設への汎化性能を低下させました。これはショートカット学習の一種です。
- ラベルバイアス: データラベリングには、アノテーターの判断、ガイドラインの不整合、過去の決定が反映されます。モデルはそれらのパターンを正解として扱います。
- 時間的バイアス: ファッション、製品、車両の変化により、ある時期に収集したデータが現実と合わなくなります。
データセットバイアスの現れ方#
晴天で乾燥した気候のデータを中心に学習した自動運転の認識モデルは、雪、雨、暗闇では歩行者を検出しにくくなります。自動運転車や自動車分野のAIに取り組むチームは、この差を埋めるため夜間や悪天候のデータを収集します。医用画像解析では、肌の色が薄い人を中心としたデータで学習した皮膚科モデルは、肌の色が濃い人に対する性能が低下します。また、顔認識システムにも、Gender Shadesが測定した人口統計上の格差が現れます。どの場合も、多数派が平均を占めるため、全体の精度は高く見えます。
以下のスニペットでは、scikit-learnを使ってその仕組みを具体的に示します。グループBはグループAとは異なるパターンを持ちます。同じランダムフォレストを1,000個のサンプルで2回学習し、最初はグループBをデータの2%にし、次にバランスを取ります。
import numpy as np
from sklearn.ensemble import RandomForestClassifier
rng = np.random.default_rng(0)
def sample(n, group):
"""Draw n points from group A (label set by feature 0) or group B (label set by feature 1)."""
center = 0.0 if group == "A" else 3.0
X = rng.normal(center, 1.0, size=(n, 2))
return X, X[:, 0 if group == "A" else 1] > center
for n_a, n_b in [(980, 20), (500, 500)]: # skewed, then balanced training sets of the same size
Xa, ya = sample(n_a, "A")
Xb, yb = sample(n_b, "B")
model = RandomForestClassifier(random_state=0).fit(np.vstack([Xa, Xb]), np.concatenate([ya, yb]))
acc = {g: model.score(*sample(2000, g)) for g in "AB"} # held-out accuracy per group
print(f"train A:B = {n_a}:{n_b} -> accuracy on A {acc['A']:.3f}, on B {acc['B']:.3f}")偏ったデータセットで学習すると、モデルはグループAでは完璧な精度(1.000)を示しますが、グループBでは正解率が76.8%にとどまります。同じ1,000個のサンプルのバランスを取ると、グループBの精度は98.3%に上がり、グループAはわずかに下がって97.2%になります。テストセットが偏った学習データと同じ98対2の割合で混在している場合、最初のモデルは全体で約99.5%のスコアを達成し、格差を完全に覆い隠してしまいます。
データセットバイアスと関連概念の比較#
- アルゴリズムバイアス: 多数派クラスを優遇する損失関数など、モデルの設計、目的関数、デプロイによって生じる偏りです。データセットバイアスはアルゴリズムバイアスの主な原因の1つであり、両者が重なって影響を強めることもよくあります。
- AIにおけるバイアス: AIシステムにおける系統的な不公平さを指す包括的な用語であり、AIにおける公平性の対義語です。NISTのAIバイアスを特定・管理するための規格では、バイアスの原因をシステム的、人間的、統計的または計算的なカテゴリに分類しており、代表性のないデータセットは最後のカテゴリに含まれます。
- データドリフト: デプロイ後に入力データの分布が変化することです。データセットバイアスはデータ収集時点から存在しますが、データドリフトは元のデータが代表性を備えていても、後から差を生じさせます。
データセットバイアスの検出と低減#
検出は、データの文書化とグループ別評価から始めます。Datasheets for Datasetsでは、誰がどのように何の目的でデータを収集したかを記録し、利用者がどの対象を代表しているか判断できるようにすることを提案しています。評価では単一の平均値ではなく、グループ、施設、カメラ、条件ごとのメトリクスと、各区分の混同行列を報告する必要があります。データ自体を調べることも役立ちます。Ultralytics Platformでは、各データセットのClassesタブでクラスごとのアノテーション数をグラフ表示でき、不均衡なデータ向けに対数スケールへ切り替えられます。また、Clusteringパネルでは画像の埋め込みをクラスまたは分割ごとに色分けして表示できるため、学習前にカバレッジの不足を把握できます。
原因に応じて対策を講じます。性能の低い区分を対象としたデータ収集は原因に直接対処し、アクティブラーニングは新たにラベル付けする画像の選択に役立ちます。データ拡張では照明、向き、スケールを変化させ、合成データでは夜間シーンや珍しい欠陥などの希少な条件を補えます。代表性の低い例の重み付けやオーバーサンプリング、または分布ロバスト最適化による最悪性能グループへの最適化は、学習で重視される対象を変えます。デプロイ後は、区分別のモデルモニタリングによって、条件の変化に伴って生じる差を検出できます。










