CS231n 線性分類

2021-10-08 16:33:10 字數 3164 閱讀 5966

在學習cs231n課程,邊看課程講義邊做筆記,記錄在這裡

k-nn分類器的缺點:分類器必須記住所有訓練資料並將其儲存起來,以便於未來測試資料用於比較。這在儲存空間上是低效的,資料集的大小很容易就以gb計。

對乙個測試影象進行分類需要和所有訓練影象作比較,演算法計算資源耗費高。

概述

這種方法主要有兩部分組成:乙個是評分函式(score function),它是原始影象資料到類別分值的對映。另乙個是損失函式(loss function),它是用來量化**分類標籤的得分與真實標籤之間一致性的。該方法可轉化為乙個最優化問題,在最優化過程中,將通過更新評分函式的引數來最小化損失函式值。

cifar-10中,我們有乙個n=50000的訓練集,每個影象有d=32x32x3=3072個畫素,而k=10,這是因為被分為10個不同的類別(狗,貓,汽車等)

乙個線性對映: f(xi, w, b) = wxi + b每個影象資料都被拉長為乙個長度為d的列向量,大小為[d x 1]。

該函式的引數(parameters)

矩陣w:大小為[k x d]

列向量b:大小為[k x 1]

還是以cifar-10為例,xi包含了第i個影象的所有畫素資訊,這些資訊被拉成為乙個[3072 x 1]的列向量,w大小為[10x3072],b的大小為[10x1]。因此,3072個數字(原始畫素數值)輸入函式,函式輸出10個數字(不同分類得到的分值)。引數w被稱為權重(weights)b被稱為偏差向量(bias vector),這是因為它影響輸出數值,但是並不和原始資料產生關聯。

這種方法的幾個優點和注意點:

訓練資料是用來學習到引數w和b的,一旦訓練完成,訓練資料就可以丟棄,留下學習到的引數即可。

只需要做乙個矩陣乘法和乙個矩陣加法就能對乙個測試資料分類,這比k-nn中將測試影象和所有訓練資料做比較的方法快多了。

但是這種方法的分類能力有點弱,因此要將偏差和權重合併

剛剛的公式變為:

以cifar-10為例,那麼的大小就變成[3073x1],而不是[3072x1]了,多出了包含常量1的1個維度)。w大小就是[10x3073]了。中多出來的這一列對應的就是偏差值。

衡量我們對結果的不滿意程度。直觀地講,當評分函式輸出結果與真實結果之間差異越大,損失函式輸出越大,反之越小。

多類支援向量機損失 multiclass support vector machine loss (svm):

針對第i個資料的多類svm的損失函式定義如下:

簡而言之,svm的損失函式想要正確分類類別的分數比不正確類別分數yi高,而且至少要高∆。如果不滿足這點,就開始計算損失值。

對於線性評分函式,改寫一下:

上面公式裡包含的乙個函式max (0, -),叫做折葉損失(hinge loss)

我們對於**訓練集資料分類標籤的情況總有一些不滿意的,而損失函式就能將這些不滿意的程度量化

正則化(regularization):

過擬合現象(訓練集表現很好,測試集表現較差),需要用正則化降低模型複雜度。

最常用的正則化懲罰是l2正規化,l2正規化通過對所有引數進行逐元素的平方懲罰來抑制大數值的權重:

因此完整的多類svm損失函式由兩個部分組成:資料損失(data loss),即所有樣例的的平均損失li,以及正則化損失(regularization loss),其中,n是訓練集的資料量。

舉個例子:

假設輸入向量 x=[1, 1, 1, 1],兩個權重向量 w1=[1, 0, 0, 0],w2=[0.25, 0.25, 0.25, 0.25]。那麼,兩個權重向量

都得到同樣的內積,但是的l2懲罰是1.0,而的l2懲罰是0.25。因此,根據l2懲罰來看,w2更好,因為它的正則化損失更小。從直觀上來看,這是因為w2的權重值更小且更分散。既然l2懲罰傾向於更小更分散的權重向量,這就會鼓勵分類器最終將所有維度上的特徵都用起來,而不是強烈依賴其中少數幾個維度。這一效果將會提公升分類器的泛化能力,並避免過擬合。

softmax分類器:

將折葉損失(hinge loss)替換為交叉熵損失(cross-entropy loss)

svm和softmax的區別圖:

通過前面的推導就可以發現:

svm更加local objective,因為它只關心正確分模擬不正確分類得到了比∆更大的值,損失值就是0。對數字具體多少並不關心。分數是[10, -100, -100]或者[10, 9, 9],對於svm來說沒什麼不同。

對於softmax分類器,情況則不同。對於[10, 9, 9]來說,計算出的損失值就遠遠高於[10, -100, -100]的。換句話來說,softmax分類器對於分數是永遠不會滿意的:正確分類總能得到更高的可能性,錯誤分類總能得到更低的可能性,損失值總是能夠更小。

與knn不同的是,引數方法的優勢在於一旦通過訓練學習到了引數,就可以將訓練資料丟棄了。

CS231n課程筆記 線性分類

1 該分類器必須記住所有訓練資料並將其儲存起來,方便和未來資料進行比較,但這在儲存空間上是低效的。2 對乙個測試影象進行分類需要和所有訓練影象作比較,在計算上,資源耗費高。評分函式是原始影象資料到類別分值的對映。另乙個損失函式是用來量化 分類標籤的得分與真實標籤之間的一致性的。該方法可轉化為乙個最優...

cs231n學習之路 2 線性分類器

最簡單的線性分類器 f x w,b wx bf x,w,b wx b f x,w,b w x bw和b是訓練引數。x是輸入資料。在公式中,x和b是向量,x是單個樣本reshape之後的向量,b的長度和類別數目一致,w是矩陣。所以我們想將線性分類器應用到影象上,就必須先將影象reshape為乙個向量。...

CS231n 資料驅動,KNN和線性分類

實現knn的作業 cifar10資料集 驅動資料的方法 比深度學習,cnn更廣泛 用質量高的資料集驅動def train images,labels machine learing return model 函式 接收乙個模型進行 def predict model,test images use ...