Neyron tarmoq formulalari: qo‘llanma · Aktivatsiya funksiyalari

Leaky ReLU: «oqadigan» ReLU

Kichik tuzatishli ReLU: noldan chapda funksiya signalni nolga aylantirmaydi, uni kichik α ga ko‘paytiradi. Mayda detallarigacha tahlil qilamiz: nega shu neyronlar o‘lmasligi uchun yetarli, 1 + α² ko‘paytuvchili He initsializatsiyasi qayerdan keladi, bunday neyronlardan iborat tarmoq fazoni qanday tekis bo‘laklarga kesadi va PReLU α ni o‘zi qanday o‘rganadi.

Javharbek Abdulatipov · 30 daq o‘qish
$$\operatorname{LReLU}(x)=\max(\alpha x,\,x)=\begin{cases}x, & x>0\\ \alpha x, & x\le 0\end{cases}$$

U nima uchun kerak

ReLU — chuqur o‘qitishdagi eng mashhur aktivatsiya: $\max(0,x)$ bir zumda hisoblanadi, noldan o‘ngda esa gradiyent so‘nmaydi. Lekin uning zaif joyi bor. Noldan chapda ReLU signalni susaytirmaydi, balki uni nolga aylantiradi — u bilan birga gradiyentni ham. Kirishi barcha misollarda manfiy bo‘lgan neyron 0 chiqaradi, nol gradiyent oladi va boshqa hech qachon o‘rganmaydi. Bu «o‘layotgan ReLU» (dying ReLU).

Leaky ReLU — eng kichik tuzatish: noldan chapda grafik gorizontal emas, biroz qiya — kichik $\alpha$ bilan $\alpha x$ (odatda $0{,}01$ dan $0{,}3$ gacha). Signal yopiq eshikdan «sizib o‘tadi» — nomi shundan (leaky — «oqadigan»).

U qayerda uchraydi:

  • GAN diskriminatorlari — DCGAN’da (Radford va boshq., 2015) diskriminatorning barcha qatlamlari $\alpha=0{,}2$ li Leaky ReLU’dan foydalanadi;
  • YOLO detektorlari — YOLOv2 va YOLOv3 dagi Darknet tarmog‘i $\alpha=0{,}1$ li Leaky ReLU asosida qurilgan;
  • graf tarmoqlari — GAT’dagi e’tibor koeffitsiyentlari $\alpha=0{,}2$ li Leaky ReLU orqali hisoblanadi;
  • PReLU’li konvolyutsion tarmoqlar — o‘rganiladigan $\alpha$ li variant (He va boshq., 2015) ImageNet’da top-5 xatoni ilk bor insonning taxminiy xatosidan pastga tushirishga yordam berdi;
  • ReLU «o‘ladigan» istalgan tarmoq — almashtirish bitta qator va deyarli hech narsaga tushmaydi.
Bir daqiqada asosiysi

$x>0$ da $\operatorname{LReLU}(x)=x$, $x\le0$ da $\alpha x$. Hosila — zina: o‘ngda $1$, chapda $\alpha$, shuning uchun gradiyent hech qachon butunlay nolga aylanmaydi. Funksiya bo‘lak-chiziqli, monoton va deyarli ReLU kabi arzon bo‘lib qoladi. $\alpha=0$ da bu ReLU, $\alpha=1$ da ayniy funksiya, o‘rganiladigan $\alpha$ da — PReLU.

Intuitsiya: oxirigacha yopilmaydigan eshik

ReLU eshikka o‘xshaydi: musbat signal to‘liq o‘tadi, manfiysi yopiq tabaqaga uriladi. Leaky ReLU tirqish qoldiradi — manfiy signal o‘tadi, lekin $1/\alpha$ marta susaygan holda. $\alpha=0{,}1$ da $-2$ kirish $-0{,}2$ ga aylanadi.

Nuqtani grafik bo‘ylab torting. To‘q sariq «qiyalik uchburchagi» hosilani ko‘rsatadi: $x$ o‘qi bo‘ylab 1 ga qadam qiymatni noldan chapda $\alpha$ ga, o‘ngda 1 ga o‘zgartiradi. Pastda — hosilaning o‘zi: nolda uzilishga ega ikki gorizontal zina. $\alpha$ surgichini suring: ReLU’dan ($\alpha=0$) «oqadigan» variant orqali $y=x$ to‘g‘ri chiziqqacha ($\alpha=1$).

1-rasm. $\alpha=0{,}1$ dagi Leaky ReLU va uning hosilasi. $x=-2$ nuqtada qiymat $-0{,}2$, hosila $0{,}1$. Kulrang punktir — ReLU, nuqtali chiziq — $y=x$. Nolda hosila yo‘q: chapda u $\alpha$ ga, o‘ngda 1 ga teng; nuqtani nolga olib boring — ko‘rsatkichlarda $[\alpha;\,1]$ subdifferensial va PyTorch oladigan $\alpha$ qiymati paydo bo‘ladi.
Nimaga e’tibor berish kerak

