Multiple Instance Learning
複数インスタンス学習では、病理スライド全体に1つの診断ラベルが付く場合のように、バッグ全体にのみラベルが付いたインスタンス群で学習し、重要なインスタンスを特定します。
マルチプルインスタンス学習(MIL)は機械学習の一種です。学習例はバッグと呼ばれるグループに分かれており、ラベルが付くのは各バッグだけで、バッグ内の個々のインスタンスにはラベルが付きません。「がん」とラベル付けされたデジタル病理スライドは、何千もの組織タイルからなるバッグで、そのうち腫瘍細胞が見られるのはほんの一部かもしれません。「インシデント」とラベル付けされた監視動画は短いクリップのバッグで、その大半は何事もなく終わります。MILはこのようなデータからバッグのラベルを予測し、その過程で、どのインスタンスがラベルの原因となるかも学習します。これは弱教師あり学習の一種であり、すべてのインスタンスのラベリングに専門家が長い時間を要する場合や、実施できない場合に使われます。
Thomas Dietterich、Richard Lathrop、Tomás Lozano-Pérezは、薬物活性予測を目的として、1997年にこの設定を導入しました。分子はさまざまな形状をとり、少なくとも1つの形状が標的に適合すれば結合するため、研究者らは分子ごとに取り得る形状をバッグとみなし、ラベルには分子の測定済み活性のみを使用しました。
標準的なMILの仮定#
二値ラベルに対する古典的な仮定では、バッグに少なくとも1つの陽性インスタンスが含まれていれば陽性、すべてのインスタンスが陰性の場合に限って陰性とします。通常の教師あり学習のようにバッグのラベルをすべてのインスタンスにコピーすると、陽性バッグ内にある多くの陰性インスタンスに誤ったラベルを付けることになります。MILでは代わりに各インスタンスをスコア化し、そのスコアをプーリングしてバッグ全体の予測を出します。最大値を取る方法は標準的な仮定に完全に一致します。バッグのスコアは最も疑わしいインスタンスと同じ高さになり、そのインスタンスのスコアだけがバッグのラベルからの誤差逆伝播信号を受け取ります。
このPyTorchの例では、ランダムなインスタンス20個からなるバッグ16,000個を使って線形インスタンススコアラーを学習します。各陽性バッグには、16個の特徴量のうち4個が異なる「証拠」インスタンスが1つ隠されています。学習にはバッグのラベルのみを使用し、テスト用の1,000個のバッグで、バッグの予測と、最高スコアのインスタンスが証拠であるかどうかの両方を確認します。
import torch
torch.manual_seed(0)
n = 17000 # 16,000 training bags and 1,000 test bags, each holding 20 instances with 16 features
bags, labels, witness = torch.randn(n, 20, 16), torch.randint(0, 2, (n,)).float(), torch.randint(0, 20, (n,))
bags[torch.arange(n), witness, :4] += 2.0 * labels[:, None] # a positive bag hides one shifted "witness" instance
scorer = torch.nn.Linear(16, 1) # gives every instance a score
optimizer = torch.optim.Adam(scorer.parameters(), lr=1e-2)
for i in range(0, 16000, 32): # train on 32 bags per step, using bag labels only
bag_logits = scorer(bags[i : i + 32]).squeeze(-1).max(dim=1).values # max pooling: a bag scores as its top instance
loss = torch.nn.functional.binary_cross_entropy_with_logits(bag_logits, labels[i : i + 32])
optimizer.zero_grad()
loss.backward()
optimizer.step()
with torch.no_grad():
scores = scorer(bags[16000:]).squeeze(-1) # one score per test instance
positive = labels[16000:].bool()
bag_accuracy = ((scores.max(dim=1).values > 0) == positive).float().mean()
located = (scores.argmax(dim=1) == witness[16000:])[positive].float().mean()
print(f"Bag accuracy: {bag_accuracy:.3f}, witness ranked first in {located:.3f} of positive bags")このモデルはテストバッグの0.917を正しく分類し、陽性バッグの0.960で証拠インスタンスを最上位にランク付けします。インスタンスのラベルは一度も使用していません。このインスタンスの順位付けによって、MILシステムは判断の根拠となったタイルやクリップを示せます。
プーリングとアテンションベースのMIL#
最大プーリングは単一のインスタンスに依存するため、ノイズの多いインスタンスが1つあるだけでバッグの予測が変わる可能性があります。平均プーリングはすべてのインスタンスを使いますが、希少なシグナルを薄めてしまいます。また、ラベルが何らかの特徴を示すインスタンスの割合に依存する、集合的な仮定に適しています。Maximilian Ilse、Jakub Tomczak、Max Wellingは、2018年にアテンションベースのディープMILを提案しました。この手法では、小規模なネットワークが各インスタンスに重みを付け、インスタンス特徴量の加重平均をバッグの表現とします。アテンション機構はサイズを問わずバッグを処理でき、インスタンスの順序を無視します。また、顕著性マップとよく似た、予測の根拠となる領域を示すヒートマップとして機能する重みを出力します。
全スライド画像は大きすぎてエンドツーエンドでは学習できないため、多くの病理画像パイプラインでは、まず凍結した事前学習済みエンコーダーで各タイルを特徴ベクトルに変換し、スライドラベルを使ってプーリングネットワークと分類器のみを学習します。YOLO26の画像分類モデルをそのエンコーダーとして利用できます。model.embed()は入力画像ごとに1つのプール済み特徴ベクトルを返すため、タイルのバッチをアテンションプーリングヘッド用のインスタンスベクトルのバッグに変換できます。
用途#
医用画像解析では、MILにより、病理医がギガピクセル規模のスライド上で腫瘍の輪郭を描く必要がなくなります。Memorial Sloan KetteringのGabriele Campanellaらは、病理レポートの診断結果のみを使い、15,187人の患者から得た44,732枚の全スライド画像でMILシステムを学習しました。2019年の研究では、前立腺がん、基底細胞癌、リンパ節への乳がん転移について、ROC曲線下面積が0.98を超えたと報告されています。
動画では、Waqas Sultani、Chen Chen、Mubarak Shahが各監視動画をセグメントのバッグとみなし、異常検知に利用しました。また、動画単位のラベルのみを持つ、未トリミング動画1,900本のUCF-Crimeデータセットを公開しました。このデータセットでは、インシデントが発生したセグメントに最も高い異常スコアを付けるようモデルを学習します。弱教師ありの物体検出では、画像を、画像に含まれるクラスのみがラベル付けされた候補領域のバッグとして扱います。最も高いスコアの領域が、予測されたバウンディングボックスになります。これらすべての設定で、同じスライド、患者、動画に由来するタイルやフレームをすべて同じ分割に保つことで、学習セットとテストセットにほぼ同一のインスタンスが分散することによるデータリークを防げます。
MILと関連する学習設定#
半教師あり学習では、完全にラベル付けされた例とラベルのない例を組み合わせます。一方、MILではすべてのバッグにラベルが付いていますが、インスタンスにはラベルがありません。マルチラベル分類では、1つの例に複数のクラスを割り当てます。この2つを組み合わせたものがマルチインスタンス・マルチラベル学習です。能動学習をMILと組み合わせると、インスタンス単位のラベル付けに見合う価値が生じた際に、陽性バッグのうちスコアが最も高いインスタンスを専門家に提示できます。










