Neyron tarmoq formulalari: qo‘llanma · Aktivatsiya funksiyalari

Tanh: giperbolik tangens

Nol atrofida markazlashgan S-shaklli funksiya. Uni mayda detallarigacha tahlil qilamiz: qaysi eksponentalardan yig‘ilgan, nega u «cho‘zilgan sigmoida», 1 − tanh² hosila qayerdan keladi, neyronga nega markazlashgan chiqishlar kerak va tanh chuqur hamda rekurrent tarmoqlarda gradiyentga nima qiladi.

Javharbek Abdulatipov · 35 daq o‘qish
$$\tanh(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}$$

U nima uchun kerak

Sigmoida sonni 0 dan 1 gacha bo‘lgan ulushga aylantiradi. Lekin tarmoq ichida ko‘pincha ulush emas, ishorali signal kerak bo‘ladi: «odatdagidan ko‘p» yoki «odatdagidan kam», «kuchaytirish» yoki «susaytirish». Giperbolik tangens (hyperbolic tangent) — xuddi shu silliq S-egri chiziq, lekin chiqishi $(-1;\,1)$ oraliqda va markazi nolda.

U qayerda uchraydi:

  • rekurrent tarmoqlar — oddiy RNN’da $h_t=\tanh(Wh_{t-1}+Ux_t+b)$; LSTM va GRU’da tanh xotira uchun nomzodni hosil qiladi, LSTM’da esa yacheyka chiqishini ham chegaralaydi;
  • klassik tarmoqlarning yashirin qatlamlari — ReLU davrigacha tanh standart edi va hozir ham kichik tarmoqlarda hamda silliqlik muhim bo‘lgan fizik modellarda (PINN) yaxshi ishlaydi;
  • generator chiqishi — agar rasmlar $[-1;\,1]$ ga normallashtirilgan bo‘lsa, GAN generatorining oxirgi qatlami (masalan, DCGAN) tanh ishlatadi;
  • harakatlar va logitlarni chegaralash — mustahkamlab o‘qitishda (SAC) harakat tanh orqali $(-1;\,1)$ ga siqiladi, Gemma 2 esa logitlarni «yumshoq kesadi»: $c\cdot\tanh(z/c)$;
  • boshqa aktivatsiyalar ichida — GELU ning mashhur yaqinlashuvi tanh orqali yozilgan.
Bir daqiqada asosiysi

$\tanh$ butun son o‘qini $(-1;\,1)$ ga siqadi, koordinatalar boshidan o‘tadi va toq: $\tanh(-x)=-\tanh x$. Bu cho‘zilgan sigmoida: $\tanh x=2\sigma(2x)-1$. Uning hosilasi $1-\tanh^2x$ 1 dan oshmaydi — sigmoida maksimumidan 4 marta katta, — lekin chekkalarda tanh ham xuddi shunday to‘yinadi va gradiyent so‘nadi.

Intuitsiya: nolga qo‘yilgan sigmoida

Ishorali ovoz regulyatorini tasavvur qiling: nol — sukunat, o‘ngga — balandroq, chapga — qarama-qarshi fazada balandroq. Nol atrofida burayotganingizda chiqish kirishga itoatkorlik bilan ergashadi: $\tanh x\approx x$. Uzoqlashgan sari burash qiyinlashadi: chiqish $\pm1$ ga tiralib, boshqa o‘smaydi. Bu to‘yinish (saturation).

Nuqtani torting. To‘q sariq chiziq — urinma, uning qiyaligi hosilaga teng. Kulrang punktir — sigmoida: xuddi shu shakl, lekin yuqoriga surilgan, ikki marta past va to‘rt marta yotiqroq.

1-rasm. tanh, uning urinmasi va hosilasi (pastda). Ko‘k nuqtani torting yoki u fokusda bo‘lganda strelkalarni bosing. Hosila maksimumi $x=0$ da $1$ ga teng, sigmoidada esa $0{,}25$. $x=1$ da: $\tanh 1=0{,}7616$, $\tanh' 1=0{,}4200$.
Nimaga e’tibor berish kerak

$x=2$ da tanh allaqachon $0{,}964$, hosila esa bor-yo‘g‘i $0{,}071$ — markazdagidan 14 marta kichik. $|x|>2{,}99$ da hosila $0{,}01$ dan pastga tushadi: kirish o‘sishda davom etadi, chiqish esa deyarli joyida turadi.

Formula mayda detallarigacha

