4

意味論的セグメンテーションの問題を解決しようとしています。実際の制約に従って、偽陽性の判定基準および偽陰性の判定基準は異なる。例えば、ある画素が誤って補正されている場合、前景はあまり好ましくなく、画素は背景として誤って補正される。損失機能を設定する際のこの種の制約をどのように処理するか。偽陽性と偽陰性に異なる重みを組み込む損失関数の設計

+0

現在、私は損失関数としてbinary_corrsentropyを使用しています。異なるクラスラベルに対して重みを追加することが可能かどうかは興味があります。 – user297850

答えて

2

class_weightパラメータをmodel.fitに設定すると、クラスに重み付けを行い、クラスに応じて誤った分類を異なるように処罰できます。

class_weight:トレーニング中にこのクラスのサンプルのモデルの損失に適用される重み(float)に対するオプションの辞書マッピングクラスインデックス(整数)。これは、表現力に欠けるクラスのサンプルに「注意を払う」ようにモデルに指示するのに便利です。例えば

out = Dense(2, activation='softmax') 
model = Model(input=..., output=out) 
model.fit(X, Y, class_weight={0: 1, 1: 0.5}) 

これは、最初よりも第二のクラス以下を罰するであろう。

+0

その要素を賢明にする方法はありますか? binary_crossエントロピーの出力に応じて重み付けすることはできますか?本当のポジティブが真のネガティブと異なって重み付けされるべきであるならば(またあなたの答えの陽性だけでなく)? – Nickpick

+0

最終的には、あなたの損失関数の出力にあなたが好む任意の項を乗算できますが、これを行うには、独自の損失関数を書く必要があります(つまり、 'y_pred'と' y_true'を取る関数を提供し、あなたの体重ベクトルを乗算する)。 – nemo

+0

しかし、バイナリクロスエントロピー関数は常に0と1の間の損失を生成しません(0.5はy_true == y_predを意味します)。損失関数を歪めるスケーリングはしませんか? – Nickpick

関連する問題