Neyron tarmoq formulalari: qo‘llanma · Keyingi bosqich

GELU: ehtimollikka ko‘paytirilgan kirish

BERT, GPT va ViT aktivatsiyasi. Nega bu shunchaki «silliqlangan ReLU» emasligini mayda detallarigacha ko‘rib chiqamiz: normal taqsimot funksiyasi Φ qayerdan keladi, GELU tasodifiy niqobni o‘rtachalashdan qanday hosil bo‘ladi, uning minimumi qayerda, Φ(x) + xφ(x) hosila qanday ko‘rinadi va tanh hamda sigmoida orqali yaqinlashishlar qanchalik aniq.

Javharbek Abdulatipov · 35 daq o‘qish
$$\operatorname{GELU}(x)=x\cdot\Phi(x)=\frac{x}{2}\Bigl(1+\operatorname{erf}\frac{x}{\sqrt2}\Bigr)$$

U nima uchun kerak

Aktivatsiya funksiyasi — har bir chiziqli qatlamdan keyin turadigan nochiziqlilik. Usiz istalgancha qatlam bitta matritsaga ko‘paytirishga aylanib qoladi. Uzoq vaqt standart ReLU edi: $\max(0,x)$ — musbatni o‘tkazish, manfiyni nolga aylantirish. GELU (Gaussian Error Linear Unit, Xendriks va Gimpel, 2016) xuddi shu vazifani yumshoqroq hal qiladi: kirish shunchaki o‘tkazilmaydi yoki kesilmaydi, balki uni o‘tkazish kerakligi ehtimolligiga ko‘paytiriladi.

U qayerda uchraydi:

  • BERT, RoBERTa, GPT, GPT-2, GPT-3 — transformerning har bir to‘g‘ri tarqalish (feed-forward, FFN) blokida: $\operatorname{FFN}(h)=W_2\,\operatorname{GELU}(W_1h+b_1)+b_2$;
  • Vision Transformer (ViT) va undan keyingi ko‘plab kompyuter ko‘rishi modellarida;
  • GeGLU — ventilli variant $\operatorname{GELU}(xW)\odot(xV)$, masalan Gemma’da; uning qarindoshi — SiLU’li SwiGLU — LLaMA va Qwen’da;
  • silliqlik muhim bo‘lgan har joyda: GELU’ning barcha tartibdagi hosilalari bor, nolda sinish yo‘q va ReLU’dagidek gradiyenti nol bo‘lgan «o‘lik» zona yo‘q.
Bir daqiqada asosiysi

$\operatorname{GELU}(x)=x\,\Phi(x)$, bunda $\Phi$ — standart normal taqsimot funksiyasi. Katta musbat $x$ deyarli to‘liq o‘tadi, katta manfiylari deyarli nolga aylanadi, nol atrofida esa silliq o‘tish ishlaydi. Funksiyaning $x\approx-0{,}752$ nuqtada $\approx-0{,}170$ minimumi bor, $\Phi(x)+x\varphi(x)$ hosila $-0{,}129$ dan $1{,}129$ gacha oraliqda yotadi, amalda esa uni ko‘pincha xatosi $4{,}7\cdot10^{-4}$ dan oshmaydigan tanh yaqinlashishi orqali hisoblashadi.

Intuitsiya: ehtimollikka ko‘paytirilgan kirish

$x$ signalning qancha ulushini o‘tkazishni hal qiladigan ventilni tasavvur qiling. ReLU’da ventil qattiq: $x>0$ da to‘liq ochiq, $x<0$ da yopiq. GELU’da ventil $\Phi(x)$ ga ochiq — 0 dan 1 gacha bo‘lgan, $x$ bilan birga silliq o‘sadigan ulushga. Katta musbat signal deyarli to‘liq o‘tadi, katta manfiysi deyarli so‘nadi, nol atrofida esa signalning yarmi o‘tadi: $\Phi(0)=0{,}5$.

Nuqtani torting. Kulrang polosa — butun $x$ kirish, ko‘k polosa — uning o‘tgan qismi: uzunligi $x\cdot\Phi(x)$ ga teng. Firuza punktir — $\Phi(x)$ ulushning o‘zi.

1-rasm. GELU, $\Phi(x)$ ulush va hosila. $x=1$ da $\Phi(1)\approx0{,}841$ ulush o‘tadi, shuning uchun $\operatorname{GELU}(1)\approx0{,}841$; $x=-1$ da faqat $0{,}159$ o‘tadi va chiqish $-0{,}159$ ga teng. Doiracha funksiya minimumini belgilaydi.
Nimaga e’tibor berish kerak