Chapda grafik yassi emas, lekin juda yotiq: $\alpha=0{,}01$ da $-100$ kirish atigi $-1$ beradi. Leaky ReLU’ning butun nochiziqliligi bitta nuqtada — qiyalik $\alpha$ dan 1 ga o‘zgaradigan noldagi sinishda jamlangan. Bunday neyronlardan iborat tarmoqning ifodalash kuchi aynan shu sinishlardan keladi.

Formula mayda detallarigacha

Bitta funksiyani uch xil yozishni bilish foydali — har biri o‘z joyida kerak bo‘ladi.

1. Hollar bo‘yicha

$$\operatorname{LReLU}_\alpha(x)=\begin{cases}x, & x>0,\\ \alpha x, & x\le 0.\end{cases}$$
$x$
neyron kirishi — odatda $z=w^\top h+b$ pre-aktivatsiya;
$\alpha$
manfiy qismning qiyaligi, giperparametr; odatda $0<\alpha<1$;
$\alpha x$
«sizish»: manfiy kirish nolga aylanmaydi, $1/\alpha$ marta siqiladi.

$x=0$ nuqtada ikkala tarmoq ham nol beradi, shuning uchun nolni qaysi tarmoqqa qo‘shish muhim emas: funksiya uzluksiz.

2. Maksimum orqali

$$\operatorname{LReLU}_\alpha(x)=\max(\alpha x,\;x)\qquad(\alpha\le 1)$$

$x>0$ va $\alpha\le1$ da $x\ge\alpha x$, $x<0$ da esa aksincha, $\alpha x\ge x$. Demak, maksimum kerakli tarmoqni o‘zi tanlaydi. Lekin faqat $\alpha\le1$ da: $\alpha=2$ da o‘ngda $2x$ yutadi va boshqa funksiya hosil bo‘ladi. Bu yozuv kodda qulay (np.maximum(alpha * x, x)), lekin shartni unutish oson.

3. Chiziqli qism plyus modul

$$\operatorname{LReLU}_\alpha(x)=\frac{1+\alpha}{2}\,x+\frac{1-\alpha}{2}\,|x|$$

Tekshiruv: $x>0$ da $\frac{1+\alpha}{2}x+\frac{1-\alpha}{2}x=x$, $x<0$ da — $\frac{1+\alpha}{2}x-\frac{1-\alpha}{2}x=\alpha x$. Bu shakl istalgan $\alpha$ da to‘g‘ri va asosiysini tushuntiradi: Leaky ReLU — chiziqli funksiya plyus «ozgina modul». Butun nochiziqlilik ikkinchi qo‘shiluvchida, uning ulushi $\frac{1-\alpha}{2}$ esa $\alpha$ o‘sishi bilan kamayadi. $\alpha=1$ da nochiziqlilik butunlay yo‘qoladi.

2-rasm. Chapda — $y=x$ va $y=\alpha x$ ikki to‘g‘ri chiziqning yuqori o‘ramasi sifatidagi Leaky ReLU. $\alpha$ ni 1 dan yuqoriga suring: o‘rama (qora punktir) haqiqiy Leaky ReLU’dan (ko‘k chiziq) ajralib ketadi. O‘ngda — chiziqli qism va modulga ajratish; $\alpha=0{,}2$ da koeffitsiyentlar $0{,}6$ va $0{,}4$.
$x$$\alpha=0{,}01$$\alpha=0{,}2$$\operatorname{LReLU}'(x)$
−5−0,05−1$\alpha$
−2−0,02−0,4$\alpha$
−0,5−0,005−0,1$\alpha$
0,50,50,5$1$
222$1$
555$1$

Noldan o‘ngda barcha variantlar ReLU bilan ustma-ust tushadi; ular faqat qancha manfiy signal «sizib o‘tishi» bilan farqlanadi.

Xossalar

  • Aniqlanish va qiymatlar sohasi — butun son o‘qi $\mathbb R$ ($\alpha>0$ da). ReLU’ning qiymatlari faqat $[0;\,+\infty)$.
  • Uzluksizlik va bo‘lak-chiziqlilik: nolda yopishtirilgan ikki to‘g‘ri chiziq. Funksiya $x=0$ dan boshqa hamma joyda differensiallanuvchi.
  • Qat’iy monotonlik $\alpha>0$ da: katta kirish katta chiqish beradi. Shuning uchun funksiya teskarilanuvchi: $y>0$ da $\operatorname{LReLU}_\alpha^{-1}(y)=y$, $y\le0$ da $y/\alpha$, ya’ni $\operatorname{LReLU}_{1/\alpha}$. ReLU’ning teskarisi yo‘q: barcha manfiy kirishlar nolga yopishtirilgan.
  • Musbat bir jinslilik: $c\ge0$ da $\operatorname{LReLU}(cx)=c\,\operatorname{LReLU}(x)$. Kirish masshtabi shunchaki chiqishga o‘tadi — initsializatsiyaning sodda formulalari shundan.
  • Lipshits sharti $\max(1,|\alpha|)$ konstanta bilan, ya’ni $\alpha\le1$ da 1: $|\operatorname{LReLU}(a)-\operatorname{LReLU}(b)|\le|a-b|$.
  • Chegaralanmaganlik yuqoridan ham, pastdan ham, lekin pastga funksiya $1/\alpha$ marta sekinroq o‘sadi.
  • Xususiy hollar: $\alpha=0$ — ReLU, $\alpha=1$ — ayniy funksiya, $\alpha=-1$ — $|x|$ modul (endi monoton emas).

