AIにおけるSoftmax関数を解説。Ultralytics YOLO26とニューラルネットワークを用いた多クラス分類において、ロジットを確率に変換する仕組みを学ぶ。
ソフトマックスは人工知能分野において中核的な数学的関数であり、特に多くの分類アルゴリズムの最終段階として機能する。これはロジットと呼ばれる生の数値のベクトルを、確率のベクトルへと変換する。 この変換により出力値は全て正となり、合計が正確に1となるため、有効な確率分布を効果的に生成します。この特性から、ソフトマックスは多クラス分類用に設計されたニューラルネットワークの出力層で標準的に用いられる活性化関数です。多クラス分類では、システムが互いに排他的である複数の選択肢(通常は3つ以上)から単一のカテゴリを選択する必要があります。
典型的な深層学習(DL)ワークフローでは、ネットワークの各層が複雑な行列乗算と加算を実行する。最終層の出力(活性化関数適用前)は、ロジットと呼ばれる生スコアで構成される。これらの値は負の無限大から正の無限大まで取り得るため、信頼度レベルとして直接解釈するのは困難である。
Softmaxは主に二つの操作を実行することでこの問題を解決します:
明確な確率を出力する能力により、Softmaxは様々な産業や機械学習(ML)タスクにおいて不可欠な存在となっている。
以下の例は、事前学習済みYOLO26分類モデルを読み込み、 Softmaxによって生成された確率スコアにアクセスする方法を示します。
from ultralytics import YOLO
# Load a pre-trained YOLO26 classification model
model = YOLO("yolo26n-cls.pt")
# Run inference on a sample image
results = model("https://ultralytics.com/images/bus.jpg")
# The model applies Softmax internally. Access the top prediction:
# The 'probs' attribute contains the probability distribution.
top_prob = results[0].probs.top1conf.item()
top_class = results[0].names[results[0].probs.top1]
print(f"Predicted Class: {top_class}")
print(f"Confidence (Softmax Output): {top_prob:.4f}")
多クラスシナリオではSoftmaxが主流であるが、モデルトレーニングやアーキテクチャ設計で使用される他の数学的関数と区別することが重要である:
現代の機械学習パイプラインでは、Softmaxは損失関数内で暗黙的に計算されることが多い。例えば、 クロスエントロピー損失 は、Softmaxと負の対数尤度を単一の数学的ステップに統合し、 トレーニング中の数値的安定性を向上させる。Ultralytics 、 これらの複雑性を自動的に処理し、ユーザーがこれらの数学的操作を手動で実装することなく、 堅牢なモデルをトレーニングできるようにする。