Ensemble
アンサンブル学習が精度を向上させ、過学習を低減する仕組みをご確認ください。Ultralytics YOLO26のような複数のモデルを組み合わせ、高品質なコンピュータビジョンの結果を得る方法を学べます。
アンサンブル学習は、複数の独立したモデル(「弱学習器」と呼ばれることが多い)を組み合わせて単一の予測出力を生成する、機械学習(ML)における堅牢な戦略です。基本的な考え方は、単一のモデルだけで処理するよりも、モデルのグループの方が高い精度と優れた汎化性能を達成できることが多いというものです。多様なアルゴリズムによる予測を集約することで、アンサンブル手法はトレーニングデータへの過学習のリスクを効果的に低減し、ランダムな誤差を平滑化して、システム全体の安定性を向上させます。このアプローチは、重要な意思決定を行う際に一人の意見だけに頼るのではなく、専門家のパネルに相談することにたとえられます。
アンサンブル学習の仕組み#
アンサンブル手法の有効性は、バイアスと分散のトレードオフを調整できる点にあります。個々のモデルは、高い分散(ノイズへの感度)や高いバイアス(単純化しすぎること)の影響を受ける場合があります。アンサンブルは、以下の特定の手法によってこれらの問題を軽減します。
- バギング(ブートストラップ集約): この手法では、データセットの異なるサブセットで同じアルゴリズムの複数のインスタンスをトレーニングします。最も有名な例はランダムフォレストアルゴリズムです。これは多数の決定木の判定を集約して、分散を低減します。
- ブースティング: バギングとは異なり、ブースティングではモデルを順番にトレーニングします。新しいモデルはそれぞれ、以前のモデルが犯した誤りの修正に重点を置きます。LightGBMやCatBoostなどの一般的なフレームワークは、この手法を利用して非常に高精度な予測システムを構築します。
- スタッキング(積層汎化): これは、複数の異種ベースモデル(例:ニューラルネットワークとサポートベクターマシン)の予測を組み合わせるために、新しい「メタモデル」をトレーニングする手法です。
コンピュータビジョンにおけるアンサンブル#
コンピュータビジョン(CV)の分野では、コンペティションや安全性が重要なアプリケーションで性能を最大化するために、アンサンブルが頻繁に使用されます。物体検出では、同じ画像に対して、異なるバージョンのYOLO26など、複数のモデルを実行することが一般的です。得られたバウンディングボックスは、非最大抑制(NMS)や重み付きボックス融合(WBF)などの手法で統合され、最も可能性の高い物体位置が導出されます。
実世界での利用例#
アンサンブル手法は、予測の信頼性が極めて重要な業界で広く使用されています。
-
医療診断と画像処理: 医療分野では、偽陰性を避けることが重要です。アンサンブルでは、X線画像でトレーニングした畳み込みニューラルネットワーク(CNN)とビジョン Transformer(ViT)を組み合わせて、異常を検出する場合があります。モデル間の合意によって信頼度スコアが高まり、放射線科医による腫瘍の検出やまれな疾患の診断を支援します。
-
金融詐欺検出: 金融機関は、取引パターンの分析にアンサンブルを使用します。ロジスティック回帰モデルと勾配ブースティングマシンを組み合わせることで、単一のモデルでは見逃す可能性のある詐欺の微妙な兆候を検出しながら、誤警報率を低く抑えられます。
Pythonでのモデルアンサンブルの実装#
複数のトレーニング済みモデルを読み込み、同じ入力に対する予測を生成することで、基本的な推論アンサンブルをシミュレートできます。Ultralytics Platformを使用すると、これらのバリエーションを簡単にトレーニングできます。次の例では、2つの異なるUltralytics YOLOモデル(YOLO26nとYOLO26s)を読み込み、画像上の検出結果を検証します。
from ultralytics import YOLO
# Load two distinct YOLO26 model variants
# 'n' (nano) is faster, 's' (small) is more accurate
model_nano = YOLO("yolo26n.pt")
model_small = YOLO("yolo26s.pt")
# Define the image source
source = "https://ultralytics.com/images/bus.jpg"
# Run inference with both models
results_n = model_nano(source)
results_s = model_small(source)
# Compare the number of objects detected by each model
print(f"Nano Model Found: {len(results_n[0].boxes)} objects")
print(f"Small Model Found: {len(results_s[0].boxes)} objects")アンサンブルとデータ拡張の比較#
アンサンブル学習とデータ拡張を区別することが重要です。
- アンサンブルは、複数の異なるトレーニング済みモデルを組み合わせて結果を改善する、アーキテクチャと予測の段階に重点を置きます。
- データ拡張は、単一のより堅牢なモデルをトレーニングするために、回転や反転などによってデータセットの多様性を人為的に高める、トレーニングデータの段階に重点を置きます。
データ拡張は単一のモデルの学習を改善する一方、アンサンブル学習は複数のモデルによる相互の出力検証を可能にします。どちらの戦略も、インスタンスセグメンテーションや姿勢推定などのタスクで最先端の結果を達成するために、併用されることが多いです。