Manfiy $x$ uchun chiqish nolga teng emas: u manfiy va kichik. $x$ noldan kamayganda chiqish avval kamayadi (kirish moduli ulush kamayishidan tezroq o‘sadi), taxminan $x=-0{,}75$ dan boshlab esa yana nolga ko‘tariladi: $\Phi(x)$ ulush $|x|$ o‘sishidan tezroq so‘nadi. Shundan sayoz «chuqurcha» paydo bo‘ladi — GELU va ReLU shakllari orasidagi asosiy farq.

Formula mayda detallarigacha

GELU’ning butun murakkabligi $\Phi$ ichida yashiringan. Uni qismlarga ajratamiz.

$$\operatorname{GELU}(x)=x\cdot\Phi(x),\qquad \Phi(x)=\int_{-\infty}^{x}\varphi(t)\,dt,\qquad \varphi(t)=\frac{1}{\sqrt{2\pi}}\,e^{-t^{2}/2}$$
$\varphi(t)$
standart normal taqsimot $N(0,1)$ zichligi — nolda $1/\sqrt{2\pi}\approx0{,}399$ maksimumli Gauss qo‘ng‘irog‘i;
$\Phi(x)$
taqsimot funksiyasi: qo‘ng‘iroq ostidagi $x$ nuqtadan chapdagi yuza, ya’ni $\varepsilon\sim N(0,1)$ uchun $P(\varepsilon\le x)$ ehtimollik; 0 dan 1 gacha o‘sadi, $\Phi(0)=\tfrac12$;
$x\cdot\Phi(x)$
shu ehtimollikka ko‘paytirilgan kirish.

Gaussiana integrali elementar funksiyalar orqali ifodalanmaydi, shuning uchun uning maxsus nomi bor — xatolar funksiyasi (error function), «Gaussian Error Linear Unit» nomi shundan:

$$\operatorname{erf}(z)=\frac{2}{\sqrt\pi}\int_0^{z}e^{-t^2}\,dt,\qquad \Phi(x)=\frac12\Bigl(1+\operatorname{erf}\frac{x}{\sqrt2}\Bigr)\quad\Longrightarrow\quad\operatorname{GELU}(x)=\frac{x}{2}\Bigl(1+\operatorname{erf}\frac{x}{\sqrt2}\Bigr)$$

$1/\sqrt2$ ko‘paytuvchi zichligi $e^{-t^2/2}$ bo‘lgan standart normal miqdorni erf aniqlangan $e^{-t^2}$ yadroga o‘tkazadi. erf’ning o‘zi toq, $-1$ dan $1$ gacha o‘zgaradi, shuning uchun $\tfrac12(1+\operatorname{erf})$ 0 dan 1 gacha o‘zgaradi.

$x$$\Phi(x)$$\operatorname{GELU}(x)$$\operatorname{GELU}'(x)$$\operatorname{ReLU}(x)$
−30,0013−0,0040−0,01190
−20,0228−0,0455−0,08520
−10,1587−0,1587−0,08330
−0,50,3085−0,15430,13250
00,50000,00000,50000
0,50,69150,34570,86750,5
10,84130,84131,08331
20,97721,95451,08522
30,99872,99601,01193

Jadval uch narsani ko‘rsatadi. O‘ngda GELU ReLU’ga tez yetib oladi: $x=3$ da farq atigi $0{,}004$. Chapda chiqish manfiy, lekin kichik: jadvaldagi eng chuqur qiymat — $x=-1$ da $-0{,}159$. Nolda hosila $0{,}5$ ga teng, $x>0{,}752$ da (jadvalda — $x=1$ dan boshlab) esa birdan katta: funksiya $y=x$ to‘g‘ri chiziqqa yetib olish uchun undan biroz tezroq o‘sadi.

U qayerdan kelgan: o‘rtacha shovqinli niqob

GELU mualliflari ikki g‘oyani birlashtirdi. ReLU kirishni deterministik niqobga ko‘paytiradi: $x\cdot\mathbb 1[x>0]$. Dropout kirishni undan bog‘liq bo‘lmagan tasodifiy niqobga ko‘paytiradi. Agar niqob tasodifiy bo‘lsa-yu, lekin kirishga bog‘liq bo‘lsa-chi: $x$ qancha katta bo‘lsa, uni o‘tkazish ehtimoli shuncha yuqori?

$$m\sim\operatorname{Bernoulli}\bigl(\Phi(x)\bigr),\qquad \mathbb E\,[\,x\cdot m\,]=x\cdot P(m=1)=x\,\Phi(x)=\operatorname{GELU}(x)$$

