如何向女朋友介紹損失函數

目錄

交叉熵損失函數

均方誤差

自定義損失函數


     

上篇文章咱們聊到了激活函數,在最後的時候又說到了輸出層的一些東西。關於神經網絡還有一點也是十分重要而又容易忽略的,那就是損失函數(loss function)。

      通俗的說,在神經網絡中的損失函數是指尋找最優權重的依據指標。根據實際解決的問題不同,損失函數的形式往往也不相同。在神經網絡中最常使用的損失函數有均方誤差(mean squared error )和交叉熵誤差(cross entropy error)。

       在介紹神經網絡的時候,我們使用設置閾值的方式來實現邏輯電路(其實也就是分類問題),但在解決實際問題時,一般不這麼處理。我們以手寫數字識別爲例子,比如手寫數字1,我們將其表示爲[0,1,0,0,0,0,0,0,0,0](這種表示方式稱之爲one-hot表示),於此對應的是輸出結果越接近[0,1,0,0,0,0,0,0,0,0]越好,那麼如何判斷輸出與其有多接近呢?類似於這種問題交叉熵是常用的判斷方法之一,它衡量的是兩個分佈之間的距離,在分類問題中會經常使用到交叉熵損失函數。

交叉熵損失函數

給定兩個概率分佈分別爲p和q,則使用q來表示p的交叉熵爲:

 

      有小夥伴注意到了,交叉熵是衡量兩個概率分佈間的距離,當距離越小時,兩個分佈越接近。但是神經網絡最後的輸出不一定是一個概率分佈。但是大管在上篇博文中和各位大佬聊了輸出層,其中就說了使用softmax函數可以完美的將輸出層的輸出轉變成概率分佈。從公式中,可以看到,交叉熵並不是對稱的即(H(p, q)≠H(q, p)),其表達的意義也不一樣。它刻畫的是通過概率分佈 q 來表達概率分佈 p 的困難程度。因爲正確答案是希望得到的結果,所以當交叉熵作爲神經網絡的損失函數時,p 代表的是正確答案, q 代表的是預測值(即用預測值來表示正確值)。紙上得來終覺淺,絕知此事要躬行,還是通過一個小例子來看看交叉熵到底是如何運算的。

      假設有一個三分類問題,正確的結果應該是(1,0,0)。現在有兩個模型,模型1預測的結果爲(0.5,0.4,0.1),模型2預測的結果爲(0.8,0.1,0.1),下面分別計算兩個模型和正確結果之間的交叉熵:

模型1:

模型2:

可以看到,第二個模型要比第一個模型好。通過上面的計算,我們彷彿能發現一個問題,就是交叉熵的值是由正確標籤對應的結果決定的。同時從交叉熵的公式中可以看出,負的自然對數可以避免梯度消失的問題,因爲很多輸出都會包含指數函數,而交叉熵中的自然對數卻剛好笑出了輸出單元中的指數效果。

然而對於迴歸問題,是對具體數值的預測。預測的結果往往是一個連續的實數,解決這種問題的神經網絡一般只有一個輸出結點。類似於這種迴歸問題最常用的損失函數是均方誤差。

均方誤差

其中yi爲一個bach中正確的標籤值,yi'爲預測標籤值。

      均方誤差可能比較簡單、好理解,但是在使用梯度優化的方法時,效果往往不好,一些飽和的輸出單元在使用均方誤差時會產生非常小的梯度。這也解釋了爲什麼交叉熵誤差比均方誤差更受歡迎的原因之一(劃重點)。

自定義損失函數

      回到開頭的一句話,“實際解決的問題不同,損失函數的形式往往也不相同”,那現在我們就可以自己定義損失函數。

      例如,如果一件衣服的成本是1元,但是利潤是10元,那麼少預測一個就少掙 10 元,而多預測一個才少掙1元。自定義損失函數爲:

 其中:

即當預測值大於實際生產值的時候,係數爲10,當預測值小於實際生產值時係數爲1。

所以對於相同的神經網絡,不同的損失函數會產生重大的影響。

多內容下載機器學習資料請掃描下方二維碼關注小編公衆號:程序員大管

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章