大多數深度學習演演算法都會涉及某種形式的優化,所謂優化指的是改變 \(x\) 以最小化或最大化某個函數 \(f(x)\) 的任務,我們通常以最小化 \(f(x)\) 指代大多數最佳化問題。
在機器學習中,損失函數是代價函數的一部分,而代價函數是目標函數的一種型別。
loss function
): 用於定義單個訓練樣本預測值與真實值之間的誤差cost function
): 用於定義單個批次/整個訓練集樣本預測值與真實值之間的累計誤差。objective function
): 泛指任意可以被優化的函數。損失函數定義:損失函數是深度學習模型訓練過程中關鍵的一個組成部分,其通過前言的內容,我們知道深度學習演演算法優化的第一步首先是確定目標函數形式。
損失函數大致可分為兩種:迴歸損失(針對連續型變數)和分類損失(針對離散型變數)。
常用的減少損失函數的優化演演算法是「梯度下降法」(Gradient Descent)。
交叉熵損失(Cross-Entropy Loss
) 又稱為對數似然損失(Log-likelihood Loss)、對數損失,二分類時還可稱之為邏輯斯諦迴歸損失(Logistic Loss)。
交叉熵損失的由來參考檔案 AI-EDU: 交叉熵損失函數。
1,資訊量
資訊理論中,資訊量的表示方式:
《深度學習》(花書)中稱為自資訊(self-information) 。
在本文中,我們總是用 \(\text{log}\) 來表示自然對數,其底數為 \(e\)。
2,熵
資訊量只處理單個的輸出。我們可以用熵(也稱夏農熵 Shannon entropy
)來對整個概率分佈中的不確定性總量進行量化:
則上面的問題的熵是:
3,相對熵(KL散度)
相對熵又稱 KL
散度,如果對於同一個隨機變數 \(x\) 有兩個單獨的概率分佈 \(P(x)\) 和 \(Q(x)\),則可以使用 KL 散度(Kullback-Leibler (KL) divergence)來衡量這兩個分佈的差異,這個相當於資訊理論範疇的均方差。
KL散度的計算公式:
\(m\) 為事件的所有可能性(分類任務中對應類別數目)。\(D\) 的值越小,表示 \(q\) 分佈和 \(p\) 分佈越接近。
4,交叉熵
把上述交叉熵公式變形:
等式的前一部分恰巧就是 \(p\) 的熵,等式的後一部分,就是交叉熵(機器學習中 \(p\) 表示真實分佈(目標分佈),\(q\) 表示預測分佈):
在機器學習中,我們需要評估標籤值 \(y\) 和預測值 \(a\) 之間的差距熵(即兩個概率分佈之間的相似性),使用 KL 散度 \(D_{KL}(y||a)\) 即可,但因為樣本標籤值的分佈通常是固定的,即 \(H(a)\) 不變。因此,為了計算方便,在優化過程中,只需要關注交叉熵就可以了。所以,在機器學習中一般直接用交叉熵做損失函數來評估模型。
上式是單個樣本的情況,\(m\) 並不是樣本個數,而是分類個數。所以,對於批次樣本的交叉熵損失計算公式(很重要!)是:
其中,\(n\) 是樣本數,\(m\) 是分類數。
公式參考文章-AI-EDU: 交叉熵損失函數,但是將樣本數改為 \(n\),類別數改為 \(m\)。
有一類特殊問題,就是事件只有兩種情況發生的可能,比如「是狗」和「不是狗」,稱為 \(0/1\) 分類或二分類。對於這類問題,由於 \(m=2,y_1=1-y_2,a_1=1-a_2\),所以二分類問題的單個樣本的交叉熵可以簡化為:
二分類對於批次樣本的交叉熵計算公式是:
為什麼交叉熵的代價函數是求均值而不是求和?
Cross entropy loss is defined as the 「expectation」 of the probability distribution of a random variable