1. cs231n k近鄰和線性分類器 Image Classification

第一節課大部分都是廢話。第二節課的前面也都是廢話。算法

First classifier: Nearest Neighbor Classifier

在必定時間,我記住了輸入的全部的圖片。在再次輸入一個圖片以後,我和以前的圖片進行比較,而後輸出分類。網絡

近鄰分類器用50000張32*32 10labels的訓練集來訓練。咱們定義距離爲曼哈頓距離d1(I1,I2)=sigma(abs(I1-I2)),咱們相互之間算出每一個像素的差值,而後加起來就是距離。函數

而後咱們獲得距離最小的一個圖片,而後看這圖片的label是什麼。測試

tip1:這個傻逼算法會隨着訓練集合增長,速度變得很慢。。spa

tip2:這個傻逼算法在訓練的時候,咱們不計算,只會在最後測試的時候才計算。rest


加速方法:加速近鄰距離的計算,加速匹配。圖片

改變方法:咱們亦可使用不一樣的距離計算方法,好比歐氏距離。ip


升級版:KNN,咱們找k個最近的list,而後讓裏面的實例進行vote,票數最多的就是這個分類。k越大分界線越平滑。k的選擇是一個超參數。it

tip1:假設訓練集就是測試集,那麼nn的準確率就是100%(由於總能找到本身)io

tip2:假設是knn,acc就不必定是100%

tip3:咱們怎麼去設置超參數?這是一個獨立問題,咱們不知道,你只能不斷的去嘗試這個超參數的取值(這不是等於沒說嗎。。。


擬合程度的選擇會影響你的泛化能力,你可使用k-fold來提升你的泛化能力。cross-validation也能夠

實際生活中,沒人使用這個傻逼算法,由於這個傻逼算法很慢。若是若是圖片稍微變了一下(好比往左邊平移,好比亮度不同),距離就會差不少,但實際上這個圖片只是小小的改變了一下,knn就會很難識別。(實際上我以爲這應該是你選擇的距離計算方法不對)

Linear Classification

神經網絡如今很是屌,哪兒都有神經網絡。neural networks practitioner,咱們就像搭積木同樣搭建神經網絡。

考慮32323的一個數據集,一個圖一共3072個數,咱們想知道這個圖屬於哪一類。

f(x,W)來表示,x是image,W是parameters。輸入圖片,輸出分類。

最簡單的線性分類器\(fx,W,b) = Wx+b\),W是10*3072的矩陣,x是3072*1的矩陣,b是10*1的bias。咱們經過不斷的調整W和b來到最佳的結果。

tips1:線性分類器作了什麼?W就像一個模版匹配,它其實是用一些分數的加權和,與本身想要的顏色匹配。咱們能夠把圖片想成高偉空間的點,而後線性分類器就是每一條線,描繪這個取樣空間中負點指向正點方向的梯度。沿着這條直線,你會獲得0分,若是在正方向,距離越遠分數越高。

tip2:什麼東西線性分類系很難去分類?你的圖片若是在3072高維空間是一個圓,那麼一條直線很難去很好的分割(自行腦補畫面)。灰度圖片很難用線性分類器去作,由於特徵不夠。

定義損失函數,可以quantifying what it means to have a good W.

相關文章
相關標籤/搜索