Bunday niqobni olish oson: $\varepsilon\sim N(0,1)$ shovqin oling va $\varepsilon\le x$ bo‘lsa, $m=1$ deb oling. U holda taqsimot funksiyasi ta’rifiga ko‘ra $P(m=1)=\Phi(x)$. Nega normal qonun? Mualliflar tanlovni shunday asoslaydi: neyron kirishlari, ayniqsa normallashtirishdan (BatchNorm, LayerNorm) keyin, taxminan normal taqsimlangan, $\Phi(x)$ esa tabiiy savolga javob beradi: odatiy kirishlarning qancha ulushi berilgan $x$ dan kichik.

2-rasm. Chapda to‘q sariq nuqtalar — $-3$ dan $3$ gacha 25 nuqtada $n$ ta tasodifiy niqob bo‘yicha $x\cdot m$ o‘rtachasi, o‘ngda — $\varepsilon$ shovqin va niqob ochiq bo‘ladigan $\Phi(x_0)$ ulush. «Boshlash»ni bosing: $n=20$ da GELU’dan eng katta chetlanish $0{,}146$, $n=2000$ da esa $0{,}0125$; o‘rtacha xatosi $1/\sqrt n$ kabi kamayadi. $x_0=0{,}5$ nuqtada ochiq niqoblar ulushi $\Phi(0{,}5)\approx0{,}691$ ga yaqinlashadi.
GELU’ning o‘zi tasodifiy emas

Shovqinli niqob faqat shaklni tushuntiradi. Tarmoqda deterministik o‘rtacha $x\Phi(x)$ turadi: o‘qitishda ham, xulosa chiqarishda ham tasodif yo‘q (shovqin kerak bo‘lsa, alohida dropout qo‘shiladi).

Xossalar va shakl

  • Qiymatlar sohasi — $[-0{,}170;\,+\infty)$: pastdan chegaralangan, yuqoridan yo‘q.
  • Silliqlik: GELU cheksiz differensiallanuvchi; $\operatorname{GELU}(0)=0$, $\operatorname{GELU}'(0)=\tfrac12$.
  • Monoton emaslik: funksiya $(-\infty;\,-0{,}752)$ da kamayadi, o‘ngda o‘sadi; minimum $\approx-0{,}170$.
  • Asimptotalar: $x\to+\infty$ da $\operatorname{GELU}(x)-x\to0$, $x\to-\infty$ da $\operatorname{GELU}(x)\to0$, chap dum esa gaussiana kabi so‘nadi: $x\Phi(x)\approx-\varphi(x)$, allaqachon $\operatorname{GELU}(-4)\approx-1{,}3\cdot10^{-4}$.
  • Ayniyat: $\operatorname{GELU}(x)-\operatorname{GELU}(-x)=x$, chunki $\Phi(x)+\Phi(-x)=1$.
  • Qavariqlik: faqat $(-\sqrt2;\,\sqrt2)$ oraliqda; undan tashqarida funksiya botiq (ikkinchi hosila ishorasi — keyingi bo‘limda).

GELU = ReLU minus juft «chuqurcha»

Ayniyatdan qulay yozuv kelib chiqadi. $x>0$ uchun: $x\Phi(x)=x-x\Phi(-x)$; $x<0$ uchun: $x\Phi(x)=-|x|\Phi(-|x|)$. Ikkala holda ham

$$\operatorname{GELU}(x)=\operatorname{ReLU}(x)-|x|\,\Phi(-|x|)$$

$|x|\Phi(-|x|)$ tuzatma juft: noldan chapda ham, o‘ngda ham bir xil, $|x|=0{,}752$ da $0{,}170$ maksimumga erishadi va tez so‘nadi. SiLU $x\,\sigma(x)$ ham shu xossaga ega, faqat uning «chuqurchasi» kengroq va chuqurroq: $|x|=1{,}278$ da $0{,}278$.

3-rasm. Yuqorida — GELU, SiLU va ReLU, pastda — $\operatorname{ReLU}-f$ ayirmalar. Kursorni istalgan grafik ustiga olib boring. $x=-1$ da: $\operatorname{GELU}=-0{,}159$, $\operatorname{SiLU}=-0{,}269$. Pastki grafikdagi nuqtalar — ReLU’dan eng katta farqlar: GELU’da $0{,}170$, SiLU’da $0{,}278$; bular ularning minimumlari chuqurligi hamdir.
Sigmoida bilan bog‘lanish

