數學 · 神經網路(三)· 損失函數

關於損失函數寬泛而準確的數學定義,我感覺我不會說得比 Wiki 更好,所以這一章主要還是介紹一些神經網路中常用的損失函數。然而即使把範圍限制在 NN,如何選、為何選相應的損失函數仍然是一個不平凡的數學問題。囿於時間(和實力)、這一章講的主要是幾個損失函數的定義、直觀感受和求導方法

從名字上可以看出,損失函數是模型對數據擬合程度的反映,擬合得越差、損失函數的值就應該越大。同時我們還期望,損失函數在比較大時、它對應的梯度也要比較大,這樣的話更新變數就可以更新得快一點。我們都接觸過的「距離」這一概念也可以被用在損失函數這裡,對應的就是最小平方誤差準則(MSE)

其中G即是我們的模型、它根據輸入矩陣X輸出一個預測向量G(X)

這個損失函數的直觀意義相當明確:預測值G(X)和真值Y的歐式距離越大、損失就越大,反之就越小。它的求導也是相當平凡的:

其中 w 是模型G中的一個待訓練的參數

由於 MSE 比較簡單、所以我們能夠從一般意義上來討論它。為便於理解,以下的部分會結合 NN 這個特定的模型來進行闡述。回顧 BP 演算法章節中的式子:

這裡的v_j^{(n)}其實就是G(X)。在 NN 中,我們通過最後一層的 CostLayer 利用v_j^{(n)}和真值Y得出一個損失、然後 NN 通過最小化這個損失來訓練模型

注意到上式的最後除了損失函數自身的導數以外、還有一項激活函數的導數。事實上,結合激活函數來選擇損失函數是一個常見的做法,用得比較多的組合有以下四個:

  • Sigmoid 系以外的激活函數 + MSE
    • MSE 是個萬金油,它不會出太大問題、同時也基本不能很好地解決問題。這裡特地指出不能使用 Sigmoid 系激活函數,是因為 Sigmoid 系激活函數在圖像兩端都非常平緩、從而會引起梯度消失的現象。MSE 這個損失函數無法處理這種梯度消失、所以一般來說不會用 Sigmoid 系激活函數 + MSE 這個組合。以 Sigmoid 函數為例:

      上面這張圖對應的情況是輸入為v、預測為G(v)approx 1但真值為 0。可以看到,即使此時預測值和真值之間的誤差幾乎達到了極大值,但由於varphi(v)太小、最終得到的梯度delta_j^{(n)}也會很小、導致收斂速度很慢
  • Sigmoid + Cross Entropy
    • Sigmoid 激活函數之所以有梯度消失的現象是因為它的導函數形式為varphi(v)(1 - varphi(v))。想要解決這個問題的話,比較自然的想法是定義一個損失函數、使得它的分母上有varphi(v)(1 - varphi(v))這一項。經過數學家們的工作,我們得到了 Cross Entropy 這個(可能是基於熵理論導出來的)損失函數,其形式為:

    • 它的合理性較直觀:當y = 0時、起作用的只有(1 - y)ln (1 - varphi(v)) = ln (1 - varphi(v)),此時varphi (v)越接近0C就越小;y = 1的情況幾乎同理。下面給出其導數形式:

      可見其確實滿足要求
    • 交叉熵背後是有一套數學理論的,感興趣的觀眾老爺們可以戳這裡
  • Softmax + Cross Entropy / log-likelihood
    • 這兩個組合的核心都在於前面用了一個 Softmax。Softmax 不是一個損失函數而是一個變換,它具有相當好的直觀:能把普通的輸出歸一化成一個概率輸出。比如若輸出是 (1, 1, 1, 1),經過 Softmax 之後就是 (0.25, 0.25, 0.25, 0.25)。它的定義式也比較簡潔:

      注意,這裡的varphi(v_i)通常是一個線性映射:

      亦即 Softmax 通常是作為一個 Layer 而不是一個 SubLayer

      之所以要進行這一步變換,其實和它後面跟的損失函數也有關係。Cross Entropy 和 log-likelihood 這兩個損失函數都是用概率來定義損失的、所以把輸出概率化是一個自然的想法。Cross Entropy 上面已有介紹,log-likelihood 的定義則是:

      亦即預測概率輸出中y_i對應的類概率的負對數。當預測概率輸出中y_i類概率為1的話、損失就是0;當概率趨於0時、損失會趨於infty
    • Cross Entropy 的求導上面也說了,下面就給出 Softmax + log-likelihood 的求導公式:

      其中

      從而

以上、大概講了一些損失函數相關的基本知識。下一章的話會講如何根據梯度來更新我們的變數、亦即會講如何定義各種 Optimizers 以及會講背後的思想是什麼。可以想像會是一個相當大的坑……

希望觀眾老爺們能夠喜歡~

(猛戳我進入下一章! ( σω)σ )


推薦閱讀:

為什麼一個數是3的倍數當且僅當它的各位數之和是3的倍數?
數學中最完美的數是什麼,還會有此類數出現嗎?
為什麼紙張要做成方型?
去掉首位還是斐波那契數的最大斐波那契數是多少?
「1 堆麥子 + 1 堆麥子 = 1 堆麥子」這樣的例子是否可以用數學語言解釋?

TAG:数学 | 机器学习 | 神经网络 |