来源:深度学习爱好者 CV技术指南
本文约1300字,建议阅读6分钟
本文为你从全方位介绍Softmax函数。
[はじめに] Softmax は誰もがよく知っている活性化関数ですが、多くの人はその表現とネットワーク内での位置を知っているだけで、具体的な理由や詳細を答えることができません。この記事では、対応する概要を説明します。
Softmax は、0 と 1 の間の値を正規化するために使用される数学関数です。
この記事では、次のことについて学びます。
ソフトマックス活性化関数とその数式とは何ですか?
argmax() 関数を使用してどのように実装されますか?
Softmax がニューラル ネットワークの最後の層でのみ使用されるのはなぜですか?
ソフトマックスに関する誤解
ソフトマックス活性化関数とその数式とは何ですか?
深層学習では、Softmax は、0 から 1 までのベクトルの各値の出力とスケールを正規化するための活性化関数として使用されます。Softmax は分類タスクに使用されます。ネットワークの最後の層では、分類タスクのクラスごとに 1 つずつ N 次元ベクトルが生成されます。
ネットワークの出力層の N 次元ベクトル
Softmax は、0 と 1 の間の加重合計値を正規化するために使用され、それらの合計は 1 に等しいため、ほとんどの人はこれらの値がクラス確率であると考えていますが、これは誤解であり、で説明します。記事上で。
Softmax 関数を実装するための式は次のとおりです。
この数式を使用して、データの各クラスの正規化された値を計算します。ここで、θ(i) は平坦化層から取得する入力です。
各クラスの正規化された値を計算します。分子はクラスのインデックス値、分母はすべてのクラスのインデックス値の合計です。Softmax 関数を使用すると、0 と 1 の間のすべての値が取得され、すべての値の合計は 1 になります。したがって、人々はそれを確率だと考えていますが、それは誤解です。
argmax() 関数はどのように使用されますか?
上記の数学関数を各クラスに適用した後、Softmax は各クラスの 0 から 1 までの値を計算します。
各クラスに複数の値があり、入力がどのクラスに属するかを分類するために、Softmax は argmax() を使用して、Softmax を適用した後に最大値を持つ値のインデックスを与えます。
argmax の視覚的な解釈
Softmax がニューラル ネットワークの最後の層でのみ使用されるのはなぜですか?
ここで重要な部分に入りますが、Softmax は値を正規化するために最後の層でのみ使用され、他の活性化関数 (relu、leaky relu、sigmoid など) は内部層で使用されます。
relu、leaky relu、sigmoid などの他の活性化関数を見ると、それらはすべて一意の単一値を使用して非線形性をもたらします。彼らは他の値が何なのかを見ることができません。
しかし、Softmax 関数では、分母にすべての指数値の合計を取り、すべてのクラスの値を正規化します。スコープ内のすべてのクラスの値が考慮されるため、最後の層で使用します。すべての値を分析することで、入力がどのクラスに属しているかを知る。
最後の層のソフトマックス活性化関数
ソフトマックスに関する誤解
Softmax に関する最初で最大の誤解は、正規化された値による出力が各クラスの確率値であるということですが、これは完全に間違っています。この誤解は、値の合計が 1 になるが、それらは単なる正規化された値であり、クラス確率ではないためです。
最後の層で Sotmax を単独で使用する代わりに、Softmax 関数から正規化された値の対数を取得するだけの Log Softmax を使用することを好みます。
Log Softmax は、数値的安定性、モデル トレーニング コストの低さ、および大きなエラーのペナルティ (エラーが大きいほどペナルティが大きくなります) の点で Softmax よりも優れています。
これは、ニューラル ネットワークの活性化関数として使用される Softmax 関数です。この記事を読んだ後、あなたはすでにそれを明確に理解していると思います。
元のリンク: https://medium.com/artificialis/softmax-function-and-misconception-4248917e5a1c
編集者:黄吉燕