2、多類SVM
阿新 • • 發佈:2018-04-03
ear 知識點 情況 意義 好的 數量 常常 最優化 矩陣
一、疑問
1. assignments1
linear_svm.py文件的函數 svm_loss_naive中,使用循環的方式實現梯度計算
linear_svm.py文件的函數 svm_loss_vectorized中,梯度的向量化實現
SVM的損失函數在某個數據點上的計算:
對函數進行微分,比如對進行微分得到:
在代碼實現的時候,只需要計算沒有滿足邊界值的分類的數量(因此對損失函數產生了貢獻),然後乘以就是梯度了。註意,這個梯度只是對應正確分類的W的行向量的梯度,那些行的梯度是:
二、知識點
1. 數據集劃分
訓練集:訓練模型用;
驗證集:用以最優參數的調試選擇;
測試集:測定訓練好的模型的表現情況;
開發集:在實際開發中,訓練集往往包含很多數據,為了節省計算時間,往往使用訓練集的一小部分子集,用作模型的訓練。
2. 梯度檢查
? 數值梯度和解析梯度的值有時候在某個維度會相差較多。這是因為數值梯度的計算采用的是用前後2個很小的隨機尺度(比如0.00001)進行計算,當loss不可導的時候,兩者會出現差異。**
3.損失函數
- SVM只關心正確分類的得分與錯誤分類的得分至少要高於邊界值,若不滿足,便計算相應的損失值。
- 折葉損失:$max(0, -)$函數。
- 平方折葉損失:$max(0, -)^2$**。更強烈得懲罰過界的邊界值。在某些數據集會工作得更好,可以通過交叉驗證來決定使用哪個損失計算函數。
- 由於max操作,損失函數中存在一些不可導點(kinks),
4. 設置Delta
? 超參數delta和$\lambda$一起控制損失函數中數據損失和正則化損失之間的權衡。但是對於通過縮小或擴大權重矩陣的值,改變不同分類值之間的差異,因此,在一定程序上改變delta是沒有意義的。真正的權衡是通過正則化強度來控制權重能夠變大到何種程度。
5. 在初始形式中進行初始化
? 損失函數的最優化的始終在非限制初始形式下進行。很多這些損失函數從技術上來說是不可微的(比如當時,函數就不可微分),但是在實際操作中並不存在問題,因為通常可以使用次梯度。
2、多類SVM