Machine Unlearning
機械アンラーニングは、学習済みモデルから特定の学習データの影響を取り除きます。厳密手法と近似手法、結果のテスト方法、限界を解説します。
機械アンラーニングとは、学習済みの機械学習モデルから特定の学習データの影響を取り除き、モデルがその例を一度も見ていないかのように動作させるプロセスです。目標は、データを除いて一から再学習したモデルと同等の結果を、完全な再学習よりはるかに少ない計算量で実現することです。データを忘れるよう求められる理由には、GDPR第17条の消去権などのデータプライバシー法、著作権侵害の申し立て、後に誤ラベルや汚染が判明したデータ、大規模言語モデル(LLM)から有害な知識を取り除く取り組みなどがあります。
データを削除するだけでは不十分な理由#
勾配降下法によって、モデルが各例から学習した内容はモデルの重み全体に広がるため、元の画像や文書をストレージから削除しても、学習内容は残ります。また、モデルには個々の例から復元可能な痕跡が残る場合があります。メンバーシップ推論攻撃では特定のレコードが学習セットに含まれていたかを検証でき、大規模言語モデルは記憶した文章をそのまま再現することがあります。規制当局はモデル自体をデータの産物として扱います。2021年の和解において、米国連邦取引委員会は、適切な同意を得ずにユーザーの写真を使って構築した顔認識モデルとアルゴリズムを、写真アプリの開発元Everalbumに削除するよう命じました。この救済措置は現在、アルゴリズムによる成果の剥奪と呼ばれています。
厳密なアンラーニングと近似アンラーニング#
厳密なアンラーニングでは、忘却対象のデータを除いて再学習したモデルと同じ分布からモデルを生成します。ベースラインは一からの再学習です。BourtouleらのSISAフレームワークでは、学習セットをシャードに分割(Sharding)し、各シャードで独立したモデルを学習(Isolated)、各シャードをチェックポイント付きの段階に分割(Slicing)して、シャードモデルの予測を集約(Aggregating)することで、コストを削減します。削除要求があった場合、その例を含むシャードだけを再学習します。
import numpy as np
from sklearn.datasets import load_digits
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
X, y = load_digits(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
# SISA: split the training set into isolated shards and train one model per shard
shards = np.array_split(np.arange(len(X_train)), 5)
models = [LogisticRegression(max_iter=5000).fit(X_train[s], y_train[s]) for s in shards]
# Honor a deletion request for training sample 123 by retraining only the shard that held it
k = next(i for i, s in enumerate(shards) if 123 in s)
shards[k] = shards[k][shards[k] != 123]
models[k] = LogisticRegression(max_iter=5000).fit(X_train[shards[k]], y_train[shards[k]])
# Aggregate the shard models by majority vote
votes = np.stack([m.predict(X_test) for m in models])
pred = np.array([np.bincount(v).argmax() for v in votes.T])
print(f"Retrained {len(shards[k])} of {len(X_train)} samples, test accuracy {(pred == y_test).mean():.3f}")このスクリプトはRetrained 251 of 1257 samples, test accuracy 0.957を出力します。忘却対象の数字は再学習したシャードモデルに一度も含まれず、削除にかかるコストは完全な再学習の5分の1でした。その代償は事前に生じます。各シャードモデルが見るデータ量が少ないためです。ImageNet分類では、論文で測定された再学習の高速化は精度のわずかな低下を伴って1.36倍でしたが、より単純なPurchaseデータセットでは4.63倍でした。
近似アンラーニングでは既存モデルを編集し、結果が再学習したモデルに似るだけであることを許容します。一般的な手法には、忘却セットに対する勾配上昇で損失を増やす方法、保持データでファインチューニングして副作用を修正する方法、各例が重みに与えた影響を推定して更新する方法があります。LLMの場合、Microsoftの研究者は約1 GPU時間のファインチューニングでLlama 2 7BからHarry Potterの知識を消去し、一般的なベンチマークのスコアをほぼ維持しました。
モデルが忘却したかどうかのテスト#
説得力のある評価では、アンラーニングしたモデルと、データを除いて再学習したモデルを比較します。忘却セットの精度はゼロではなく、再学習モデルの水準まで下がるべきです。削除された例だけで顕著に失敗するモデルは、どの例が削除されたかを明らかにしてしまうためです。保持データとテストデータの精度は維持され、忘却対象の例に対するメンバーシップ推論攻撃の結果は偶然を上回らないことが求められます。架空の著者の経歴に基づくTOFUや、有害な生物学、化学、サイバー知識を測るWMDPなどのベンチマークでは、LLMにこれらのテストを適用します。
近似手法では、知識を削除するのではなく、隠すだけの場合がよくあります。敵対的な研究では、無関係な例をわずか10件使ってファインチューニングすると、主要なLLMアンラーニング手法であるRMUが抑制した有害な能力の大半が回復することが分かりました。構成上、削除を保証できるのは厳密な手法だけです。
機械アンラーニングと関連用語#
- 破滅的忘却: 新しいデータでモデルを学習したときに、以前の知識が意図せず失われる現象です。アンラーニングでは、選択した知識を意図的に削除します。
- 継続学習: 古い知識を失わずに、新しい知識を継続的に追加します。アンラーニングはその逆方向に機能します。
- モデル編集: 役職者の更新など、特定の事実や動作を変更します。アンラーニングでは特定の学習例の影響を対象とし、その成功度は再学習したモデルとの比較で評価します。
- 差分プライバシー: 学習時に、個々の例がモデルに与える影響の大きさを制限する保証です。これにより、後に忘却が必要となるレコードについて攻撃者が学習できる内容を制限します。
実践におけるアンラーニング#
削除はすべて、まず対象データで学習したモデルを特定することから始まります。
削除対象のデータを一度も見ていない事前学習済み重みからファインチューニングされたコンピュータービジョンモデルの場合、完全な再学習は多くの場合手頃なコストで実施できます。LLMの事前学習よりはるかに小規模な作業だからです。Ultralytics Platformでは、各データセットの「Models」タブに、そのデータセットで学習したすべてのモデルが一覧表示されます。実行時に保存された不変のデータセットバージョンも確認できるため、削除要求を、画像を見たYOLO26モデルまで追跡し、その画像を除いた新しいバージョンで再学習できます。同じ追跡と再学習の手順は、医用画像解析に使ったスキャンの同意を撤回する患者や、モデルの所有者が削除に同意した監視カメラで撮影された顔やナンバープレートにも適用できます。