Formulada ikkita eksponenta bor: o‘suvchi $e^{x}$ va kamayuvchi $e^{-x}$. Surat — ularning ayirmasi, maxraj — yig‘indisi. Bu ifodalarning yarmilari o‘z nomlariga ega — giperbolik sinus va kosinus:

$$\begin{aligned}\sinh x&=\frac{e^{x}-e^{-x}}{2}\\[4pt]\cosh x&=\frac{e^{x}+e^{-x}}{2}\\[4pt]\tanh x&=\frac{\sinh x}{\cosh x}\end{aligned}$$
$e^{x}-e^{-x}$
ayirma toq: $x\to-x$ almashtirishda ishorasini o‘zgartiradi; $x>0$ da musbat;
$e^{x}+e^{-x}$
yig‘indi doim musbat va 2 dan kichik emas — maxraj hech qachon nolga aylanmaydi;
$|\sinh x|<\cosh x$
ayirma moduli doim yig‘indidan kichik, shuning uchun $|\tanh x|<1$;
$x\to\pm\infty$
eksponentalardan biri e’tiborsiz darajada kichik bo‘lib qoladi va kasr $\pm1$ ga intiladi.

Surat va maxrajni $e^{x}$ ga yoki $e^{-x}$ ga ko‘paytirib, hisoblash uchun qulay shakllarni olamiz, oxirgi shakl esa tanh’ni sigmoida bilan bog‘laydi:

$$\begin{aligned}\tanh x&=\frac{e^{2x}-1}{e^{2x}+1}=\frac{1-e^{-2x}}{1+e^{-2x}}\\[4pt]&=2\sigma(2x)-1\end{aligned}$$
2-rasm. Chapda: $\sinh$ va $\cosh$ — eksponentalarning yarim ayirmasi va yarim yig‘indisi; tanh — ularning nisbati. $x_0=1$ da: $\sinh 1=1{,}175$, $\cosh 1=1{,}543$, nisbat $0{,}7616=\tanh 1$. O‘ngda: «Boshlash»ni bosing — sigmoida uch qadamda tanh’ga aylanadi: gorizontal bo‘yicha 2 marta siqamiz, vertikal bo‘yicha 2 marta cho‘zamiz, 1 ga pastga tushiramiz.
$x$$\tanh x$$\tanh' x$$\sigma(x)$
−3−0,99510,00990,0474
−2−0,96400,07070,1192
−1−0,76160,42000,2689
−0,5−0,46210,78640,3775
00,00001,00000,5000
0,50,46210,78640,6225
10,76160,42000,7311
20,96400,07070,8808
30,99510,00990,9526

Jadval toqlikni ko‘rsatadi: $\tanh(-x)=-\tanh x$, hosila esa juft funksiya. Taqqoslash uchun yonida sigmoida: uning qiymatlari noldan emas, $0{,}5$ ga nisbatan simmetrik.

Xossalar va shakl

  • Aniqlanish sohasi — barcha haqiqiy sonlar; qiymatlar sohasi — ochiq oraliq $(-1;\,1)$: $\pm1$ qiymatlariga erishilmaydi.
  • Toqlik: $\tanh(-x)=-\tanh x$, grafik koordinatalar boshiga nisbatan simmetrik, $\tanh 0=0$.
  • Monotonlik: qat’iy o‘sadi, chunki istalgan $x$ da $\tanh' x=1-\tanh^2x>0$.
  • Asimptotalar: $\lim_{x\to\pm\infty}\tanh x=\pm1$.
  • Burilish nuqtasi — yagona, $x=0$: $x<0$ da funksiya pastga qavariq, $x>0$ da — yuqoriga.
  • 1 konstantali Lipshits sharti: $|\tanh a-\tanh b|\le|a-b|$; xususan, $|\tanh x|\le|x|$, tenglik faqat $x=0$ da.
  • Nol atrofida deyarli ayniyat: $\tanh x=x-\tfrac{x^3}{3}+\dots$ — kichik vaznlarda tanh tarmog‘i deyarli chiziqli ishlaydi.
Nega tanh x = 2σ(2x) − 1

Sigmoida ta’rifi $\sigma(u)=1/(1+e^{-u})$ ga $u=2x$ ni qo‘yamiz:

$$2\sigma(2x)-1=\frac{2}{1+e^{-2x}}-\frac{1+e^{-2x}}{1+e^{-2x}}=\frac{1-e^{-2x}}{1+e^{-2x}}=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}=\tanh x$$

