CNNの顔/非顔検出のバイナリ検出に使用する損失関数は何ですか?


11

ディープラーニングを使用して顔/非顔のバイナリ検出をトレーニングします。どの損失を使用する必要がありますか、それはSigmoidCrossEntropyLossまたはHinge-lossであると思います。

それは正しいですが、ソフトマックスを2つのクラスだけで使用する必要があるのでしょうか?

回答:


9

ヒンジ損失とクロスエントロピーは、一般的に同様の結果が見られます。さまざまな損失関数を比較する別の投稿があります分類でさまざまな損失関数を選択すると、0-1損失を近似することの影響は何ですか

それは正しいですが、ソフトマックスを2つのクラスだけで使用する必要があるのでしょうか?

Softmaxは損失ではなく正規化関数であり、クロスエントロピー損失とともに使用されることが多く、これは本質的にに相当しSigmoidCrossEntropyLossます。出力層のクロスエントロピーまたは対数尤度も参照してください


7

一般に、サンプルが一連のクラスの中で1つのクラスにしか所属できないという問題がある場合、最後のレイヤーをソフトマックスレイヤーに設定します。出力を確率として解釈できます。ソフトマックス層を使用する場合、クロスエントロピーの対数項がソフトマックス関数に存在するプラトーを相殺するため、クロスエントロピーは一般的に非常にうまく機能します。したがって、学習プロセスを高速化しますから0 シグモイド関数で)。

あなたの場合、バイナリ分類タスクがあるので、出力層は標準シグモイドになります(出力はテストサンプルが顔である確率を表します)。使用する損失は、バイナリ相互エントロピーになります。この設定を使用すると、ディープニューラルネットの最後の層でロジスティック回帰が発生することを想像できます。

ここにいくつかのリンクがあります。彼らが助けてくれることを願っています。
https://en.wikipedia.org/wiki/Cross_entropy#Cross-entropy_error_function_and_logistic_regression
http://neuralnetworksanddeeplearning.com/chap3.html
https://www.quora.com/How-do-you-decide-which-loss-機械学習に使用する機能


DNNの最後の層でのロジスティック回帰に光を当ててください。私は投稿を読みましたが、sigmoid(最後のレイヤーのアクティベーションとして)上の有用性を実際に見ることができません。おかげで
bit_scientist

2

あなたは間違いなく2つのクラス「Face」と「Not Face」だけでsoftmaxを使用し、ソフトマックス出力を信頼スコアとして解釈することができます。

2クラスのソフトマックス損失とバイナリヒンジ損失の両方を試してください。ディープコンバージョンネットの上にソフトマックス分類器の代わりにSVM を使用した線形サポートベクターマシンを使用したディープラーニングの最近の論文があり、そこにはいくつかの有望な結果があります。


2

通常、対数損失が推奨される選択肢であり、単一の出力ユニットのみと組み合わせて使用​​されます。対数損失は、2つのクラスのみで機能するクロスエントロピーの特殊なケースであるため、バイナリクロスエントロピーとも呼ばれます。


最初のリンクを更新する必要があります。
nbro

0

理論的には、2つのクラスを持つソフトマックスはシグモイドとして書き換えることができるため、2つのクラスの結果に違いはないはずです。実際には、@ dontlooが言及したように、出力レイヤーのパラメーターの数は2倍になり(これがオーバーフィットの問題につながるかどうかはわかりません)、もちろん2つのクラス(FaceとNon_Face)に2つのスコアがあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.