Chiqishning o‘rtachasi va tarqoqligi

Neyron kirishi $z\sim N(0,1)$ bo‘lsin. U holda

$$\mathbb E\bigl[\operatorname{LReLU}(z)\bigr]=\frac{1-\alpha}{\sqrt{2\pi}},\qquad \mathbb E\bigl[\operatorname{LReLU}(z)^2\bigr]=\frac{1+\alpha^2}{2}$$

$\alpha=0{,}01$ da o‘rtacha $0{,}395$ ga teng (ReLU’da — $0{,}399$), $\alpha=0{,}2$ da — $0{,}319$. $\alpha$ qancha katta bo‘lsa, chiqishlar nol o‘rtachaga shuncha yaqin; bu keyingi qatlamni o‘qitishni biroz yengillashtiradi. $\frac{1+\alpha^2}{2}$ ikkinchi moment initsializatsiya bo‘limida kerak bo‘ladi.

Bu formulalar qayerdan keladi

$z\sim N(0,1)$ uchun $\mathbb E[z\,\mathbf 1_{z>0}]=\varphi(0)=1/\sqrt{2\pi}$ ekani ma’lum, simmetriya bo‘yicha esa $\mathbb E[z\,\mathbf 1_{z<0}]=-1/\sqrt{2\pi}$. Shuning uchun

$$\mathbb E[\operatorname{LReLU}(z)]=\mathbb E[z\mathbf 1_{z>0}]+\alpha\,\mathbb E[z\mathbf 1_{z<0}]=\frac{1}{\sqrt{2\pi}}-\frac{\alpha}{\sqrt{2\pi}}$$

Xuddi shunday $\mathbb E[z^2\mathbf 1_{z>0}]=\mathbb E[z^2\mathbf 1_{z<0}]=\tfrac12$, bundan $\mathbb E[\operatorname{LReLU}(z)^2]=\tfrac12+\tfrac{\alpha^2}{2}$. Ikkinchi formula birlik dispersiyali istalgan simmetrik taqsimot uchun to‘g‘ri, birinchisi — faqat normal taqsimot uchun.

Hosila: jarlik o‘rniga zina

Har bir tarmoqda funksiya chiziqli, shuning uchun hosila — shunchaki tarmoq qiyaligi:

$$\operatorname{LReLU}'_\alpha(x)=\begin{cases}1, & x>0,\\ \alpha, & x<0.\end{cases}$$
Ta’rif bo‘yicha keltirib chiqarish

$x>0$ da yetarlicha kichik $h$ uchun $x+h$ nuqta ham musbat, va $\frac{\operatorname{LReLU}(x+h)-\operatorname{LReLU}(x)}{h}=\frac{(x+h)-x}{h}=1$. $x<0$ da xuddi shunday $\frac{\alpha(x+h)-\alpha x}{h}=\alpha$ ni olamiz.

Nolda bir tomonlama limitlar har xil:

$$\lim_{h\to0^+}\frac{\operatorname{LReLU}(h)-0}{h}=1,\qquad \lim_{h\to0^-}\frac{\alpha h-0}{h}=\alpha$$

$\alpha\ne1$ da ular mos kelmaydi, shuning uchun nolda hosila yo‘q — bu sinish nuqtasi.

Amalda nol bilan nima qilish kerak? Sinish nuqtasida subgradiyent (subgradient) bor: $0\le\alpha\le1$ da istalgan $g\in[\alpha;\,1]$ son grafikdan yuqorida yotmaydigan $y=gx$ to‘g‘ri chiziqni beradi. Kutubxonalar kelishuv bo‘yicha bitta qiymatni tanlaydi — PyTorch’da $x=0$ da $\alpha$ olinadi. Kirish aynan nolga kamdan-kam tushadi, shuning uchun tanlov deyarli hech narsaga ta’sir qilmaydi.

Nega zina jarlikdan yaxshi

Zanjir qoidasiga ko‘ra $a=\operatorname{LReLU}(z)$, $z=\sum_j w_jx_j+b$ neyronning $w_j$ vazni bo‘yicha gradiyent

