1. 程式人生 > >CS231n筆記 Lecture 2

CS231n筆記 Lecture 2

del for mat dep 等等 lan 常見 保持 label

距離度量\(L_1\)\(L_2\)的區別

一些感性的認識,\(L_1\)可能更適合一些結構化數據,即每個維度是有特別含義的,如雇員的年齡、工資水平等等;如果只是一個一般化的向量,\(L_2\)可能用得更多。但這些仍然需要視具體情況而定。

Nearest Neighbor

KNN-demo
相當於\(K=1\)的KNN分類,這種其實是把所謂的“訓練”過程推後了,是一種lazy的做法,model實際上隱藏在了訓練數據中。訓練時,只是單純地“記下”訓練樣本的特征和標簽;測試時,拿到一個新的樣本,需要遍歷所有的訓練數據,找到最相似的那個,然後取其label作為當前樣本的預測。

K的選取

取1的時候,在訓練樣本上的精度為100%,但這並不是好事,因為好的模型要有好的泛化能力。

評估model的好壞

像KNN等等這樣的模型,存在K這樣的超參數。不同超參數的選取是會直接影響模型的好壞的,那麽如果評估一個模型,如何去選擇最好的超參數呢?

  • 只用訓練集
    用訓練集訓練,也用訓練集來評測。由上一個問題引申出來,如果只用測試集來衡量,可能會在訓練集上達到很高的準確度,可能就過擬合了,但實際上我們關註的是unseen的樣本。
  • 訓練集、測試集
    這時候我們很自然地就會想到,那我們把訓練數據分成兩部分,一部分用來訓練,另一部分用來測試,我們選取能在測試集上表現最好的模型(or超參數)。這樣做帶來的問題也是類似的,我們這次會在測試集上過擬合,而測試集卻又不能代表未來unseen的樣本。
  • 訓練集、驗證集、測試集
    更常見的做法是,在訓練的初始階段,就把數據分成(訓練集+驗證集)+測試集這兩大部分。訓練時,可以采用比如交叉驗證等方法,用驗證集上的精度來選擇模型的參數,得到最好的模型。然後只在測試集上做一次性的驗證,得到的準確度可用於來表征這個模型的能力。需要註意的是,測試集的數據在整個訓練過程中都是要保持untouched,只有到了最後要評估模型能力的時候,在測試集上跑一次,得到準確度等度量。

Linear model

\(y = Wx + b\)
b, 處理 imbalanced data , data independent bias terms。 舉例來說,10分類的問題,b是一個10維的向量,如果cat的圖片多,那b中cat對應的那一維就會大一些。

CS231n筆記 Lecture 2