Softmax
AIにおけるソフトマックス(Softmax)関数について解説します。Ultralytics YOLO26やニューラルネットワークを使用して、ロジットをマルチクラス分類の確率に変換する方法を学びましょう。
Softmax is a mathematical function pivotal to the field of artificial intelligence, specifically serving as the final step in many classification algorithms. It transforms a vector of raw numbers, often called logits, into a vector of probabilities. This transformation ensures that the output values are all positive and sum up to exactly one, effectively creating a valid probability distribution. Because of this property, Softmax is the standard activation function used in the output layer of neural networks designed for multi-class classification, where the system must choose a single category from more than two mutually exclusive options.
Link to this sectionSoftmaxのメカニズム#
一般的なディープラーニング (DL)ワークフローでは、ネットワークの各層が複雑な行列の乗算と加算を実行します。活性化関数を通る前の最終層の出力は、ロジットと呼ばれる生のスコアで構成されます。これらの値は負の無限大から正の無限大まで及ぶ可能性があるため、直接的に信頼度として解釈することは困難です。
Softmaxは、主に以下の2つの操作を行うことでこの問題に対処します。
-
指数化 (Exponentiation): 各入力値の指数を計算します。このステップにより、すべての値が非負($e^x$は常に正であるため)となり、最大値よりも大幅に低い値を抑制しつつ、最大スコアを強調します。
-
正規化 (Normalization): 指数化された値の合計を求め、各指数をこの合計値で割ります。この正規化プロセスは数値をスケール変換して全体の一部として表現するため、開発者はこれらをパーセンテージの信頼度スコアとして解釈できるようになります。
Link to this section実社会での応用#
明確な確率を出力するSoftmaxの能力は、さまざまな業界や機械学習 (ML)タスクにおいて不可欠なものです。
- 画像分類: コンピュータビジョンにおいて、モデルは画像にカテゴリを割り当てるためにSoftmaxを使用します。例えば、Ultralytics YOLO26分類モデルが写真を分析する場合、「ゴールデンレトリバー」、「ジャーマンシェパード」、「プードル」といったクラスのスコアを生成します。Softmaxはこれらのスコアを確率(例: 0.85、0.10、0.05)に変換し、その画像にゴールデンレトリバーが含まれているという高い信頼度を示します。これは、自動写真整理からAI in Healthcareにおける医療診断に至るまで、幅広いアプリケーションで不可欠です。
- 自然言語処理 (NLP): Softmaxは大規模言語モデル (LLMs)におけるテキスト生成のエンジンです。Transformerのようなモデルが文章を生成する際、語彙内のすべての単語に対してスコアを計算することで、次の単語(トークン)を予測します。Softmaxはこれらのスコアを確率に変換し、モデルが次に続く可能性が最も高い単語を選択できるようにすることで、円滑な機械翻訳と会話型AIを実現します。
- 強化学習: 強化学習のエージェントは、行動を選択するためにSoftmaxをよく利用します。常に最高値の行動を選択するのではなく、エージェントは確率を使用してさまざまな戦略を探索し、ロボット制御やゲームプレイのような環境で探索と活用のバランスを取ります。
Link to this sectionPythonコードの例#
以下の例では、事前学習済みの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}")Link to this sectionSoftmaxと関連概念の区別#
While Softmax is dominant in multi-class scenarios, it is important to distinguish it from other mathematical functions used in model training and architecture design:
- Sigmoid: Sigmoid関数も値を0から1の間にスケール変換しますが、各出力を独立して扱います。これによりSigmoidは、二値分類(はい/いいえ)や、クラスが排他的ではないマルチラベル分類(例:画像に「人」と「バックパック」の両方が含まれる場合)に最適です。Softmaxは確率の合計を強制的に1にするため、各クラスが競合する構造になります。
- ReLU (Rectified Linear Unit): ReLUは主にネットワークの隠れ層で使用され、非線形性を導入します。Softmaxとは異なり、ReLUは出力を特定の範囲に制限せず(負の入力にはゼロを、正の入力にはそのままを出力するだけです)、確率分布を生成することもありません。
- Argmax: Softmaxがすべてのクラスに対する確率を提供する一方で、Argmax関数は、確率が最も高い単一のインデックスを選択するために併用されることがよくあります。Softmaxは「ソフト」な信頼度を提供し、Argmaxは「ハード」な最終決定を提供します。
Link to this section高度な統合#
最新のMLパイプラインでは、Softmaxは損失関数内で暗黙的に計算されることがよくあります。例えば、Cross-Entropy Lossは、Softmaxと負の対数尤度を単一の数学的ステップに組み合わせることで、学習中の数値的な安定性を向上させます。Ultralytics Platformのようなプラットフォームは、これらの複雑な処理を自動的に行うため、ユーザーはこれらの数学的操作を手動で実装することなく、堅牢なモデルを学習できます。