Oxiridan oldingi qadamda surat va maxraj $e^{x}$ ga ko‘paytirilgan. Teskarisi: $\sigma(x)=\tfrac12\bigl(1+\tanh\tfrac x2\bigr)$. Demak, yashirin tanh’li tarmoqni xuddi shunday ifoda kuchiga ega yashirin sigmoidali tarmoqqa qayta yozish mumkin — faqat vazn masshtablari va siljishlar o‘zgaradi. Farq o‘qitish qanday borishida (markazlashganlik bo‘limiga qarang).

Teskari funksiya va qo‘shish formulasi

$y=\tanh x$ ni $x$ ga nisbatan yechamiz: $y=\frac{e^{2x}-1}{e^{2x}+1}$ dan $e^{2x}=\frac{1+y}{1-y}$, bundan

$$\operatorname{artanh}y=\frac12\ln\frac{1+y}{1-y},\qquad -1<y<1$$

Masalan, $\operatorname{artanh}0{,}5\approx0{,}549$. Yana bir foydali ayniyat — qo‘shish formulasi:

$$\tanh(a+b)=\frac{\tanh a+\tanh b}{1+\tanh a\,\tanh b}$$

Bu aynan tezliklarni relyativistik qo‘shish (yorug‘lik tezligi ulushlarida): $0{,}5c$ va $0{,}5c$ $c$ emas, $\frac{0{,}5+0{,}5}{1+0{,}25}c=0{,}8c$ beradi. «tanh olamida» $(-1;\,1)$ dagi ikki sonning yig‘indisi hech qachon undan chiqmaydi.

Yumshoq cheklagich: c · tanh(x / c)

$c\tanh(x/c)$ funksiyasi nol atrofida kirishni deyarli o‘zgartirmaydi ($\approx x$), katta qiymatlarni esa silliq ravishda $\pm c$ ga bosadi. Qattiq kesish $\operatorname{clip}(x,-c,c)$ dan farqli, unda sinishlar yo‘q va hosila hech qayerda sakrab nolga tushmaydi. Gemma 2 da diqqat logitlari ($c=50$) va yakuniy logitlar ($c=30$) shunday cheklanadi, toki ular o‘qitish davomida haddan tashqari o‘sib ketmasin.

Hosila: tanh′ = 1 − tanh²

Sahifaning asosiy formulasi. Uni uch usulda keltirib chiqaramiz — har biri boshqa joyda asqotadi.

1-usul. Bo‘linma hosilasi

$u=e^{x}-e^{-x}$, $v=e^{x}+e^{-x}$ bo‘lsin. U holda $u'=v$ va $v'=u$, va kasrni differensiallash qoidasiga ko‘ra:

$$\tanh' x=\frac{u'v-uv'}{v^{2}}=\frac{v^{2}-u^{2}}{v^{2}}=1-\Bigl(\frac{u}{v}\Bigr)^{2}=1-\tanh^{2}x$$
2-usul. Asosiy giperbolik ayniyat orqali

Giperbolik funksiyalar uchun $\cosh^2x-\sinh^2x=1$ (eksponentalarni qo‘yib tekshiring), $\sinh' x=\cosh x$ va $\cosh' x=\sinh x$. U holda

$$\tanh' x=\frac{\cosh x\cdot\cosh x-\sinh x\cdot\sinh x}{\cosh^{2}x}=\frac{1}{\cosh^{2}x}=\operatorname{sech}^{2}x$$

Ayniyatni $\cosh^2x$ ga bo‘lib, $1-\tanh^2x=\operatorname{sech}^2x$ ni olamiz — boshqacha yozilgan o‘sha formula. $\operatorname{sech}^2$ shakli katta $|x|$ da kodda foydali.

3-usul. Sigmoida orqali

$\tanh x=2\sigma(2x)-1$ dan zanjir qoidasiga ko‘ra:

$$\tanh' x=2\cdot\sigma'(2x)\cdot2=4\sigma(2x)\bigl(1-\sigma(2x)\bigr)$$

Bundan darhol ko‘rinadiki, hosila maksimumi sigmoidadagidek $\tfrac14$ emas, $4\cdot\tfrac14=1$: chiqishning ikki baravar katta oralig‘i va kirishning ikki baravar siqilgan shkalasi 4 ko‘paytuvchini beradi.

$$\tanh' x=1-\tanh^{2}x$$

Amalda: to‘g‘ri o‘tishda tarmoq $t=\tanh z$ ni allaqachon hisoblagan. Teskari o‘tishda hosila bitta ko‘paytirish $1-t^2$ ga tushadi — yangi eksponentalarsiz. Shuning uchun freymvorklar teskari o‘tish uchun tanh’ning kirishini emas, chiqishini saqlaydi.

Ikkinchi hosila va eng keskin egilishlar

