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