從宏觀來看,卷積網絡可以看做是由一個個不同的神經網絡組件組合而成,就像積木一樣通過不同類型的組件搭建形成,其中線性分類器是一個很重要的組件,在很多卷積網絡中都有用到,所以了解清楚它的工作原理對我們后續的學習會有很大的幫助。線性分類器是參數模型中最簡單,最基礎的例子,下面我們用輸入圖片輸出圖片分類的模型的例子來更進一步地了解它。
首先,我們輸入一張圖片到模型中,輸入后我們就會得到f(x,W),x指的是參數,W指的是權重。緊接著通過模型的函數,將參數與權重帶入后會輸出10個數字,進而轉為圖片的類型。與之前用KNN算法進行圖片分類不同的是,在這個模型的例子中,不需要將訓練的數據集與測試集去一一比對找最相似的類別,相反我們只需要在測試時,有輸入圖片得到的參數和權重就可以知道圖片所屬的類型了,這也意味著這個模型可以適配在很多設備上,包括電腦甚至手機。對于深度學習的模型來說,函數的結構便是模型的核心功能,而在這個例子中,線性分類的函數形式就是最簡單的讓參數與權重相乘:F(X)=W*X。
那么,線性分類器的工作形式就很明顯了,假設圖片是22的圖像,我們把它拉伸為一個擁有四個元素的列向量,而W權重矩陣是一個3*4的矩陣,將矩陣與列向量進行點乘的運算,再加上為了平衡模型數據集造成的偏差的偏差向量,最終得到了三個類別(假設模型訓練時用的是三個類別的數據集)的得分,如下圖所示:
當然這里的權重矩陣是需要反向傳播和損失函數來確定的,這里只是為了方便理解線性分類器的過程而設置的一個隨機的3*4的矩陣。也可以理解為,權重矩陣就是模型對于某類圖片的認知,如果將W矩陣中的某個類比的行向量變形為輸入圖片的像素尺寸再可視化,就能觀察到在模型眼里這類圖片的“樣子”,比如汽車的圖片就是一片模糊中呈現一個類似于凸的輪廓。
線性分類器這種識別圖片的方法,有點類似于模版匹配,即模型對該類別圖片的理解來源于一個模版,如果給出的是貨車的圖片,模型會嘗試求可能得模型的輪廓并得出一個每個類別變體的平均值來作為答案,但這也會導致該類的行向量去判斷的準確率降低。如果把圖片看作高位空間的一個點(類似于平面圖中的一個點,在這里進行了一個同等的升維),線性分類器就是在嘗試用線將圖片區分開來,類似于在坐標系中,AX+B>0的范圍屬于A類圖片。這樣,就引出了它的弊端了,即存在很多不能分類的圖片,比如最簡單的在一個矩陣中,用橫豎兩條線切割成四塊,斜對角的為一個類別,那么不管怎么劃分線,一條線的另一端始終會有兩個種類的圖片。同樣的,另一類的存在范圍是以內切圓環或一個個圓的話,也是同樣區分不了的。在現實中,這指向的是我們的數據是多模態數據,某個類別會在不同的領域出現。
學習來自于斯坦福課程:Stanford University CS231n: Deep Learning for Computer Vision