1===本節課對應視頻內容的第三講,對應PPT是Lecture3
2===本節課的收獲
===熟悉SVM及其多分類問題
===熟悉softmax分類問題
===了解優化思想
由上節課即KNN的分析步驟中,了解到做圖像分類的主要步驟
===根據數據集建立模型
===得到loss function
===根據loss function 對參數做優化
=========================================================================================
1、SVM
上圖作圖為通過f(x,w)得到輸入圖像的輸出值,這里成為scores (3*4) * (4*1)》》3*1的輸出值
右圖 (3*4) *(4*3)》》3*3的輸出值
那么如何根據輸出值判定最終的label?》》建立SVM模型,得到loss,進行優化,得到最終模型。
參考之前的SVM知識對其基本理解。此處使用多分類的hinge loss:
依照scores帶入hinge loss:
依次計算,得到最終值,並求和再平均:
問題1:如果在求loss時,允許j=y_i
此時L會比之前未包含的L大1
問題2:如果對1個樣本做loss時使用對loss做平均,而不是求和,會怎樣?
相當於sum乘以常系數
問題3:如果使用下列的loss function會怎樣?
這其實是二次的hinge loss ,在某些情況下會使用。並且某些情況下結果比一次的hinge loss更好,此處使用一次形式。
問題4:上述求得的hinge loss的最大值與最小值:
最小值為0,最大值可以無限大。
問題5:通常在初始化f(x,w)中的參數w時,w值范圍較小,此時得到的scores接近於0,那么這時候的loss是?
此時正確score與錯誤score的差接近於0,對於3classes,loss的結果是2。
實現SVM loss function的代碼結構:
svm 的loss function中bug:
簡要說明:當loss 為0,則對w進行縮放,結果依舊是0,如何解決?如下圖所示:
加入正則項:
加入正則,對w進行約束,常用的正則有L1 L2,對應的note和作用使用L2正則,關於正則,在后面的章節會有分析。
L1趨於選取稀疏的參數,L2趨於選取數值較小且離散的參數。
==========================================================================================
2、softmax
在機器學習推導系列中,對softmax進行了推導。課作為參考:ML 徒手系列 最大似然估計
在f(x,w)的基礎上,改變score:
此時的score是0到1之間的值,且所以的score之和為1.大的score代表此score對應圖像屬於的某一個class的概率大。
使用似然估計作為loss,本來是似然估計越大越好,但通常loss使用越小時更直觀,所以乘以-1:
單一樣本:
單一樣本數值表示:
具體例子:
問題6:L_i的最大值與最小值?
可知,歸一化后的取值為0到1,所以最大值為正無窮,最小值為0.
問題7:初始化參數w時,w值范圍較小,此時得到的scores接近於0,那么這時候的loss是?
此時的probability變成1/num_classes,loss》log(num_classes)
視頻上提到可以使用這個結果在初始值時檢驗模型的設置是否正確。
=======================================================================================
3、SVM與Softmax比較:
模型不同,loss function不同》》
loss function:
問題8:如果改變對輸入數據做改變,即f(x,w)后的值發生變化,此時兩個模型的loss分別會怎樣變化?(如下例所示)
當改變的值不大時,對svm結果可能沒影響,此時改變的點沒有超過邊界;但當改變較大時,會使得loss變化,此時表示數據點已經跨越了最大邊界范圍。
但是對softmax而言,無論大小的改變,結果都會相應變化。
課程提供了可視化的過程:http://vision.stanford.edu/teaching/cs231n/linear-classify-demo/
========================================================================================
4、優化參數
對兩種模型loss 求和取平均並加入正則項。
方案1:隨機選擇w,計算得到相應的loss,選取產生的loss較小的w。
代碼如下:
可見比較好的loss結果是8.605604,將此時的w更新到模型中,計算測試集數據得到預測的label,計算准確率,代碼:
結果:
比瞎猜的概率:cifar10》》10個類別》》10% 較好。此時(上課時)的最好的模型可以做到95%准確率。
方案二:數值計算法梯度下降
梯度下降類比:
怎么達到谷底。。
一維求導:
多維時,分別對分量求導。具體步驟如下所示:
上述計算了2個分量的偏導。按照此方法求其余分量偏導。代碼結構如下圖:
顯然,這種方式計算比較繁瑣,參數更新比較慢。
方案三:解析法梯度下降
方案二使用逐一對w進行微量變化,並求導數的方式步驟繁瑣,並且產生了很多不必要的步驟。
方案三是直接對w分量求偏導的方式:
對於SVM:
對於softmax:
========================================================================================
5、batches
每次計算loss function 時,輸入的圖片數目。
使用256的batches:
經常使用的batches數目:32/64/128/256
使用256 batches時的loss更新圖:
更新w與b的計算公式:
(1)對於Δw與Δb前的系數I/m是在使用batches后,得到總loss,求平均loss,然后用loss對batches次計算過程中的w與b求偏導,得到的偏導結果做平均。
可見,用了m個batches。
(2)λ為正則化系數,α為學習率或step size。
高學習率、低學習率、較好的學習率比較圖:
學習率屬於超參數,需要通過驗證的方式來選取比較合適的學習率。在課程提供的note中有介紹。
mini-batches 的代碼結構:
紅色框中為參數更新方式,更多的更新方式:比如momentum,Adagrad,RMSProp,Adam等方式會在后續課程講解。
提前比較各個方法的更新可視化圖:
僅做了解,后續詳細說。
========================================================================================
6、特征表示方式
圖像特征頻譜:
柱狀圖:
HOG/SIFT features:
Many more:GIST, LBP,Texton,SSIM, ...
Bag of Words:
========================================================================================
7、模型與特征
上圖黑色線以上是cnn火了之前使用的方式,通過對數據做特征沖去得到多個特征向量,然后把特征向量輸入到模型中進行訓練。
黑色線以下,是現在很火的cnn模型,不需要對數據進行特征抽取。
參考:
附:通關CS231n企鵝群:578975100 validation:DL-CS231n