オブジェクトの検出とセマンティックセグメンテーションに関連するディープラーニングの実装では、シグモイドまたはソフトマックスのいずれかを使用する出力レイヤーを見てきました。どちらを使用するかは明確ではありませんか?どちらもこれらのタスクをサポートできるようです。この選択に関するガイドラインはありますか?
softmax()
は、合計が1になる確率分布が必要な場合に役立ちます。sigmoid
は、出力を0〜1の範囲にしたいが、合計が1である必要がない場合に使用されます。
あなたの場合、あなたは2つの選択肢から分類して選択したいと思います。クロスエントロピー損失関数を適用できる確率分布が得られるので、softmax()
の使用をお勧めします。
オブジェクト検出は、画像のスライディングウィンドウで使用されるオブジェクト分類です。分類では、いくつかのクラス空間で正しい出力を見つけることが重要です。例えば。 10個の異なるオブジェクトを検出し、その中の最も可能性の高いオブジェクトを知りたいとします。その場合、層全体が合計1になるというプローベティのため、softmaxは適切です。
一方、セマンティックセグメンテーションでは、画像が何らかの方法でセグメント化されます。セマンティックな医療セグメンテーションを実行しましたが、出力はバイナリイメージです。これは、シグモイド値が出力クラスごとに0〜1であるため、このピクセルがこの特定のクラスに属するかどうかを予測する出力としてシグモイドを持つことができることを意味します。
シグモイド関数とソフトマックス関数は目的が異なります。ニューラルネットワーク設計でシグモイド対ソフトマックスを使用する場合の詳細な説明については、次の記事を参照してください。 "分類:シグモイド対ソフトマックス。"
短い要約:
複数の「正解」がある(出力が相互に排他的ではない)マルチラベル分類の問題がある場合は、各raw出力で個別にシグモイド関数を使用できます。シグモイドにより、すべてのクラス、一部のクラス、またはすべてのクラスに対して高い確率を持つことができます。
代わりに、「正しい答え」が1つしかない(出力は相互に排他的である)マルチクラス分類問題がある場合は、softmax関数を使用します。 softmaxは、出力クラスの確率の合計が1に等しいことを強制します。そのため、特定のクラスの確率を上げるために、モデルはそれに応じて他のクラスの少なくとも1つの確率を下げる必要があります。
一般に、「n」個のクラスが存在する場合、Softmaxが使用されます(Softmax Classifier)。シグモイドまたはソフトマックスの両方をバイナリ(n = 2)分類に使用できます。
シグモイド:S(x) = 1 /(1+(e ^(-x)))
Softmax:
σ(x)j = e / **Σ**{k=1 to K} e^zk for(j=1.....K)
Softmaxはマルチクラスシグモイドの一種ですが、Softmaxの関数が表示された場合、すべてのsoftmaxユニットの合計は1であると想定されています。シグモイドでは、それは必ずしも必要ではありません。
深く掘り下げて、シグモイドをマルチクラス分類に使用することもできます。ソフトマックスを使用すると、基本的に、合計が1にバインドされている各クラス(結合分布と多項尤度)の確率が得られます。マルチクラス分類にシグモイドを使用する場合、限界分布とベルヌーイ尤度のようになりますp(y0/x)、p(y1/x)など