Yana bir marta differensiallaymiz: $\tanh'' x=-2\tanh x\,(1-\tanh^2x)$. U faqat $x=0$ da (burilish nuqtasi) nolga teng, ekstremumlariga esa $\tanh^2x=\tfrac13$ da, ya’ni $x=\pm\operatorname{artanh}\tfrac{1}{\sqrt3}\approx\pm0{,}658$ da erishadi; u yerdagi qiymatlar $\mp\tfrac{4}{3\sqrt3}\approx\mp0{,}770$. Bu nuqtalarda qiyalik allaqachon $1-\tfrac13=\tfrac23$ va eng tez kamayadi: shu yerda $y\approx x$ to‘g‘ri chiziq to‘yinish tomon egilishga o‘tadi.

Nol atrofida Teylor qatori

$$\tanh x=x-\frac{x^{3}}{3}+\frac{2x^{5}}{15}-\frac{17x^{7}}{315}+\frac{62x^{9}}{2835}-\dots,\qquad |x|<\frac{\pi}{2}$$

Qator faqat $|x|<\pi/2\approx1{,}571$ da yaqinlashadi: $\cosh x$ maxraj kompleks nuqtalar $x=\pm i\pi/2$ da nolga aylanadi va yaqinlashish radiusi eng yaqinigacha bo‘lgan masofaga teng. Bu sigmoidanikidan ($\pi$) ikki marta kichik — axir tanh gorizontal bo‘yicha 2 marta siqilgan.

3-rasm. 1–9 tartibli Teylor ko‘phadlari va $|x|<\pi/2$ yaqinlashish polosasi. $x=1$ da 3-tartibli yaqinlashish $0{,}7616$ o‘rniga $0{,}6667$, 9-tartibli esa $0{,}7679$ beradi. Polosadan tashqarida, $x=2$ da ko‘phadlar uzoqlashadi: 3-tartib $-0{,}667$, 9-tartib esa allaqachon $7{,}889$ beradi.

Markazlashganlik: nega tanh sigmoidadan yaxshiroq o‘qitiladi

Keyingi qatlam neyronini ko‘raylik: $z=\sum_i w_ia_i+b$, bu yerda $a_i$ — oldingi qatlam chiqishlari. Yo‘qotishning vazn bo‘yicha gradiyenti

$$\frac{\partial L}{\partial w_i}=\delta\cdot a_i,\qquad \delta=\frac{\partial L}{\partial z}$$

Agar barcha $a_i>0$ bo‘lsa (sigmoida chiqishlari), bitta misolda gradiyentning barcha komponentalari bir xil ishorali — $\delta$ ishorasida. SGD qadami neyronning barcha vaznlarini yoki yuqoriga, yoki pastga suradi. Optimumga yetish uchun ba’zi vaznlarni oshirib, boshqalarini kamaytirish kerak bo‘lsa, faqat zigzag bo‘ylab yurish qoladi.

Ikkinchi qarash — yo‘qotish sirtining shakli orqali. $\tfrac12(w^\top a-y)^2$ kvadratik yo‘qotishli chiziqli neyron uchun Gesse matritsasi $\mathbb E[aa^\top]=\operatorname{Cov}(a)+\mu\mu^\top$, bu yerda $\mu$ — kirishlar o‘rtachasi. Nolga teng bo‘lmagan o‘rtacha $\mu$ bo‘ylab bitta katta xos qiymat qo‘shadi va «vodiy» cho‘ziladi. Quyidagi $\sigma(z)$ kirishlar uchun xos qiymatlar $0{,}034$ va $0{,}530$ (shartlanganlik soni 15,5), $\tanh(z)$ uchun — $0{,}340$ va $0{,}415$ (1,22).

4-rasm. Chiziqli neyronning ikki vazni $w=(w_1;\,w_2)$ ni 100 ta misolda o‘qitamiz; kirishlar bir xil tasodifiy $z$ lardan chapda $\sigma(z)$, o‘ngda $\tanh(z)$. Qadami $0{,}5$ bo‘lgan SGD $(-1;\,1)$ dan $w^*=(1;\,-1)$ ga yo‘l oladi. Chapda har bir qadam «o‘ngga-yuqoriga» yoki «chapga-pastga» yo‘nalgan (firuza kvadrantlar) va yo‘l cho‘zilgan vodiyni arralaydi; o‘ngda yo‘l ham shovqinli (SGD har safar bitta misol oladi), lekin optimumga muntazam «arralash»siz boradi. 50 qadamdan keyin optimumgacha masofa $1{,}252$ va $0{,}000$; $0{,}1$ aniqlikka 194 va 21 qadamda erishiladi.
Xulosa

