cs231 線性分類

2021-10-07 13:22:21 字數 2897 閱讀 2859

k-nearest neighbor分類器存在以下不足:

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

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

引言:

我們將要實現一種更強大的方法來解決影象分類問題,該方法可以自然地延伸到神經網路和卷積神經網路上。

這種方法主要有兩部分組成:

乙個是評分函式(score function),它是原始影象資料到類別分值的對映。

乙個是損失函式(loss function),它是用來量化**分類標籤的得分與真實標籤之間一致性的。該方法可轉化為乙個最優化問題,在最優化過程中,將通過更新評分函式的引數來最小化損失函式值。從影象到標籤分值的引數化對映

該方法的第一部分就是定義乙個評分函式,這個函式將影象的畫素值對映為各個分類類別的得分,得分高低代表影象屬於該類別的可能性高低。

下面是具體例子來展示該方法。

現假設有乙個包含很多影象的訓練集xi∈rd,每個影象都有乙個對應的分類標籤yi。這裡i=1,2…n並且yi∈1…k。yi∈1…k。這就是說,我們有n個影象樣例,每個影象的維度是d,共有k種不同的分類。

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

我們現在定義評分函式為:f:rd→rk,該函式是原始影象畫素到分類分值的對映。

線性分類器入門簡介:

在本模型中,我們從最簡單的概率函式開始,乙個線性對映:

f(xi,w,b)=wxi+b

在上面的公式中,假設每個影象資料都被拉長為乙個長度為d的列向量,大小為[d x 1]。其中大小為[k x d]的矩陣w和大小為[k x 1]列向量b為該函式的引數(parameters)。

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

需要注意的幾點:

首先,乙個單獨的矩陣乘法wxi就高效地並行評估10個不同的分類器(每個分類器針對乙個分類),其中每個類的分類器就是w的乙個行向量。

注意我們認為輸入資料(xi,yi)是給定且不可改變的,但引數w和b是可控制改變的。我們的目標就是通過設定這些引數,使得計算出來的分類分值情況和訓練集中影象資料的真實類別標籤相符。

該方法的乙個優勢是訓練資料是用來學習到引數w和b的,一旦訓練完成,訓練資料就可以丟棄,留下學習到的引數即可。這是因為乙個測試影象可以簡單地輸入函式,並基於計算出的分類分值來進行分類。

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

理解線性分類器

線性分類器計算影象中3個顏色通道中所有畫素的值與權重的矩陣乘,從而得到分類分值。

根據我們對權重設定的值,對於影象中的某些位置的某些顏色,函式表現出喜好或者厭惡(根據每個權重的符號而定)。

舉乙個將影象對映到分類分值的例子。為了便於視覺化,假設影象只有4個畫素(都是黑白畫素,這裡不考慮rgb通道),有3個分類(紅色代表貓,綠色代表狗,藍色代表船,注意,這裡的紅、綠和藍3種顏色僅代表分類,和rgb通道沒有關係)。

首先將影象畫素拉伸為乙個列向量,與w進行矩陣乘,然後得到各個分類的分值。需要注意的是,這個w一點也不好:貓分類的分值非常低。從上圖來看,演算法倒是覺得這個影象是乙隻狗。

將影象看做高維度的點:(不太理解)

既然影象被伸展成為了乙個高維度的列向量,那麼我們可以把影象看做這個高維度空間中的乙個點(即每張影象是3072維空間中的乙個點)。整個資料集就是乙個點的集合,每個點都帶有1個分類標籤。

既然定義每個分類類別的分值是權重和影象的矩陣乘,那麼每個分類類別的分數就是這個空間中的乙個線性函式的函式值。我們沒辦法視覺化3072維空間中的線性函式,但假設把這些維度擠壓到二維,那麼就可以看看這些分類器在做什麼了:

其中每個影象是乙個點,有3個分類器。以紅色的汽車分類器為例,紅線表示空間中汽車分類分數為0的點的集合,紅色的箭頭表示分值上公升的方向。所有紅線右邊的點的分數值均為正,且線性公升高。紅線左邊的點分值為負,且線性降低。

從上面可以看到,w的每一行都是乙個分類類別的分類器。對於w數字的幾何解釋是:如果改變其中一行的數字,會看見分類器在空間中對應的直線開始向著不同方向旋轉。而偏差b,則允許分類器對應的直線平移。需要注意的是,如果沒有偏差,無論權重如何,在xi=0時分類分值始終為0。這樣所有分類器的線都不得不穿過原點。

影象資料預處理:在上面的例子中,所有影象都是使用的原始畫素值(從0到255)。在機器學習中,對於輸入的特徵做歸一化(normalization)處理是常見的套路。而在影象分類的例子中,影象上的每個畫素可以看做乙個特徵。在實踐中,對每個特徵減去平均值來中心化資料是非常重要的。 在這些的例子中,該步驟意味著根據訓練集中所有的影象計算出乙個平均影象值,然後每個影象都減去這個平均值,這樣影象的畫素值就大約分布在[-127, 127]之間了。下乙個常見步驟是,讓所有數值分布的區間變為[-1, 1]。這就是零均值的中心化。

CS231 線性分類

評分函式 原始影象資料到類別分值的對映 損失函式 用來量化 分類標籤的得分與真實標籤之間一致性的 現在假設有乙個包含很多影象的訓練集 公式 每個影象都有乙個對應的分類標籤 公式 這裡 公式 並且 公式 這就是說,我們有n個影象樣例,每個影象的維度是d,共有k種不同的分類。如,在cifar 10中,我...

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 逐引數調節學習率,...