SoftmaxがAIにおける分類タスクのスコアを確率に変換し、画像認識やNLPを成功に導く仕組みをご覧ください。
ソフトマックスは、ロジットと呼ばれる生の実数値のスコア・ベクトルを確率のベクトルに変換する数学関数である。機械学習(ML)の文脈では、ソフトマックスは主にニューラルネットワークの出力層で活性化関数として使用される。その重要な役割は、ネットワークの最終スコアを、複数の互いに排他的なクラスにわたる意味のある確率分布に変換することである。結果として得られる確率の和は1になり、各可能な結果に対するモデルの確信度として解釈しやすくなる。
ある画像がどのカテゴリーに属するかを判断しようとするニューラルネットワークを想像してほしい。ネットワークの最終レイヤーは、各カテゴリの生スコアを生成する。スコアが高ければ高いほど、モデルはそのカテゴリーに傾くが、このスコアは標準化されていないため、直接扱うのは難しい。
ソフトマックス関数は、これらのスコアを用いて、主に2つのステップを実行する:
最終的な出力は確率のリストで、各値は入力が特定のクラスに属するとモデルが予測した尤度を表します。そして、最も高い確率を持つクラスが、最終的な予測値として選ばれます。
ソフトマックスは、マルチクラス分類を行うディープラーニングモデルの基本である。明確で確率的な出力を提供するその能力は、様々なドメインで貴重なものとなっている。
ソフトマックスを他の一般的な活性化関数と区別することは重要である。
強力な反面、Softmaxは非常に大きな入力スコアに対して敏感である可能性があり、それは時に数値的な不安定性(オーバーフローやアンダーフロー)につながる可能性がある。これに対処するため、PyTorchや TensorFlowのような最新の深層学習フレームワークは、裏で数値的に安定したバージョンのSoftmaxを実装しています。
ソフトマックスはほとんどの場合、モデル学習時にクロスエントロピー損失(またはログ損失)と呼ばれる特定の損失関数と組み合わせられる。この組み合わせは、マルチクラス分類器のトレーニングに非常に効果的です。Softmaxの挙動を理解することは、効果的なモデルのトレーニングと解釈のために非常に重要であり、実験とデプロイメントを合理化するためにUltralytics HUBのようなプラットフォームを使用して管理および追跡することができます。