Normal va logistik qonunlarning taqsimot funksiyalari juda o‘xshash: $\Phi(x)\approx\sigma(1{,}702\,x)$, xato $0{,}0095$ dan oshmaydi. Shuning uchun GELU $x\,\sigma(1{,}702x)$ bilan deyarli ustma-ust tushadi — bu tikroq sigmoidali SiLU. $\sigma$ ning o‘zi haqida — sigmoida sahifasida.

Hosila: Φ(x) + x·φ(x)

Hosila xatoni teskari tarqatishda kerak. Uni keltirib chiqaramiz va funksiya minimumini topamiz.

Birinchi va ikkinchi hosilani keltirib chiqarish

Asosiy fakt: taqsimot funksiyasining hosilasi — zichlik, $\Phi'(x)=\varphi(x)$ (yuqori chegarasi o‘zgaruvchi bo‘lgan integral uchun analizning asosiy teoremasi). Ko‘paytma hosilasi qoidasiga ko‘ra:

$$\operatorname{GELU}'(x)=(x)'\cdot\Phi(x)+x\cdot\Phi'(x)=\Phi(x)+x\,\varphi(x)$$

Gaussiana uchun $\varphi'(x)=-x\,\varphi(x)$. Yana bir marta differensiallaymiz:

$$\operatorname{GELU}''(x)=\varphi(x)+\varphi(x)+x\cdot\bigl(-x\,\varphi(x)\bigr)=\varphi(x)\,\bigl(2-x^{2}\bigr)$$

$\operatorname{GELU}''$ ishorasi $2-x^2$ ishorasi bilan bir xil: funksiya $(-\sqrt2;\,\sqrt2)$ da qavariq va undan tashqarida botiq, $\operatorname{GELU}'$ hosilaning ekstremumlari esa $x=\pm\sqrt2$ nuqtalarda.

$$\operatorname{GELU}'(x)=\underbrace{\Phi(x)}_{\text{ulush}}+\underbrace{x\,\varphi(x)}_{\text{ulush o‘zgarishi}}$$

Hosila ikki qo‘shiluvchidan iborat. Birinchisi — $\Phi(x)$ ulushning o‘zi: ventil $x$ ga bog‘liq bo‘lmaganida hosila shunday bo‘lardi. Ikkinchisi — $x$ o‘sganda ventil ochilishidan keladigan tuzatma; u noldan o‘ngda musbat, chapda manfiy. Hosilasi 0/1 zinapoya bo‘lgan ReLU bilan solishtiring.

4-rasm. GELU hosilasi (to‘q sariq) va uning ikki qo‘shiluvchisi. Eng katta qiymat $\Phi(\sqrt2)+\sqrt2\,\varphi(\sqrt2)\approx1{,}129$, eng kichigi $x=-\sqrt2$ da $\approx-0{,}129$ — bu sonlar yig‘indisi 1 ga teng, chunki $\operatorname{GELU}'(x)+\operatorname{GELU}'(-x)=1$. Hosila $x\approx-0{,}752$ da nolga aylanadi; boshlang‘ich $x=-0{,}75$ nuqtada u allaqachon deyarli nol. Ikkinchi hosilani yoqing: uning nollari $\pm\sqrt2$ da.

Minimum qayerda

Minimum $\operatorname{GELU}'(x)=0$ bo‘lgan joyda, ya’ni $\Phi(x)=-x\,\varphi(x)$. Bu tenglama elementar funksiyalarda yechilmaydi; $x_0=-1$ dan boshlangan Nyuton usuli $x_{k+1}=x_k-\operatorname{GELU}'(x_k)/\operatorname{GELU}''(x_k)$ $-0{,}6557$, $-0{,}7448$, $-0{,}75175$, $-0{,}751792$ ni beradi — har bir iteratsiya to‘g‘ri raqamlar sonini taxminan ikki barobar oshiradi.

$$x^{*}\approx-0{,}7518,\qquad \operatorname{GELU}(x^{*})=x^{*}\Phi(x^{*})=-(x^{*})^{2}\varphi(x^{*})\approx-0{,}1700$$

Ikkinchi tenglik $\Phi(x^*)=-x^*\varphi(x^*)$ minimum shartidan kelib chiqadi. Minimumda $\Phi(x^*)\approx0{,}226$ ulush o‘tadi.

Chapdagi manfiy gradiyent

$x<-0{,}752$ da hosila manfiy: kirish oshirilsa, chiqish kamayadi. ReLU bu zonada aynan nol beradi, GELU esa kichik, lekin noldan farqli signal beradi ($-0{,}129$ dan kichik emas). U gaussiana kabi so‘nadi: $\operatorname{GELU}'(-3)\approx-0{,}012$, $\operatorname{GELU}'(-4)\approx-0{,}0005$.

