Bu nima uchun kerak
Neyron tarmoqni o‘qitish — millionlab va milliardlab $\theta$ vaznlar bo‘yicha $L(\theta)$ yo‘qotish funksiyasining minimumini izlash. Minimum uchun tayyor formula yo‘q: yo‘qotish vaznlarga juda murakkab bog‘liq. Minimumga qadam-baqadam borish qoladi, har bir qadamdagi yagona mo‘ljal esa $\nabla L$ gradiyent: yo‘qotish eng tez o‘sadigan yo‘nalishni ko‘rsatuvchi vektor. Biz teskari tomonga qadam tashlaymiz.
Bu sahifa bitta usulning uchta pog‘onasi haqida:
- SGD (stochastic gradient descent, stoxastik gradiyentli tushish) — kichik tasodifiy misollar to‘plami, mini-batch bo‘yicha hisoblangan gradiyentga qarshi qadam;
- Momentum (inersiya, og‘ir shar usuli) — o‘tgan gradiyentlarning to‘plangan yig‘indisiga qarshi qadam: inersiya zigzaglarni so‘ndiradi va qiya yo‘nalishlar bo‘ylab tushishni tezlashtiradi;
- RMSProp — yaqindagi gradiyentlarning o‘rta kvadratik kattaligiga bo‘lingan qadam: har bir vaznning o‘z qadam masshtabi bor.
Ikkinchi va uchinchi pog‘onani qo‘shing, siljishni tuzatishni qo‘shing — Adam hosil bo‘ladi. Inersiyali SGD esa hamon tasvirlar uchun ko‘plab o‘ramli tarmoqlarni o‘qitadi va ularda ko‘pincha adaptiv usullardan yaxshiroq umumlashtiradi.
$\theta_t=\theta_{t-1}-\eta g_t$. Qadam faqat $\eta L<2$ bo‘lganda barqaror, bu yerda $L$ — yo‘qotishning eng katta egriligi. Cho‘ziq vodiy (katta $\kappa$ shartlanganlik soni) SGD’ni sudralishga majbur qiladi; $\eta$ va $\beta$ yaxshi tanlanganda $u_t=\beta u_{t-1}+g_t$ inersiya yo‘lni taxminan $\kappa$ dan $\sqrt\kappa$ qadamgacha qisqartiradi; RMSProp qadamni $\sqrt{v_t}$ ga bo‘ladi va turli vaznlar masshtablarini tenglashtiradi.
Intuitsiya: pastga qadam
Quyuq tumanda tepalikdan tushayotganingizni tasavvur qiling. Faqat oyoq ostidagi qiyalik ko‘rinadi: u qayerga va qanchalik tik pastga ketyapti. Oqilona strategiya — eng tik tushish tomonga qadam tashlash, atrofga qarash va takrorlash. Qadam uzunligini o‘qitish tezligi (learning rate) $\eta$ belgilaydi.
Qisqa qadamlar ishonchli, lekin sekin. Juda uzun qadam chuqurlik tubidan sakrab o‘tib, qarama-qarshi yonbag‘irga tushadi — agar u yerda balandroq bo‘lsa, keyingi qadam yanada uzoqqa otib yuboradi. Buni eng oddiy $f(\theta)=L\theta^2/2$ yo‘qotishda ko‘ring: uning gradiyenti $f'(\theta)=L\theta$, egriligi (ikkinchi hosilasi) esa $L$ ga teng.
Hammasini bitta son hal qiladi: $\eta L$. $\eta L<1$ da tushish monoton, $1<\eta L<2$ da nuqta minimum ustidan sakraydi, lekin unga yaqinlashadi, $\eta L>2$ da uchib ketadi. $\eta=1/L$ qadam minimumga darhol tushadi — lekin faqat egrilik barcha yo‘nalishlarda bir xil bo‘lsa.
Formula mayda detallarigacha
- $\theta_{t-1}$
- joriy vaznlar — modelning barcha parametrlari vektori;
- $g_t$
- stoxastik gradiyent: $B$ ta tasodifiy misoldan iborat $B_t$ mini-batch bo‘yicha $\ell$ yo‘qotish gradiyentlarining o‘rtachasi;
- $\eta$
- o‘qitish tezligi, musbat son, odatda $10^{-4}$ dan $10^{-1}$ gacha;
- $-\eta\,g_t$
- qadam: gradiyentga qarshi, uzunligi $\eta\|g_t\|$ — qiyalik qanchalik tik bo‘lsa, shunchalik uzun.
Nega bu ishlaydi. Yo‘qotishni joriy nuqta atrofida Teylor qatoriga yoyamiz: $L(\theta-\eta g)\approx L(\theta)-\eta\,\|g\|^2$. Qadam kichik ekan, yo‘qotish taxminan $\eta\|g\|^2$ ga kamayadi va bu bir xil uzunlikdagi qadamlar orasida eng tez kamayish: $\|d\|$ uzunlik qayd etilganda $\langle\nabla L,\,d\rangle$ skalyar ko‘paytma $d$ gradiyentga qarshi yo‘nalganda eng kichik bo‘ladi.
$f(\theta)=\theta^2$, $\theta_0=3$, $\eta=0{,}1$. Gradiyent $g_1=2\cdot3=6$, qadam $-0{,}1\cdot6=-0{,}6$, yangi qiymat $\theta_1=2{,}4$, yo‘qotish $9$ dan $5{,}76$ ga tushadi. Har bir keyingi qadam $\theta$ ni yana $1-2\eta=0{,}8$ ga ko‘paytiradi.
Qadam qanchalik katta bo‘lishi mumkin: tushish lemmasi
$f$ gradiyenti $L$ konstantali Lipshits shartini qanoatlantirsin: $\|\nabla f(a)-\nabla f(b)\|\le L\|a-b\|$ (ikki marta differensiallanuvchi $f$ uchun bu gessian xos qiymatlari moduli $L$ dan oshmasligini bildiradi). U holda $f$ joriy nuqtada unga urinuvchi parabola ostida yotadi va $g=\nabla f(\theta)$ bilan $\theta-\eta g$ qadam uchun:
$1-L\eta/2$ ko‘paytuvchi $\eta<2/L$ da musbat — bu 1-rasmdagi o‘sha barqarorlik chegarasi. Kafolatlangan kamayish $\eta=1/L$ da eng katta: u holda $f$ kamida $\|g\|^2/(2L)$ ga kamayadi.
$f=\tfrac12\theta^\top H\theta$ kvadratik funksiya uchun qadam chiziqli akslantirish: $\theta_t=(I-\eta H)\,\theta_{t-1}$. $H$ ning xos bazisida har bir koordinata $1-\eta\lambda_i$ ga ko‘payadi va tushish barcha $i$ uchun $|1-\eta\lambda_i|<1$ bo‘lganda va faqat shundagina yaqinlashadi, ya’ni $0<\eta<2/\lambda_{\max}$ (musbat aniqlangan $H$ uchun).
Shartlanganlik soni: nega tushish sekin bo‘lishi mumkin
Agar turli yo‘nalishlardagi egriliklar farq qilsa, qadam eng tikiga moslashishi shart: $\eta<2/\lambda_{\max}$. U holda eng qiya yo‘nalish bo‘ylab koordinata bir qadamda faqat $\eta\lambda_{\min}<2/\kappa$ ulushga kamayadi, bu yerda $\kappa=\lambda_{\max}/\lambda_{\min}$ — shartlanganlik soni (condition number). Hatto eng yaxshi o‘zgarmas $\eta=2/(\lambda_{\max}+\lambda_{\min})$ qadamda ham xato bir qadamda faqat $(\kappa-1)/(\kappa+1)$ marta kamayadi:
$\kappa=100$ da ko‘paytuvchi $0{,}980$ ga teng va xatoni ming marta kamaytirish uchun 345 ga yaqin qadam kerak. Taxminiy qoida: SGD aniqlikning har bir tartibiga $\kappa$ tartibidagi qadam sarflaydi.
| Usul | Qadam | Nimani saqlaydi | Giperparametrlar |
|---|---|---|---|
| SGD | $\theta_t=\theta_{t-1}-\eta g_t$ | hech narsa | $\eta$ |
| Momentum | $u_t=\beta u_{t-1}+g_t$, $\theta_t=\theta_{t-1}-\eta u_t$ | $u$: har bir vaznga bitta son | $\eta$, $\beta\approx0{,}9$ |
| RMSProp | $v_t=\beta v_{t-1}+(1-\beta)g_t^2$, $\theta_t=\theta_{t-1}-\eta\,\dfrac{g_t}{\sqrt{v_t}+\epsilon}$ | $v$: har bir vaznga bitta son | $\eta$, $\beta=0{,}9$–$0{,}99$, $\epsilon$ |
Stoxastiklik: mini-batch’lar va shovqin
To‘liq gradiyent — o‘qitish to‘plamidagi barcha $N$ ta misol bo‘yicha o‘rtacha. Millionlab misollarda bitta shunday qadam barcha ma’lumotlardan bir marta o‘tishga teng bo‘lardi. SGD $B$ ta misoldan iborat tasodifiy mini-batch oladi. Uning gradiyenti to‘liq gradiyentning siljimagan bahosi: o‘rtacha $\nabla L$ ga teng, lekin har safar tasodifiy shovqinga og‘adi.
- $\Sigma$
- joriy nuqtadagi alohida misollar gradiyentlarining kovariatsiyasi ($N$ ga bo‘lingan);
- $\frac{N-B}{N-1}$
- qaytarmasdan tanlash tuzatmasi: $B=N$ da shovqin yo‘qoladi.
Shovqin dispersiyasi $1/B$ kabi kamayadi, qadam narxi esa $B$ kabi o‘sadi. Shuning uchun bitta davrda (ma’lumotlardan bir marta o‘tishda) kichik batch’lar ko‘p noaniq qadam, kattalari esa kam aniq qadam qiladi. Rasmda — 200 nuqtadagi $y\approx wx+b$ chiziqli regressiya, yo‘qotish $L=\frac1{2N}\sum(wx_i+b-y_i)^2$: $(w;\,b)$ vaznlar tekisligi ustidagi kvadratik «kosa».
Minimumda to‘liq gradiyent nolga teng, stoxastik esa — yo‘q. O‘zgarmas $\eta$ da SGD to‘xtamaydi, balki o‘lchami $\sqrt\eta$ kabi o‘sadigan bulut ichida titraydi; shuning uchun o‘qitish oxirida tezlik pasaytiriladi. Buning evaziga o‘sha shovqin egar nuqtalardan va tor minimumlardan chiqishga yordam beradi; u o‘qitishni yaxshiroq umumlashtiradigan yassiroq minimumlarga siljitishi haqida kuzatishlar bor.
Batch o‘lchamini chiziqli masshtablash qoidasi
Batch $k$ marta kattalashsa, shovqin dispersiyasi $k$ marta kamayadi, lekin davrdagi qadamlar $k$ marta kamroq bo‘ladi. Goyal va hammualliflar (2017) bir vaqtda $\eta$ ni ham $k$ marta oshirishni taklif qilishdi: ResNet-50 ImageNet’da 8192 lik batch bilan bir soatda aniqlikni yo‘qotmasdan shunday o‘qitilgan. Qoida qandaydir «kritik» batch o‘lchamigacha ishlaydi va qizdirishni (warmup) — dastlabki davrlarda $\eta$ ning silliq o‘sishini talab qiladi.
Momentum: og‘ir shar inersiyasi
Gradiyentli tushish — massasiz nuqta: har lahzada u aynan qiyalik ko‘rsatgan tomonga boradi. B. T. Polyak (1964) unga massa berishni taklif qildi. Og‘ir shar tezlik to‘plab dumalaydi va har bir do‘nglikka javob bermaydi. Formulada tezlik — $u$ vektor:
- $u_t$
- to‘plangan yo‘nalish (inersiya buferi), $u_0=0$;
- $\beta$
- inersiya koeffitsiyenti, $0\le\beta<1$, odatda $0{,}9$; $\beta=0$ da oddiy SGD.
Rekursiyani ochamiz: $u_t=g_t+\beta g_{t-1}+\beta^2 g_{t-2}+\dots$ — barcha o‘tgan gradiyentlarning eksponensial kamayuvchi vaznli yig‘indisi. Agar gradiyentlar qadamdan qadamga bir tomonni ko‘rsatsa, ular qo‘shiladi va qadam $\eta/(1-\beta)$ gacha o‘sadi — $\beta=0{,}9$ da 10 marta. Agar ishora sakrab tursa (jarlik bo‘ylab zigzag), qo‘shiluvchilar bir-birini so‘ndiradi.
PyTorch bu yerdagidek $u_t=\beta u_{t-1}+g_t$ deb yozadi. Eksponensial sirpanuvchi o‘rtacha (exponential moving average, EMA) $m_t=\beta m_{t-1}+(1-\beta)g_t$ ham tez-tez uchraydi: u $\eta$ ga o‘tib ketadigan $1-\beta$ o‘zgarmas ko‘paytuvchi bilan farq qiladi. Aynan EMA Adam suratida turadi. Rasmda shaklni almashtiring: EMA 1 emas, $0{,}1$ dan boshlanadi va haqiqiy qiymatga asta-sekin yetadi — dastlabki qadamlardagi bu kam baholash Adam’dagi siljishni tuzatishning sababi.
Nega inersiya tezlashtiradi: kvadratik funksiyadagi nazariya
Egriligi $L$ bo‘lgan bitta yo‘nalishni olamiz va $h=\eta L$ deb belgilaymiz. $g_t=L\theta_{t-1}$ ni qo‘yib, $u$ ni yo‘qotamiz (ikkinchi formuladan $\eta u_{t-1}=\theta_{t-2}-\theta_{t-1}$). Ikkinchi tartibli chiziqli rekurrent munosabat hosil bo‘ladi:
Uning xatti-harakatini $\lambda^2-(1+\beta-h)\lambda+\beta=0$ xarakteristik tenglama ildizlari belgilaydi. Yaqinlashish tezligi — ildizlar modulining eng kattasi $\rho$: xato taxminan $\rho^t$ kabi kamayadi.
Keltirib chiqarish: barqarorlik sohasi va optimal inersiya
Ildizlar $(1+\beta-h)^2<4\beta$ da, ya’ni $(1-\sqrt\beta)^2<h<(1+\sqrt\beta)^2$ da kompleks. Ildizlar ko‘paytmasi $\beta$ ga teng, shuning uchun $|\lambda_1|=|\lambda_2|=\sqrt\beta$: $\theta_t$ tebranadi va har qadamda $h$ dan qat’i nazar $\sqrt\beta$ marta so‘nadi. Bu polosadan tashqarida ildizlar haqiqiy. Ikkala holat birgalikda aniq barqarorlik sohasini beradi (kvadrat uchhad uchun Shur — Kon shartlari):
— inersiya ruxsat etilgan qadamni deyarli ikki barobar kengaytiradi (SGD’da $\eta L<2$).
Egriliklar $[\mu;\,L]$ kesmani to‘ldirsin, $\kappa=L/\mu$. $\eta$ va $\beta$ ni ikkala chekka kompleks polosa chegaralariga tushadigan qilib tanlaymiz: $(1-\sqrt\beta)^2=\eta\mu$ va $(1+\sqrt\beta)^2=\eta L$. U holda barcha yo‘nalishlar bir xil tez so‘nadi:
Eng yaxshi SGD bilan solishtiring: $\rho=(\kappa-1)/(\kappa+1)$. $\kappa=100$ da bu $0{,}818$ ga qarshi $0{,}980$: xatoni ming marta kamaytirish uchun 345 o‘rniga 35 ga yaqin qadam. Qadamlar soni $\kappa$ kabi emas, $\sqrt\kappa$ kabi o‘sadi — og‘ir sharning tezlashuvi shunda.
Nesterov: inersiya olib boradigan joydagi gradiyent
Yu. E. Nesterov (1983) gradiyentni joriy nuqtada emas, shar baribir inersiya bilan boradigan joyda hisoblashni taklif qildi. PyTorch shaklida (nesterov=True) bu qadamga tuzatma:
Xarakteristik tenglama $\lambda^2-(1+\beta)(1-h)\lambda+\beta(1-h)=0$ ga aylanadi. Qiya yo‘nalishlarda tebranishlar tezroq so‘nadi ($\sqrt\beta$ o‘rniga $\rho=\sqrt{\beta(1-h)}$), lekin barqarorlik sohasi torroq: $\eta L<2(1+\beta)/(1+2\beta)$, $\beta=0{,}9$ da atigi $1{,}36$. Ikkala xususiyatni ko‘rish uchun 4-rasmni «Nesterov»ga o‘tkazing.
RMSProp: har bir vaznga o‘z qadami
SGD va Momentum’da barcha vaznlar uchun bitta $\eta$ tezlik. Lekin turli vaznlar gradiyentlari tartiblar bilan farq qilishi mumkin: kam uchraydigan so‘zlar embeddinglari kamdan-kam katta turtki oladi, oxirgi qatlam siljishlari — doimiy kichiklarini. Umumiy $\eta$ birlari uchun juda katta, boshqalari uchun juda kichik. RMSProp (J. Xinton, Coursera’dagi kurs ma’ruzalari, 2012) har bir vazn qadamini uning odatiy gradiyent kattaligiga bo‘ladi:
- $g_t^2$
- elementma-element kvadrat: har bir vaznning o‘z $v$ si bor;
- $v_t$
- gradiyent kvadratining eksponensial sirpanuvchi o‘rtachasi — oxirgi $\sim1/(1-\beta)$ qadamdagi $\mathbb E[g^2]$ bahosi, $v_0=0$;
- $\sqrt{v_t}$
- gradiyentning o‘rta kvadratik qiymati (root mean square, RMS) — nom shundan;
- $\epsilon$
- nolga bo‘lishdan saqlovchi kichik qo‘shimcha ($10^{-8}$).
$\sqrt{v_t}$ ga bo‘lish qadamni o‘lchamsiz qiladi: vaznning barcha gradiyentlarini 1000 ga ko‘paytirsangiz, $\sqrt v$ ham 1000 marta o‘sadi va qadam o‘zgarmaydi. Odatiy qadam $\eta$ tartibida bo‘ladi — endi tezlik qadam uzunligini to‘g‘ridan-to‘g‘ri vazn birliklarida belgilaydi.
$v_t\ge(1-\beta)g_t^2$ dan $|g_t|/\sqrt{v_t}\le1/\sqrt{1-\beta}$ kelib chiqadi. RMSProp qadami hech qachon $\eta/\sqrt{1-\beta}$ dan oshmaydi: $\beta=0{,}9$ da $3{,}16\,\eta$ va $\beta=0{,}99$ da $10\,\eta$. Bu SGD’da yo‘q bo‘lgan gradiyent portlashidan himoya.
RMSProp qayerdan: AdaGrad va Rprop
O‘tmishdoshi — AdaGrad (Duchi, Hazan, Singer, 2011): $v_t=v_{t-1}+g_t^2$, o‘rtacha o‘rniga yig‘indi. Siyrak belgili qavariq masalalar uchun u yaxshi, lekin neyron tarmoqlarda $v$ faqat o‘sadi va $\eta/\sqrt{v_t}$ qadam muqarrar ravishda nolgacha so‘nadi. RMSProp yig‘indini chekli xotirali eksponensial o‘rtacha bilan almashtirdi.
Boshqa ildizi — faqat gradiyent ishorasidan foydalanadigan Rprop (Ridmiller va Braun, 1993). RMSProp’ni uning mini-batch’lar uchun varianti deb o‘qish mumkin: $\beta=0$ da $v_t=g_t^2$ va $\eta\operatorname{sign}(g_t)$ qadam hosil bo‘ladi.
Muhimi: RMSProp koordinata o‘qlarini masshtablaydi, lekin ularni burmaydi. Bu diagonal oldindan shartlash. Agar jarlik vaznlar orasida diagonal bo‘ylab ketsa, $\sqrt v$ ga bo‘lish kam yordam beradi — bu 6-rasmda 45° burilishda ko‘rinadi.
2D va 3D’dagi traektoriyalar
Uchala usulni bitta masalada solishtiramiz — cho‘ziq kvadratik vodiy $f=\tfrac12(a^2+\kappa b^2)$, bu yerda $a$ va $b$ — jarlik bo‘ylab va unga ko‘ndalang koordinatalar: ko‘ndalang egrilik bo‘ylamadagidan $\kappa$ marta katta. Start — $a=-3{,}4$, $b=0{,}9$ nuqtada, u yerda $f=46{,}3$.
Ikkinchi klassika — Rozenbrok funksiyasi $f=(1-x)^2+100(y-x^2)^2$: minimumi $(1;\,1)$ da bo‘lgan tor egilgan «banan». Bu yerda egrilik nuqtadan nuqtaga o‘zgaradi va hech qanday o‘zgarmas qadam ideal emas.
Ikki o‘lchamli rasmlar foydali, lekin aldamchi: haqiqiy tarmoqda millionlab o‘lchov bor, u yerdagi kritik nuqtalarning aksariyati lokal minimumlar emas, egar nuqtalar, yo‘qotish sirtining o‘zi esa mini-batch’ga bog‘liq. Rasmlardan optimizator tanlash uchun emas, mexanizmlar (zigzag, inersiya, masshtab) haqidagi intuitsiya uchun foydalaning.
Kodda: noldan va PyTorch’da
Uchala usul ikkita kichik sinfga sig‘adi. E’tibor bering: holat ($u$ yoki $v$) vaznlar bilan bir xil o‘lchamli massiv, shuning uchun Momentum va RMSProp parametrlar uchun xotirani ikki barobar, Adam esa uch barobar oshiradi.
pythonimport numpy as np
class SGD:
"""Inersiyali (momentum) va Nesterov variantli SGD — torch.optim.SGD’dagidek."""
def __init__(self, lr=0.01, momentum=0.0, nesterov=False):
self.lr, self.beta, self.nesterov, self.u = lr, momentum, nesterov, None
def step(self, theta, g):
if self.beta == 0:
return theta - self.lr * g
self.u = g.copy() if self.u is None else self.beta * self.u + g
d = g + self.beta * self.u if self.nesterov else self.u
return theta - self.lr * d
class RMSProp:
"""RMSProp: har bir vaznning o‘z qadam masshtabi."""
def __init__(self, lr=0.01, beta=0.99, eps=1e-8):
self.lr, self.beta, self.eps, self.v = lr, beta, eps, None
def step(self, theta, g):
if self.v is None:
self.v = np.zeros_like(theta)
self.v = self.beta * self.v + (1 - self.beta) * g * g
return theta - self.lr * g / (np.sqrt(self.v) + self.eps)
# Cho‘ziq vodiy f = (a² + 100·b²)/2, 6-rasmdagidek
H = np.diag([1.0, 100.0])
f = lambda th: 0.5 * th @ H @ th
grad = lambda th: H @ th
for name, opt in [("SGD", SGD(lr=0.018)),
("Momentum", SGD(lr=0.018, momentum=0.9)),
("Nesterov", SGD(lr=0.018, momentum=0.9, nesterov=True)),
("RMSProp", RMSProp(lr=0.1, beta=0.9))]:
th = np.array([-3.4, 0.9])
for t in range(100):
th = opt.step(th, grad(th))
print(f"{name:9s} f = {f(th):.2e}")
# SGD f = 1.53e-01
# Momentum f = 2.23e-04
# Nesterov f = 3.14e+57 ← uzoqlashadi: ηλ_max = 1.8 > 2(1+β)/(1+2β) ≈ 1.36
# RMSProp f = 2.60e-02
Izohlardagi sonlar 6-rasm bilan mos keladi, torch.optim.SGD va torch.optim.RMSprop esa xuddi shu masalada o‘sha qiymatlarni beradi. Xuddi shu $\eta$ li Nesterov uzoqlashadi — aynan inersiya bo‘limidagi barqarorlik shartiga ko‘ra.
pythonimport torch
import torch.nn.functional as F
model = torch.nn.Linear(10, 1)
# Inersiya va vaznlar so‘nishi bilan SGD — o‘ramli tarmoqlar uchun klassika
opt = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.9,
nesterov=True, weight_decay=1e-4)
# RMSProp: PyTorch’da silliqlash koeffitsiyenti alpha deb ataladi (standart 0.99)
# opt = torch.optim.RMSprop(model.parameters(), lr=1e-3, alpha=0.99, eps=1e-8)
for x, y in loader: # DataLoader’dan mini-batch’lar
opt.zero_grad() # gradiyentlar to‘planadi — nolga tushiramiz
loss = F.mse_loss(model(x), y)
loss.backward() # g_t param.grad ichida
opt.step() # θ ← θ − η·(…)
PyTorch xom gradiyentlar yig‘indisini saqlaydi va uni joriy $\eta$ ga ko‘paytiradi: $\theta\leftarrow\theta-\eta_t u_t$. Keras va Sutskever va hammualliflarning (2013) klassik maqolasi esa o‘qitish tezligiga oldindan ko‘paytirilgan «siljish tezligi»ni (velocity) saqlaydi: $v_t=\beta v_{t-1}-\eta_t g_t$, $\theta\leftarrow\theta+v_t$. O‘zgarmas $\eta$ da shakllar teng kuchli, jadvalda esa — yo‘q: PyTorch’da yangi $\eta$ darhol butun to‘plangan buferga qo‘llanadi.
Giperparametrlar va amaliyot
| Parametr | Odatiy qiymatlar | Qanday tanlash |
|---|---|---|
| $\eta$ (inersiyali SGD) | $0{,}01$–$0{,}1$ | yo‘qotish hali barqaror tushadigan eng kattasi; ResNet: 256 lik batch’da $0{,}1$ |
| $\beta$ (momentum) | $0{,}9$, kamroq $0{,}95$–$0{,}99$ | katta $\beta$ — uzunroq xotira va kuchliroq tezlashuv, lekin tebranish xavfi yuqoriroq |
| RMSProp’ning $\beta$ si (alpha) | $0{,}9$–$0{,}99$ | o‘rtachalash oynasi $1/(1-\beta)$: 10 dan 100 qadamgacha |
| $\eta$ (RMSProp) | $10^{-4}$–$10^{-3}$ | vazn birliklarida $\eta$ tartibidagi qadam |
| $B$ (batch) | 32–512 | $B$ $k$ marta o‘ssa — $\eta$ ham $k$ marta, qizdirish bilan |
| weight decay | $10^{-4}$–$5\cdot10^{-4}$ | vaznlar so‘nishi; SGD uchun $L_2$-regulyarizatsiya bilan bir xil |
- Tezlik jadvali. Pog‘onali (90 davrdan 30- va 60-davrlarda $0{,}1$ ga ko‘paytirish — ResNet klassikasi), kosinusli yoki «bir sikl». O‘zgarmas $\eta$ minimum atrofida shovqin bulutini qoldiradi.
- Qizdirish (warmup). Dastlabki yuzlab–minglab qadamlarda $\eta$ kichik qiymatdan chiziqli o‘sadi — ayniqsa katta batch’da muhim.
- Gradiyentni norma bo‘yicha kesish (gradient clipping) RNN va transformerlarda kamdan-kam uchraydigan ulkan gradiyentlardan himoya qiladi.
- Tezlikni qidirish (LR range test, L. Smit): eksponensial o‘suvchi $\eta$ bilan qisqa yugurish; yo‘qotish o‘sa boshlagan joydan sezilarli kichik qiymat olinadi.
- Kirishlarni normallashtirish, batch-normallashtirish va oqilona initsializatsiya shartlanganlik sonini kamaytiradi va kattaroq $\eta$ olishga imkon beradi.
Ko‘p uchraydigan xatolar
- Unutilgan
zero_grad(). PyTorch’da gradiyentlar.gradda to‘planadi; nolga tushirilmasa, $g_t$ barcha o‘tgan gradiyentlar yig‘indisiga aylanadi — bu inersiya emas, xato. - Juda katta tezlik: yo‘qotish o‘sadi yoki NaN bo‘ladi. 1-rasmga ko‘ra $\eta<2/\lambda_{\max}$ kerak; avvalo $\eta$ ni 3–10 marta kamaytiring.
- $\eta$ ni optimizatorlar orasida ko‘chirish. $\beta=0{,}9$ inersiyada barqaror qadam xuddi shu $\eta$ li SGD’nikidan 10 marta katta. RMSProp va Adam’da $\eta$ umuman boshqa birliklarda: ular uchun $10^{-3}$ — normal, SGD uchun odatda kam.
- Tezlikni o‘zgartirmasdan batch’ni o‘zgartirish. $B$ 8 marta oshirildi, $\eta$ esa qoldi — tarmoq davr boshiga sekinroq o‘rganadi; $B$ kamaytirildi — shovqin o‘qitishni tebratib yuborishi mumkin.
- Past aniqlikda $\epsilon=10^{-8}$. float16 da bu son nolgacha yaxlitlanadi va $v\approx0$ da RMSProp qadami portlaydi; aralash aniqlikda $v$ float32 da saqlanadi yoki $\epsilon$ kattaroq olinadi.
- O‘qitish oxirigacha o‘zgarmas tezlik. $\eta$ pasaytirilmasa, SGD minimum atrofida titraydi va oxirgi davrlar deyarli hech narsa bermaydi.
Boshqa formulalar bilan bog‘liqlik
- Adam: surat — EMA-inersiya, maxraj — RMSProp’dan $\sqrt{v}$, ustiga siljishni tuzatish.
- MSE: uning gradiyenti $\frac2n\sum_i(\hat y_i-y_i)\,x_i$ — 2 ko‘paytuvchi aniqligida 2-rasmdagi chiziqli regressiyadagi o‘sha $g_t$ (u yerda yo‘qotish — MSE’ning yarmi).
- BCE va kross-entropiya: logitlar bo‘yicha $\hat y-y$ gradiyent — tushish uchun eng oddiy signal.
- Sigmoida: to‘yinish juda kichik gradiyentlar beradi — SGD ularda deyarli turib qoladi, RMSProp esa qadamni cho‘zadi.
- Huber: chetga chiqqan qiymatlar gradiyentini cheklaydi — gradiyentni kesishning qarindoshi.
Xulosa
1) SGD: $\theta_t=\theta_{t-1}-\eta g_t$, bu yerda $g_t$ — gradiyentning mini-batch bo‘yicha siljimagan bahosi; shovqin dispersiyasi $1/B$ kabi kamayadi. 2) Barqarorlik: $\eta<2/\lambda_{\max}$; tezlikni $\kappa$ shartlanganlik soni belgilaydi — aniqlikning har bir tartibiga $\kappa$ tartibidagi qadam. 3) Momentum $u_t=\beta u_{t-1}+g_t$ — $1/(1-\beta)$ oynali gradiyentlarning eksponensial xotirasi; kvadratik masalalarda yo‘lni $\sqrt\kappa$ tartibidagi qadamgacha qisqartiradi va barqarorlikni $\eta L<2(1+\beta)$ gacha kengaytiradi. 4) RMSProp qadamni $\sqrt{v_t}$ ga bo‘ladi: qadam o‘lchamsiz, $\eta$ tartibida, lekin moslashuv faqat diagonal. 5) EMA-inersiya + RMSProp + siljishni tuzatish = Adam.