Softmax
AIにおけるSoftmax関数を解説します。Ultralytics YOLO26とニューラルネットワークを使用したマルチクラス分類で、ロジットを確率に変換する仕組みを学びます。
Softmaxは人工知能分野で重要な数学関数であり、特に多くの分類アルゴリズムの最終ステップとして機能します。Softmaxは、ロジットと呼ばれることが多い生の数値のベクトルを、確率のベクトルに変換します。この変換により、出力値がすべて正となり、合計が正確に1になるため、有効な確率分布が生成されます。この特性により、Softmaxは、2つを超える相互排他的な選択肢から単一のカテゴリを選択する必要があるマルチクラス分類向けに設計されたニューラルネットワークの出力層で使用される標準的な活性化関数となっています。
Softmaxの仕組み#
一般的なディープラーニング (DL)ワークフローでは、ネットワークの各層が複雑な行列の乗算と加算を実行します。活性化前の最終層の出力は、ロジットと呼ばれる生のスコアで構成されます。これらの値は負の無限大から正の無限大までの範囲を取る可能性があるため、信頼度として直接解釈することは困難です。
Softmaxは、次の2つの主な処理によってこの問題に対処します。
-
指数化: 入力された各数値の指数を計算します。この処理により($e^x$は常に正であるため)すべての値が非負になり、最大値より大幅に小さい値にはペナルティを与える一方で、最大のスコアを強調します。
-
正規化: 指数化された値を合計し、個々の指数値をこの合計値で割ります。この正規化処理によって数値が全体に占める部分を表すようにスケーリングされ、開発者はそれらをパーセント形式の信頼度スコアとして解釈できます。
実世界での利用例#
明確な確率を出力できるため、Softmaxはさまざまな業界や機械学習 (ML)タスクで不可欠です。
- 画像分類: コンピュータービジョンでは、モデルが画像を分類するためにSoftmaxを使用します。たとえば、Ultralytics YOLO26分類モデルが写真を解析すると、「ゴールデンレトリバー」、「ジャーマンシェパード」、「プードル」などのクラスに対するスコアを生成することがあります。Softmaxはこれらのスコアを確率(例: 0.85、0.10、0.05)に変換し、画像にゴールデンレトリバーが含まれる可能性が高いことを示します。これは、自動写真整理からヘルスケアにおけるAIを用いた医療診断まで、幅広いアプリケーションで重要です。
- 自然言語処理 (NLP): Softmaxは大規模言語モデル (LLMs)におけるテキスト生成の中核です。Transformerなどのモデルが文を生成する際、語彙に含まれるすべての単語についてスコアを計算し、次の単語(トークン)を予測します。Softmaxはこれらのスコアを確率に変換するため、モデルは最も可能性の高い次の単語を選択でき、滑らかな機械翻訳や会話型AIが可能になります。
- 強化学習: 強化学習のエージェントは、アクションの選択にSoftmaxを使用することがよくあります。常に価値が最も高いアクションを選択するのではなく、エージェントは確率を利用してさまざまな戦略を探索し、ロボット制御やゲームプレイなどの環境で探索と活用のバランスを取ることができます。
Pythonコードの例#
次の例では、事前学習済みの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はマルチクラスのシナリオで広く使用されていますが、モデル学習やアーキテクチャ設計で使用される他の数学関数との違いを理解することが重要です。
- Sigmoid: Sigmoid関数も値を0から1の範囲にスケーリングしますが、各出力を独立して扱います。そのため、Sigmoidは二値分類(はい/いいえ)や、クラスが相互排他的でないマルチラベル分類(例: 画像に「人物」と「バックパック」の両方が含まれる場合)に適しています。Softmaxでは確率の合計が1になるため、クラス同士が競合します。
- ReLU(整流線形ユニット): ReLUは主にネットワークの隠れ層で使用され、非線形性を導入します。Softmaxとは異なり、ReLUは出力を特定の範囲に制限しません(負の入力に対しては単に0を出力し、正の入力に対しては入力値そのものを出力します)。また、確率分布も生成しません。
- Argmax: Softmaxがすべてのクラスの確率を提供する一方で、Argmax関数は通常、Softmaxと組み合わせて使用され、確率が最も高い単一のインデックスを選択します。Softmaxが「ソフトな」信頼度を提供するのに対し、Argmaxは「ハードな」最終決定を提供します。
高度な統合#
最新のMLパイプラインでは、Softmaxは損失関数内で暗黙的に計算されることがよくあります。たとえば、交差エントロピー損失はSoftmaxと負の対数尤度を単一の数学的処理に組み合わせ、学習中の数値安定性を向上させます。Ultralytics Platformなどのプラットフォームは、こうした複雑な処理を自動的に行うため、ユーザーはこれらの数学的処理を手動で実装することなく、堅牢なモデルを学習できます。









