cs231nLesson1-3

cs231n每半年更新一次,最近看了新的版本,整理了下之前學習的筆記和作業。

.Diffuculty of Recogonition:

illumination, deformation, Background Clutter, Intraclass variation,etc..

1.Nearest Neighbor Method(現在深度學習框架內很少使用)

train:O(1)
test:O(n)
test時將待估計的圖片image_e與train所有的N張數據比較,選距離最近的一張image_i,那麼train_i對應的label就是待估計的圖片的label。 當然實際常常使用KNN算法,在K張最近(這個近可以用各類距離來衡量,也可以用自定義的方式來衡量)的圖片中,如果某個label的圖片數量最多,則image_e的label就是這個label。
如果訓練集太大,將test圖像與每個traing數據計算數據量太大,則可使用pproximate Nearest Neighbor library (e.g. FLANN)
如何選K?

交叉驗證來訓練:最好將訓練數據分N段,每次選擇一部分作爲爲traing, 一部分(往往是一段)作爲validataion,在validataion中嘗試不同的K值(分一部分作爲validatiaon,相當於在測試過程中不斷做:test-train-test的過程)

2.Linear Classification

f(x,W)=Wx+b(1)

將任何輸入和輸出之間的關係視爲一個函數時,深度學習爲了擬合非線性函數,基本架構是一層線性分類器+一層非線性函數(Relu,softmax,etc..)
(以下都以cifar-10爲例)
f的值是一個10x1的向量,分別表示這10個label的score高低,這10維的向量中哪個元素最高,就意味着這個圖像x屬於該元素對應的類別。

2.1 loss(cost, objective) function

loss function的結果作爲評價如今模型W等參數好壞/是否收斂的指標。其中loss function有很多形式,具體可參見:參見我的文章機器學習中常用的loss function

2.2 weight W and bias b

從幾何上,W的作用可以解釋爲:(如果將image的像素壓棧成一列,則如cafar-10的圖像都在3072維的空間上)改動(1)式子中的weight任一行,相當於將圖像在圖像空間中旋轉一個不同的角度,如圖:

這裏寫圖片描述
(該圖是將圖像空間”壓”到二維平面上)

car的紅色箭頭表示score增長的方向,紅線以左是score爲0的部分。
如果label有10個,則W(10x3072)相當於10個不同的高緯度直線,各自將3072維度的空間切割開,使得不同的label對應的圖像在直線的一邊。

從模板上,W可以解釋爲:
W的每一行都是與相應的image內積,而W是歸一化的,我們知道,當兩個向量a,b的模都固定且b固定時,a平行於b時,也即是a的各維參數分佈和b相同,a*b=|a||b|cosr有最大的值。從圖中也可以發現,對應分類的模板具有和類別模糊相似的特徵,比如大約能看出這是汽車,馬等:
這裏寫圖片描述

b的作用,在於平移高緯直線,以免如果image的圖像像素值爲0時獲得score爲0.
常見的做法是將w,b合爲一個矩陣:用齊次表達

W=[W;b][x;1]T
,這樣可以直接估計一個矩陣W‘滿足f = W’x。

2.3 regularization

如果把W看做一個模板的話,在整個數據集上,nW和W的效果是一樣的。我們可以歸一化數據集,同樣也可以歸一化W。常見的做法用W的L2範式:

R(w)=klW2k,l

在所有loss function小項之後,加一個這個正則項:
L=1NiLi+λR(W)

所謂正則,就是糾正、調整的意思。
W正則化還有個好處是更傾向考慮到輸入的所有維度。對於只考慮一小部分維度的W和考慮到所有維度(當然對應權重會更小)的W,當Wx結果一樣時,後者的正則項會更小。這樣也有助於減少overfitting.
而上文的λ 是數據項(前邊的項)和正則項之間進行權衡,
所以以SVM loss的最終版評價W的損失函數爲:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章