什么是loss?
??loss: loss是我們用來對模型滿意程度的指標。loss設計的原則是:模型越好loss越低,模型越差loss越高,但也有過擬合的情況。
??loss function: 在分類問題中,輸入樣本經過含權重矩陣θ的模型后會得出關于各個類別的分值,如何通過分值與樣本的標簽來得到我們對模型的滿意程度就是Loss function的主要工作了。訓練過程中通過調整參數矩陣θ來降低loss,使用模型更優。多分類問題中常用Softmax分類器與多類SVM分類器。
Softmax分類器
Softmax與logistict回歸
??Softmax分類器將類別分值用負對數轉換為概率來表示,相對于multiclass-SVM的輸出更為直觀。
??Softmax分類器的損失函數為交叉熵損失 (cross-entropy loss),即通常所說的Softmax loss。logistic回歸是用來解決二分類問題的,其損失函數與Softmax與有很相似的形式。
??Softmax的損失函數: //1表示指示函數,即真值返回1,否則返回0
\begin{align} J(\theta) = - \frac{1}{m} \left[ \sum_{i=1}^{m} \sum_{j=1}^{k} 1\left\{y^{(i)} = j\right\} \log \frac{e^{\theta_j^T x^{(i)}}}{\sum_{l=1}^k e^{ \theta_l^T x^{(i)} }}\right] \end{align}
??logistic回歸的損失函數:
\begin{align}
J(\theta) =
-\frac{1}{m} \left[ \sum_{i=1}^m y^{(i)} \log h_\theta(x^{(i)}) + (1-y^{(i)}) \log (1-h_\theta(x^{(i)})) \right]
\end{align}
??可以看出,將(1)式中k=2即可得到(2)式
??Softmax對樣本x的分類結果(假設函數):
\begin{align}
h_\theta(x^{(i)}) =
\begin{bmatrix}
p(y^{(i)} = 1 | x^{(i)}; \theta) \
p(y^{(i)} = 2 | x^{(i)}; \theta) \
\vdots \
p(y^{(i)} = k | x^{(i)}; \theta)
\end{bmatrix}
=
\frac{1}{ \sum_{j=1}^{k}{e^{ \theta_j^T x^{(i)} }} }
\begin{bmatrix}
e^{ \theta_1^T x^{(i)} } \
e^{ \theta_2^T x^{(i)} } \
\vdots \
e^{ \theta_k^T x^{(i)} } \
\end{bmatrix}
\end{align}
??logistic回歸的分類結果(假設函數):
\begin{align}
h_\theta(x) = \frac{1}{1+\exp(-\theta^Tx)},
\end{align}
??但(3)式與(4)式有什么關系呢?
??原來Softmax預測出每個類別的概率具有“參數冗余”的特性。“參數冗余”是指:若矩陣θ為代價函數的極小值點,那么θ-Ψ也為代價函數的極小值點。(ψ為向量,并且矩陣-向量=矩陣每個列向量-向量)
\begin{align}
p(y^{(i)} = j | x^{(i)} ; \theta)
&= \frac{e^{(\theta_j-\psi)^T x^{(i)}}}{\sum_{l=1}^k e^{ (\theta_l-\psi)^T x^{(i)}}} \
&= \frac{e^{\theta_j^T x^{(i)}} e^{-\psi^Tx^{(i)}}}{\sum_{l=1}^k e^{\theta_l^T x^{(i)}} e^{-\psi^Tx^{(i)}}} \
&= \frac{e^{\theta_j^T x^{(i)}}}{\sum_{l=1}^k e^{ \theta_l^T x^{(i)}}}.
\end{align}
???這時,令ψ=θ1、k=2,可得到(3) 等價于(4)的結論
???所以,Softmax其實是logistic regression將二分類問題推廣到多分類問題的一般形式。
但是Softmax分類器與k個logistic回歸分類器還是有區別的:
?? 通常,當k個類別之間互斥時使用k=k的Softmax分類器,當k個類別之間與交集時使用k個logistic回歸分類器。
Softmax分類器為什么要正則化損失項?
??求解loss最小值時往往不是簡單利用“參數冗余”將θ1=0,而是加入權重衰減(正則化損失)來懲罰過大的參數值。加入正則化損失后的代價函數為:
\begin{align}\notag J(\theta) = - \frac{1}{m} \left[ \sum_{i=1}^{m} \sum_{j=1}^{k} 1\left\{y^{(i)} = j\right\} \log \frac{e^{\theta_j^T x^{(i)}}}{\sum_{l=1}^k e^{ \theta_l^T x^{(i)} }} \right] + \frac{\lambda}{2} \sum_{i=1}^k \sum_{j=0}^n \theta_{ij}^2 \end{align}
??其中,第二項為正則化損失薦,加入該項的加一個好處是將代價函數變為一個凸函數。
簡單實例
??在一個三類別模型預測的過程中,假設輸出的分值向量為[1, -2, 0]
??則分類計算過過程: [1,-2, 0] => [e1, e-2, e0]=[2.71, 0.14, 1]//熵值化 => [0.7, 0.04, 0.26] //歸一化為概率
算法實踐
??后續補充
Multiclass SVM
??基本思想:正常確類別的分值比錯誤類別的分值高出一個間距(margin)
??Multiclass SVM分類器的損失函數為hinge loss,也稱為SVM loss。
hinge loss
算法實踐
已知
- 在一個三類別模型預測的過程中,假設輸出的分值向量為[13, -7, 11]
- 我們知道標簽為1,即第一個類別為正確類別
- \(\Delta=10\)
計算過程
因為\(y_{i}\)=1, 所以\(j只能=2、3\)
\[L_{2}=max(0,-7-13+10)=0\]
\[L_{3}=max(0,11-13+10)=8\]
所以,
\[L_{i}=0+8=8\]
從上面的計算過程可以看出SVM的損失函數想要正確分類類別\(y_{i}\)的分數比不正確類別分數高,而且至少要高\(\Delta\)。如果不滿足這點,就開始計算損失值。
正則化損失
提高模型泛化能力,避免過擬合。
從公式上來看:
- 若兩個等比例的權重,權重的范數越小越好
- 若兩個權重范數相等,權重的系數大小分布越分均等越好
直觀來看:
從直觀上來看,這是因為w_2的權重值更小且更分散。既然L2懲罰傾向于更小更分散的權重向量,這就會鼓勵分類器最終將所有維度上的特征都用起來,而不是強烈依賴其中少數幾個維度。
MutiSVM VS SVM
未完待續
補充實驗
reference:
cs231n
cs231n
softmax
小馬奔騰