深度學習模型訓練的關鍵環節之一,在於選擇合適的損失函式以衡量模型預測與實際結果的差異。損失函式的選擇取決於問題型別,例如迴歸問題常用均方誤差,而分類別問題則偏好交叉熵。適當的損失函式能有效引導模型引數調整,進而提升預測準確性。常見的損失函式如均方誤差,計算預測值與真實值之間的平均平方差,適用於連續數值的預測。而交叉熵則更適用於分類別問題,它衡量預測機率分佈與真實分佈的差異,藉此評估模型的分類別效能。在實際應用中,根據資料特性和模型目標選擇損失函式,才能有效地訓練和最佳化深度學習模型。
7.5 損失函式
在神經網路中,損失函式(L)是一個用於衡量預測輸出和實際輸出之間差異的數學函式,適用於給定的輸入資料集。損失函式用於計算網路輸出的錯誤,這些錯誤隨後在反向傳播過程中被用來調整網路的權重。
選擇適合的損失函式取決於問題的性質和輸入與預測輸出的關係。例如,在二元分類別問題中,交叉熵損失函式可能被使用,而在迴歸問題中,均方誤差損失函式則更為適合。此外,除了這些常見的損失函式外,還有許多其他的損失函式可供選擇,具體取決於所要解決的問題。在本文中,我們將簡要討論一些流行的損失函式。
7.5.1 均方損失
當我們訓練神經網路時,可以透過多種方式計算輸出節點的損失。計算一個訓練例子在輸出節點的損失的一種簡單方法是計算實際輸出與預期輸出之間的差異。這種損失可以表示為 ( (y_i - \hat{y}_i) ),其中 ( y_i ) 是資料集中對應此例子的預期或目標值,( \hat{y}_i ) 是網路實際產生的輸出。
對於整個資料集,可以計算累積的原始損失或平均原始損失。累積原始損失可以表示為: [ L_{sumraw} = \sum_{i=1}^{N} (y_i - \hat{y}i) ] 平均原始損失可以表示為: [ L{meanraw} = \frac{1}{N} \sum_{i=1}^{N} (y_i - \hat{y}_i) ] 其中 ( N ) 是訓練集中的例子總數。
然而,由於損失可以是正數或負數,如果直接計算所有訓練例子的總損失或平均損失,正負損失可能會相互抵消,使得總損失或平均損失小於實際值。因此,為了避免這種情況,可以計算平方原始損失的總和或平均值作為要被最小化的損失: [ L_{sumsquared} = \sum_{i=1}^{N} (y_i - \hat{y}_i)^2 ]
看圖說話:
flowchart TD A[輸入資料] --> B[神經網路] B --> C[預測輸出] C --> D[計算損失] D --> E[反向傳播] E --> F[調整權重]
這個流程圖展示了神經網路中從輸入資料到調整權重的過程,包括計算損失和反向傳播。
7.5 損失函式
損失函式(Loss Function)是用於衡量模型預測值與真實值之間差異的指標。它對於模型的訓練和最佳化至關重要,因為它提供了模型預測準確性的衡量標準。
7.5.1 均方損失
均方損失(Mean Squared Loss)是最常用的損失函式之一,尤其是在迴歸問題中。它計算預測值與真實值之間的平均平方差異。均方損失的公式如下:
$$ L_{\text{meansquared}} = \frac{1}{N} \sum_{i=1}^{N} (y_i - \hat{y}_i)^2 $$
其中,$y_i$ 是第 $i$ 個樣本的真實值,$\hat{y}_i$ 是第 $i$ 個樣本的預測值,$N$ 是樣本總數。
在批次訓練中,損失函式可以根據批次大小 $B$ 進行計算:
$$ L_{\text{meansquared}} = \frac{1}{B} \sum_{i=1}^{B} (y_i - \hat{y}_i)^2 $$
批次大小 $B$ 決定了每次迭代中使用的樣本數量。整個資料集被分成 $\lceil \frac{N}{B} \rceil$ 個批次進行處理。
7.5.2 交叉熵損失
交叉熵損失(Cross-Entropy Loss)是另一個常用的損失函式,尤其是在分類別問題中。它假設輸出層有多個節點,每個節點對應一個類別。在分類別任務中,每個輸出節點代表一個類別,因此如果有 $n$ 個類別,就會有 $n$ 個輸出節點。
給定一個訓練集中的樣本,現代分類別神經網路的最後一層會產生一個機率分佈,表示樣本屬於每個類別的機率。預測的機率值可以在 0 到 1 之間,所有類別的機率總和必須等於 1。資料集還有每個樣本的標籤或類別,因此對於每個樣本,標籤給出了它屬於某個類別的機率為 1,而屬於其他類別的機率為 0。
在圖 7.9 中,X 軸標籤對應於所有訓練樣本。Y 軸顯示兩個離散機率分佈的值。特別地,$p^{(i)}_1$ 是獲得第一種方式的第 $i$ 個樣本 $\mathbf{x}^{(i)}$ 屬於某個類別 $C$ 的機率,而 $p^{(i)}_2$ 是獲得第二種方式的 $\mathbf{x}^{(i)}$ 屬於該類別的機率。
交叉熵損失用於衡量這兩個機率分佈之間的差異。它的公式如下:
$$ L_{\text{crossentropy}} = -\frac{1}{N} \sum_{i=1}^{N} \sum_{j=1}^{n} y_{ij} \log(\hat{y}_{ij}) $$
其中,$y_{ij}$ 是第 $i$ 個樣本屬於第 $j$ 個類別的真實標籤(0 或 1),$\hat{y}_{ij}$ 是第 $i$ 個樣本屬於第 $j$ 個類別的預測機率,$n$ 是類別數量。
交叉熵損失在分類別任務中尤其重要,因為它能夠有效地衡量模型預測的準確性,並引導模型學習到更好的引數以最小化這種損失。
人工神經網路中的交叉熵
在人工神經網路中,交叉熵是一個用於衡量兩個離散機率分佈之間差異的指標。假設我們有兩個類別,分別為類別 A 和類別 B,我們可以使用交叉熵來計算這兩個類別之間的差異。
交叉熵的定義
交叉熵的定義如下:
$$L = -\frac{1}{N} \sum_{i=1}^{N} [p_1^{(i)} \ln p_2^{(i)} + (1-p_1^{(i)}) \ln (1-p_2^{(i)})]$$
其中,$N$ 是訓練資料集中的樣本數,$p_1^{(i)}$ 和 $p_2^{(i)}$ 分別代表第 $i$ 個樣本在類別 A 和類別 B 的機率。
交叉熵的意義
交叉熵的值越小,表示兩個機率分佈越相似。當兩個機率分佈完全相同時,交叉熵的值為 0。反之,當兩個機率分佈完全不同時,交叉熵的值最大。
計算交叉熵
假設我們有一個訓練資料集,包含 $N$ 個樣本,每個樣本都有一個標籤 $y^{(i)}$,表示該樣本屬於哪一個類別。假設類別 A 的機率為 $p_1^{(i)}$,類別 B 的機率為 $p_2^{(i)} = 1 - p_1^{(i)}$。我們可以使用以下公式計算交叉熵:
$$L = -\frac{1}{N} \sum_{i=1}^{N} [y^{(i)} \ln p_1^{(i)} + (1-y^{(i)}) \ln (1-p_1^{(i)})]$$
看圖說話:
flowchart TD A[訓練資料集] --> B[計算交叉熵] B --> C[得到交叉熵值] C --> D[評估模型表現]
在上述流程圖中,我們可以看到計算交叉熵的步驟。首先,我們需要有一個訓練資料集,然後計算交叉熵,最後得到交叉熵值,並使用它來評估模型的表現。
分類別神經網路中的機率計算
在分類別神經網路中,對於每個輸入樣本 $x^{(i)}$,我們需要計算它屬於某一類別 $C$ 的機率。這個機率可以用 $p_1^{(i)}$ 和 $p_2^{(i)}$ 來表示,其中 $p_1^{(i)}$ 是指樣本 $x^{(i)}$ 確實屬於類別 $C$ 的機率,而 $p_2^{(i)}$ 則是神經網路預測的機率,表示樣本 $x^{(i)}$ 屬於類別 $C$ 的機率。
根據公式 (7.17),當樣本 $x^{(i)}$ 確實屬於類別 $C$ 時,$p_1^{(i)} = 1$,否則 $p_1^{(i)} = 0$。這是因為標籤現在對應於屬於類別 $C$ 的機率,要麼是 1,要麼是 0,取決於樣本是否屬於該類別。
另一方面,$p_2^{(i)}$ 的值對應於神經網路預測的機率,即樣本 $x^{(i)}$ 屬於類別 $C$ 的機率。這個機率可以透過 softmax 層(在分類別神經網路的頂部)獲得。簡而言之,$p_2^{(i)} = \hat{y}^{(i)}$,其中 $\hat{y}^{(i)}$ 是神經網路對樣本 $x^{(i)}$ 屬於類別 $C$ 的預測機率。
看圖說話:
graph LR A[輸入樣本 x^(i)] --> B[屬於類別 C 的機率 p_1^(i)] B --> C[神經網路預測的機率 p_2^(i)] C --> D[softmax 層] D --> E[預測機率 \hat{y}^(i)]
在這個流程圖中,我們可以看到輸入樣本 $x^{(i)}$ 如何透過神經網路預測其屬於類別 $C$ 的機率,並且如何使用 softmax 層來獲得最終的預測機率 $\hat{y}^{(i)}$。這個過程對於理解分類別神經網路中的機率計算至關重要。
深度學習中的交叉熵損失函式
在深度學習中,交叉熵損失函式(Cross-Entropy Loss Function)是一種常用的損失函式,尤其是在分類別問題中。它的作用是衡量模型預測結果與真實標籤之間的差異。
交叉熵損失函式的定義
給定一個分類別問題,假設我們有 $N$ 個樣本,每個樣本對應一個真實標籤 $y^{(i)}$ 和一個預測結果 $\hat{y}^{(i)}$,其中 $i = 1, 2, \ldots, N$。真實標籤 $y^{(i)}$ 是一個二元向量,表示樣本是否屬於某一類別(0 或 1)。預測結果 $\hat{y}^{(i)}$ 是一個實值,表示模型預測樣本屬於某一類別的機率。
交叉熵損失函式可以定義為:
$$L_{\text{cross-entropy}} = -\frac{1}{N} \sum_{i=1}^{N} \left[ y^{(i)} \ln \hat{y}^{(i)} + (1 - y^{(i)}) \ln (1 - \hat{y}^{(i)}) \right]$$
交叉熵損失函式的意義
交叉熵損失函式衡量了模型預測結果與真實標籤之間的差異。當模型預測結果與真實標籤完全匹配時,交叉熵損失函式的值為 0;當模型預測結果與真實標籤完全不匹配時,交叉熵損失函式的值為無窮大。
在實際應用中,交叉熵損失函式常用於二元分類別問題和多元分類別問題。它可以幫助模型學習到更好的引數,以提高預測準確率。
實際應用
在實際應用中,交叉熵損失函式可以用於各種分類別問題,例如:
- 二元分類別問題:例如,預測使用者是否會購買某一產品。
- 多元分類別問題:例如,預測使用者所屬的群體(例如,年齡、性別、興趣等)。
從現代深度學習模型訓練的效能評估視角來看,損失函式的選擇與應用至關重要。本文深入剖析了均方誤差和交叉熵兩種常見損失函式的原理、公式及適用場景,並以圖表形式清晰闡述了其在神經網路中的運作機制。分析比較兩種損失函式的特性,可以發現,均方誤差更適用於迴歸問題,而交叉熵則更適合分類別問題,尤其在處理機率分佈時展現出其優勢。挑戰在於,如何根據特定問題的資料特性和模型結構選擇最有效的損失函式,並針對性地調整引數以最佳化模型效能。
深度學習領域的快速發展催生了更多新型損失函式,例如Focal Loss、Triplet Loss等,它們針對特定問題和模型結構進行了最佳化,展現出更高的效率和精確度。未來,損失函式的設計將更趨向於客製化和情境化,以滿足日益複雜的深度學習應用需求。對於重視模型效能的高階管理者和技術決策者,深入理解損失函式的原理和應用,並持續關注其發展趨勢,將有助於做出更明智的技術選擇,提升團隊的研發效率和產品競爭力。玄貓認為,掌握損失函式的精髓,如同掌握了深度學習的命脈,是通向AI時代成功的關鍵鑰匙。