Tez yaqinlashishlar: tanh va sigmoida

erf’ni hisoblash elementar funksiyalarga qaraganda qimmatroq, shuning uchun mualliflar tezlik aniqlikdan muhimroq bo‘lgan holatlar uchun ikki yaqinlashishni taklif qildi. Birinchisi tanh’dan foydalanadi:

$$\operatorname{GELU}(x)\approx\frac{x}{2}\Bigl(1+\tanh\Bigl[\sqrt{2/\pi}\,\bigl(x+0{,}044715\,x^{3}\bigr)\Bigr]\Bigr)$$

BERT va GPT-2 ning asl kodida aynan shu formula yozilgan (Hugging Face kutubxonasida u gelu_new, PyTorch’da — approximate="tanh" deb ataladi). Eng katta xato — $|x|\approx2{,}70$ da $4{,}7\cdot10^{-4}$. Ikkinchi yaqinlashish sigmoida orqali:

$$\operatorname{GELU}(x)\approx x\,\sigma(1{,}702\,x)$$

U qo‘polroq: $|x|\approx2{,}27$ da xato $0{,}020$ gacha yetadi. Ikkala xato ham juft funksiyalar, chunki uchala formula ham $f(x)-f(-x)=x$ ayniyatini qanoatlantiradi.

√(2/π) va 0,044715 qayerdan keladi

$\operatorname{erf}(z)$ ni $\tanh(u)$ funksiya bilan yaqinlashtirish kerak. Ikkalasini nol atrofida yoyamiz: $\operatorname{erf}(z)=\frac{2}{\sqrt\pi}\bigl(z-\frac{z^3}{3}+\dots\bigr)$ va $\tanh u=u-\frac{u^3}{3}+\dots$. $u=\frac{2}{\sqrt\pi}(z+cz^3)$ ni olamiz va koeffitsiyentlarni tenglashtiramiz.

$$z^{1}:\ \ \frac{2}{\sqrt\pi}=\frac{2}{\sqrt\pi};\qquad z^{3}:\ \ \frac{2c}{\sqrt\pi}-\frac{8}{3\pi\sqrt\pi}=-\frac{2}{3\sqrt\pi}\ \Longrightarrow\ c=\frac{4}{3\pi}-\frac13$$

