Topshiriqlar bloklari kursning "qo’l mehnati": nazariyada ko’rilgan har bir klassifikator NumPy’da noldan yoziladi. Bu konspekt — har topshiriqning mag’zi va tipik tuzoqlari.
kNN: masofa matritsasi va vektorlashuv
Vazifaning yuragi — test×train masofa matritsasini hisoblash, uch usulda: ikki sikl, bir sikl, siklsiz. Siklsiz varianti (a−b)² = a² − 2ab + b² yoyilmasiga tayanadi:
d2 = (X_test**2).sum(1)[:, None] - 2 * X_test @ X_train.T + (X_train**2).sum(1)
Uch usul bir xil natija berib, tezligi yuzlab barobar farq qiladi — vektorlashuv darsining o’zi shu. k giperparametri cross-validation bilan tanlanadi: train bo’laklarga bo’linib, har bo’lak navbatma-navbat validatsiya bo’ladi, natijalar o’rtachalanadi.
SVM loss va gradienti
Multiclass SVM (hinge) loss har noto’g’ri sinf uchun: max(0, s_j − s_to’g’ri + 1). Gradientini qog’ozda chiqarish — topshiriqning asl maqsadi: marja buzilgan har j sinf ustuniga +xᵢ, to’g’ri sinf ustuniga esa buzilishlar soni × (−xᵢ) yoziladi. Gradientni sonli tekshirish odatini shu yerda o’rganasiz: (f(w+h) − f(w−h)) / 2h analitik gradient bilan solishtiriladi — farq ~1e-7 dan kichik bo’lishi kerak. Bu tekshiruv butun kursda xatolarni tutadigan asosiy to’r.
Softmax
Ballar ehtimolga aylantiriladi: p = exp(s)/Σexp(s), loss — −log(p_to’g’ri). Muhim amaliy nuqta — sonli barqarorlik: exp katta sonlarda toshib ketadi, shuning uchun avval har qatordan maksimum ayiriladi (natija matematik jihatdan o’zgarmaydi):
s = s - s.max(axis=1, keepdims=True)
p = np.exp(s) / np.exp(s).sum(axis=1, keepdims=True)
Gradienti chiroyli ixcham chiqadi: dW = Xᵀ(p − y_onehot)/N. Sanity check: o’qitishdan oldin loss ≈ log(sinflar soni) bo’lishi kerak (10 sinfda ≈ 2.3) — undan uzoq bo’lsa, kodda xato bor.
Ikki qatlamli tarmoq
Birinchi to’liq neyron tarmoq: kirish → Linear → ReLU → Linear → softmax. Forward oson; backward’da zanjir qoidasi qatlamma-qatlam orqaga yuriladi: softmax gradienti → W₂, so’ng ReLU’dan o’tish (kirish manfiy bo’lgan joylarda gradient nolga tenglanadi!) → W₁. ReLU maskasini unutish — bu topshiriqning eng keng tarqalgan xatosi. O’qitib bo’lgach W₁ qatorlari rasm qilib chiziladi — tarmoq o’zi topgan "shablonlar" chiziqli klassifikatornikidan boyroq ekani ko’rinadi.
Rasm xususiyatlari va optimizatsiya
Xom piksel o’rniga qo’lda yasalgan xususiyatlar — rang gistogrammasi va HOG (gradient yo’nalishlari gistogrammasi) — bilan klassifikatsiya sinovi. Xuddi shu chiziqli model xususiyatlar ustida piksellardagidan sezilarli yaxshi ishlaydi. Xulosa ikki tomonlama: (1) to’g’ri tasavvur (representation) hal qiluvchi; (2) chuqur o’rganishning butun g’oyasi — shu xususiyatlarni qo’lda emas, tarmoqning o’ziga o’rgattirish. Learning rate va regularizatsiya bo’yicha giperparametr qidiruvi (log shkalada, avval dag’al, keyin nozik) ham shu topshiriqning doimiy mashqi.
Amaliyot
- Kichik massivlarda (4 ta train, 2 ta test, 3 xususiyat) masofa matritsasini uchala usulda hisoblab bir xilligini tekshiring.
- 3 sinf, 4 xususiyatli bitta misolda SVM lossni va uning W bo’yicha gradientini to’liq qo’lda chiqaring.
- Softmax’ni max ayirmasdan katta ballarda (masalan, s = [1000, 1001]) hisoblab, nima buzilishini ko’ring; ayirib qaytaring.
- Sonli gradient tekshiruvini o’zingiz yozing va 2-mashq javobingizni u bilan tasdiqlang.
- Nega loss ≈ log(C) boshlang’ich qiymati "sog’lik belgisi" ekanini tushuntiring.
Modul testi keyingi darsda.