Neyron tarmoq formulalari: qo‘llanma · Keyingi bosqich

SGD, Momentum va RMSProp: vaznlar gradiyent bo‘ylab qanday tushadi

Adam yig‘ilgan uchta pog‘ona. Stoxastik gradiyentli tushish, og‘ir shar inersiyasi va qadamni gradiyentning o‘rta kvadratik qiymatiga bo‘lishni mayda detallarigacha tahlil qilamiz: nega qadam ηL < 2 sharti bilan cheklangan, mini-batch shovqini qayerdan keladi, inersiya jarlik bo‘ylab tushishni qanday tezlashtiradi va nega har bir vaznga o‘z qadam masshtabi kerak.

Javharbek Abdulatipov · 35 daq o‘qish
$$\theta_t=\theta_{t-1}-\eta\,g_t$$

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.

Bir daqiqada asosiysi

$\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.

1-rasm. Parabolada gradiyentli tushish. Yuqorida — egri chiziq bo‘ylab qadamlar ($\theta_0$ boshlang‘ich nuqtani tortish mumkin), pastda — minimumgacha masofa $|\theta_t|$ logarifmik shkalada. $L=2$ va $\eta=0{,}3$ da har bir qadam $\theta$ ni $1-\eta L=0{,}4$ ga ko‘paytiradi va $\theta_0=2$ dan $|\theta|<0{,}01$ gacha 6 qadam kerak. $\eta$ ni oshiring: $0{,}5$ da minimumga bir qadamda yetiladi, $0{,}6$ da nuqta minimum ustidan sakraydi, $\eta>1$ da esa tushish uzoqlashadi.
Nimaga e’tibor berish kerak

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=\theta_{t-1}-\eta\,g_t,\qquad g_t=\frac1B\sum_{i\in B_t}\nabla_\theta\,\ell(x_i,y_i;\,\theta_{t-1})$$
$\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.

Sonli misol

$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:

$$f(\theta-\eta g)\le f(\theta)-\eta\Bigl(1-\frac{L\eta}{2}\Bigr)\|g\|^2$$

$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:

$$\|\theta_t-\theta^*\|\le\Bigl(\frac{\kappa-1}{\kappa+1}\Bigr)^{t}\,\|\theta_0-\theta^*\|$$

$\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.

UsulQadamNimani saqlaydiGiperparametrlar
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.

$$\mathbb E\,[g_t]=\nabla L(\theta),\qquad \operatorname{Cov}[g_t]=\frac{\Sigma}{B}\cdot\frac{N-B}{N-1}$$
$\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».

2-rasm. Chapda — yo‘qotish sath chiziqlari bo‘ylab SGD yo‘li; to‘q sariq nuqtalar — 40 xil tasodifiy batch’da keyingi qadam qayerga tushishi, strelka — to‘liq gradiyent bo‘yicha qadam. O‘ngda — yo‘qotishning minimumdan ortig‘i $L-L^*$ davrlar bo‘yicha. $\eta=0{,}05$ bilan 8 davrda, boshlang‘ich $5{,}84$ dan: 1 o‘lchamli batch $1{,}4\cdot10^{-3}$ gacha, 10 lik — $0{,}044$ gacha, 50 lik — $1{,}06$ gacha, to‘liq gradiyent (atigi 8 qadam) esa $2{,}0$ gacha yetadi. «Boshlash»ni bosing va bulutlarni solishtiring: $B=1$ da u hatto minimum yonida ham keng.
Shovqin — faqat xalaqit emas

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=\beta\,u_{t-1}+g_t,\qquad \theta_t=\theta_{t-1}-\eta\,u_t$$
$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.

3-rasm. Chapda — $k$ qadam oldingi gradiyent $u_t$ ga qanday vazn bilan kirishi; yorqin ustunlar — birgalikda umumiy vaznning kamida yarmini beradigan eng so‘nggi gradiyentlar. O‘ngda — $u_t$ ning o‘zgarmas $g=1$ gradiyentga javobi: u $1/(1-\beta)=10$ ga intiladi va 22-qadamda limitning $90\%$ iga yetadi. $\beta=0{,}9$ da vaznning yarmi oxirgi 7 ta gradiyentga, $\beta=0{,}99$ da oxirgi 69 tasiga to‘g‘ri keladi, xotira oynasi esa 100 qadam.
Bitta inersiyaning ikki yozuvi

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:

$$\theta_t=(1+\beta-h)\,\theta_{t-1}-\beta\,\theta_{t-2}$$

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.

4-rasm. Chapda — $\eta L$ (logarifmik shkala) va $\beta$ bo‘yicha $\rho$ tezlik xaritasi: ko‘k — tez yaqinlashish, qizil — uzoqlashish, uzluksiz chiziq — $\rho=1$ chegarasi, shtrixlar — kritik so‘nish. Ko‘k nuqtani torting. O‘ngda — xuddi shu $\eta$ bilan SGD va inersiya uchun $\theta_t$. $\eta L=0{,}04$ da SGD’ga $|\theta|<10^{-3}$ gacha 170 qadam kerak ($\rho=0{,}96$), $\beta=0{,}9$ inersiyaga — tebranishlar bilan 130 qadam, xuddi shu $\beta$ bilan Nesterovga — 87, kritik so‘nish $\beta=(1-\sqrt{0{,}04})^2=0{,}64$ esa 41 qadam beradi ($\rho=0{,}8$).
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):