Markazlashgan aktivatsiyalar keyingi qatlamning yo‘qotish sirtini «yumaloqroq» qiladi va gradiyent tushish minimumga to‘g‘riroq boradi. Bu tanh yashirin qatlamlarda sigmoidadan tezroq o‘qitilishining sabablaridan biri (LeKun va boshq., «Efficient BackProp», 1998). Kirishlarni normallashtirish va BatchNorm ham shu g‘oyaga asoslangan.

Tekislikda tanh: burmalar, qirralar va tepaliklar

Ikki kirishli neyron $\tanh(w_1x_1+w_2x_2+b)$ ni hisoblaydi. Tekislikda bu burma: sirt $w^\top x+b=0$ to‘g‘ri chiziq bo‘ylab $-1$ dan $+1$ ga o‘tadi va u bo‘ylab o‘zgarmaydi. Ikki qarama-qarshi burmaning yig‘indisi qirra beradi, to‘rt burma va chiqishdagi yana bitta tanh esa faqat kvadrat ichida $-1$ dan farq qiladigan tepalik beradi.

5-rasm. tanh’dan iborat kichik tarmoq. «1 neyron» — $\tanh(k(0{,}8x_1+0{,}6x_2))$; «2 neyron» — $\tanh(k(x_1+1))-\tanh(k(x_1-1))-1$; «4 + chiqish» — $x_1$ va $x_2$ bo‘yicha to‘rtta shunday burmaning yig‘indisi $s$, so‘ng $\tanh(2(s-3))$. $k=2$ da tepalik cho‘qqisida $f(0;\,0)=0{,}937$, uzoqda esa $f=-1{,}000$. Punktir — har bir yashirin neyron kirishi nolga teng bo‘lgan to‘g‘ri chiziqlar.

Universal approksimatsiya teoremasi (Sibenko, 1989; Xornik, 1991) shunday ishlaydi: yetarlicha ko‘p tanh neyronli bitta yashirin qatlamli tarmoq chegaralangan yopiq to‘plamdagi istalgan uzluksiz funksiyani istalgan aniqlikda yaqinlashtiradi. Tepaliklar burmalardan yig‘iladi, tepaliklardan esa istalgan relyefni yig‘ish mumkin. Bizning tepalik ko‘rgazmalilik uchun chiqishda ikkinchi tanh ishlatadi, teoremaga esa chiziqli chiqishli bitta yashirin qatlam yetarli. U bunday vaznlar mavjudligini aytadi, lekin qancha neyron kerakligini va o‘qitish ularni topishini aytmaydi.

O‘qitishda tanh: qatlamlar bo‘yicha aktivatsiyalar va egri chiziqni moslash

Chuqur tarmoqda signal bilan nima sodir bo‘ladi

Har bir qatlam vaznlari $g^2/n$ dispersiya bilan tasodifiy tanlangan bo‘lsin, bu yerda $n$ — neyron kirishlari soni. Agar $g$ kichik bo‘lsa, signal qatlamdan qatlamga so‘nadi va tanh deyarli chiziqli funksiya kabi ishlaydi. Agar $g$ katta bo‘lsa, neyron kirishlari katta va tanh to‘yinishga ketadi: chiqishlar $\pm1$ ga yopishadi, hosilalar deyarli nol.

6-rasm. Har biri 100 neyronli 10 qatlamdan iborat tasodifiy tarmoq, kirishlar $N(0,1)$; har bir qatlamda 2000 ta aktivatsiya gistogrammasi (20 misol × 100 neyron), to‘q sariq nuqta — o‘rtacha. $g=1$ da tanh: oxirgi qatlam o‘rtachasi $0{,}013$, tarqoqlik esa asta-sekin $0{,}225$ gacha qisqaradi; $g=0{,}5$ da signal so‘nadi: tarqoqlik $0{,}001$ gacha tushadi, $g=3$ da neyronlarning qariyb yarmi to‘yingan ($|a|>0{,}95$ bo‘lgan qiymatlar $48\%$). $g=5/3$ da tarqoqlik $0{,}65$ atrofida saqlanadi, $10\%$ to‘yingan. Sigmoidada har bir qatlamda o‘rtacha $0{,}5$ atrofida (oxirgisida $0{,}516$) — chiqishlar markazlashmagan.

