引言:
“函數”不陌生,小時候我們曾經學過,函數表達的是一個對應關係。這種表述是相對寬泛的,也是相對準確的。寬泛是指客觀來說這種表述對於數學也好,對於編程也好都是適用的。準確指的是,我主觀上覺得它準確。“損失”就比較生活了,比如錢包被偷了,裏面有五塊錢現金,一張沒有錢沒來得及註銷的銀行卡,一包價值五毛錢的面巾紙及一張女朋友的照片。那麼我們評估一下損失,發現這次損失了二十萬零五塊五,因爲女朋友的照片我覺得差不多值二十萬。這個過程就是在“評估損失”,說人話就是看看虧了多少錢。我記得一位偉大的管理學家說過“沒有統計,就沒有管理”,機器學習的目的其實就是提升自身的能力,提升能力這本身就是一個自身能力的定向管理過程,因此統計自然就是少不了的了。統計的核心之一就是量化,也就是用數字說話。否則記錄和表達都會很煩,比如,今天丟了一丁點錢,可是今天賺了一點錢,這麼算下來,我到底是虧了還是賺了呢?沒有數字,就很難回答這個問題,這就是量化的作用。其實說到這裏,我們會發現,其實損失函數的意義就是一個用來描述損失了多少的對應關係。
1.經典損失函數:交叉熵(cross entropy)
概念:
交叉熵常用來判斷一個輸出向量和期望的向量有多接近,即:刻畫兩個概率分佈之間的距離,它是分類問題中使用比較廣 的損失函數。
(交叉熵原本是信息論中的概念,可以用來估算平均編碼長度)
公式:
注意:
交叉熵刻畫的是兩個概率分佈之間的距離,然而神經網絡的輸出卻不一定是概率分佈。概率分佈刻畫了不同事件發生的概 率。當事件總數有限的情況下,概率分佈函數p(X=x)滿足:
事件模型:
任意事件發生的概率都在0~1之間,且總有某一個事件發生如果將分類問題中“一個樣例屬於某一個類別”看成一個概率事件,那麼訓練數據的正確答案就符合一個概率分佈。因爲事件“一個樣例屬於不正確的類別”的概率爲0,而“一個樣例屬於正確的類別”的概率爲1。如何將神經網絡前向傳播得到的結果也變成概率分佈呢?Softmax迴歸就是一個非常常用的方法。
2.概率分佈生成器:Softmax迴歸
概念:
Softmax迴歸本身可以作爲一個學習算法來優化分類結果,但在TensorFlow中,Softmax迴歸的參數被去掉了,它只是一層額外的處理層,將神經網絡的輸出變成一個概率分佈。
原始的神經網絡輸出爲y1,y2,...,yn,那麼經過Softmax迴歸處理之後的輸出爲:
即:原始神經網絡輸出被用作置信度來生成新的輸出,而新的輸出滿足概率分佈的所有要求。這個新的輸出可以理解爲經過神經網絡的推導,一個樣例爲不同類別的概率是多大。這樣就把神經網絡的輸出也變成了一個概率分佈,從而可以通過交叉熵來計算預測的概率分佈和真是答案的概率分佈之間的距離了。
由於交叉熵函數是非對稱函數,因爲:
它刻畫的是通過概率分佈q來表達概率分佈p的困難程度。因爲正確答案是希望得到的結果,所以當交叉熵作爲神經網絡的損失函數時,p代表的是正確答案,q代表的是預測值。交叉熵刻畫的是兩個概率分佈的距離,也就是說交叉熵值越小,兩個概率分佈越是接近。