談一談交叉熵損失函式
關於損失函式的概念以及種類特點,可參看博主的部落格:常見的損失函式總結,談到交叉熵,就不得不提資訊熵的概念,同樣可參看博主之前的部落格:決策樹之基 —— ID3 演算法,博文中提到了資訊熵的相關知識。有了上述兩篇博文作為基礎,此文不再贅述相關概念。
交叉熵的離散函式形式
交叉熵(cross entropy)是用來評估當前訓練得到的概率分佈與真實分佈的差異情況,減少交叉熵損失就是在提高模型的預測準確率。其離散函式形式為:
這裡,是真實分佈,是通過資料計算的估計概率。
需要說明的是,交叉熵的值越大,這種差異程度也就越大。
在二分類模型中,由於目標的可能性有兩種,因此需要分別計算預測為正例和負例概率下的交叉熵,公式為:
其中 是正例的交叉熵, 則是負例的交叉熵,它們之和便構成了二分類模型的交叉熵損失函式。
兩種交叉熵損失函式的比較
下面來比較兩種交叉熵損失函式的異同。在機器學習中,會看到兩個不一樣的交叉熵損失函式,分別為:
該博文一開頭講到了交叉熵損失函式的離散形式,實質上,交叉熵是用來描述兩個分佈的距離的,神經網路訓練的目的就是使逼近。
現在來看 softmax 作為最後一層的情況。 就是最後一層的輸出 y 。 就是我們的 one-hot 標籤。我們帶入交叉熵的定義中算一下,就會得到第一個式子。
再來看 sigmoid 作為最後一層的情況。sigmoid 作為最後一層輸出的話,應該將最後一層的每個神經元看作一個分佈,對應的 target 屬於二項分佈(target的值代表是這個類的概率),那麼第 i 個神經元交叉熵為:
所以,最後一層總的交叉熵損失函式就是上述所說的第二個式子。
對這兩種交叉熵損失函式的總結:這兩個交叉熵損失函式對應不同的最後一層的輸出。第一個對應的最後一層是 softmax,第二個對應的最後一層是 sigmoid。
交叉熵的優勢
最後來講講交叉熵的優勢。在模型中有時候會使用均方差作為損失函式,但是當啟用函式為 sigmoid 時,由於其在上邊界和下邊界的斜率下降十分之快。事實上,一般 sigmoid 函式的斜率最大值也只有0.25。因此,當訓練結果接近真實值時會因為梯度運算元極小,使得模型的收斂速度變得非常慢。而由於交叉熵損失函式為對數函式,在接近上邊界的時候,其仍然可以保持在高梯度狀態,因此模型的收斂速度不會受到影響。