Shuning uchun tanh qatlamlarida Gloro (Xavier) initsializatsiyasi, $\operatorname{Var}w=\frac{2}{n_\text{in}+n_\text{out}}$, olinadi, PyTorch esa uni $g=5/3$ kuchaytirishga ko‘paytirishni tavsiya qiladi (calculate_gain('tanh')): ko‘paytuvchi tanh signalni siqishini qoplaydi. Kvadrat qatlam uchun bu aynan 6-rasmdagi $g=5/3$ holati.

tanh tarmog‘i egri chiziqni moslaydi

$H$ neyronli yashirin qatlam va chiziqli chiqish: $\hat y(x)=\sum_{k=1}^{H}v_k\tanh(w_kx+b_k)+c$. Har bir qo‘shiluvchi — chetlari silliq «zina»; o‘qitish zinalarni suradi, cho‘zadi va masshtablaydi, toki ularning yig‘indisi ma’lumotlarga tushsin.

7-rasm. Shovqinli ($\sigma=0{,}08$) $y=0{,}8\sin(2{,}2x)+0{,}3x$ ning 40 nuqtasi, to‘liq gradiyent va $0{,}05$ qadamli Adam. Firuza egri chiziqlar — alohida neyronlar hissasi, ko‘k — ularning yig‘indisi. 5 neyron bilan MSE $1{,}059$ dan taxminan $0{,}05$ lik platogacha tushadi (200–380-qadamlar), so‘ng neyronlardan biri «o‘z rolini topadi»: 500-qadamda xato $0{,}006$, 800-qadamda — $0{,}0041$, ya’ni shovqin darajasida ($0{,}08^2=0{,}0064$). 3 neyron bilan tarmoq taxminan $0{,}11$ da tiqilib qoladi (2000-qadamda $0{,}106$), 8 neyron bilan 400-qadamdayoq $0{,}0039$ ga yetadi.
Plato — bu to‘yinish

Yo‘qotish egri chizig‘idagi uzun platolar ko‘pincha neyronlarning bir qismi tanh’ning yassi chekkalarida ishlayotganini bildiradi: ularning hosilasi kichik va gradiyent parametrlarini deyarli siljitmaydi. Kirishlarni normallashtirish, ehtiyotkor initsializatsiya va Adam kabi adaptiv optimizatorlar yordam beradi.

Rekurrent tarmoqlarda va LSTM’da tanh

Oddiy rekurrent tarmoq holatni har qadamda bir xil formula bilan yangilaydi: $h_t=\tanh(Wh_{t-1}+Ux_t+b)$. Bu yerda tanh saqlagich vazifasini bajaradi: matn qanchalik uzun bo‘lmasin, holat $(-1;\,1)$ da qoladi va «portlamaydi». Lekin chegaralanganlik uchun gradiyent bilan to‘lashga to‘g‘ri keladi (ko‘paytuvchilar chapda $s=T$ dan o‘ngda $s=t+1$ gacha ko‘paytiriladi):

$$\frac{\partial h_T}{\partial h_t}=\prod_{s=t+1}^{T}\operatorname{diag}\bigl(1-h_s^{2}\bigr)\,W$$

Har bir ko‘paytuvchida $1-h_s^2\le1$ bor. Vaznlar kichik bo‘lsa, ko‘paytma eksponensial so‘nadi. Vaznlar katta bo‘lsa, holatlar $\pm1$ ga bosiladi, $1-h_s^2\to0$ — va gradiyent yana so‘nadi. U faqat shu ikki rejim orasidagi tor oynada omon qoladi. Ko‘p o‘lchovli RNN’da bu oyna chegarasida gradiyent portlashi ham mumkin (Paskanu va boshq., 2013), shuning uchun tanh’li RNN gradiyent normasini kesish bilan o‘qitiladi.

8-rasm. Skalyar RNN $h_t=\tanh(wh_{t-1}+x_t)$, 30 qadam, kirishlar $x_t\sim N(0;\,0{,}2^2)$ (kulrang ustunlar). Pastda — logarifmik shkalada $|\partial h_{30}/\partial h_t|$. $w=1$ da birinchi qadamdan oxirgisigacha gradiyent $3{,}1\cdot10^{-4}$ gacha kamayadi; $w=0{,}5$ da — $5{,}7\cdot10^{-11}$ gacha; $w=1{,}2$ da — $1{,}3\cdot10^{-3}$; holat to‘yingan $w=2$ va $w=3$ da esa — $7{,}2\cdot10^{-18}$ va $1{,}6\cdot10^{-38}$ gacha.

LSTM bu muammoni alohida «magistral» — tanh orqali emas, qo‘shish orqali yangilanadigan yacheyka holati $c_t$ bilan hal qiladi:

$$\begin{aligned}g_t&=\tanh\bigl(W_g[h_{t-1},x_t]+b_g\bigr)\\c_t&=f_t\odot c_{t-1}+i_t\odot g_t\\h_t&=o_t\odot\tanh(c_t)\end{aligned}$$

Bu yerda $f_t,i_t,o_t\in(0;\,1)$ — sigmoidalardagi ventillar, tanh esa ikki vazifani bajaradi: nomzod $g_t\in(-1;\,1)$ xotirani ham oshira, ham kamaytira oladi (sigmoida faqat qo‘sha olardi), $\tanh(c_t)$ esa chiqishni chegaralaydi. $c_{t-1}\to c_t$ zanjiri bo‘ylab gradiyent (ventillarning $h_{t-1}$ ga bog‘liqligini hisobga olmasak) $\tanh'$ ko‘paytuvchisiz $f_t$ ga ko‘payadi, shuning uchun $f_t\approx1$ da u uzoq qadamlargacha yetib boradi.

Biroz tarix

Yan LeKun 1998 yilda masshtablangan tangens $1{,}7159\tanh(2x/3)$ ni tavsiya qilgan: u $f(\pm1)=\pm1$ va chiqishning deyarli birlik dispersiyasini beradi. LSTM (Xoxrayter va Shmidxuber, 1997) tanh’ni yigirma yil davomida rekurrent tarmoqlar standartiga aylantirdi. O‘ramli tarmoqlarda uni ReLU siqib chiqardi: AlexNet maqolasida (2012) ReLU’li to‘rt qatlamli o‘ramli tarmoq CIFAR-10 o‘quv to‘plamida 25% xatoga xuddi shunday tanh’li tarmoqdan 6 marta tezroq yetdi.

Kodda: barqaror va kutilmagan holatlarsiz

Eksponentalar orqali sodda formula $x=1000$ da $e^{1000}=\infty$ ni hisoblaydi va natijada $\infty/\infty=\text{nan}$ chiqadi. O‘rnatilgan np.tanh va torch.tanh barqaror: $x\gtrsim19$ da ular float64 da aynan $1{,}0$ qaytaradi. Lekin unda $1-\tanh^2 x$ aynan 0 beradi, holbuki $x=20$ da haqiqiy qiymat taxminan $1{,}7\cdot10^{-17}$. Agar uzoq chekkalarda hosila kerak bo‘lsa, uni $\operatorname{sech}^2$ orqali barqaror shaklda hisoblang.

pythonimport numpy as np

def tanh_grad_from_output(t):
    """Hisoblangan chiqish t = tanh(x) orqali hosila: bitta ko‘paytirish."""
    return 1.0 - t * t

def tanh_grad(x):
    """sech²x = 4e^(−2|x|) / (1 + e^(−2|x|))²:
    to‘lib ketishsiz va aniqlik yo‘qotmasdan."""
    e = np.exp(-2.0 * np.abs(x))
    return 4.0 * e / (1.0 + e) ** 2

def naive_tanh(x):
    return (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))

print(naive_tanh(1000.0))       # nan: inf / inf (va to‘lib ketish haqida ogohlantirish)
print(np.tanh(1000.0))          # 1.0 — o‘rnatilgan funksiya barqaror
print(1 - np.tanh(20.0) ** 2)   # 0.0: float64 da tanh(20) 1 gacha yaxlitlanadi
print(tanh_grad(20.0))          # 1.6993417021166355e-17 — to‘g‘ri qiymat
pythonimport torch
import torch.nn as nn

x = torch.tensor([-2.0, 0.0, 2.0], requires_grad=True)
y = torch.tanh(x)               # tensor([-0.9640,  0.0000,  0.9640])
y.sum().backward()
print(x.grad)                   # tensor([0.0707, 1.0000, 0.0707]) = 1 − tanh²

# tanh uchun initsializatsiya: kuchaytirish 5/3
layer = nn.Linear(256, 256)
nn.init.xavier_uniform_(layer.weight, gain=nn.init.calculate_gain("tanh"))

# tanh’li rekurrent tarmoq va portlashga qarshi gradiyentni kesish
rnn = nn.RNN(input_size=32, hidden_size=64, nonlinearity="tanh", batch_first=True)
out, h = rnn(torch.randn(8, 100, 32))   # uzunligi 100 bo‘lgan 8 ta ketma-ketlik
out.pow(2).mean().backward()
nn.utils.clip_grad_norm_(rnn.parameters(), max_norm=1.0)
Qoida