$$\frac{\partial L}{\partial w_j}=\frac{\partial L}{\partial a}\cdot\operatorname{LReLU}'(z)\cdot x_j$$

ReLU’da $z<0$ da o‘rta ko‘paytuvchi 0 ga teng, Leaky ReLU’da — $\alpha$ ga. Chapda gradiyent $1/\alpha$ marta kuchsizroq, lekin nolga teng emas: manfiy zonada «qolib ketgan» neyron xato haqidagi signalni olishda davom etadi.

α bo‘yicha hosila: PReLU sari qadam

Agar $\alpha$ ni o‘rganiladigan parametrga aylantirsak, u bo‘yicha hosila kerak bo‘ladi. U ham sodda:

$$\frac{\partial\operatorname{LReLU}_\alpha(x)}{\partial\alpha}=\begin{cases}0, & x>0,\\ x, & x\le 0\end{cases}\;=\;\min(0,\,x)$$

$\alpha$ qiyalik faqat chap tarmoqqa tushgan misollardan o‘rganadi — PReLU shunday tuzilgan (9-bo‘lim). $x$ bo‘yicha ikkinchi hosila noldan boshqa hamma joyda nolga teng: butun egrilik sinishda jamlangan, umumlashgan funksiyalar ma’nosida $\operatorname{LReLU}''(x)=(1-\alpha)\,\delta(x)$.

O‘layotgan ReLU va Leaky uni qanday davolaydi

Neyron qanday o‘ladi. Muvaffaqiyatsiz katta qadamdan keyin (juda katta o‘qitish tezligi, ma’lumotlardagi chetga chiqish, yomon initsializatsiya) neyronning $b$ siljishi kuchli manfiy bo‘lib qolgan bo‘lsin. U holda barcha misollarda $z=w^\top x+b<0$, ReLU 0 chiqaradi, $\operatorname{ReLU}'(z)=0$ — va $w$, $b$ hamda chiqish vazni $v$ bo‘yicha gradiyentlar birdaniga nolga aylanadi. Gradiyent tushish bu neyronni boshqa siljitmaydi: u o‘lik (oddiy SGD’da birinchi qatlam neyroni uchun — qat’iy umrbod; chuqurroq qatlamlarda neyron kirishi oldingi qatlamlar bilan birga o‘zgaradi va neyronlar ba’zan jonlanadi). CS231n kursi konspektlarida o‘qitish tezligi juda katta bo‘lsa, tarmoqning 40% gachasi o‘lik bo‘lib qolishi mumkinligi qayd etilgan.

Quyida eng toza tajriba. Bitta $f(x)=v\cdot\operatorname{act}(wx+b)$ neyron $[-3;\,3]$ kesmadagi 41 nuqta bo‘yicha $y=1{,}5\max(0,\,x-1)$ «sharnir»ni o‘rganishi kerak. Start: $w=1$, $b=-4$, $v=1$ — sinish $x=4$ nuqtada, ma’lumotlardan tashqarida, shuning uchun barcha misollarda $z<0$. O‘qitish — $0{,}1$ qadamli MSE bo‘yicha gradiyent tushish.

3-rasm. «Boshlash»ni bosing. ReLU neyron (qora punktir) muzlagan: uning barcha gradiyentlari nolga teng va xato abadiy $1{,}09$ bo‘lib qoladi. $\alpha=0{,}1$ li Leaky ReLU neyron kuchsiz gradiyent oladi, uning to‘g‘ri chizig‘i qiyshayadi va suriladi, 24-qadamda sinish ma’lumotlar sohasiga kiradi. 1500 qadamdan keyin xato $0{,}0549$ ga teng. $\alpha=0{,}01$ da jonlanish 135 qadam oladi, lekin yakuniy xato — $0{,}00082$.

Murosaga e’tibor bering. Katta $\alpha$ neyronni tez hayotga qaytaradi, lekin chap tarmoq qiya bo‘lib qoladi: $\alpha=0{,}1$ da yakuniy model chapda nol o‘rniga $\alpha v w\approx0{,}116$ qiyalikka ega, qoldiq xato shundan. Kichik $\alpha$ funksiya shaklini deyarli buzmaydi, lekin sekinroq jonlantiradi.

Leaky — kafolat emas

Nol bo‘lmagan gradiyent neyron albatta qaytadi degani emas: u chap tarmoqda $\alpha(w^\top x+b)$ chiziqli funksiya sifatida ishlab qolishi mumkin. Leaky ReLU boshqa narsani kafolatlaydi — neyron hech qachon butunlay muzlamaydi va o‘rganishda davom etadi. O‘limning o‘z sababiga qarshi mo‘tadil o‘qitish tezligi, qizdirish (warmup), normallashtirish va to‘g‘ri initsializatsiya yordam beradi.

