CS231n 2016 通關 第三章-SVM與Softmax


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模型,不需要對數據進行特征抽取。

 

參考:

UFLDL

附:通關CS231n企鵝群:578975100 validation:DL-CS231n 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM