諸如此類,有的直接把中間層結果輸出成一個loss,是不是這樣設置的越多,效果也就越好


參數調得越細越好


not exactly.

由任務決定的,由模型到底要學啥,要優化啥決定的。


我認為,神經網路的設計要遵守奧卡姆剃刀的規律,簡潔即美,loss函數的本意是告訴神經網路什麼是錯的,並如何糾錯。

一個神經網路往往只對應一種任務,使用一項針對任務的loss就可以了,其餘的所有項其實都是做正則化用的,而正則化也是一個單一任務,故整個loss其實就只應該存在兩項,即任務指標和正則化指標,並以最簡形式實現。

現在任務指標上沒法做太多文章了,都在玩正則化,但正則化這個事情做的太狠了,就會矯枉過正,阻礙網路權重的發展,使整個網路陷入「權重向零收斂」的情況。

所以,loss函數尤其是正則化函數,要盡量設計的簡潔有效,一切要以網路的任務為出發點,而不是一味追求所謂的創新。


多loss要根據網路的設計來弄的。比如加了邊緣檢測的loss輔助,加不同解析度輸出loss輔助。如果是相同原理的loss,效果應該差距不大。比如用L1 Loss和cross entropy一起去做二類分割,效果跟使用單loss去調權重是差不多的。


理論上是的,可以理解為平常我們是把中間層結果的loss權重設置為0。但是問題是loss越多,需要的權重越多,,這麼多超參數,想想就頭大。。


有些loss是互相衝突的,設置越多,越難訓練


如果是的話你為啥沒見人這麼幹過呢


不一定,參考具體任務,

你這篇文章貌似是多任務學習

那個中間層作loss的可以參考漸進學習


單純回答一下語義分割方面,但也純粹是個人的見解。

語義分割加多個相同的loss都先河我暫且認為是從pspnet開始的,在resnet第三層加一個相同的ce loss來加速收斂,同時結果上有一些細微的提升。後面有些encoder decoder型網路甚至每一層都來一次ce loss。

為什麼這樣做很難說,只能說語義分割是個pixel dense的工作,即使是中間層特徵尺度也很大,所以中間層加ce loss也是容易收斂的,有些論文把這解釋為一種coarse to fine。當然如果你加的是除了ce以外的其他loss,那效果要根據實際情況來討論。


推薦閱讀:
相關文章