深度神經網絡優化中的不可導函數如何計算梯度?

眾所周知,神經網絡僅能處理連續的浮點數,標準的輸出也是連續型的數字。但實際問題中,我們很多時候都需要一個離散的結果,比如分類問題中我們希望輸出正確的類別,“類別”是離散的,“類別的概率”才是連續的;又比如我們很多任務的評測指標實際上都是離散的,比如分類問題的正確率和F1、機器翻譯中的BLEU,等等。


深度神經網絡優化中的不可導函數如何計算梯度?

ReLU函數圖像

以分類問題為例,常見的評測指標是正確率,而常見的損失函數是交叉熵。交叉熵的降低與正確率的提升確實會有一定的關聯,但它們不是絕對的單調相關關係。換句話說,交叉熵下降了,正確率不一定上升。顯然,如果能用正確率的相反數做損失函數,那是最理想的,但正確率是不可導的(涉及到argmax 等操作),沒法直接用。

有兩種解決方案;一是動用強化學習,將正確率設為獎勵函數,這是“用牛刀殺雞”的方案;另外一種是試圖給正確率找一個光滑可導的近似公式。本文就來探討一下常見的不可導函數的光滑近似,有時候我們稱之為“光滑化”,有時候我們也稱之為“軟化”。

大家知道正確率如何做軟化嗎?想知道的可以告訴小編,小編在接下來的文章中會給大家講解哦。


深度神經網絡優化中的不可導函數如何計算梯度?


分享到:


相關文章: