2016-11-22 10 views
2
  1. tensorflowでは、ピース単位(またはif-elseで)などの損失関数として非平滑関数を使用できますか?もしあなたが傾けるなら、なぜあなたはReLUを使うことができますか?このリンク SLIM非平滑で非微分可能なカスタマイズされた損失関数テンソルの流れ

  2. 、それは「

言う例えば、我々は、ログの損失を最小限にしたいかもしれませんが、興味のある私たちのメトリックはF1スコア、または交差点オーバー連合のスコアであるかもしれない(これは微分可能ではないため、損失として使用することはできません)。

設定上の問題など、「区別できない」という意味ですか?なぜなら、ReLUの場合、ポイント0では、それは区別できないからです。

  1. このようなカスタマイズされた紛失機能を使用する場合は、自分で勾配を実装する必要がありますか?またはテンソルフローが自動的にあなたのためにそれを行うことができますか?私はいくつかのcustumized損失関数をチェックしましたが、彼らは損失関数のために勾配を実装しませんでした。
+0

#3の回答も探しています。素晴らしい質問ありがとう –

答えて

6

問題は、損失が断片的であるか非平滑であることではありません。問題は、出力と期待される出力の間にエラーがある場合、ネットワークパラメータ(dloss/dparameter)にゼロ以外の勾配を返すことができる損失関数が必要であるということです。これは、モデル内で使用されるほとんどすべての関数(損失関数、起動関数、注意関数など)に適用されます。

たとえば、パーセプトロンは、活性化関数としてH(x)を使用します(x> 0、その他の場合はH(x)= 1)。 H(x)の導関数は常にゼロ(x = 0で未定義)なので、損失から来る勾配はそれをウェイト(チェーンルール)に戻さないので、ネットワーク内のその関数の前のウェイトは更新できません勾配降下を使用してそれに基づいて、勾配降下はパーセプトロンには使用できないが、sigmoid活性化関数を使用する従来のニューロン(すべてのxについて勾配がゼロでないため)に使用することができる。

Reluの場合、導関数はx> 0であり、そうでない場合は0です。微分はx = 0で定義されていませんが、x> 0のときには、それでも損失勾配を逆伝播できます。だからこそ使えるのです。

これは、ゼロ以外の勾配を持つ損失関数が必要な理由です。精度やF1のような関数はどこでもゼロ勾配(またはxの値によっては未定義)があるため使用できませんが、クロスエントロピー、L2L1などの関数はゼロでないため、使用することができます。 (L1の絶対差は断片的であり、x = 0で滑らかではないがまだ使用できることに注意してください)

上記の基準を満たさない関数を使用する必要がある場合は、代わりにreinforcement learning methodsを試してください。ポリシーの勾配)。

+0

しかし、直感的には、交叉オーバーユニオンは、厳密にゼロと1の間である限り、ゼロ以外の勾配で微分可能でなければなりません。 – gmr

+1

IoUは、交差点のピクセルカウントをユニオンのピクセルカウントで除算することによって動作します。その場合、画素数は離散的であるため、微分可能ではない。境界ボックスの実数値座標を使用すると、IoUは微分可能であると考えられます。また、[This paper](http://www.cs.umanitoba.ca/~ywang/papers/isvc16.pdf)では、ピクセルベースのIoUをピクセルの確率で動作するように変更することによって、IoUを微分可能にする方法を提案している特定のカテゴリ。 –

0

OPの質問#3が実行される限り、実際に勾配計算を自分で実装する必要はありません。 Tensorflowはあなたのためにそれを行います。私はそれについて愛していることの一つです!

関連する問題