Leaky ReLU’lardan iborat tarmoq: bo‘lak-chiziqli relyef

Ikki kirishli tarmoqda har bir $\operatorname{LReLU}(w_k^\top x+b_k)$ neyron tekislikni $w_k^\top x+b_k=0$ to‘g‘ri chiziq bo‘ylab «bukadi»: uning bir tomonida neyron hissasining qiyaligi ikkinchisidagidan $1/\alpha$ marta kichik. $f(x)=\sum_k v_k\operatorname{LReLU}(w_k^\top x+b_k)$ neyronlar yig‘indisi — ko‘p yoqli sirt: faol neyronlar to‘plami o‘zgarmaydigan har bir soha ichida u tekis, sinish chiziqlarida esa qiyaligini o‘zgartiradi.

4-rasm. Oltita Leaky ReLU neyrondan iborat tarmoq. Chapda — 3D’dagi $f(x_1,x_2)$ sirt (uni aylantirish mumkin), o‘ngda — oltita sinish chizig‘i bilan yuqoridan ko‘rinish. Ular $[-3;\,3]^2$ kvadratni 19 ta chiziqli sohaga bo‘ladi. To‘q sariq nuqtani torting: markazda, $(0{,}2;\,-0{,}3)$ nuqtada oltala neyron ham o‘chgan, lekin gradiyent nol emas: $|\nabla f|=0{,}100$. $\alpha=0$ qiling: markaziy soha tekis bo‘lib qoladi — bu kvadratning 5% i, u yerda ReLU tarmog‘ining kirish bo‘yicha gradiyenti nolga teng. $\alpha=1$ da butun tarmoq bitta tekislikka aylanadi.

Sohalar soni $\alpha$ ga bog‘liq emas ($\alpha\ne1$ ekan): uni faqat sinish chiziqlari belgilaydi. Lekin barcha neyronlar o‘chgan joyda nima bo‘lishi $\alpha$ ga bog‘liq. ReLU’da u yerda nol gradiyentli plato bo‘ladi va unga tushgan misollar tarmoqqa hech narsa bildirmaydi. Leaky ReLU’da plato qiya va u yerda gradiyent, odatda, nolga teng emas.

Sohalar nechta bo‘lishi mumkin

Umumiy vaziyatdagi $n$ ta to‘g‘ri chiziq tekislikni ko‘pi bilan $1+n+\binom n2$ qismga bo‘ladi: $n=6$ uchun bu 22. Rasmdagi kvadratda ulardan 19 tasi ko‘rinadi. Chuqur tarmoqlarda chiziqli sohalar soni chuqurlik bilan eksponensial o‘sishi mumkin — bu ularning ifodalash kuchining tushuntirishlaridan biri.

Chuqur tarmoqlar: Leaky ReLU uchun He initsializatsiyasi

Chuqur tarmoqda signal o‘nlab $z_{l+1}=W_{l+1}\operatorname{LReLU}(z_l)$ qatlamlardan o‘tadi. Agar har bir qatlamda dispersiya 1 dan ozgina bo‘lsa ham farq qiladigan songa ko‘paytirilsa, 50 qatlamdan keyin bu signalning portlashi yoki yo‘qolishiga aylanadi. Shu ko‘paytuvchini hisoblaymiz.

Ko‘paytuvchini keltirib chiqarish

$W_{ij}$ vaznlar mustaqil, $\mathbb E W_{ij}=0$, $\operatorname{Var}W_{ij}=s^2$, $z_l$ kirishlar esa nolga nisbatan simmetrik bo‘lsin. $h_j=\operatorname{LReLU}(z_{l,j})$ bo‘lgan bitta $z_{l+1,i}=\sum_{j=1}^{n}W_{ij}h_j$ chiqish uchun:

$$\operatorname{Var}z_{l+1}=n\,s^2\,\mathbb E[h^2]=n\,s^2\,\frac{1+\alpha^2}{2}\operatorname{Var}z_l$$

Oxirgi tenglik — xossalar bo‘limidagi ikkinchi moment: $z_l^2$ ning yarmi musbat tarmoqdan to‘liq keladi, yarmi — manfiy tarmoqdan $\alpha^2$ ga ko‘paytirilgan holda. Dispersiya saqlanishi uchun ko‘paytuvchi 1 ga teng bo‘lishi kerak:

$$s^2=\frac{2}{(1+\alpha^2)\,n_{\text{in}}}\qquad\Longleftrightarrow\qquad g=\sqrt n\,s=\sqrt{\frac{2}{1+\alpha^2}}$$

Teskari o‘tishda gradiyent $W^\top$ ga va $\operatorname{LReLU}'(z)$ ga ko‘paytiriladi, $\mathbb E[\operatorname{LReLU}'(z)^2]=\frac{1+\alpha^2}{2}$ esa — o‘sha ko‘paytuvchi. Shuning uchun bitta initsializatsiya ham to‘g‘ri signalni, ham gradiyentlarni saqlaydi.

