分类评分函数 score function
文章目錄
- 從圖像到標簽分值的映射
- 多類 SVM 分類器
- Softmax 分類器
- SVM 和 Softmax的比較
從圖像到標簽分值的映射
一個線性映射:
f(xi,W,b)=Wxi+b\displaystyle f(x_i,W,b)=Wx_i+bf(xi?,W,b)=Wxi?+b
其中,參數 WWW 為權重(weights),bbb 稱為偏差向量(bias vector)
一個將圖像映射到分類分值的例子:
-
為了便于可視化,假設圖像只有4個像素值,有3個分類。
-
首先將圖像像素拉伸為一個列向量,與 WWW 進行矩陣乘,再加上偏置項 bbb,得到各個分類的分值。
-
需要注意的是,由于權值沒有訓練到位,貓分類的分值非常低。
多類 SVM 分類器
針對第 iii 個數據的 jjj 類 SVM 的損失函數定義如下:
Li=∑j?=yimax(0,sj?syi+Δ)\displaystyle L_i=\sum_{j\not=y_i}max(0,s_j-s_{y_i}+\Delta)Li?=j??=yi?∑?max(0,sj??syi??+Δ)
使用多類 SVM 分類時,正確分類的分數需要比其他不正確的分類分數高出 邊界值 delta(Δ\DeltaΔ)。其他分類分數進入了紅色的區域時,就開始計算損失。在紅色區域之前,損失值為0。
SVM 評分函數中,將輸出 sj=f(xi,W)js_j=f(x_i,W)_jsj?=f(xi?,W)j? 作為第 iii 個數據針對第 jjj 個類別的得分,所以分類損失的詳細定義為:
Li=∑j?=yimax(0,wjTxi?wyiTxi+Δ)\displaystyle L_i=\sum_{j\not=y_i}max(0,w^T_jx_i-w^T_{y_i}x_i+\Delta)Li?=j??=yi?∑?max(0,wjT?xi??wyi?T?xi?+Δ)
加上正則化項:
L=1N∑i∑j?=yi[max(0,f(xi;W)j?f(xi;W)yi+Δ)]+λ∑k∑lWk,l2L=\frac{1}{N}\sum_i\sum_{j\not=y_i}[max(0,f(x_i;W)_j-f(x_i;W)_{y_i}+\Delta)]+\lambda \sum_k \sum_l W^2_{k,l}L=N1?i∑?j??=yi?∑?[max(0,f(xi?;W)j??f(xi?;W)yi??+Δ)]+λk∑?l∑?Wk,l2?
其中:
-
max(0,?)max(0,-)max(0,?) 函數,它常被稱為 折葉損失(hinge loss)。有時候會聽到人們使用 平方折葉損失SVM(即 L2-SVM),它使用的是 max(0,?)2max(0,-)^2max(0,?)2,將更強烈(平方地而不是線性地)地懲罰過界的邊界值。可以通過交叉驗證來決定到底使用哪個。
-
在絕大多數情況下設置 Δ=1.0\Delta=1.0Δ=1.0 都是安全的。超參數 Δ\DeltaΔ 和λ\lambdaλ 一起控制損失函數中的數據損失(data loss)和正則化損失(regularization loss)之間的權衡。
-
不同分類分值之間的邊界的具體值(比如 Δ=1\Delta=1Δ=1 或 Δ=100\Delta=100Δ=100)從某些角度來看是沒意義的,因為權重自己就可以控制差異變大和縮小。也就是說,真正的權衡是我們允許權重能夠變大到何種程度,通過正則化強度 λ\lambdaλ 來控制,詳見:正則化方法 。
Softmax 分類器
Softmax 分類器可以理解為 邏輯回歸分類器 面對多個分類的一般化歸納,輸出歸一化的分類概率。
在Softmax分類器中,函數映射 f(xi;W)=Wxif(x_i;W)=Wx_if(xi?;W)=Wxi? 保持不變,但將這些評分值視為每個分類的未歸一化的對數概率,并且將折葉損失(hinge loss)替換為交叉熵損失(cross-entropy loss)。公式如下:
Li=?log(efyi∑jefj)L_i=-log(\frac{e^{f_{y_i}}}{\sum_je^{f_j}}) Li?=?log(∑j?efj?efyi???)
或等價的:
Li=?fyi+log(∑jefj)L_i=-f_{y_i}+log(\sum_je^{f_j})Li?=?fyi??+log(j∑?efj?)
其中:
-
使用 fjf_jfj? 來表示分類評分向量 fff 中的第 jjj 個元素。
-
函數 fj(z)=ezj∑kezkf_j(z)=\frac{e^{z_j}}{\sum_ke^{z_k}}fj?(z)=∑k?ezk?ezj?? 被稱作 softmax 函數,其輸入值是一個向量,向量中元素為任意實數的評分值(zzz 中的),函數對其進行壓縮,輸出一個向量,其中每個元素值在 0 到 1 之間,且所有元素之和為 1。
對數的基本性質:
- 函數拆分:
ln?(ab)=ln?(a)+ln?(b)\ln(ab)=\ln(a)+\ln(b)ln(ab)=ln(a)+ln(b) - log(xxx) vs log(1/x1/x1/x) :
log(x)=?log(1/x)log(x) = -log(1/x)log(x)=?log(1/x)
圖中,藍線為 ln(1/x1/x1/x) ,黑線為 ln(xxx)
數值歸一化:
-
編程實現 softmax 函數計算的時候,中間項 efyie^{f_{y_i}}efyi?? 和 ∑jefj\sum_j e^{f_j}∑j?efj? 因為存在指數函數,所以數值可能非常大。
-
除以大數值可能導致數值計算的不穩定,所以使用歸一化非常重要。如果在分式的分子和分母都乘以一個常數 CCC,并把它變換到求和之中,就能得到一個從數學上等價的公式:
efyi∑jefj=CefyiC∑jefj=efyi+logC∑jefj+logC\frac{e^{f_{y_i}}}{\sum_je^{f_j}}=\frac{Ce^{f_{y_i}}}{C\sum_je^{f_j}}=\frac{e^{f_{y_i}+logC}}{\sum_je^{f_j+logC}}∑j?efj?efyi???=C∑j?efj?Cefyi???=∑j?efj?+logCefyi??+logC?
- 代碼實現如下:
SVM 和 Softmax的比較
損失函數的不同:
-
SVM 分類器使用的是 折葉損失(hinge loss),有時候又被稱為 最大邊界損失(max-margin loss)。
-
Softmax 分類器使用的是 交叉熵損失(corss-entropy loss)。
對分類分值的不同解釋:
-
針對一個數據點,兩個分類器都計算了同樣的分值向量 fff
-
SVM分類器將 fff 看做是分類評分,它的損失函數鼓勵正確的分類(本例中是藍色的類別2)的分值比其他分類的分值高出至少一個邊界值。
-
Softmax分類器將 fff 看做是每個分類沒有歸一化的對數概率,鼓勵正確分類的歸一化的對數概率變高,其余的變低。
-
SVM的最終的損失值是 1.58,Softmax 的最終的損失值是 0.452,但要注意這兩個數值沒有可比性。只在給定同樣數據,在同樣的分類器的損失值計算中,它們才有意義。
在實際使用中,SVM 和 Softmax 經常是相似的:
-
通常說來,兩種分類器的表現差別很小。
-
相對于 Softmax 分類器,SVM 更加局部目標化(local objective),這既可以看做是一個特性,也可以看做是一個劣勢。
-
SVM 對于各個分類的得分細節并不關心:分數是 [10,?100,?100][10, -100, -100][10,?100,?100] 或者 [10,9,9][10, 9, 9][10,9,9],對于 SVM 來說沒什么不同,只要分差超過邊界值,那么損失值就等于 0,不會超過限制去細微地操作具體分數。
-
對于 softmax 分類器,情況則不同。對于 [10,9,9][10, 9, 9][10,9,9] 來說,計算出的損失值就遠遠高于 [10,?100,?100][10, -100, -100][10,?100,?100] 的。換句話來說,softmax 分類器對于分數是永遠不會滿意的。
總結
以上是生活随笔為你收集整理的分类评分函数 score function的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 偏差、方差、欠拟合、过拟合、学习曲线
- 下一篇: 评估指标:混淆矩阵、PR、mAP、ROC