$z=x/\sqrt2$ ni qo‘yib, $c'=c/2=\frac{2}{3\pi}-\frac16\approx0{,}0455$ bilan $\sqrt{2/\pi}\,(x+c'x^3)$ ni olamiz. Qatorlarning mos kelishi faqat nol atrofida aniqlik beradi, shuning uchun formulada butun o‘q bo‘yicha sonli tanlangan koeffitsiyent turadi: $0{,}044715$. Tekshiruv ko‘rsatadiki, bu $\Phi$ ning o‘zi uchun minimaks koeffitsiyent: unda $\Phi(x)\approx\tfrac12\bigl(1+\tanh[\sqrt{2/\pi}(x+c'x^3)]\bigr)$ yaqinlashishning eng katta xatosi minimal va $1{,}8\cdot10^{-4}$ ga teng. GELU’ning o‘zi uchun optimum biroz boshqacha ($c'\approx0{,}04438$, xato $3{,}9\cdot10^{-4}$), lekin farq kichik. Teylor qiymati $0{,}0455$ bilan maksimal xato $7{,}5\cdot10^{-4}$, $0{,}044715$ bilan — $4{,}7\cdot10^{-4}$, kub hadsiz ($c'=0$) esa — $0{,}034$.

5-rasm. Yuqorida — aniq GELU va ikki yaqinlashish, pastda — logarifmik shkaladagi xato moduli (botiqlar — xato ishorasini o‘zgartiradigan nuqtalar). $c$ koeffitsiyentni suring: $c=0{,}044715$ da maksimal xato $4{,}7\cdot10^{-4}$, $c=0$ da — $0{,}034$, $c=0{,}04438$ da esa atigi $3{,}9\cdot10^{-4}$. $x=1$ da: aniq qiymat $0{,}8413$, tanh yaqinlashishi $0{,}8412$, sigmoidali $0{,}8458$.
Bular turli funksiyalar

tanh yaqinlashishi bilan o‘qitilgan model xulosa chiqarishda ham aynan undan foydalanishi kerak. Farq har bir neyronda $4{,}7\cdot10^{-4}$ dan oshmaydi, lekin yuzlab qatlam va minglab neyronlarda vaznlarni konvertatsiya qilishda logitlarning sezilarli farqini beradi va bitma-bit testlarni buzadi.

3D’da x·Φ(x/s) oilasi: ReLU’dan to‘g‘ri chiziqqacha

Niqobdagi shovqin birlik bo‘lishi shart emas. Agar $\varepsilon\sim N(0,s^2)$ bo‘lsa, $P(\varepsilon\le x)=\Phi(x/s)$ bo‘ladi va $s$ «harorat»li butun funksiyalar oilasi hosil bo‘ladi:

$$f(x,s)=x\,\Phi\Bigl(\frac{x}{s}\Bigr)=s\cdot\operatorname{GELU}\Bigl(\frac{x}{s}\Bigr)$$
  • $s\to0$: shovqin yo‘q, $\Phi(x/s)$ zinapoyaga aylanadi va $f\to\operatorname{ReLU}(x)$;
  • $s=1$: oddiy GELU;
  • $s\to\infty$: shovqin kirishni bosib ketadi, $\Phi(x/s)\to\tfrac12$ va $f\to x/2$ — to‘g‘ri chiziq, nochiziqlilik yo‘qoladi.

Ikkinchi tenglik oilaning barcha a’zolari o‘xshash ekanini ko‘rsatadi: minimum $x=-0{,}752\,s$ nuqtada va $-0{,}170\,s$ ga teng. Sirtda bu «jarlik» tubi bo‘ylab o‘tgan to‘g‘ri firuza chiziq.

6-rasm. $f(x,s)=x\,\Phi(x/s)$ sirti (uni aylantirish mumkin) va joriy $s$ dagi kesim. To‘q sariq chiziq — kesim, firuza — minimumlar chizig‘i. $s=1$ da $x=-0{,}752$ dagi minimum $-0{,}170$ ga teng. $\operatorname{GELU}'(x/s)$ hosilaga o‘ting: kichik $s$ da u ReLU zinapoyasiga aylanadi, $s$ o‘sgan sari esa $x$ o‘qi bo‘ylab cho‘ziladi va tobora yassilashadi; $s\to\infty$ limitda bu $\tfrac12$ o‘zgarmas.

Tarmoqda GELU vektorga elementma-element qo‘llaniladi: $h=\operatorname{GELU}(W_1x+b_1)$. Har bir koordinata — $w_j^\top x+b_j=0$ giperteksislik bo‘ylab o‘z «burmasi», lekin ReLU’dan farqli ravishda burma silliq, ReLU nol beradigan tomonda esa kichik manfiy botiq bor.

O‘qitishda va transformerda GELU

Bitta yashirin qatlamli tarmoq javobni $w_{2j}\,f(w_{1j}x+b_{1j})$ «g‘ishtlar» yig‘indisi sifatida quradi. ReLU’da har bir g‘isht — bitta sinishli siniq chiziq, yig‘indi ham siniq chiziq. GELU’da g‘ishtlar silliq, shuning uchun silliq bog‘lanishni ularning kamroq soni bilan tasvirlash mumkin.

7-rasm. Bir xil boshlang‘ich qiymatli 4 neyronli o‘sha tarmoq, $\sin1{,}5x+0{,}3x$ shovqinli egri chiziqning 40 nuqtasida $0{,}03$ qadamli Adam bilan o‘qitiladi. O‘ngda — logarifmik shkaladagi o‘rtacha kvadratik xato (MSE). 2000 qadamda GELU’li tarmoq MSE’ni $7{,}06$ dan $0{,}0042$ gacha tushiradi — bu hatto ma’lumotlardagi shovqin darajasidan biroz past (qo‘shilgan shovqinning o‘rtacha kvadrati $0{,}0051$), ReLU’li tarmoq esa $0{,}0083$ da qotib qoladi: to‘rtta sinish yetmaydi. «Neyronlar» almashtirgichi tarmoqlardan birining alohida g‘ishtlarini ko‘rsatadi.

O‘qitish o‘sha hosiladan foydalanadi: neyronga kelgan gradiyent $\operatorname{GELU}'(z)=\Phi(z)+z\varphi(z)$ ga ko‘paytiriladi. ReLU’dan farqli ravishda manfiy $z$ li neyron signal olishda davom etadi, shuning uchun GELU’li tarmoqlar «o‘lik» neyronlardan kamroq aziyat chekadi.

Transformerning to‘g‘ri tarqalish bloki

BERT va GPT’da har bir diqqat (attention) qatlamidan keyin har bir tokenni alohida qayta ishlaydigan ikki qatlamli perseptron turadi:

$$\operatorname{FFN}(h)=W_2\,\operatorname{GELU}(W_1h+b_1)+b_2,\qquad W_1\in\mathbb R^{4d\times d},\ \ W_2\in\mathbb R^{d\times4d}$$

BERT-base’da $d=768$, ya’ni 12 qatlamning har birida har bir tokenga $4d=3072$ ta GELU hisoblash to‘g‘ri keladi — 512 tokenli ketma-ketlik uchun bu bir o‘tishda qariyb 19 million hisoblash. Shuning uchun aktivatsiyaning o‘z tezligi muhim va aniq erf o‘rniga ko‘pincha tanh yaqinlashishi olinadi. FFN oldida LayerNorm turadi, shuning uchun o‘qitish boshida $W_1h+b_1$ kirishlar birlik tartibida — GELU’da ham «chuqurcha», ham silliq o‘tish bo‘lgan, ya’ni u ReLU’dan sezilarli farq qiladigan aynan o‘sha soha.

GELU qanday standartga aylandi

Xendriks va Gimpel GELU’ni 2016 yilda taklif qildi va ko‘rish, nutq hamda matn vazifalarida u ReLU va ELU’dan yomon emasligini ko‘rsatdi. Unga keng shuhrat GPT (2018) va BERT (2018), keyin GPT-2, GPT-3 va Vision Transformer (2020) olib keldi. 2020 yilda Shazir GeGLU va SwiGLU ventilli variantlari yanada yaxshi ekanini ko‘rsatdi va yangi LLM’lar ko‘pincha ulardan foydalanadi.

Kodda: aniq, tez va barqaror

NumPy’da erf funksiyasi yo‘q, shuning uchun uni SciPy’dan olishadi. Katta manfiy $x$ da aniqlikni yo‘qotmaslik uchun taqsimot funksiyasini qo‘shimcha xatolar funksiyasi orqali hisoblash qulay: $\Phi(x)=\tfrac12\operatorname{erfc}(-x/\sqrt2)$. $\tfrac12(1+\operatorname{erf})$ formulasi $x=-10$ da deyarli teng sonlarni ayiradi va aynan 0 beradi, holbuki haqiqiy qiymat $\operatorname{GELU}(-10)\approx-7{,}6\cdot10^{-23}$; aktivatsiyaning o‘zi uchun bu muhim emas, lekin o‘sha $\Phi$ boshqa formulalarda ham tez-tez kerak bo‘ladi.

pythonimport numpy as np
from scipy.special import erfc        # NumPy’ning o‘zida erf funksiyasi yo‘q

SQRT2 = np.sqrt(2.0)

def gelu(x):
    """Aniq GELU: x·Φ(x), bunda Φ(x) = ½·erfc(−x/√2) — yaqin sonlarni ayirmasdan."""
    x = np.asarray(x, dtype=float)
    return x * 0.5 * erfc(-x / SQRT2)

def gelu_grad(x):
    """Hosila: Φ(x) + x·φ(x)."""
    x = np.asarray(x, dtype=float)
    cdf = 0.5 * erfc(-x / SQRT2)
    pdf = np.exp(-0.5 * x * x) / np.sqrt(2.0 * np.pi)
    return cdf + x * pdf

def gelu_tanh(x):
    # BERT va GPT-2 ning asl kodidagi yaqinlashish
    return 0.5 * x * (1.0 + np.tanh(np.sqrt(2.0 / np.pi) * (x + 0.044715 * x**3)))

np.set_printoptions(precision=5, suppress=True)
x = np.array([-3.0, -1.0, 0.0, 1.0, 3.0])
print(gelu(x))        # [-0.00405 -0.15866  0.       0.84134  2.99595]
print(gelu_grad(x))   # [-0.01195 -0.08332  0.5      1.08332  1.01195]
print(np.abs(gelu_tanh(x) - gelu(x)).max())   # ≈ 4.1e-04 (x = ±3 nuqtalarda)
pythonimport torch
import torch.nn as nn
import torch.nn.functional as F

x = torch.tensor([-1.0, 0.0, 1.0], requires_grad=True)
y = F.gelu(x)                          # −0.1587, 0.0000, 0.8413
y.sum().backward()
print(x.grad)                          # −0.0833, 0.5000, 1.0833 = Φ(x) + x·φ(x)
print(F.gelu(x, approximate="tanh"))   # −0.1588, 0.0000, 0.8412

# Transformerning FFN bloki (BERT va GPT’dagi kabi): d → 4d → d
class FeedForward(nn.Module):
    def __init__(self, d_model=768, mult=4, p_drop=0.1):
        super().__init__()
        self.fc1 = nn.Linear(d_model, mult * d_model)
        self.act = nn.GELU()           # GPT-2 vaznlari uchun: nn.GELU(approximate="tanh")
        self.fc2 = nn.Linear(mult * d_model, d_model)
        self.drop = nn.Dropout(p_drop)

    def forward(self, h):
        return self.drop(self.fc2(self.act(self.fc1(h))))
Qoida

GELU variantini vaznlar o‘qitilgandagidek tanlang: nn.GELU() — aniq, nn.GELU(approximate="tanh") — taqribiy. Yangi model uchun sifatda deyarli farq yo‘q; tanh varianti eski uskunada tezroq bo‘lishi mumkin.

Ko‘p uchraydigan xatolar

  1. GELU chiqishini ReLU’dagidek manfiy emas deb hisoblash. U $-0{,}170$ gacha tushishi mumkin; keyin logarifm, ildiz yoki bo‘lish kelsa, buni hisobga olish kerak.
  2. O‘qitish va xulosa chiqarish orasida yoki modelni konvertatsiya qilishda (ONNX, TensorRT, boshqa freymvork) aniq GELU va tanh yaqinlashishini aralashtirish. Xato kichik, lekin qatlamlar bo‘yicha to‘planadi.
  3. $x\,\sigma(1{,}702x)$ ni GELU bilan adashtirish. Bu xatosi $0{,}02$ gacha bo‘lgan tez yaqinlashish, aslida $\beta=1{,}702$ parametrli SiLU.
  4. GELU gradiyent so‘nishidan to‘liq xalos qiladi deb o‘ylash. $x\to-\infty$ da hosila gaussiana kabi so‘nadi: allaqachon $\operatorname{GELU}'(-4)\approx-0{,}0005$. Kirishlarni normallashtirish baribir kerak.
  5. $\Phi$ ni $\sqrt2$ ga bo‘lishni unutib, $\tfrac12(1+\operatorname{erf}(x))$ deb yozish. Bu $N(0,\tfrac12)$ taqsimot funksiyasi bo‘ladi, ya’ni $x\Phi(\sqrt2x)$ — boshqa egri chiziq.
  • ReLU: $s\to0$ da $x\,\Phi(x/s)$ ning limiti va GELU’ning «skeleti»: $\operatorname{GELU}=\operatorname{ReLU}-|x|\Phi(-|x|)$.
  • SiLU / Swish: «kirish × yumshoq ventil» sxemasi, faqat $\Phi$ o‘rnida sigmoida; $x\,\sigma(1{,}702x)\approx\operatorname{GELU}(x)$.
  • Sigmoida: $\sigma(1{,}702x)$ $\Phi(x)$ ni $0{,}0095$ dan oshmaydigan xato bilan yaqinlashtiradi — logit va probit modellari bog‘lanishi.
  • tanh: GELU’ning eng mashhur yaqinlashishi asosi.
  • Leaky ReLU: $x<0$ da signalni o‘tkazishning boshqa usuli — silliq «chuqurcha» o‘rniga doimiy kichik qiyalik.
  • Adam va MSE: 7-rasmdagi simulyatsiyaning optimizatori va yo‘qotishi.

Xulosa

1) $\operatorname{GELU}(x)=x\,\Phi(x)$: $\varepsilon\sim N(0,1)$ uchun $P(\varepsilon\le x)$ ehtimollikka ko‘paytirilgan kirish; bu kirishga bog‘liq tasodifiy niqobning o‘rtachasi. 2) $\operatorname{GELU}=\operatorname{ReLU}-|x|\Phi(-|x|)$: $x=-0{,}752$ da $-0{,}170$ minimumli silliq ReLU. 3) $\operatorname{GELU}'=\Phi+x\varphi\in[-0{,}129;\,1{,}129]$, $\operatorname{GELU}''=\varphi\,(2-x^2)$. 4) $0{,}044715$ koeffitsiyentli tanh yaqinlashishi ko‘pi bilan $4{,}7\cdot10^{-4}$ ga xato qiladi, lekin bu boshqa funksiya. 5) $x\,\Phi(x/s)$ ReLU ($s\to0$) va $x/2$ ($s\to\infty$) ni bog‘laydi. 6) BERT, GPT va ViT’ning FFN bloklarida turadi.

O‘zingizni tekshiring

1. $\operatorname{GELU}(-1)$ taxminan nimaga teng?
2. GELU’ning noldagi hosilasi nimaga teng?
3. GELU minimumi qayerda?
4. GELU formulasida $\Phi(x)$ nimani anglatadi?
5. $\operatorname{GELU}(3)-\operatorname{GELU}(-3)$ nimaga teng?