$$\operatorname{Var}z_{l+1}=\frac{g^2(1+\alpha^2)}{2}\,\operatorname{Var}z_l,\qquad g_{\text{He}}=\sqrt{\frac{2}{1+\alpha^2}}$$

$\alpha=0$ da ReLU uchun mashhur He (Kaiming) initsializatsiyasining $g=\sqrt2$ qiymati chiqadi. Leaky ReLU uchun koeffitsiyent biroz kichikroq: $\alpha=0{,}01$ da $1{,}414$, $\alpha=0{,}2$ da $1{,}387$, $\alpha=0{,}3$ da $1{,}355$.

5-rasm. Kengligi 256 bo‘lgan tasodifiy tarmoqning har bir qatlamidagi pre-aktivatsiyalar RMS qiymati (vertikal shkala logarifmik). Standart holatda $\alpha=0{,}3$, vaznlar esa «ReLU uchun» initsializatsiya qilingan, $g=\sqrt2$: dispersiya ko‘paytuvchisi har qatlamda $1{,}09$, 50-qatlamgacha RMS $11{,}6$ gacha o‘sadi (nazariya — $11{,}7$). To‘g‘ri $g=\sqrt{2/(1+\alpha^2)}$ bilan ko‘paytuvchi 1 ga teng va 50-qatlamda RMS $1{,}34$ (nazariya — $1{,}35$). $g=1$ da ko‘paytuvchi $0{,}545$, signal esa $3{,}45\cdot10^{-7}$ gacha so‘nadi.
PyTorch’da

Aynan shuni nn.init.kaiming_normal_(w, a=alpha, nonlinearity='leaky_relu') bajaradi: standart chetlanish $\sqrt{2/((1+a^2)\,n_{\text{in}})}$. U yerda standart qiymat a=0, ya’ni oddiy ReLU uchun initsializatsiya — Leaky ReLU uchun a parametrini aniq berish kerak.

PReLU, RReLU va butun oila

$\alpha$ ni qanday tanlash kerak? Uchta javob bor.

  • Qat’iy $\alpha$ — klassik Leaky ReLU (Maas, Hannun, Ng, 2013, $\alpha=0{,}01$). Bugun ko‘pincha $0{,}1$–$0{,}3$ olinadi: Xu va boshq. (2015) taqqoslashida $\alpha=1/5{,}5\approx0{,}18$ li «kuchli oqadigan» variant $0{,}01$ dan yaxshiroq ishlagan.
  • O‘rganiladigan $\alpha$ — PReLU (Parametric ReLU, He va boshq., 2015). $\alpha$ parametrga aylanadi — qatlamga bitta yoki har kanalga bittadan — va vaznlar bilan birga gradiyent tushish orqali o‘rganiladi. PyTorch’da boshlang‘ich qiymat — $0{,}25$.
  • Tasodifiy $\alpha$ — RReLU (Randomized ReLU): o‘qitishda $\alpha$ kirishning har bir elementi uchun qaytadan $U(1/8;\,1/3)$ tekis taqsimotdan olinadi (PyTorch’dagi standart chegaralar), xulosa chiqarishda — o‘rtacha $\frac{1/8+1/3}{2}=\frac{11}{48}\approx0{,}229$. Shovqin regulyarizatsiya vazifasini bajaradi.

PReLU’da $\alpha$ bo‘yicha gradiyent — hosila bo‘limidagi $\min(0,\,z)$: qiyalik faqat manfiy kirishlardan o‘rganadi. Gradiyent tushish vaznni ham, qiyalikni ham birdaniga qanday topishini ko‘raylik.

6-rasm. Ikki parametrli $\operatorname{PReLU}_\alpha(wx)$ model $w^*=1{,}5$, $\alpha^*=0{,}2$ «o‘qituvchi» shovqin bilan yaratgan 31 nuqtadan o‘rganadi. O‘ngda — $L(w,\alpha)$ xato sirti (qancha och bo‘lsa, shuncha kichik). $(0{,}5;\,1{,}3)$ startdan $0{,}05$ qadamli gradiyent tushish 87 qadamda $w=1{,}521$, $\alpha=0{,}209$ ga $0{,}0158$ xato bilan yetib keladi — bu shovqinli ma’lumotlar uchun minimum (o‘qituvchining o‘z xatosi $0{,}0170$). Startni boshqa joyga torting.

PReLU har bir kanalga atigi bitta parametr qo‘shadi, lekin He va boshqalarning ishida yangi initsializatsiya bilan birga u juda chuqur konvolyutsion tarmoqlarni o‘qitish va ImageNet’da $4{,}94\%$ top-5 xatoga erishish imkonini berdi — bu insonning taxminiy $5{,}1\%$ xatosidan past. Mualliflar $\alpha$ ga vaznlar so‘nishini (weight decay) qo‘llamaslikni ta’kidlaydi: u $\alpha$ ni nolga, ya’ni ReLU’ga qaytaradi.

