Barcha kurslar Yo'nalishlar Reyting Kirish Ro'yxatdan o'tish

Bu modulda chuqur o’rganishning mexanizmi ochildi: neyron tarmoq qanday tuziladi va u qanday o’qitiladi.

Neyron tarmoq tuzilishi

Neyron tarmoq — oddiy amallarning qatlam-qatlam zanjiri. Bitta qatlam kirishni chiziqli o’zgartiradi (z = Wx + b), so’ng natijadan aktivatsiya funksiyasi o’tkaziladi. Aktivatsiyasiz istalgancha qatlam ham bitta chiziqli funksiyaga yig’ilib qolardi — aynan nochiziqlilik tarmoqqa murakkab bog’lanishlarni o’rganish imkonini beradi.

Keng tarqalgan aktivatsiyalar:

Funksiya Formula Qayerda
ReLU max(0, z) yashirin qatlamlarning standarti
Sigmoid 1/(1+e⁻ᶻ) ikkilik klassifikatsiya chiqishi
Softmax eᶻⁱ/Σeᶻʲ ko’p sinfli chiqish (ehtimollar)

Kirishdan chiqishgacha hisoblab borish forward pass deyiladi:

import torch
import torch.nn as nn

model = nn.Sequential(
    nn.Linear(4, 16),   # 4 xususiyat -> 16 neyron
    nn.ReLU(),
    nn.Linear(16, 3),   # 16 -> 3 sinf
)
x = torch.rand(8, 4)    # 8 misolli batch
print(model(x).shape)

Natija:

torch.Size([8, 3])

Loss: xatoni o’lchash

Tarmoq javobini haqiqiy javob bilan solishtiradigan funksiya — loss. Regressiyada MSE (nn.MSELoss), klassifikatsiyada cross-entropy (nn.CrossEntropyLoss) ishlatiladi. E’tibor: PyTorch’ning CrossEntropyLossi ichida softmax bor — modelning oxiriga yana softmax qo’yish keng tarqalgan xato (ehtimollar ikki marta "yumshab", o’qitish sustlashadi).

Backpropagation va gradient

O’qitish savoli: lossni kamaytirish uchun millionlab og’irlikning har birini qaysi tomonga surish kerak? Javobni backpropagation beradi — hosila olishning zanjir qoidasini hisoblash grafi bo’ylab orqaga qo’llab, har bir parametr uchun gradientni topadi. PyTorch buni avtomatik qiladi:

loss = loss_fn(model(x), y)   # forward
loss.backward()               # backward: hamma gradientlar hisoblanadi

backward() gradientlarni parametrlarning .grad maydoniga qo’shib boradi — shuning uchun har iteratsiya oldidan optimizer.zero_grad() chaqirilmasa, gradientlar yig’ilib ketib o’qitish buziladi. Bu — yangi boshlovchining eng klassik xatosi.

Optimizatorlar

Gradient tayyor bo’lgach, parametrlarni yangilash usulini optimizator belgilaydi. SGD — sof gradient qadami (w -= lr * grad); Adam — har parametrga moslashuvchan qadam tanlaydigan, amalda eng ko’p ishlatiladigan standart boshlanish nuqtasi:

optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)

Learning rate bu yerda ham bosh sozlama: katta — loss sakraydi, kichik — o’qitish cho’zilib ketadi. 1e-3 (Adam uchun) — oqilona boshlang’ich qiymat.

Amaliyot

  1. Yuqoridagi nn.Sequential modelini terib, model(x).shape chiqishini o’zingiz izohlang (nega 8 va nega 3?).
  2. ReLU’ni qo’lda yozing (torch.clamp(z, min=0)) va nn.ReLU() bilan bir xil natija berishini tekshiring.
  3. w = torch.tensor(2.0, requires_grad=True) uchun loss = (w*3 - 12)**2 ni hisoblab backward() chaqiring; w.grad qiymatini qo’lda tekshiring.
  4. Aktivatsiyasiz ikki Linear qatlam nima uchun bitta Linearga teng ekanini bir jumlada yozing.
  5. zero_grad() tashlab ketilsa gradientlarga nima bo’lishini 3-mashq kodida ikki marta backward() chaqirib ko’rsating.

Modul testi keyingi darsda.

Chuqur o’rganishga kirish — konspekt

Chuqur o'rganishga kirish Maqola

Neyron tarmoq asoslari konspekti: qatlamlar, aktivatsiya, forward pass, loss, backpropagation va optimizatorlar.

Eslatma yozish uchun saytga kiring.

Resurslar hozircha qo'shilmagan

O'qituvchi dars uchun qo'shimcha materiallarni qo'shganida shu yerda paydo bo'ladi.

Savol berish uchun saytga kiring.

Hozircha savollar yo'q

Bu dars yuzasidan birinchi savolni siz bering.