O‘rnatilgan tanh va avtomatik differensiallashdan foydalaning; teskari o‘tishda — saqlangan chiqishdan $1-t^2$ formulasi. tanh tarmoqlari uchun — $5/3$ kuchaytirishli Gloro (Xavier) initsializatsiyasi, RNN uchun — gradiyent normasini kesish.

Ko‘p uchraydigan xatolar

  1. Ehtimollik uchun chiqishda sigmoida o‘rniga tanh. tanh chiqishi $(-1;\,1)$ da yotadi va ehtimollik emas. Binar klassifikatsiyaga sigmoida va BCE kerak; maqsadlar $[-1;\,1]$ ga normallashtirilgan bo‘lsa, chiqishdagi tanh o‘rinli.
  2. Chiqish o‘rniga kirish bo‘yicha hosila. $1-t^2$ formulasi chiqish $t=\tanh x$ ga qo‘llaniladi. Ko‘p uchraydigan xato — kirishdan $1-x^2$: $x=2$ da u $0{,}071$ o‘rniga $-3$ beradi.
  3. Normallashtirilmagan kirishlar va katta vaznlar. Agar belgilar yuzlab tartibda yoki vaznlar juda katta bo‘lsa, tanh birinchi qadamlardanoq to‘yingan va deyarli o‘rganmaydi. Ma’lumotlarni standartlashtiring va tanh uchun mo‘ljallangan initsializatsiyani oling.
  4. «tanh so‘nish muammosini hal qiladi». U sigmoidadan yaxshiroq (hosila 1 gacha va markazlashganlik), lekin u ham to‘yinadi. Chuqur tarmoqlar uchun — ReLU oilasi, normallashtirish va qoldiq bog‘lanishlar; ketma-ketliklar uchun — LSTM/GRU.
  5. exp orqali o‘zi yozilgan tanh. Katta $|x|$ da nan beradi. np.tanh, torch.tanh dan foydalaning.
  • Sigmoida: $\tanh x=2\sigma(2x)-1$ va $\sigma(x)=\tfrac12(1+\tanh\tfrac x2)$; hosilalar $\tanh' x=4\sigma'(2x)$ kabi bog‘langan.
  • ReLU: $x>0$ da to‘yinmaydi va tanh’ni chuqur o‘ramli tarmoqlardan siqib chiqardi.
  • GELU: mashhur yaqinlashuv $0{,}5x\bigl(1+\tanh\bigl(\sqrt{2/\pi}\,(x+0{,}044715x^3)\bigr)\bigr)$.
  • SiLU: $x\sigma(x)=\tfrac x2\bigl(1+\tanh\tfrac x2\bigr)$ — «yumshoq ventil» rolidagi o‘sha S-egri chiziq.
  • MSE: maqsadlar $[-1;\,1]$ da bo‘lganda tanh chiqishi uchun tabiiy juftlik.
  • Adam: 7-rasmdagi optimizator; moslashuvchan qadam unga to‘yinish keltirib chiqargan platolardan o‘tishga yordam beradi.

Xulosalar

1) $\tanh x=\frac{e^x-e^{-x}}{e^x+e^{-x}}=\frac{\sinh x}{\cosh x}=2\sigma(2x)-1$ $\mathbb R$ ni $(-1;\,1)$ ga akslantiradi, toq va noldan o‘tadi. 2) $\tanh'=1-\tanh^2\le1$, maksimum nolda, chekkalarda — to‘yinish. 3) Teylor qatori $x-\frac{x^3}{3}+\dots$ $|x|<\pi/2$ da yaqinlashadi. 4) Markazlashgan chiqishlar keyingi qatlamni sigmoidaga qaraganda tezroq o‘qitadi. 5) tanh burmalarining yig‘indilari kompaktdagi istalgan uzluksiz funksiyani yaqinlashtiradi; initsializatsiya — $5/3$ kuchaytirishli Gloro (Xavier). 6) RNN’da tanh holatni chegaralangan saqlaydi, lekin vaqt bo‘yicha gradiyent so‘nadi — LSTM shundan.

O‘zingizni tekshiring

1. Ma’lumki, $\tanh 0{,}5\approx0{,}462$. $\tanh(-0{,}5)$ nimaga teng?
2. Neyron $t=\tanh z=0{,}8$ chiqardi. $\tanh' z$ hosila nimaga teng?
3. Qaysi ayniyat to‘g‘ri?
4. Nega yashirin qatlamlarda tanh odatda sigmoidadan tezroq o‘qitiladi?
5. tanh’li RNN’da rekurrent vazn juda katta qilindi. Ko‘p qadamlar orqali gradiyent bilan nima bo‘ladi?