Silliq qarindoshlar

Noldagi sinishni silliqlash mumkin. ELU chap to‘g‘ri chiziqni $-\alpha$ darajasida to‘yinadigan $\alpha(e^x-1)$ eksponenta bilan almashtiradi (bu yerda $\alpha$ — ELU’ning o‘z parametri, odatda 1). SELU masshtab qo‘shadi: $\lambda\approx1{,}0507$ va $\alpha\approx1{,}6733$ LeCun initsializatsiyali to‘liq bog‘langan tarmoqda aktivatsiyalar nol o‘rtacha va birlik dispersiyani o‘zi saqlaydigan qilib tanlangan. GELU va SiLU — bugungi transformerlarda turadigan silliq va hatto nomonoton funksiyalar.

7-rasm. $\alpha=0{,}1$ li Leaky ReLU qarindoshlari yonida. Kursorni olib boring: $x=-2$ da Leaky ReLU $-0{,}2$, ELU — $-0{,}865$, SELU — $-1{,}520$, GELU — $-0{,}046$, SiLU — $-0{,}238$ beradi. Hosilalarga o‘ting: Leaky ReLU va SELU’da bu nolda uzilishli zina (SELU’da chapda $\lambda\alpha\approx1{,}758$, o‘ngda $\lambda\approx1{,}051$), ELU, GELU va SiLU’da — uzluksiz egri chiziq.
Funksiya$x\le0$ daChapdagi hosilaXususiyati
ReLU$0$$0$nol gradiyent, «o‘lik» neyronlar
Leaky ReLU$\alpha x$$\alpha$qat’iy qiyalik, odatda $0{,}01$–$0{,}3$
PReLU$\alpha x$, $\alpha$ o‘rganiladi$\alpha$qatlam yoki kanalga +1 parametr
RReLU$\alpha x$, $\alpha\sim U(\tfrac18;\,\tfrac13)$$\alpha$regulyarizatsiya sifatida shovqin
ELU$\alpha(e^{x}-1)$$\alpha e^{x}$$\alpha=1$ da hosila uzluksiz, $-\alpha$ da to‘yinadi
SELU$\lambda\alpha(e^{x}-1)$$\lambda\alpha e^{x}$o‘z-o‘zini normallashtirish, $\lambda\approx1{,}0507$

Kodda

NumPy’da Leaky ReLU — bitta qator. np.maximum(alpha * x, x) dan ko‘ra np.where yozish ishonchliroq: ikkinchi yozuv $\alpha>1$ da jimgina buziladi.

pythonimport numpy as np

def leaky_relu(x, alpha=0.01):
    # maximum(alpha * x, x) emas, where: bu yozuv istalgan alpha da to‘g‘ri
    return np.where(x > 0, x, alpha * x)

def leaky_relu_grad(x, alpha=0.01):
    return np.where(x > 0, 1.0, alpha)      # nolda alpha olinadi, PyTorch’dagidek

def he_std(n_in, alpha=0.01):
    # Leaky ReLU uchun He initsializatsiyasi: Var w = 2 / ((1 + alpha²) · n_in)
    return np.sqrt(2.0 / ((1.0 + alpha**2) * n_in))

x = np.array([-3.0, -0.5, 0.0, 2.0])
print(leaky_relu(x))        # [-0.03  -0.005  0.     2.   ]
print(leaky_relu_grad(x))   # [0.01 0.01 0.01 1.  ]
print(he_std(256, 0.2))     # 0.08667190566019205
pythonimport torch
import torch.nn as nn

act = nn.LeakyReLU(negative_slope=0.01)   # 0.01 — standart qiymat
x = torch.tensor([-3.0, 0.0, 2.0], requires_grad=True)
act(x).sum().backward()
print(x.grad)                    # tensor([0.0100, 0.0100, 1.0000]) — nolda α

prelu = nn.PReLU(num_parameters=1, init=0.25)   # α — o‘rganiladigan parametr
print(prelu(torch.tensor([-2.0, 3.0])).detach())  # tensor([-0.5000,  3.0000])

lin = nn.Linear(256, 256)
# std = √(2 / ((1 + a²) · 256)); standart a=0, ya’ni «ReLU uchun»
nn.init.kaiming_normal_(lin.weight, a=0.2, nonlinearity="leaky_relu")
print(nn.init.calculate_gain("leaky_relu", 0.2))  # 1.3867504905630728
Kutubxonalardagi standart qiymatlar har xil

PyTorch nn.LeakyReLU: negative_slope=0.01. TensorFlow tf.nn.leaky_relu: alpha=0.2. Keras layers.LeakyReLU: $0{,}3$. Uchta freymvorkdagi bitta «Leaky ReLU» — uchta har xil funksiya. Modelni ko‘chirishda $\alpha$ ni aniq ko‘rsating.