$$0<\eta L<2(1+\beta)$$

— 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:

$$\eta=\frac{4}{(\sqrt L+\sqrt\mu)^2},\qquad \beta=\Bigl(\frac{\sqrt\kappa-1}{\sqrt\kappa+1}\Bigr)^2,\qquad \rho=\sqrt\beta=\frac{\sqrt\kappa-1}{\sqrt\kappa+1}$$

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:

$$u_t=\beta u_{t-1}+g_t,\qquad \theta_t=\theta_{t-1}-\eta\,(g_t+\beta u_t)$$

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:

$$v_t=\beta\,v_{t-1}+(1-\beta)\,g_t^2,\qquad\theta_t=\theta_{t-1}-\eta\,\frac{g_t}{\sqrt{v_t}+\epsilon}$$
$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.

5-rasm. Masshtabi o‘zgaradigan bitta vazn gradiyenti: 100-qadamda u 10 marta o‘sadi, 200-qadamda 100 marta tushadi. Yuqorida — $|g_t|$ va $\sqrt{v_t}$, pastda — qadam uzunligi. SGD qadami gradiyent bilan birga ikki tartibga sakraydi, RMSProp qadami esa $\eta=0{,}01$ tartibida qoladi. Lekin moslashuvda kechikish bor: o‘sishdan keyin qadam qisqa sakraydi ($\beta=0{,}9$ da $0{,}032$ chegarada $0{,}030$ gacha), tushishdan keyin esa cho‘kadi — eski katta $v$ unutilishi uchun taxminan $\ln10^4/\ln(1/0{,}9)\approx87$ qadam kerak.
Ichki qadam chegarasi

$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$.

6-rasm. $\kappa=100$ li jarlik: yuqoridan ko‘rinish va 3D sirt (uni aylantirish mumkin). $\eta=0{,}018$ da SGD jarlik bo‘ylab ko‘ndalang sakraydi ($\eta\lambda_{\max}=1{,}8$) va uning bo‘ylab sekin sudraladi: 100 qadamda $f$ atigi $0{,}15$ gacha tushadi. $\beta=0{,}9$ li Momentum $2{,}2\cdot10^{-4}$ gacha, $\eta=0{,}1$ li RMSProp $0{,}026$ gacha yetadi: u tubga tez tushadi, lekin keyin $\eta$ tartibidagi qadam bilan titraydi. Jarlikni 45° ga buring: SGD va Momentum farqni sezmaydi, RMSProp esa ustunligini yo‘qotadi — $0{,}026$ o‘rniga $0{,}30$.

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.

7-rasm. $(-1{,}5;\,2)$ nuqtadan 3000 qadam — uni sudrab ko‘chirish mumkin. $\eta=0{,}001$ li SGD faqat $f=0{,}049$ gacha yetadi. Xuddi shu $\eta$ va $\beta=0{,}9$ li Momentum bananni o‘tadi: 666-qadamda $f<10^{-3}$ va oxirida $3\cdot10^{-12}$. $\eta=0{,}01$ li RMSProp $f\approx0{,}02$ atrofida tiqilib qoladi: uning qadami tubda deyarli kamaymaydi. $t$ slayderi uchalasining istalgan paytdagi holatini ko‘rsatadi.
Xarita — hudud 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()                       # θ ← θ − η·(…)
Kutubxonalarda inersiyaning ikki shakli

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

ParametrOdatiy qiymatlarQanday 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

  1. Unutilgan zero_grad(). PyTorch’da gradiyentlar .grad da to‘planadi; nolga tushirilmasa, $g_t$ barcha o‘tgan gradiyentlar yig‘indisiga aylanadi — bu inersiya emas, xato.
  2. 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.
  3. $\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.
  4. 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.
  5. 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.
  6. O‘qitish oxirigacha o‘zgarmas tezlik. $\eta$ pasaytirilmasa, SGD minimum atrofida titraydi va oxirgi davrlar deyarli hech narsa bermaydi.
  • 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.

O‘zingizni tekshiring

1. $f(\theta)=5\theta^2$. Qanday o‘zgarmas $\eta$ larda gradiyentli tushish yaqinlashadi?
2. $\beta=0{,}95$ da inersiyaning xotira oynasi qancha?
3. Batch 32 dan 128 ga oshirildi (ma’lumotlar $B$ dan ancha ko‘p). Stoxastik gradiyent dispersiyasi nima bo‘ladi?
4. Bitta vaznning barcha gradiyentlari 100 ga ko‘paytirildi. $v$ barqarorlashgach, RMSProp qadami qanday o‘zgaradi ($\epsilon$ hisobga olinmaganda)?
5. Nega inersiya cho‘ziq jarlik bo‘ylab tushishni tezlashtiradi?