完全たたみ込みネットワークなどのピクセルセグメンテーションニューラルネットワークをトレーニングする場合、クロスエントロピー損失関数とダイス係数損失関数のどちらを使用するかをどのように決定しますか?
これは短い質問ですが、他にどのような情報を提供すべきかはよくわかりません。2つの損失関数に関する多くのドキュメントを見ましたが、どちらを使用するかを直感的に理解することはできません。
完全たたみ込みネットワークなどのピクセルセグメンテーションニューラルネットワークをトレーニングする場合、クロスエントロピー損失関数とダイス係数損失関数のどちらを使用するかをどのように決定しますか?
これは短い質問ですが、他にどのような情報を提供すべきかはよくわかりません。2つの損失関数に関する多くのドキュメントを見ましたが、どちらを使用するかを直感的に理解することはできません。
回答:
ダイス係数または同様のIoUメトリックよりもクロスエントロピーを使用する理由の1つは、勾配がより良いことです。
ロジットに対するクロスエントロピーの勾配はようなものです。ここで、pはソフトマックス出力、tはターゲットです。一方、サイコロ係数を微分可能な形式で書き込もうとすると、2 p tまたは2pt場合、結果の勾配wrtpははるかにいです:2t2および2t(t2−p2)。pとtの両方が小さく、勾配が非常に大きな値になる場合を想像するのは簡単です。一般に、トレーニングはより不安定になる可能性が高いようです。
人々がサイコロ係数またはIoUを直接使用しようとする主な理由は、実際の目標はそれらのメトリックの最大化であり、クロスエントロピーは逆伝播を使用して最大化するのが簡単なプロキシにすぎないことです。さらに、設計により、クラス不均衡問題でのダイス係数のパフォーマンスが向上します。
ただし、クラスの不均衡は、通常、損失乗数を各クラスに割り当てることで簡単に処理されます。そのため、ネットワークは、頻繁に表示されないクラスを単に無視するように非常に抑制されているため、これらの場合にダイス係数が本当に必要かどうかは不明です。
ダイス係数を使用する本当に説得力のある理由がない限り、クロスエントロピーの損失から始めます。これは、セグメンテーションネットワークのトレーニングの標準的な損失のようです。
@shimaoと@cherubに要約されているように、特定のデータセットでどちらがよりうまく機能するかをアプリオリと言うことはできません。正しい方法は、両方を試して結果を比較することです。また、セグメンテーションに関しては、「結果を比較する」のはそれほど簡単ではないことに注意してください。サイコロ係数などのIoUベースの測定は、セグメンテーションの品質の一部の側面のみをカバーします。一部のアプリケーションでは、平均表面距離やハウスドルフ表面距離などのさまざまな指標を使用する必要があります。ご覧のように、最適なコスト関数の選択は言うまでもなく、正しい品質メトリックの選択も簡単ではありません。
私は個人的にサイコロ係数に関して非常に良い経験を持っています。クラスの不均衡に関しては、本当に驚異的です(一部のセグメントは、他のものよりも少ないピクセル/ボクセルを占有します)。一方、トレーニングエラーカーブは完全に混乱します。収束に関する情報がまったく得られなかったため、この点でクロスエントロピーが優先されます。もちろん、とにかく検証エラーをチェックすることで、これを回避することができます/すべきです。