Hisoblash nuqtai nazaridan Leaky ReLU xavfsiz: eksponenta ham, bo‘lish ham, to‘lib ketish ham yo‘q. Yagona nozik joy — PyTorch’dagi inplace=True: u xotirani tejaydi, lekin grafning boshqa amallariga kerak bo‘lishi mumkin bo‘lgan kirishni qayta yozadi.

Ko‘p uchraydigan xatolar

  1. $\alpha>1$ da max(alpha * x, x) yozuvi. Formula faqat $\alpha\le1$ da to‘g‘ri; katta $\alpha$ larda boshqa funksiya chiqadi. Xavfsiz yozuv — where(x > 0, x, alpha * x).
  2. Juda katta $\alpha$. $\alpha\to1$ da nochiziqlilik ulushi $\frac{1-\alpha}{2}$ nolga intiladi, funksiya deyarli chiziqli bo‘lib qoladi va chuqur tarmoq ifodalash kuchini yo‘qotadi. Oqilona oraliq — $0{,}01$ dan $0{,}3$ gacha.
  3. $\alpha$ ga tuzatishsiz «ReLU uchun» initsializatsiya. Har qatlamda dispersiya ko‘paytuvchisi $1+\alpha^2$: $\alpha=0{,}3$ da signal RMS i 1-qatlamdan 50-qatlamgacha taxminan $1{,}09^{24{,}5}\approx8{,}3$ marta o‘sadi (5-rasm). $\alpha$ ni kaiming_normal_(..., a=alpha) ga bering.
  4. Leaky ReLU beqaror o‘qitishni o‘zi davolaydi degan umid. U nol gradiyentni yo‘qotadi, lekin sababini emas: juda katta o‘qitish tezligi baribir xavfli.
  5. PReLU’ning $\alpha$ siga vaznlar so‘nishi. U $\alpha$ ni nolga tortadi va PReLU ReLU’ga aylanadi. $\alpha$ ni weight decay qo‘llanadigan parametrlar guruhidan chiqaring.
  6. Har xil standart qiymatlar PyTorch ($0{,}01$), TensorFlow ($0{,}2$) va Keras’da ($0{,}3$): modelni freymvorklar o‘rtasida ko‘chirganda natija jimgina o‘zgaradi.
  • ReLU: $\alpha=0$ xususiy hol; «o‘layotgan ReLU» haqida batafsil — o‘sha yerda.
  • SiLU / Swish va GELU: chapda ham kichik manfiy signalni o‘tkazadigan, lekin keyin uni so‘ndiradigan silliq aktivatsiyalar.
  • Sigmoida va tanh: to‘yinadigan aktivatsiyalar; Leaky ReLU’da to‘yinish umuman yo‘q, demak, to‘yinish tufayli gradiyent so‘nishi ham yo‘q.
  • MSE: 3 va 6-rasmlardagi tajribalarning yo‘qotish funksiyasi.
  • SGD va Adam: optimizatorning juda katta qadami — ReLU neyronlari o‘limining asosiy sababi.

Xulosa

1) $x>0$ da $\operatorname{LReLU}_\alpha(x)=x$, $x\le0$ da $\alpha x$; bu $\alpha\le1$ da $\max(\alpha x,x)$ ga va istalgan $\alpha$ da $\frac{1+\alpha}{2}x+\frac{1-\alpha}{2}|x|$ ga teng. 2) Hosila — $\alpha$ va $1$ dan iborat zina: gradiyent nolga aylanmaydi, neyron muzlamaydi. 3) Murosa: katta $\alpha$ neyronlarni tezroq jonlantiradi, lekin funksiyani chiziqliga yaqinlashtiradi. 4) Leaky ReLU tarmog‘i — tekis «o‘lik» platolarsiz bo‘lak-chiziqli funksiya. 5) Initsializatsiya: $\operatorname{Var}w=\frac{2}{(1+\alpha^2)\,n_{\text{in}}}$. 6) PReLU $\alpha$ ni $\min(0,z)$ gradiyent orqali o‘rganadi.

O‘zingizni tekshiring

1. $\alpha=0{,}2$ da $\operatorname{LReLU}(-5)$ nimaga teng?
2. $x<0$ da Leaky ReLU hosilasi nimaga teng?
3. Qaysi $\alpha$ larda $\operatorname{LReLU}_\alpha(x)=\max(\alpha x,x)$ to‘g‘ri?
4. Leaky ReLU’li ($\alpha=0{,}3$) tarmoq «ReLU uchun», $g=\sqrt2$ bilan initsializatsiya qilingan. Har qatlamdagi dispersiya ko‘paytuvchisi qancha?
5. ReLU neyron barcha misollarda $z<0$ oladi. Qaysi biri to‘g‘ri?