Eldor’s AI Lab
الذهاب إلى القناة على Telegram
🚀 Eldor’s AI Lab – Sun’iy intellektni chuqur va amaliy o‘rganish! 🔹 AI va ML nazariyasi 🔹 Kod va amaliy mashg‘ulotlar 🔹 Dasturlash bo‘yicha maslahatlar 🔹 Ilmiy maqolalar va eng so‘nggi yangiliklar 💡 AIni o‘rganishni istaysizmi? Let's go!
إظهار المزيدلم يتم تحديد البلدالفئة غير محددة
385
المشتركون
لا توجد بيانات24 ساعات
-27 أيام
+530 أيام
أرشيف المشاركات
📌 9.2-dars: Gradient Accumulation — Katta batch, kichik xotira
🎯 Deep Learning Mathematics — @EldorML
❓ Savol: GPT-3 o'qitishda batch size = 3.2 million token ishlatilgan.
Bitta GPUda bu mumkin emas. Nima qilish kerak?
💡 Javob: Gradient Accumulation.
🔹 Asosiy muammo
Katta batch → yaxshi o'qitish, lekin ko'p xotira.
ResNet50, batch=256:
Model vaznlari: ~100 MB
Aktivatsiyalar: ~4 GB
Gradientlar: ~100 MB
Jami: ~4.5 GB
batch=512 → ~9 GB
batch=1024 → ~18 GB 💥 16 GB GPU da sig'maydi!
🔹 Asosiy g'oya
Kichik batchlarda gradientlarni yig’ish,
keyin BIR MARTA yangilash.
Misol: 100 savol, stol faqat 10 ta sig'adi.
1. 10 ta savol yech → eslab qol
2. Stol tozala, 10 ta yangi yech → qo'sh
3. Yana 10 ta...
4. Yana 10 ta...
5. Jami 40 ta yechildi → xulosa chiqar!
Gradient Accumulation ham xuddi shu.
🔹 Matematik isbot
Oddiy batch=32:
W_yangi = W - lr × (1/32) × sum(grad_i)
GA (micro=8, steps=4):
g1 = (1/8) × sum(grad 1-8)
g2 = (1/8) × sum(grad 9-16)
g3 = (1/8) × sum(grad 17-24)
g4 = (1/8) × sum(grad 25-32)
W_yangi = W - lr × (g1+g2+g3+g4)/4
Natija:
(g1+g2+g3+g4)/4 = (1/32) × sum(grad 1-32)
✅ AYNAN BIR XIL!
🔹 Kod o'zgarishi — faqat 3 ta qator
Avval (oddiy):
optimizer.zero_grad()
loss = criterion(model(x), y)
loss.backward()
optimizer.step()
Keyin (GA, accum=4):
loss = criterion(model(x), y) / 4 ← bo'lish
loss.backward() ← zero_grad yo'q!
if (i+1) % 4 == 0:
optimizer.step() ← faqat shu yerda
optimizer.zero_grad()
🔹 Nima uchun loss bo'linadi?
Bo'lmasak, gradientlar YIG'INDI bo'ladi, o'rtacha emas.
g1 + g2 + g3 + g4 ≠ (g1+g2+g3+g4)/4
loss / 4 qilsak:
g1/4 + g2/4 + g3/4 + g4/4 = (g1+g2+g3+g4)/4
✅ To'g'ri o'rtacha — batch=32 bilan bir xil.
🔹 Mixed Precision + GA (eng kuchli kombinatsiya)
with autocast():
loss = criterion(model(x), y) / accum_steps
scaler.scale(loss).backward()
if (i+1) % accum_steps == 0:
scaler.step(optimizer)
scaler.update()
optimizer.zero_grad()
Natija:
✅ Katta effective batch
✅ 2× tezroq hisoblash (FP16)
✅ 2× kam xotira
✅ Uch afzallik bitta kodda!
🔹 Effective batch size formulasi
Effective batch = micro_batch × accum_steps × num_GPUs
1 GPU misoli: 8 × 4 × 1 = 32
8 GPU misoli: 8 × 4 × 8 = 256
GPT-3 misoli: ? × ? × 1024 = 3,200,000
🔹 Cheklovlar
⚠️ BatchNorm muammosi:
micro-batch = 8 dan statistika oladi,
effective batch = 32 bo'lsa ham.
Yechim: GroupNorm yoki LayerNorm.
⚠️ O'qitish sekinlashadi:
GA: 4 qadam = 1 update
(lekin update sifati bir xil)
⚠️ Learning rate moslash:
lr_yangi = lr × (effective_batch / base_batch)
Misol: 0.001 × (256/32) = 0.008
🎯 Asosiy xulosa
GA — eng oddiy va eng kuchli xotira yechimi.
8 GB GPU bilan 32 GB GPU kabi katta batch o'qitish.
Faqat 3 qator kod o'zgarishi.
GPT, LLaMA, BERT — barchasi GA ishlatadi.
Endi siz ham ishlatishingiz mumkin.
🤝 YouTube: 🎥 Havola
🖥️ Colab: 📂 Havola
📘 Barcha darslar: Havola
🚨 Videolar jonli yozilgan. Matematik izohlarda xatolar bo'lishi mumkin. Oldindan uzr so'rayman 🙏
@EldorML
📌 9.1-dars: Mixed Precision Training — Tezroq va tejamkor model o'qitish
🎯 Deep Learning Mathematics — @EldorML
❓ Savol: Model to'g'ri ishlaydi. Lekin GPU xotirasi yetmayapti, o'qitish esa juda sekin. Qanday qilib model sifatini saqlagan holda 1.5–2× tezroq o'qitish mumkin?
💡 Javob: Mixed Precision Training.
🔹 Asosiy g'oya
Hamma hisoblashlarni 32-bit aniqlikda bajarish shart emas.
FP32 (32-bit) → son jihatdan muhim hisoblashlar
FP16/BF16 (16-bit) → tez hisoblashlar
Natija:
✅ Kamroq GPU xotira
✅ Tezroq trening
✅ Deyarli bir xil model sifati
🔹 Floating Point formatlari
FP32:
* 32 bit
* 4 bayt
* Yuqori aniqlik
FP16:
* 16 bit
* 2 bayt
* Kichik diapazon
* Yuqoriroq aniqlik
BF16:
* 16 bit
* 2 bayt
* FP32 bilan bir xil diapazon
* Pastroq aniqlik
💡 BF16 = FP32 exponent + FP16 o'lcham
🔹 Nima uchun bu ishlaydi?
Deep Learning mukammal aniqlikni talab qilmaydi.
Model:
• millionlab parametrlar
• minglab iteratsiyalar
• statistik optimizatsiya
Shuning uchun kichik hisoblash xatolari odatda yakuniy natijaga deyarli ta'sir qilmaydi.
🔹 Lekin muammo bor...
FP16 da juda kichik gradientlar yo'qolishi mumkin.
Gradient
0.0000003
↓
FP16 uchun juda kichik
↓
0 ga underflow bo'lishi mumkin
↓
Model o'rganmay qoladi
🔹 Dynamic Loss Scaling
Yechim juda oddiy.
1️⃣ Loss × 1024
↓
2️⃣ Gradient ham kattalashadi
↓
3️⃣ Optimizer oldidan yana 1024 ga bo'linadi
✅ Gradient yo'qolmaydi.
💡 BF16 da odatda Loss Scaling kerak bo'lmaydi.
🔹 Mixed Precision qanday ishlaydi?
FP16/BF16
✅ Forward pass
✅ Backward pass
✅ Ko'pchilik matritsa ko'paytirishlar
FP32
✅ Master weights
✅ Optimizer state
✅ Son jihatdan sezgir hisoblashlar
Shuning uchun ham tezlik, ham aniqlik saqlanadi.
🔹 Nima uchun tezroq?
GPU ichida maxsus Tensor Core lar mavjud.
FP32 Matritsa
│
▼
CUDA Core
│
▼
Natija
FP16/BF16 Matritsa
│
▼
Tensor Core ⚡
│
▼
Natija
Tensor Core lar 16-bit hisoblashlarni ancha tez bajaradi.
Bundan tashqari:
FP32: 1 son = 4 bayt
FP16: 1 son = 2 bayt
Kamroq xotira o'qiladi, kamroq ma'lumot uzatiladi va hisoblash tezlashadi.
🔹 Xotira misoli
GPT-2 (117 million parametr)
FP32: 117M × 4 bayt ≈ 468 MB
FP16: 117M × 2 bayt ≈ 234 MB
💡 Bir xil model — ikki baravar kam xotira.
🔹 PyTorch AMP
Oldin:
output = model(x)
Endi esa:
with autocast():
output = model(x)
PyTorch avtomatik ravishda qaysi operatsiyalarni FP16/BF16 da bajarishni o'zi hal qiladi.
Dasturchi deyarli hech narsani o'zgartirmaydi.
🔹 Natija
Ko'p Deep Learning loyihalarida:
🚀 1.5–2× tezroq trening
💾 30–50% kam GPU xotira
🎯 Model sifati deyarli o'zgarmaydi
🎯 Asosiy xulosa
Mixed Precision — zamonaviy Deep Learning'ning eng muhim optimallashtirish usullaridan biri.
Bugungi kunda Google, NVIDIA, OpenAI, Meta va deyarli barcha yirik AI kompaniyalari katta modellarni aynan FP16 yoki BF16 yordamida o'qitadi.
Agar siz LLM, Computer Vision yoki boshqa zamonaviy AI modellarini production darajasida o'qitmoqchi bo'lsangiz, **Mixed Precision**'ni bilishingiz shart.
🤝 YouTube: 🎥 Havola
🖥️ Colab: 📂 Havola
📘 Barcha darslar: Havola
🚨 Videolar jonli yozilgan. Matematik izohlarda xatolar bo'lishi mumkin. Oldindan uzr so'rayman 🙏
@EldorML📌 8.5-dars: Model Interpretability — Model ichida nima bo'layotganini tushunish
🎯 Deep Learning Mathematics — @EldorML
Savol: Model 99% aniqlik bilan ishlaydi.
Lekin nima uchun aynan shu qarorni qabul qildi?
Javob: Black Box muammosi — va uni hal qiluvchi usullar.
🔹 Asosiy muammo — Black Box
Kirish rasm (🐱)
│
▼
█████
█████ ← ichkarida nima bo'layotgani
█████ KO'RINMAYDI
│
▼
"Mushuk" (97%)
Tibbiyot, moliya, avtonom haydashda
“Asossiz ishoning" tushunchasi — qabul qilinmaydi.
🔹 Nima uchun xavfli?
"Bo'ri vs It" klassifikatori: 95% aniqlik.
Lekin model hayvonga emas — QOR FONIGA qaraydi!
Barcha bo'ri rasmlari qorli fonda olingan edi.
Model "bo'ri"ni emas, "qor”ni o'rgangan.
❌ To'g'ri javob, noto'g'ri sabab.
Interpretability bu xatoni fosh qiladi.
🔹 1. Activation Maximization
"Har bir neyron nimani yoqtiradi?"
Gradient Ascent:
x_yangi = x + η · d(f_i(x))/dx
Rasm gradient yo'nalishida yangilanadi —
neyronni maksimal faollashtiradigan tasvir topiladi.
Natija:
1-qatlam → qirralar, ranglar
5-qatlam → shakllar, naqshlar
15-qatlam → to'liq tushunchalar (mushuk yuzi)
🔹 2. Saliency Maps
"Model qaysi piksellarga e'tibor berdi?"
Formula: S(x) = |dy/dx|
Gradient katta → piksel MUHIM
Gradient kichik → piksel muhim emas
✅ Juda tez (1 marta backward pass)
❌ Ko'pincha shovqinli natija
🔹 3. Grad-CAM (2017)
Saliency Mapdan yaxshiroq yechim.
Piksel darajasi: 224×224 = 50,176 nuqta (shovqinli)
Feature map: 7×7 = 49 hudud (silliq!)
Har feature map uchun ahamiyat:
α_k = gradient o'rtachasi
L = ReLU(Σ α_k · A_k)
Natija: original rasm ustiga qizil "issiqlik xaritasi"
Qizil = model eng ko'p e'tibor bergan hudud
Ko'k = muhim emas
🔹 Saliency vs Grad-CAM
Saliency: tez, shovqinli, har model uchun
Grad-CAM: silliq, tushunarli, faqat CNN uchun
💡 Debug uchun → Saliency
Shifokorga/mijozga ko'rsatish uchun → Grad-CAM
🔹 Misollar
Tibbiyot:
Rentgen → "Pnevmaniya 89%"
Grad-CAM → o'pkaning pastki qismi qizil
Shifokor: "Ha, men ham shu joyga qarayman" ✅
Self-driving:
Kamera → "STOP belgisi aniqlandi"
Saliency → belgi konturlariga qaragan ✅
Klassifikatsiya (xato topish):
Grad-CAM ko'rsatadi — model hayvonga emas,
fon yoki egalik qo'liga qaraydi ❌
🔹 Cheklovlar
⚠️ Explanation ≠ Reasoning
Model "fikr yuritmaydi" — gradient hisoblaydi
⚠️ Bir xil rasm, bir xil model:
Saliency → A hudud
Grad-CAM → B hudud
Integrated Gradients → C hudud
Qaysi biri "haqiqiy"? — Aniq javob yo'q
💡 Interpretability — yakuniy haqiqat emas,
gipoteza yaratish va tekshirish vositasi.
🔹 Zamonaviy usullar
Integrated Gradients — shovqinni kamaytiradi
SmoothGrad — gradientlarni o'rtachalash
SHAP — har xususiyatning hissasi
LIME — mahalliy chiziqli yaqinlashish
Attention Visualization — Transformer uchun
🎯 Asosiy xulosa
Model o'qitish = faqat aniqlik emas.
Yuqori xavfli sohalarda NIMA UCHUN — aniqlikning o'zidan ham muhimroq bo'lishi mumkin.
Bugungi AI kompaniyalari (Google, Meta, OpenAI) — interpretability bo'yicha alohida jamoa va
tadqiqot yo'nalishiga ega. Sababi shu.
🤝 YouTube: 🎥 Havola
🖥️ Colab: 📂 Havola
📘 Barcha darslar: Havola
🚨 Videolar jonli yozilgan. Matematik izohlarda xatolar bo'lishi mumkin. Oldindan uzr so'rayman 🙏
@EldorML
📌 8.4-dars: Dimensionality Reduction — Modelni "ichidan" ko'rish
🎯 Deep Learning Mathematics — @EldorML
Savol: BERT 768, ResNet 2048 o'lchamli vektor chiqaradi.
Bu vektorlar ichida nima bor? Modelni qanday "tushunish" mumkin?
Javob: Latent space vizualizatsiyasi — 2D grafikda modelning ichki dunyosi.
🔹 Asosiy muammo
Modellar yuqori o'lchamli vektorlar bilan ishlaydi:
BERT: 768 o'lcham
ResNet: 2048 o'lcham
CLIP: 512 o'lcham
GPT-3: 12,288 o'lcham
Biz 2Ddan ko'pini ko'ra olmaymiz.
Yechim — dimensionality reduction: 2048D → 2D.
🔹 Latent Space nima?
Model har rasmni/har so'zni vektor sifatida ifodalaydi.
O'xshash narsalar — yaqin joylashadi.
Boshqa narsalar — uzoq joylashadi.
Misol (Word Embeddings): king - man + woman ≈ queen
Model "qirol" va "malika" so'zlarini hech kim aytmagan.
U faqat matndan o'rgandi. Lekin vektor arifmetikasi ishlaydi!
Bu — modelning ichki "tasavvur fazosi".
🔹 1. PCA (1901) — eng eski usul
Asosiy g'oya: eng katta o'zgaruvchanlik qaysi yo'nalishda?
✅ Juda tez (1 soniyada)
✅ Reversible — qaytarish mumkin
✅ Variance Explained — qancha ma'lumot saqlangani aniq
❌ Faqat chiziqli — egri tuzilmani topa olmaydi
Misol:
512D → 2D: PC1=35%, PC2=18% → jami 53% saqlandi
🔹 2. t-SNE (2008) — klasterlar uchun
Asosiy g'oya: yuqori o'lchamda yaqin → past o'lchamda ham yaqin.
✅ Klasterlarni aniq ko'rsatadi
✅ Egri tuzilmani topadi
❌ Sekin (10K nuqta = 30 daqiqa)
❌ Har safar boshqa natija
❌ Global tuzilishni buzadi
🔹 3. UMAP (2018) — bugungi standart
t-SNE muammolarini hal qildi.
✅ t-SNE dan 10-100x tezroq
✅ Global tuzilishni saqlaydi
✅ Yangi nuqta qo'shish oson
✅ Hugging Face, bioinformatika, NLP standarti
🎯 Qaysi qachon?
Tez ko'rish → PCA
Klasterlar vizualizatsiyasi → UMAP
Kichik dataset (1-10K) → t-SNE
Katta dataset (100K+) → UMAP
Yangi nuqta qo'shish → PCA yoki UMAP
💡 Qoida: avval PCA, keyin UMAP.
💡 Asosiy xulosa
Model hech qachon "3 yumaloq" deb o'rganmagan.
U faqat piksellardan o'rgandi.
Lekin latent spaceda barcha "3"lar yaqin joylashadi.
Bu — modelning ichki tushunishi.
Dimensionality reduction — shu tushunishni KO'RISH imkoni.
🤝 YouTube: 🎥 Havola
🖥️ Colab: 📂 Havola
📘 Barcha darslar: Havola
🚨 Videolar jonli yozilgan. Matematik izohlarda xatolar bo'lishi mumkin. Oldindan uzr so'rayman 🙏
@EldorML
📌 8.3-dars: Normalization Layers — Tarmoqni barqarorlashtirish
🎯 Deep Learning Mathematics — @EldorML
Savol: Activation function nochiziqlilik beradi. Lekin chuqur tarmoqlar nima uchun hali ham beqaror o'rganadi?
Javob: Har qatlamdagi qiymatlar masshtabi nazoratsiz o'zgaradi. Yechim — Normalization.
🔹 Asosiy muammo — Internal Covariate Shift
10 qatlamli tarmoqda o’qitishda:
- 1-qatlam kirishi: ~ N(0, 1) taqsimot
- 5-qatlam kirishi: ~ N(5, 100) taqsimot
- 10-qatlam kirishi: ~ N(-50, 10000) taqsimot
💥 Har qatlam boshqa "dunyoda" yashaydi. Model sekin va beqaror o'rganadi.
Yechim — har qatlamga BIR XIL TARTIBDA ma'lumot keltirish.
🔹 Umumiy formula
Barcha normalizationlar bir xil asosga ega:
x_norm = (x - μ) / √(σ² + ε)
y = γ·x_norm + β
Farq faqat μ va σ² QAYSI QIYMATLARDAN hisoblanishida.
γ va β — model normalizatsiyani kerak bo'lsa "qaytarib olishi" mumkin.
🔹 1. BatchNorm (2015) — Birinchi inqilob
Har KANAL bo'yicha, batch ichidagi barcha rasmlardan o'rtacha.
✅ CNNni 2-3x tezroq o'rgatadi
✅ Yuqori learning rate ishlatish mumkin
❌ Kichik batch (1-2) da BUZILADI:
batch=64: yaxshi ✅
batch=2: noaniq ❌
batch=1: ishlamaydi 💥
⚠️ Train/eval rejimida farqli ishlaydi — running mean/var ishlatiladi.
🔹 2. LayerNorm (2016) — Transformer davri
Batch bo'yicha emas, har NAMUNA ICHIDA o'rtacha.
Transformerda har TOKEN uchun alohida.
✅ Batch sizega bog'liq emas (batch=1 ham ishlaydi)
✅ Sequence uzunligi muhim emas
✅ Train/eval bir xil ishlaydi
🔥 BERT, GPT-2, GPT-3, ViT — barchasi LayerNorm.
🔹 3. InstanceNorm (2016) — Style Transfer
Har RASM, har KANAL alohida statistika.
"Har rasmning o'z uslubi bor — aralashtirmaslik kerak."
🎨 Style Transfer, GAN, CycleGAN, Pix2Pix.
🔹 4. GroupNorm (2018) — Goldilocks zone
Kanallarni GURUHLARGA bo'ladi, har guruh alohida.
BatchNorm: batch birgalikda (batchga bog'liq)
LayerNorm: barcha kanal birga (o'ta umumiy)
InstanceNorm: har kanal alohida (o'ta nozik)
GroupNorm: aralash — Goldilocks! ✅
✅ Batch'ga bog'liq emas
✅ CNN strukturasini saqlaydi
✅ Kichik batch + CNN uchun ideal
🔥 Stable Diffusion, DALL-E, zamonaviy YOLO — GroupNorm.
🎯 Qaysi vazifada qaysi?
CNN (klassik) → BatchNorm
Transformer (BERT, GPT, ViT) → LayerNorm
GAN / Style Transfer → InstanceNorm
Diffusion (Stable Diffusion) → GroupNorm
Object Detection (kichik batch) → GroupNorm
RNN/LSTM → LayerNorm
Mobile inference (batch=1) → GroupNorm / LayerNorm
💡 Qoida:
- Katta batch + CNN → BatchNorm
- Transformer → LayerNorm
- Kichik batch → GroupNorm
- Style transfer → InstanceNorm
💡 Asosiy xulosa
Activation tarmoqqa NOCHIZIQLILIK beradi.
Normalization unga BARQARORLIK beradi.
Ikkisi birga — bugungi muvaffaqiyatli deep learning modellarining asosi.
Faqat normalization qo'shish — 30-50% tezroq o’qitish!
🤝 YouTube: 🎥 Havola
🖥️ Colab: 📂 Havola
📘 Barcha darslar: Havola
🚨 Videolar jonli yozilgan. Matematik izohlarda xatolar bo'lishi mumkin. Oldindan uzr so'rayman 🙏
@EldorML
📌 8.2-dars: Activation Functions — Neyron tarmoqning "qarori"
🎯 Deep Learning Mathematics — @EldorML
Savol: 100 ta qatlam qo'shsam, model kuchliroq bo'ladimi?
Javob: Activation bo'lmasa — YO'Q. Sababini ko'ramiz.
🔹 Asosiy mantiq
Faqat W·x + b ishlatib 2 qatlam qursak:
• z1 = W1·x + b1
• y = W2·z1 + b2
= (W2·W1)·x + (W2·b1 + b2)
= W_yangi·x + b_yangi
💥 100 ta qatlam birlashib — bitta chiziqqa aylanadi! Chuqurlik kuch bermaydi.
Yechim — qatlamlar orasiga nochiziqli funksiya qo’shish: h = f(z1) ← activation!
Endi qatlamlar birlashmaydi. Model egri chiziq, XOR, rasm, matnni o'rgana oladi.
🔹 1. Sigmoid (1990) — birinchi mashhur
σ(x) = 1 / (1 + e^(-x)) → chiqish (0, 1)
✅ Ehtimollik sifatida o'qiladi
❌ Vanishing gradient: max hosila = 0.25
10 qatlam: 0.25^10 ≈ 0.0000009
💀 Birinchi qatlamga gradient yetmaydi!
Shu sabab 1990-yillarda chuqur tarmoqlar ishlamasdi.
🔹 2. Tanh — yaxshilangan Sigmoid
tanh(x) → chiqish (-1, 1), nol atrofida markazlangan
Sigmoiddan yaxshiroq, lekin vanishing gradient muammosi qoldi.
💡 RNN/LSTM ichida bugungacha ishlatiladi.
🔹 3. Softmax — ko'p sinf uchun
Sigmoid 2 sinf uchun. 10 sinf (0-9) uchun — Softmax:
Softmax(xᵢ) = e^(xᵢ) / Σ e^(xⱼ)
Logitlar → ehtimollar, yig'indi = 1.00
💡 Faqat oxirgi qatlamda ishlatiladi.
🔹 4. ReLU (2012) — INQILOB
ReLU(x) = max(0, x)
2012-yil AlexNet ImageNet'da g'olib. Siri — ReLU.
✅ Hosila = 1 (musbat tomonda) → vanishing gradient ancha yaxshi
✅ Juda tez (faqat if x > 0)
✅ Sparsity — neyronlarning yarmi "uyqu rejimida"
❌ Dying ReLU: katta manfiy bias → neyron har doim 0 → gradient 0 → o'lik ☠️
Yechim — Leaky ReLU:
x ≤ 0 → 0.01·x (kichik gradient, neyron o'lmaydi)
🔹 5. GELU (2018) — Transformer davri
ReLU qattiq qaror beradi: x ≤ 0 → 0.
GELU yumshoq, ehtimol asosida:
GELU(x) = x · Φ(x)
x = -2: ReLU → 0, GELU → -0.046
x = 2: ReLU → 2, GELU → 1.95
🔥 BERT, GPT-2, GPT-3, ViT — hammasi GELU.
🔹 6. Swish/SiLU (2017) va Mish (2019)
SiLU(x) = x · σ(x)
Mish(x) = x · tanh(ln(1 + e^x))
GELUga juda o'xshash. Farqi kichik koeffitsient.
SiLU → EfficientNet, MobileNetV3, YOLOv5/v8, Stable Diffusion
Mish → YOLOv4
💡 GELU vs Swish vs Mish — farqi juda kichik, kontekstga bog'liq.
🎯 Qaysi vazifada qaysi?
CNN (rasm) → ReLU yoki SiLU
Transformer (BERT, GPT, ViT) → GELU
Mobile / Diffusion → SiLU
YOLO → SiLU
RNN/LSTM → Tanh
Binary (oxirgi qatlam) → Sigmoid
Multi-class (oxirgi qatlam) → Softmax
💡 Qoida: ReLU bilan boshlang, keyin GELU/SiLU sinab ko'ring.
⚠️ Muhim: Hech qaysi activation "muammosiz" emas. Har biri ayrim kamchiliklarni yumshatadi, lekin o'z narxi bilan (sekinroq hisoblash, ko'proq xotira).
🤝 YouTube: 🎥 Havola
🖥️ Colab: 📂 Havola
📘 Barcha darslar: Havola
🚨 Videolar jonli yozilgan. Matematik izohlarda xatolar bo'lishi mumkin. Oldindan uzr so'rayman 🙏
@EldorML
📌 8.1-dars: Forward va Backward Pass — Neyron tarmoq qanday "o'ylaydi" va "o'rganadi"
🎯 Deep Learning Mathematics — @EldorML
Savol: CNN, ViT, Diffusion, GNN, Transformer — nima ularni bog'laydi?
Javob: Forward + Backward Pass. Hammasining yuragi shu.
🔹 Asosiy mantiq
Bola olma va apelsinni o'rganadi:
- Forward: mevani ko'radi → "olma" deydi
- Backward: ona "yo'q, apelsin" → bola xatoni tushunadi
Neyron tarmoq aynan shu. "Bola" o'rniga — weights. "Ona javobi" o'rniga — loss.
🔹 1. Forward Pass — bashorat
2 qatlamli tarmoq, x = [1, 2], target = 5:
z1 = W1·x + b1 → [0.2, 1.9, 1.3]
h = ReLU(z1) → [0.2, 1.9, 1.3]
y = W2·h + b2 → 0.5
L = (y - 5)² → 20.25
Model 0.5 dedi, javob 5 edi. Xato = 20.25 💥
🔹 2. Computation Graph
Har operatsiya grafga yoziladi:
x → [W1·x+b1] → [ReLU] → [W2·h+b2] → y → L
Backward passda shu grafdan teskari yo'l yuriladi.
💡 PyTorch, TensorFlow — barchasi shu prinsipda. Siz forward yozasiz, framework backwardni avtomatik hisoblaydi (autograd).
🔹 3. Backward Pass — Chain Rule
Savol: "W1 ni biroz o'zgartirsam, loss qanchaga o'zgaradi?"
dL/dW1 = dL/dy · dy/dh · dh/dz1 · dz1/dW1
Qatlamma-qatlam orqaga:
dL/dy = 2(y-5) = -9
dL/dh = -9 · W2 = [-3.6, -2.7, 4.5]
dL/dz1 = dL/dh · 1 = [-3.6, -2.7, 4.5] (ReLU musbat)
dL/dW1 = dL/dz1 · xᵀ → 3×2 matritsa
🔹 4. Gradient Descent — yangilanish
W_yangi = W_eski - η · dL/dW
η = 0.01 bilan:
W1 = [[0.5, -0.2], → [[0.536, -0.128],
[0.3, 0.8], [0.327, 0.854],
[-0.1, 0.6]] [-0.145, 0.510]]
Parametrlar xato kamayadigan tomonga siljidi 📉
🔹 5. To'liq oqim
Forward → Loss → Backward → Yangilash
↓
1000 marta takrorlash
↓
Model tayyor ✅
🎯 Xulosa
- Forward — bashorat (kirish → chiqish)
- Loss — xatoni o'lchash
- Backward — chain rule bo'yicha gradientlar
- Gradient Descent — parametrlarni yangilash
- Autograd — PyTorch buni avtomatik qiladi
💡 CNN, ViT, Diffusion, GNN, Transformer — hammasi shu mexanizmda o'rganadi. Faqat ichidagi operatsiyalar farq qiladi. GPT-4 da ham, sizning 2 qatlamli tarmog'ingizda ham — bir xil prinsip!
🤝 YouTube: 🎥 Havola
🖥️ Colab: 📂 Havola
📘 Barcha darslar: Havola
🚨 Videolar jonli yozilgan. Matematik izohlarda xatolar bo'lishi mumkin. Oldindan uzr so'rayman 🙏
@EldorML
📌 7.5-dars: Efficient Attention — Transformerning O(n²) muammosi
🎯 Deep Learning Mathematics — @EldorML
Savol: ChatGPT, Claude, Llama qanday qilib 1M tokenli kontekstni qo'llab-quvvatlaydi?
Javob: Efficient Attention variantlari.
🔹 Muammo: O(n²)
n = 512 → 262 ming
n = 8192 → 67 million
n = 100K → 10 milliard 💥
QK^T — n×n matritsa. n oshganda portlaydi.
🔹 1. Sparse Attention — kam juftlik
Token hammaga qarashi shart emas.
- Sliding Window — yaqin w ta tokenga
- Longformer — lokal + global tokenlar (65K)
- BigBird — window + global + random (100K)
Murakkablik: O(n·w) — chiziqli
🔹 2. Linear Attention — matematik usul
Usul: (QK^T)V = Q(K^T V)
K^T V → d × d matritsa (kichik!)
Murakkablik: O(n · d²)
Softmax muammosi → kernel usuli (Performer):
softmax(q·k) ≈ phi(q)·phi(k)
n = 100K da: standart 10 milliard → Performer 26 million
Tezlash: 380x 🚀
🔹 3. FlashAttention — GPU darajasidagi
O(n²) ni o'zgartirmaydi, lekin 5-10x tezroq!
Siri: GPU xotirasi 2 xil
HBM (40 GB, sekin)
SRAM (20 MB, 100x tez)
Standart: hammasi HBM orqali (sekin)
Flash: bloklarda SRAMda → HBMga faqat natija
Natija: xotira 10-20x kam, 2-4x tezroq
🔹 4. Qo'shimcha usullar
- Gradient Checkpointing — xotira 4x kam (+30% vaqt)
- Mixed Precision (BF16) — 2x kam, 2x tez
- GQA — Llama, GPT-4 da ishlatiladi
🎯 Xulosa
- O(n²) — uzun matn uchun fizik to'siq
- Sparse → Longformer/BigBird (kam juftlik)
- Linear → Performer (matematik qayta yozish)
- FlashAttention → 5-10x bepul tezlash
- GQA + BF16 + Checkpointing → barcha LLM'da
💡 GPT-4, Claude, Llama 3 — bir nechta tekniklarni birga ishlatadi: GQA + FlashAttention + BF16 + KV-cache. Endi 128K, 1M tokenli kontekst qanday ishlashini tushunasiz!
🤝 YouTube: 🎥 Havola
🖥️ Colab: 📂 Havola
📘 Barcha darslar: Havola
🚨 Videolar jonli yozilgan. Matematik izohlarda xatolar bo'lishi mumkin. Oldindan uzr so'rayman 🙏
@EldorML
📌 7.4-dars: Graph Neural Networks (GNN) — Graf shaklidagi ma'lumotlar
🎯 Deep Learning Mathematics — @EldorML
Oldingi darsda Diffusion Models va shovqin (noise)dan rasm yaratish haqida gaplashdik.
Endi savol:
❓ Agar ma'lumot rasm ham, matn ham emas, balki graf bo'lsa-chi?
❓ Facebook "Siz tanishingiz mumkin", Google Maps trafik, AlphaFold — qanday ishlaydi?
Javob: barchasi Graph Neural Networks asosida.
🔹 1. Asosiy savol
CNN — rasmlar uchun (regular grid)
Transformer — matn uchun (sequence)
GNN — graflar uchun (irregular structure)
Misollar:
• Ijtimoiy tarmoq: odamlar (tugun) + do'stlik (qirra)
• Molekula: atomlar + bog'lanishlar
• Yo'l xaritasi: shaharlar + yo'llar
• Tavsiya: foydalanuvchi-mahsulot
"GNN — bu CNNning umumlashtirilgan versiyasi: 'qo'shni piksellar' o'rniga 'qo'shni tugunlar' bilan ishlaydi."
🔹 2. Adjacency Matrix — grafni raqamlarda
Kim kim bilan bog'langanini matritsa orqali ifodalaymiz:
Ali Vali Soli Rustam
Ali [ 0 1 1 0 ]
Vali [ 1 0 0 1 ]
Soli [ 1 0 0 1 ]
Rustam [ 0 1 1 0 ]
🟢 Diagonal nol — tugun o'ziga bog'lanmagan
🟢 Simmetrik — yo'naltirilmagan grafda
Self-loop qo'shamiz:
A_tilde = A + I
Sababi: tugun aggregate paytida o'z xususiyatini ham saqlashi kerak.
🔹 3. Message Passing — GNNning yuragi
Uch qadam:
1) MESSAGE — har tugun qo'shnilariga "xabar" yuboradi
2) AGGREGATE — har tugun olgan xabarlarni birlashtiradi (sum/mean/max)
3) UPDATE — neyron tarmoq orqali yangi xususiyat hisoblanadi
Hayotiy o'xshatish — gap-tarqalish:
Boshida: faqat Ali biladi
1 qadam: Ali → Vali, Soli ham biladi
2 qadam: Vali, Soli → Rustam ham biladi
💡 Eng muhim xulosa: K marta message passing = har tugun K-uzoqlikdagi qo'shnilardan ma'lumot oladi degani.
🔹 4. GCN formulasi
H^(k+1) = sigma( A_hat · H^(k) · W^(k) )
Bu yerda:
A_hat = D^(-1/2) · A_tilde · D^(-1/2)
Qadamma-qadam:
• A_tilde · H — qo'shnilar yig'indisi (avtomatik aggregate)
• H · W — linear transform (CNNdagi filter o'xshashi)
• D^(-1/2) bilan ko'paytma — normalizatsiya
• sigma — ReLU yoki SiLU
🔹 5. Normalizatsiya nima uchun?
Muammo: ba'zi tugunlarda 1000+ qo'shni (mashhur odam), ba'zilarida 5 ta.
Sodda yig'indida:
Mashhur odam → katta qiymat
Oddiy odam → kichik qiymat
Bu adolatsiz — mashhur tugunlar dominantlik qiladi.
Yechim: degree bilan bo'lish:
h_i_new = sum( h_j / sqrt(d_i · d_j) )
Endi har kimning ma'lumoti bir xil masshtabda.
🔹 6. K qatlam = K-uzoqlik
1 qatlam → bevosita qo'shnilar
2 qatlam → qo'shnining qo'shnisi
K qatlam → K-uzoqlik
⚠️ Lekin 5+ qatlam — over-smoothing muammosi:
barcha tugunlar bir xil bo'lib qoladi.
Boshida: 10 qatlamdan keyin:
Ali = [1, 0] Ali = [0.4, 0.4]
Vali = [0, 1] Vali = [0.4, 0.4]
Soli = [1, 1] Soli = [0.4, 0.4]
→ HAMMASI BIR XIL!
Optimal: 2-3 qatlam.
🔹 7. GNN vazifa turlari
Node-level — har tugun uchun bashorat
Misol: spam akkauntmi? qaysi guruh?
Edge-level — qirra bo'ladimi?
Misol: do'st tavsiyasi (link prediction)
Graph-level — butun graf uchun
Misol: molekula zaharlimi?
🎯 Yakuniy xulosa
• Graf = tugunlar + qirralar (adjacency matrix bilan ifoda)
• Message passing: message → aggregate → update
• GCN formula: H' = sigma(A_hat · H · W) — qo'shnilar yig'indisi + linear + ReLU
• Normalizatsiya: degree bilan bo'lish (mashhur tugunlar dominatsiya qilmasin)
• 2-3 qatlam optimal, 5+ qatlam over-smoothing keltiradi
• GNN istalgan o'lchamdagi grafda ishlaydi (permutation invariant)
💡 AlphaFold (protein), Google Maps (trafik), Pinterest (tavsiya), Facebook ("siz tanishingiz mumkin") — barchasi GNN asosida. Biz har kuni GNN dan foydalanamiz, lekin uni ko'rmaymiz.
🤝 YouTube dars: 🎥 Havola
🖥️ Colab notebook: 📂 Havola
📘 Barcha darslar: Havola
🚨 Videolar jonli yozilgan. Matematik izohlarda xatolar bo'lishi mumkin. Oldindan uzr so'rayman 🙏
@EldorML
Guruhdagi hamma kurslarga havola:
Python kurs: https://medium.com/@mr.eldorabdukhamidov/intensiv-python-kursi-8aac613fca5c
AI agent kurs: https://medium.com/@mr.eldorabdukhamidov/ai-agentlar-qurish-bepul-onlayn-kurs-e1ad0a2246b9
ML kurs: https://medium.com/@mr.eldorabdukhamidov/machine-learning-ml-to-liq-kurs-tarkibi-79c0c5c35da2
DL Math kurs: https://medium.com/@mr.eldorabdukhamidov/deep-learning-matematikasi-intensiv-kurs-rejasi-3a04e0f12453
Agar biror taklif yoki istaklaringiz bo’lsa, izohlarda yozib qoldiring. Darslarni shunga qarab moslashga harakat qilaman!
Assalom alaykum do’stlar. Video darslar sizlarga tushunarli va foydali bo’lyaptimi?
📌 7.3-dars: Diffusion Models — Noisedan(Shovqin) rasm yaratish
🎯 Deep Learning Mathematics — @EldorML
Oldingi darsda ViT va patch embedding haqida gaplashdik.
Endi savol:
❓ Sof noisedan(shovqin) haqiqiy rasm yaratish mumkinmi?
❓ Stable Diffusion va DALL-E qanday ishlaydi?
Javob: Ha — buning siri "diffuziya" jarayonida.
🔹 1. Asosiy g'oya
GAN: rasmni "ixtiro qiladi"
VAE: rasmni siqib qayta tiklaydi
Diffusion: shovqinni olib tashlab rasm "quradi"
"Agar biz rasmni buzishni o'rgansak, uni tiklashni ham o'rganishimiz mumkin."
🔹 2. Forward Process — Shovqin qo'shish
Rasmga T = 1000 qadamda asta-sekin Gaussian shovqin qo'shamiz:
x_0 → x_1 → x_2 → ... → x_T
rasm ozgina ko'p sof
shovqin shovqin shovqin
Reparameterization formulasi:
x_t = √ᾱ_t · x_0 + √(1-ᾱ_t) · ε
Bu yerda:
- ᾱ_t — α larning ko'paytmasi (t qadamgacha)
- ε ~ N(0, I) — sof Gaussian shovqin
🟢 Forward process O'RGATILMAYDI (TRAIN) — bu matematik formula.
🔹 3. Reverse Process — Rasmni tiklash
Sof shovqindan boshlab, har qadamda ozgina shovqin olib tashlaymiz:
x_T → x_{T-1} → ... → x_1 → x_0
shovqin toza rasm
Muammo: aniq formula yo'q (posterior hisoblash imkonsiz)
Yechim: neyron tarmoq (U-Net) shovqinni bashorat qiladi
🔹 4. Score Matching — chuqur g'oya
Score funksiyasi = log p(x) gradienti
Bu — "haqiqiy rasmni ko’rsatadigan kompas"
DDPMda (Diffusion Model) isbotlangan:
score = -ε / √(1-ᾱ_t)
Ya'ni shovqinni bashorat qilish == scoreni hisoblash
Ikkisi MATEMATIK EKVIVALENT!
🔹 5. DDPM Loss — sodda MSE
Murakkab variational lower bound (VLB) qisqartirildi:
L = || ε - ε_θ(x_t, t) ||²
Bu — oddiy MSE. Hammasi shu!
Training algoritmi:
1. Datasetdan rasm olish: x_0
2. Tasodifiy qadam: t ~ Uniform(1, T)
3. Tasodifiy shovqin: ε ~ N(0, I)
4. x_t hisoblash (formula yuqorida)
5. Loss = ||ε - ε_θ(x_t, t)||²
6. Gradient descent
🔹 6. U-Net — Shovqin bashorat qiluvchi tarmoq
Kirish: shovqinli rasm + qadam raqami (t)
Chiqish: bashorat qilingan shovqin
Encoder (siqish)
x_t → [64] → [128] → [256] → [512]
↓
Bottleneck
↓
Decoder (kengaytirish)
[512] → [256] → [128] → [64] → ε_pred
Skip connections: har qatlamda — mayda detallar yo'qolmaydi.
Time embedding sinusoidal — model qaysi qadamda ekanligini biladi.
🔹 7. Sampling — sekin lekin sifatli
Trening: 1 ta forward pass
Sampling: 1000 ta forward pass
Diffusion GANdan 1000 marta sekinroq, lekin sifati ancha yuqori.
Yangi metodlar (DDIM) bu sonni 20-50 ga tushiradi.
🎯 Yakuniy xulosa
- Forward process → matematik formula, o'rgatilmaydi
- Reverse process → U-Net o'rganadi
- DDPM loss → oddiy MSE
- Score matching = shovqin bashorati (matematik ekvivalent)
- U-Net + skip connections → mayda detallar saqlanadi
- Time embedding → bir model 1000 ta vazifani bajaradi
💡 Stable Diffusion, DALL-E 2, Midjourney, Imagen — barchasi DDPM asosida!
🤝 YouTube dars: 🎥 Havola
🖥️ Colab notebook: 📂 Havola
📘 Barcha darslar: Havola
🚨 Videolar jonli yozilgan. Matematik izohlarda xatolar bo'lishi mumkin. Oldindan uzr so’rayman🙏
@EldorML
📌 7.2-dars: Vision Transformers (ViT) — Rasmlarni tokenga aylantirish
🎯 Deep Learning Mathematics — @EldorML
Oldingi darsda ResNet va skip connectionlar haqida gaplashdik.
Endi savol:
❓ Transformer faqat matn uchunmi?
❓ Rasmni ham Transformerga berish mumkinmi?
Javob: Ha — lekin avval rasmni "so'zlarga" aylantirish kerak.
🔹 1. Muammo — Rasmni token qilish
Har bir pikselni token deb olsak:
224×224 = 50176 token
Attention hisoblash O(n²) → 50176² ≈ 2.5 milliard operatsiya.
Bu amalda mumkin emas.
🔹 2. Yechim — Patch Embedding
Rasmni P×P patchlarga bo'lamiz:
Patch hajmi: 16×16
Patch soni: 224×224 / 16×16 = 196 ta
50176 piksel → faqat 196 token! ✅
Har patch:
1. Yassilanadi: 16×16×3 = 768 element
2. Linear proyeksiya: 768 → D o'lchamli embedding
3. Position embedding qo'shiladi
🔹 3. CLS Token
Transformerga kirishda [CLS] token qo'shiladi.
• Hech qaysi patchga tegishli emas
• Barcha patchlar bilan attention orqali muloqot qiladi
• Oxirida butun rasmning "xulosa" representatsiyasi
• Klassifikatsiya uchun faqat [CLS] ishlatiladi
🔹 4. Position Embedding nima uchun kerak?Z
Transformer tartibsiz (permutation invariant):
[p1][p2][p3] va [p5][p1][p99] — bir xil ko'rinadi!
Position embedding har tokenga "men i-chi o'rindaman" degan ma'lumot qo'shadi.
ViTda o'rganiluvchi position embedding ishlatiladi.
🔹 5. Inductive Bias — CNN vs ViT
Inductive bias — arxitekturaning ma'lumot haqidagi avvalgi taxminlari.
CNNning taxminlari:
• Locality → faqat qo'shni piksellar bilan ishlaydi
• Translation equivariance → bir xil filter hamma joyda ishlaydi
ViTning taxminlari:
• Locality YO'Q → har patch barcha patchlarni ko'radi
• Translation equivariance YO'Q → position embedding o'rganiladi
• Global receptive field → darhol mavjud ✅
Taqqoslash:
CNN:
Locality ✅ (tayyor)
Translation eq. ✅ (tayyor)
Global context ❌ (sekin)
Kam data ✅ yaxshi
Ko'p data ✅ yaxshi
ViT:
Locality ❌ (o'rganiladi)
Translation eq. ❌ (o'rganiladi)
Global context ✅ (darhol)
Kam data ❌ ko'p data kerak
Ko'p data ✅✅ CNNdan yaxshi
Amalda:
• Kam data (< 1M) → CNN afzal
• Ko'p data (> 10M) → ViT afzal
🔹 6. To'liq ViT Pipeline
Kirish rasm (224×224×3)
↓
Patch bo'lish → 196 ta 16×16×3
↓
Flatten + Linear → 196×768
↓
CLS token → 197×768
↓
Position embedding → 197×768
↓
Transformer Encoder × 12
↓
CLS token → 768
↓
MLP Head → 1000 klass
🎯 Yakuniy xulosa
• Patch embedding → rasm tokenlar ketma-ketligiga aylanadi
• CLS token → butun rasmning xulosa representatsiyasi
• Position embedding → har patchning joylashuvini bildiradi
• CNN → inductive bias bor, kam data uchun yaxshi
• ViT → global attention, ko'p data uchun yaxshi
💡 DINOv2, SAM, Stable Diffusion — barchasi ViT asosida!
🤝 YouTube dars: 🎥 Havola
🖥️ Colab notebook: 📂 Havola
📘 Barcha darslar: Havola
🚨 Videolar jonli yozilgan. Matematik izohlarda xatolar bo'lishi mumkin. Oldindan uzr 🙏
@EldorML
📌 7.1-dars: ResNet va Skip Connections — Chuqur tarmoqlar muammosiga yechim
🎯 Deep Learning Mathematics — @EldorML
Oldingi darsda Batch Normalization haqida gaplashdik.
Endi savol:
❓ Nega 56 qatlamli tarmoq 20 qatlamlilikdan yomon ishlaydi?
❓ Nega chuqur tarmoq har doim yaxshiroq emas?
Javob: Degradation muammosi — vanishing gradient.
🔹 1. Muammo — Vanishing Gradient
Backpropagationda gradient zanjir qoidasi orqali hisoblanadi:
∂L/∂w₁ = ∂L/∂hₙ · ∂hₙ/∂hₙ₋₁ · ... · ∂h₁/∂w₁
Har qatlam gradientni oldingi gradientga ko'paytiradi.
Agar har qatlamda gradient < 1 bo'lsa:
0.9¹⁰ = 0.35
0.9⁵⁰ = 0.005
0.9¹⁰⁰ ≈ 0.00003 ← deyarli nol!
Natijada:
• Birinchi qatlamlar deyarli o'qimaydi
• Chuqur tarmoq sayoz tarmoqdan yomon ishlaydi
🔹 2. Residual Learning — F(x) + x
Oddiy qatlam:
h(x) = F(x) ← to'liq mapping o'rganadi
ResNet qatlam:
h(x) = F(x) + x ← faqat "qoldiq" (residual) o'rganadi
Nima uchun bu oson?
• Oddiy tarmoqda: h(x) = x ni o'rganish → qiyin
• ResNetda: F(x) = 0 ni o'rganish → oson!
Oddiy:
x → [Conv→BN→ReLU] → F(x)
ResNet:
x ─────────┐
x → [F qatlam] → (+) → ReLU
🔹 3. Identity Mapping Matematikasi
Bir blok:
y = F(x, {Wᵢ}) + x
Ko'p blok uchun:
x_L = x_l + Σ F(xᵢ) (l dan L gacha)
Ya'ni istalgan chuqur qatlam — istalgan sayoz qatlamning to'g'ridan-to'g'ri yig'indisi.
Gradient formulasi:
∂L/∂x_l = ∂L/∂x_L · (1 + ∂/∂x_l · ΣF(xᵢ))
💡 Formulada "1" bor!
• Oddiy tarmoqda: gradient faqat qatlamlar orqali → yo'qolishi mumkin
• ResNetda: 1 + ... → gradient hech qachon nolga tushmaydi ✅
🔹 4. Skip Connection arxitekturasi
Basic Block (ResNet-18, 34):
x ┐
↓
Conv(3×3) → BN → ReLU
↓
Conv(3×3) → BN
↓
(+) ← x
↓
ReLU
Bottleneck Block (ResNet-50, 101, 152):
x ┐
↓
Conv(1×1) → BN → ReLU ← kanallar kamayadi
↓
Conv(3×3) → BN → ReLU ← asosiy hisoblash
↓
Conv(1×1) → BN ← kanallar oshadi
↓
(+) ← x
↓
ReLU
1×1 convolutionlar kanallar sonini kamaytiradi → hisoblash tejaladi.
O'lchamlar farq qilganda — Projection ishlatiladi:
y = F(x) + Wₛ·x ← bu yerda Wₛ = 1×1 conv
🔹 5. Natija
Oddiy tarmoq:
20 qatlam → ✅ yaxshi
56 qatlam → ❌ yomonlashadi
152 qatlam → ❌❌ juda yomon
ResNet:
20 qatlam → ✅ yaxshi
56 qatlam → ✅ hali yaxshi
152 qatlam → ✅ eng yaxshi (ImageNet 2015 🏆)
ResNet-152 — ImageNetda 2015-yilda eng yaxshi natija.
🎯 Yakuniy xulosa
• Degradation → chuqur tarmoq sayozdan yomon ishlaydi
• Skip connection → F(x) + x gradientga to'g'ridan-to'g'ri yo'l ochadi
• Identity mapping → F(x)=0 o'rganish oson → qo'shimcha qatlamlar zararlanmaydi
• ResNet g'oyasi → bugungi barcha zamonaviy arxitekturalarda ishlatiladi
🤝 YouTube dars: 🎥 Havola
🖥️ Colab notebook: 📂 Havola
📘 Barcha darslar: Havola
🚨 Videolar jonli yozilgan. Matematik izohlarda xatolar bo'lishi mumkin. Oldindan uzr 🙏
@EldorML
📌 6.7-dars: Batch Normalization — Chuqur tarmoqlarda o'qitishni tezlashtirish
🎯 Deep Learning Mathematics — @EldorML
Oldingi darsda overfitting va generalization haqida gaplashdik.
Endi savol:
❓ Nega chuqur tarmoqlar o'qitish davomida beqaror bo'ladi?
❓ Nega learning rateni katta qilsak training buziladi?
Javob: Internal Covariate Shift.
🔹 1. Internal Covariate Shift nima?
Masalan, fabrika misolini olsak:
• Yaxshi holat → xomashyo har kuni bir xil keladi, ishchi bir maromda ishlaydi
• Yomon holat → xomashyo har kuni boshqacha, ishchi doim moslashadi
Tarmoqda ham xuddi shunday:
• Har qatlam oldingi qatlamdan input oladi
• O'qitish davomida oldingi qatlam o'zgargani sayin keyingi qatlam inputi ham o'zgaradi
• Keyingi qatlam doim "yangi sharoitga" moslashadi → o'qitish sekinlashadi
Bu — Internal Covariate Shift.
🔹 2. Batch Normalization — Yechim
G'oya: har qatlamning inputini normalizatsiya qilamiz — ya'ni mean=0, std=1 ga keltiramiz.
Batch = [1.0, 2.0, 3.0, 4.0] misol sifatida:
1-qadam — Mean:
μ = (1.0 + 2.0 + 3.0 + 4.0) / 4 = 2.5
2-qadam — Variance:
σ² = ((1−2.5)² + (2−2.5)² + (3−2.5)² + (4−2.5)²) / 4
= (2.25 + 0.25 + 0.25 + 2.25) / 4 = 1.25
3-qadam — Normalizatsiya:
x̂ᵢ = (xᵢ − μ) / √(σ² + ε)
x̂₁ = (1.0 − 2.5) / √1.25 = −1.34
x̂₂ = (2.0 − 2.5) / √1.25 = −0.45
x̂₃ = (3.0 − 2.5) / √1.25 = +0.45
x̂₄ = (4.0 − 2.5) / √1.25 = +1.34
Natija: mean ≈ 0, std ≈ 1 ✅
4-qadam — Scale va Shift: yᵢ = γ · x̂ᵢ + β
💡 γ va β nima uchun kerak?
Agar faqat normalizatsiya qilsak — model har doim mean=0, std=1 ga majbur.
Lekin ba'zi qatlamlarda boshqa taqsimot kerak bo'lishi mumkin.
γ va β — o'rganiluvchi parametrlar, model o'zi kerakli taqsimotni tanlaydi.
🔹 3. Training vs Inference
Muammo: inferenceda batch bo'lmasa nima qilamiz?
Yechim — Running Statistics:
μ_run ← (1−α)·μ_run + α·μ_batch
σ²_run ← (1−α)·σ²_run + α·σ²_batch
Training: batch statistikasi + running yangilanadi
Inference: running statistikasi — o'zgarmaydi
PyTorchda:
model.train() → batch stat, running yangilanadi
model.eval() → running stat, o'zgarmaydi
⚠️ Keng tarqalgan xato: model.eval() qismini unutish:
Inferenceda BatchNorm noto'g'ri ishlaydi → natijalar beqaror.
🔹 4. Batch Norm afzalliklari
• Katta LR ishlatish mumkin → tezroq o'qitish
• Initializationga kamroq bog'liqlik
• Regularization effekti — ozgina overfitting kamayadi
• Gradient vanishing kamayadi
🔹 5. Qayerga qo'yish kerak?
Original: Linear → BN → Activation
Zamonaviy: Linear → Activation → BN
PyTorchda:
nn.Linear(in, out)
nn.BatchNorm1d(out)
nn.ReLU()
🎯 Yakuniy xulosa:
• Internal Covariate Shift → qatlam inputi o'qitishda o'zgarib turadi
• Batch Norm → har batchda mean=0, std=1 ga keltiradi
• γ, β → model kerakli taqsimotni o'zi o'rganadi
• model.eval() → running statistikani ishlatadi
🤝 YouTube dars: 🎥 Havola
🖥️ Colab notebook: 📂 Havola
📘 Barcha darslar: Havola
🚨 Videolar jonli yozilgan. Matematik izohlarda xatolar bo'lishi mumkin. Oldindan uzr 🙏
@EldorML
📌 6.6-dars: Overfitting va Generalization — Model nima o'rganadi?
🎯 Deep Learning Mathematics — @EldorML
Oldingi darsda regularization haqida gaplashdik.
Endi savol:
❓ Nega train datada yaxshi, yangi datada yomon ishlaydi?
❓ Model aslida nimani o'rganishi kerak?
Javob: Model bog’liqlikni (pattern) o'rganishi kerak — chalg’ituvchi ma’lumotni (noise) emas.
🔹 1. Overfitting / Underfitting
Imtihon analogiyasi:
• Umuman o'qimagansiz → Underfitting
• Mavzuni tushundingiz → Just right ✅
• Faqat javoblarni yod oldingiz → Overfitting
Math:
• Underfitting: Train loss↑ Val loss↑
• Just right: Train loss↓ Val loss↓ (yaqin)
• Overfitting: Train loss↓↓ Val loss↑
Polinom misoli:
• Daraja 1 → juda sodda → underfitting
• Daraja 4 → optimal → just right ✅
• Daraja 20 → juda murakkab → overfitting
🔹 2. Generalization Geometriyasi
Loss yuzada ikki xil minimum:
Sharp minimum:
Loss
| \ /
| \ /
| \ / ← tik devorlar
| \ /
| \/
Flat minimum:
Loss
| \ /
| \ /
| \_____/ ← keng, tekis tub
Nima uchun flat minimum yaxshi?
Train va test distribution ozgina farq qilsa → parametrlar siljishi mumkin.
• Sharp → kichik siljish → loss tez oshadi → testda yomon natija
• Flat → kichik siljish → loss deyarli o'zgarmaydi → testda yaxshi natija
Flat minimumga qanday erishish mumkin?
• Kichik batch size → flat minimum
• Weight Decay / L2 → katta parametrlarni jazolaydi
• Dropout → robustness oshadi
💡 Kichik batch (32–256) ko'proq tavsiya etiladi — tezroq bo'lmasa ham.
🔹 3. Bias-Variance Tradeoff
Xato = Bias² + Variance + Irreducible Noise
Bias → modelning tizimli xatosi → underfitting belgisi
Variance → modelning train dataga bog'liqligi → overfitting belgisi
Murakkablik bilan o'zgarishi:
Bias: ████████ → ░░░░░░░░ (murakkaklik oshsa kamayadi)
Variance: ░░░░░░░░ → ████████ (murakkaklik oshsa oshadi)
⚠️ Deep learningda "Double Descent" hodisasi:
Juda katta modellarda umumiy xato yana pasayadi — lekin bu hali to'liq tushuntirilmagan mavzu.
🔹 4. Train / Val / Test Split
| Set | Maqsad | Hajm |
| Train | Modelni o'qitish | 70–80% |
| Val | Hyperparameter sozlash | 10–15% |
| Test | Yakuniy baholash | 10–15% |
⚠️ Oltin qoida: Test setga faqat bir marta qarang.
Agar test natijasiga qarab model o'zgartirsangiz — u endi haqiqiy test emas.
Early Stopping:
Val loss oshib ketganda o'qitishni to'xtatish.
Epoch: 1 2 3 4 5 6 7 ...
Train: 0.9 0.7 0.5 0.4 0.3 0.2 0.15
Val: 0.95 0.8 0.65 0.6 0.58 0.60 0.65
↑
eng yaxshi model
🔹 5. Qaysi holda nima qilish kerak?
• Train↓ Val↑ → overfitting → regularization, dropout, ko'proq data
• Train↑ Val↑ → underfitting → kattaroq model, ko'proq epoch
• Train≈Val, ikkalasi↑ → ko'proq data kerak
• Train≈Val, ikkalasi↓ → ideal ✅
🎯 Yakuniy xulosa
• Overfitting → train datani yod olish
• Flat minimum → yaxshi umumiylashtirish
• Bias²+Variance → xatoning ikki komponenti
• Train/Val/Test → har birining alohida vazifasi bor
Yaxshi model — trainda eng past loss emas,
ko'rmagan datada eng past loss. ✅
🤝 YouTube dars: 🎥 Havola
🖥️ Colab notebook: 📂 Havola
📘 Barcha darslar: Havola
🚨 Videolar jonli yozilgan. Matematik izohlarda xatolar bo'lishi mumkin. Oldindan uzr 🙏
@EldorML
📌 6.5-dars: Regularization — Overfittingga qarshi kurash
🎯 Deep Learning Mathematics — @EldorML
Oldingi darslarda optimizerlar va learning rate haqida gaplashdik.
Endi savol:
❓ Nega model train datada yaxshi, test datada yomon ishlaydi?
❓ Parametrlar juda katta bo'lsa nima bo'ladi?
Javob: Model "tushunmaydi" — faqat "yod oladi". Bunga overfitting deyiladi.
🔹 1. Overfitting nima?
Imtihonga tayyorgarlik analogiyasi:
• Yod olish → yangi savol chiqsa javob bera olmaysiz
• Tushunish → har qanday savolga javob bera olasiz
Xuddi shunday modellarda:
• Overfitting → train datani "yod oladi"
• Regularization → modelni "tushunishga" majbur qiladi
🔹 2. L2 Regularization (Ridge)
Oddiy loss: Loss = (1/n)·Σ(y_i − ŷ_i)²
L2 loss: Loss = (1/n)·Σ(y_i − ŷ_i)² + λ·Σ w_j²
Endi model ikki narsani kamaytiradi: xato + katta parametrlar.
Yangilanish: w ← w − η·(gradient + 2λ·w)
Misol: η=0.1, λ=0.1, w=3.0, gradient=2.0
• L2 bilan: w = 3.0 − 0.1×(2.0+0.6) = 2.74
• L2 siz: w = 3.0 − 0.1×2.0 = 2.80
💡 L2 parametrlarni nolga yaqinlashtiradi, lekin aynan nolga tushirmaydi.
🔹 3. L1 Regularization (Lasso)
Loss_L1 = (1/n)·Σ(y_i − ŷ_i)² + λ·Σ|w_j|
L2 dan farqi: ba'zi parametrlarni aynan nolga tushiradi → model o'zi muhim feature larni tanlaydi.
⚠️ Deep learningda L1 kamdan-kam, L2 ko'proq ishlatiladi.
🔹 4. Dropout
Muammo: neyronlar bir-biriga haddan ortiq tayanadi → overfitting.
Yechim: har o'qitish qadamida neyronlarning bir qismini tasodifiy o'chiramiz.
Oddiy: [N1][N2][N3][N4][N5]
Dropout: [N1][ 0 ][N3][ 0 ][N5] ← har qadamda boshqalar o'chiriladi
⚠️ dropout=0.2 → neyronlarning 20% i o'chiriladi, 80% i saqlanadi.
Inverted Dropout — train/inference miqyos farqini hal qiladi:
h̃_j = (r_j · h_j) / p
💡 PyTorch buni avtomatik bajaradi.
🔹 5. AdamW
Adam bilan L2 ishlatilsa — λ·w ham √v̂_t ga bo'linadi → regularization kuchi parametrga qarab o'zgaradi. Bu noto'g'ri!
L2 (Adam): w ← w − η/√v̂_t · (gradient + 2λ·w)
AdamW: w ← w − η/√v̂_t · gradient − η·λ·w
Weight decay gradient yangilanishidan alohida qo'shiladi — bu to'g'ri yondashuv!
💡 Adam ishlatayotgan bo'lsangiz → har doim AdamW ishlatish tavsiya qilinadi.
🔹 6. Qaysi biri qachon?
• Parametrlar juda katta → L2
• Feature selection kerak → L1
• Neyronlar bir-biriga tayanadi → Dropout
• Adam ishlatilayotgan bo'lsa → AdamW
Kombinatsiya:
• Kichik model → L2
• O'rta model → L2 + Dropout
• Katta model → AdamW + Dropout
🎯 Yakuniy xulosa
• L2 → parametrlarni nolga yaqinlashtiradi
• L1 → keraksiz parametrlarni butunlay o'chiradi
• Dropout → neyronlarni mustaqil ishlashga majbur qiladi
• AdamW → Adam da weight decay ni to'g'ri amalga oshiradi
🤝 YouTube dars: 🎥 Havola
🖥️ Colab notebook: 📂 Havola
📘 Barcha darslar: Havola
🚨 Videolar jonli yozilgan. Matematik izohlarda xatolar bo'lishi mumkin. Oldindan uzr 🙏
@EldorML
📌 6.4-dars: Learning Rate (LR) Schedules — LR qanday o'zgartiriladi?
🎯 Deep Learning Mathematics — @EldorML
Oldingi darslarda loss surface va curvature haqida gaplashdik.
Endi savol:
❓ Nega model ba'zan minimumda sakrab yuradi?
❓ Nega fixed learning rate yetarli emas?
Javob: LR dinamik bo'lishi kerak.
🔹 1. Muammo nima?
Fixed LR bilan:
• Katta LR → oxirida minimumda "o'tib ketadi" (overshoot)
• Kichik LR → juda sekin, vaqt isrof
Yechim — LRni vaqt bo'yicha o'zgartirish.
Ikki xil yondashuv:
• LR Schedule → LRni biz boshqaramiz
• Adaptive Methods → har parametr o'z LRini o'zi moslashtiradi
🔹 2. Step Decay
Formula: η_t = η₀ × γ^⌊t/S⌋
Misol: η₀=0.1, γ=0.5, S=20
• Epoch 0 → LR = 0.100
• Epoch 20 → LR = 0.050
• Epoch 40 → LR = 0.025
• Epoch 60 → LR = 0.013
Har 20 epochda LR ikki barobarga kamayadi.
⚠️ Kamchiligi: LR keskin sakraydi — to'satdan o'zgarish.
🔹 3. Cosine Annealing
Formula: η_t = η_min + ½(η_max − η_min)(1 + cos(t/T · π))
Nima uchun cosine?
• Boshida sekin kamayadi — model yo'nalish topmoqda
• O'rtada tez kamayadi — model yaqinlashmoqda
• Oxirida sekin — minimumga aniq o'tiradi
• LR hech qachon nolga tushmaydi
💡 Zamonaviy o’qitish uchun eng ko'p ishlatiladigan schedule.
🔹 4. Warmup + Cosine
Katta modellarda (GPT, BERT) yangi muammo: Boshida gradientlar ishonchsiz → katta LR bilan boshlasak model noto'g'ri tomonga ketadi.
Bu — training collapse hisoblanadi.
Formula (2 bosqich):
Warmup (t ≤ W): η_t = η_max × t/W
Cosine (t > W): η_t = cosine formula
Misol: W=10, T=100
• Epoch 0 → LR = 0.000
• Epoch 5 → LR = 0.050
• Epoch 10 → LR = 0.100 ← peak
• Epoch 100 → LR = 0.001
💡 Transformer modellarning barchasi warmup ishlatadi.
🔹 5. SGD + Momentum
Oddiy SGD muammosi — oscillation:
Tik yo'nalish: +2 → -1.8 → +1.6 → ... (tebranish)
Tekis yo'nalish: 2 → 1.8 → 1.6 → ... (sekin)
Formula:
v_{t+1} = β·v_t + ∇L(w_t)
w_{t+1} = w_t − η·v_{t+1}
β=0.9 — oldingi tezlikni 90% saqlaydi.
Analogiya: Qor to'pi tepalikdan tushganda tezlashadi —
har qadam oldingi tezlikni "eslab" qoladi.
🔹 6. Adam
• SGD+Momentum
• Har parametr uchun LR: ❌
• Momentum: ✅
• RMSProp
• Har parametr uchun LR: ✅
• Momentum: ❌
• Adam
• Har parametr uchun LR: ✅
• Momentum: ✅
Kingma & Ba (2015): ikkalasini birlashtirdi.
4 qadam:
1. m_t = β₁·m_{t-1} + (1−β₁)·∇L ← momentum
2. v_t = β₂·v_{t-1} + (1−β₂)·∇L² ← gradient kvadrati
3. m̂_t = m_t/(1−β₁ᵗ) ← bias correction
4. w_{t+1} = w_t − η/√v̂_t · m̂_t ← yangilanish
Default qiymatlar: β₁=0.9, β₂=0.999, η=0.001
💡 Yangi loyihada boshqa optimizer o'ylamasdan Adamdan boshlang.
🔹 7. Qaysi biri qachon?
• Oddiy model → Adam + Cosine Annealing
• Transformer (GPT, BERT) → Adam + Warmup + Cosine
• Image classification → SGD + Momentum + Step Decay
🎯 Yakuniy xulosa
• LR Schedule — LR ni biz vaqt bo'yicha boshqaramiz
• Adaptive — har parametr o'z LR sini o'zi moslashtiradi
• Step Decay → keskin sakrash bor
• Cosine Annealing → silliq, zamonaviy
• Warmup → training collapse dan himoya
• Adam → bugungi kunda default tanlov
🤝 YouTube dars: 🎥 Havola
🖥️ Colab notebook: 📂 Havola
📘 Barcha darslar: Havola
🚨 Videolar jonli yozilgan. Matematik izohlarda xatolar bo'lishi mumkin. Oldindan uzr 🙏
@EldorML
