訓練過程就是記錄所有的資料點,在**階段對每一條記錄(乙個影象)與原有資料集進行比較,得出與之最相近的一條記錄,其label就是最後的**值。通常使用的 distance metric 來比較影象:
l1依賴於座標系,當座標軸轉動時l1值隨之改變,而l2不會。
knn選擇k個最近的鄰居,隨著k的值越大,你的決策邊界也會越來越光滑,降噪提高robust
cross validation 在資料集比較小時非常有用,但是在deep learning 裡不太適用,因為deep learning 通常需要很大的算力,使用交叉驗證會使training的代價過於高昂。
使用knn可以用於不同型別的資料集,使用起來非常的簡單,需要考慮不同k的值以及使用那種型別的距離方程(超引數)
以cifar10資料集為例,總共有10類影象,每個影象為32*32*3(3 channels),function的輸入是x(3072個畫素點組成的向量)和w(通過學習獲取的一組權重,圖例中因為要使最後的output為10*1的向量,所以此處的w維度為10*3072),b為各個類的偏好值,假如乙個資料集中貓的總量較多,該偏好值也會隨之更大。最後的10個值為每個類對應的分數,分數越高代表越有可能屬於該類。
在下圖中,影象為2*2(0 channel),將其延展為乙個向量,矩陣為4*3(降成3維),加上bias就形成了最終的向量代表分數。
我們可以取某類在矩陣中對應行的資料來還原影象(可以看成乙個類對應的template向量),還是以上圖為例,cat類在矩陣的第一行,所以cat類對應的每個pixel還原權重是0.2,-0.5,0.1,2.0。如下圖就是10個類的還原影象。
使用線性分類器較為的簡單,每種類都會對應乙個template,如果出現了變體,就會讓分類器很難識別。當我們使用神經網路時我們能得到更高的正確率的原因就是因為每個類的識別不再有單個模版限制。
線性分類器的問題是,我們嘗試對資料進行線性空間轉換,在乙個空間裡用超平面來對其進行分類,如果資料分布出現上圖所示的問題時,通過簡單的線性分類無法對其進行有效地劃分。
多分類svm的損失方程如圖所示,單個例項的loss value由分類是否精準所決定。我們想讓正確分類的值盡量的高於錯誤分類的值,如圖所示的例子中閾值為1,
我們經常在loss上加一項表示正則化,他可以讓我們的loss更大,這樣在訓練模型的時候不會過於擬合訓練資料。你對模型的懲罰的目的是為了降低模型的複雜度。
假設我們有w1=(1,0,0,0)和w2=(0.25,0.25,0.25,0.25),
在前面的例子中我們對一輸入向量x,給定一引數矩陣w,我們計算出了該(例項)對應各個分類的分數,此時我們對該分數並沒有直接的定義,只是希望正確分類的分數遠遠大於分類錯誤的分數。而使用softmax我們可以將結果對映成概率分布(probablity distribution),當然所有分類的概率之和即為1。
具體的做法是取分類的分數為s,然後取
使用log函式的意義在於log函式是單調遞增函式,我們想讓正類的概率盡量的高即 log(s)的值盡量的大或者 -log(s)的值盡量的低。此時取負號的意義是為了讓其意義更符合損失函式(因為我們的目標是使損失函式盡可能的小)
softmax經常用於將線性回歸轉化為分類問題上。
未完待續。。。
cs231線性分類筆記
最簡單的線性分類器 公式每個影象由32 32 3個畫素,上述公式中把影象拉伸為乙個3072 1的向量。w和b是引數,其中w是乙個k 3072的矩陣 k表示類別數 被稱為權重,b是乙個k 1的偏執向量。1,乙個單獨的矩陣乘法 2,其中的引數是可以控制的,目的就是找到最合適的引數使得準確率做高。3,資料...
cs231以及遷移學習
以這個2元分類為例,不normalization的話,loss非常敏感,分類器稍微改變一下,對loss的影響很大。normalization後問題得到解決。在cnn中我們希望每層都normalization,可以用batch normalization velocity初始值是0 逐引數調節學習率,...
cs231神經網路學習筆記
簡介 相比於線性分類中的s w x,其中w是乙個矩陣,x是乙個列向量,包含影象的全部畫素資訊。它們相乘的直接結果就是得到乙個得分向量。像資料庫cifar 10的案例中w是乙個10 3072的矩陣,x是乙個3072 1的向量,他們的結果就是得到10 1的得分向量 神經元則不同,它的計算法則是 其中的w...