Neural-Networks
骰子係數損失函數與交叉熵
在訓練像素分割神經網絡(例如全卷積網絡)時,您如何決定使用交叉熵損失函數與 Dice 係數損失函數?
我意識到這是一個簡短的問題,但不太確定要提供哪些其他信息。我查看了一堆關於這兩個損失函數的文檔,但無法直觀地了解何時使用其中一個。
使用交叉熵而不是骰子係數或類似的 IoU 度量的一個令人信服的原因是梯度更好。
logits 的交叉熵梯度類似於 $ p - t $ , 在哪裡 $ p $ 是 softmax 輸出和 $ t $ 是目標。同時,如果我們嘗試將骰子係數寫成可微分形式: $ \frac{2pt}{p^2+t^2} $ 或者 $ \frac{2pt}{p+t} $ ,然後得到的梯度wrt $ p $ 更醜: $ \frac{2t(t^2-p^2)}{(p^2+t^2)^2} $ 和 $ \frac{2t^2}{(p+t)^2} $ . 很容易想像兩者兼有的情況 $ p $ 和 $ t $ 很小,並且梯度會爆炸到一些巨大的值。一般來說,訓練似乎會變得更加不穩定。
人們嘗試直接使用骰子係數或 IoU 的主要原因是實際目標是最大化這些指標,而交叉熵只是一個更容易使用反向傳播最大化的代理。此外,Dice 係數通過設計在類不平衡問題上表現更好:
但是,通常只需通過為每個類分配損失乘數來解決類不平衡問題,這樣網絡就很容易忽略不經常出現的類,因此在這些情況下是否真的需要 Dice 係數尚不清楚。
我將從交叉熵損失開始,這似乎是訓練分割網絡的標準損失,除非有一個真正令人信服的理由使用 Dice 係數。