Neyron tarmoq formulalari: qo‘llanma · Keyingi bosqich

Focal Loss: qiyin misollarga qaraydigan yo‘qotish

Bitta (1 − p_t)^γ ko‘paytuvchili kross-entropiya. U oson misollarni yuzlab marta qanday so‘ndirishini, nega gradiyent monoton bo‘lmay qolishini, RetinaNet’dagi γ = 2 va α = 0,25 qayerdan kelishini, 1 : 1000 muvozanatsizlikda yo‘qotish bilan nima bo‘lishini va focal loss’da o‘qitilgan model ehtimolliklari nega o‘rtaga surilishini mayda detallarigacha tahlil qilamiz.

Javharbek Abdulatipov · 35 daq o‘qish
$$\mathrm{FL}(p_t)=-\alpha_t\,(1-p_t)^{\gamma}\,\log p_t$$

U nima uchun kerak

RetinaNet kabi obyekt detektori bitta rasmda yuz mingga yaqin «anchor»ni — har birida obyekt bo‘lishi mumkin bo‘lgan to‘rtburchaklarni tekshiradi. Kadrda obyektlar bir nechta, qolgan hammasi — fon. Ko‘pchilik fon anchorlari arzimas: osmon, devor, asfalt. Model ularni ishonch bilan fon deb atashni tez o‘rganadi, lekin kross-entropiya baribir har biri uchun kichik yo‘qotish hisoblaydi. Yuz ming kichik yo‘qotish kattasiga qo‘shiladi — va bu yig‘indi hamma narsa aynan ular uchun qilingan bir nechta qiyin misollar signalini bosib ketadi.

Lin, Goyal, Girshik, Xe va Dollar (2017) oson misollarni tashlab yubormaslikni va ma’lumotlarni qayta tanlamaslikni, balki yo‘qotishning o‘zini o‘zgartirishni taklif qildi: kross-entropiyani $(1-p_t)^\gamma$ ga ko‘paytirish. Ishonch bilan tanilgan misol uchun ko‘paytuvchi deyarli nol, qiyini uchun deyarli bir. U qayerda qo‘llaniladi:

  • bir bosqichli detektorlar (one-stage detectors) — RetinaNet, undan keyin FCOS, ATSS va boshqa zich detektorlar;
  • segmentatsiya — ayniqsa tibbiy, bu yerda qiziqish sohasi piksellarning foiz ulushlarini egallaydi (ko‘pincha Dice bilan juftlikda);
  • kamyob sinfli jadval masalalari — firibgarlik, mijozlar ketishi, anomaliyalar; bustingda focal loss foydalanuvchi maqsad funksiyasi sifatida beriladi;
  • chuqur tarmoqlarni kalibrlash — focal loss ba’zan CE’da o‘qitilgan katta tarmoqlarning haddan tashqari ishonchiga qarshi qo‘llaniladi (Mukhoti va boshq., 2020).
Bir daqiqada asosiysi

$p_t$ — model to‘g‘ri sinfga bergan ehtimollik. $\mathrm{FL}=-(1-p_t)^\gamma\log p_t$: $\gamma=0$ da bu oddiy kross-entropiya, $\gamma=2$ da $p_t=0{,}9$ li misol 100 marta yengil, $p_t=0{,}3$ lisi esa atigi 2 marta yengil. $\alpha_t$ ko‘paytuvchi qo‘shimcha ravishda sinflar vaznini beradi. Narxi — FL halol ehtimolliklarga o‘rgatmaydi: bashoratlar o‘rtaga suriladi, ularning kalibrlanishini tekshirish kerak.

Intuitsiya: har bir misol uchun ovoz balandligi

O‘qituvchi o‘quvchilar savollariga javob beradigan sinfni tasavvur qiling. Ming o‘quvchi javobini o‘zi biladigan savollarni beradi, yigirmatasi esa haqiqatan qiyinlarini. Agar har bir savolga bir xil vaqt ajratilsa, qiyinlariga vaqt qolmaydi. Focal loss — ovoz balandligi regulyatori: model misolga qanchalik ishonch bilan javob bersa, uning umumiy yig‘indidagi ovozi shunchalik past.

Nuqtani torting va $\gamma$ ni o‘zgartiring. Kulrang shtrixli egri chiziq — kross-entropiya $-\ln p_t$. Ko‘k — focal loss: misollar allaqachon to‘g‘ri klassifikatsiya qilingan o‘ng yarmida u nolga ancha erta yopishadi.

1-rasm. $\gamma=0;\,0{,}5;\,1;\,2;\,5$ uchun $\mathrm{FL}(p_t)$ oilasi (RetinaNet maqolasining 1-rasmidagi kabi). $\gamma=2$ va $p_t=0{,}9$ da: $\mathrm{CE}=0{,}105$, $(1-p_t)^2=0{,}01$ ko‘paytuvchi, $\mathrm{FL}=0{,}00105$ — 100 marta kichik. Chapda, $p_t$ kichik joyda, egri chiziqlar deyarli mos tushadi.
Nimaga e’tibor berish kerak

Focal loss qiyin misollarga deyarli tegmaydi va oson misollarni juda kuchli so‘ndiradi. $p_t\to0$ da $(1-p_t)^\gamma\to1$ va $\mathrm{FL}\approx\mathrm{CE}$. $p_t\to1$ da yo‘qotish CE’dagidek $1-p_t$ kabi emas, $(1-p_t)^{\gamma+1}$ kabi kamayadi.

Formula mayda detallarigacha

$$\mathrm{FL}(p_t)=-\,\alpha_t\,(1-p_t)^{\gamma}\,\log p_t,\qquad p_t=\begin{cases}p, & y=1,\\ 1-p, & y=0\end{cases}$$
$p=\sigma(z)$
model $z$ logitdan olgan 1-sinf ehtimolligi (sigmoida orqali; ko‘p sinfli holatda — softmax orqali);
$p_t$
to‘g‘ri sinf ehtimolligi: model bu misolda qanchalik haq; $p_t>0{,}5$ — misol to‘g‘ri klassifikatsiya qilingan;
$-\log p_t$
oddiy kross-entropiya: $p_t=1$ da nol, $p_t\to0$ da cheksizlik;
$(1-p_t)^\gamma$
modulyatsiyalovchi ko‘paytuvchi (modulating factor): «model hali qanchalik adashyapti» $\gamma$ darajasida;
$\gamma\ge0$
fokuslash parametri (focusing parameter): $\gamma=0$ — CE, qancha katta bo‘lsa, oson misollar shuncha kuchli so‘ndiriladi; RetinaNet’da $\gamma=2$;
$\alpha_t$
sinf vazni: pozitivlar uchun $\alpha$, negativlar uchun $1-\alpha$; RetinaNet’da $\alpha=0{,}25$.

$p_t$ orqali yozish — asosiy usul: binar kross-entropiyaning $-y\log p-(1-y)\log(1-p)$ ikki tarmog‘i o‘rniga bitta, $-\log p_t$ hosil bo‘ladi. Logit tilida $y=1$ da $z_t=z$ va $y=0$ da $z_t=-z$ deb kiritish qulay; shunda $p_t=\sigma(z_t)$.

$p_t$$\mathrm{CE}$$(1-p_t)^2$$\mathrm{FL}_{\gamma=2}$$\mathrm{CE}/\mathrm{FL}$
0,12,3030,811,8651,23
0,31,2040,490,5902,04
0,50,6930,250,1734
0,70,3570,090,032111,1
0,90,1050,010,00105100
0,990,01010,0001$1{,}0\cdot10^{-6}$10 000

Oxirgi ustun — focal loss kross-entropiyadan necha marta kichik; bu aynan $1/(1-p_t)^\gamma$. Qo‘llanmadagi misol: $\gamma=2$ da $p_t=0{,}9$ li oson misol $0{,}105$ ga qarshi $0{,}00105$ beradi (100 marta kam), $p_t=0{,}3$ li qiyini — $1{,}204$ ga qarshi $0{,}590$ (taxminan ikki marta).

Oddiy shkalada $0{,}001$ va $0{,}000001$ qiymatlarini farqlab bo‘lmaydi, shuning uchun yo‘qotishlarni logarifmik shkalada ko‘rish foydali: u yerda ko‘paytuvchi vertikal siljishga aylanadi.

2-rasm. Chapda — $(1-p_t)^\gamma$ modulyatsiyalovchi ko‘paytuvchi (och egri chiziqlar — $\gamma=0{,}5;\,1;\,2;\,5$). O‘ngda — logarifmik shkaladagi CE va FL; strelka — ular orasidagi farq, ko‘paytuvchi logarifmi. $\gamma=2$ da: $p_t=0{,}9$ da farq 100 marta, $p_t=0{,}99$ da — 10 000 marta.

Xossalar

  • Kross-entropiyani umumlashtiradi: $\gamma=0$, $\alpha_t=1$ da $\mathrm{CE}=-\log p_t$ chiqadi.
  • CE’dan katta emas: $0\le\mathrm{FL}\le\mathrm{CE}$, chunki $\gamma\ge0$ da $0\le(1-p_t)^\gamma\le1$.
  • $p_t$ bo‘yicha kamayadi: $(1-p_t)^\gamma$ va $-\log p_t$ ko‘paytuvchilarining ikkalasi manfiy emas va kamayuvchi, shuning uchun to‘g‘ri javob qancha ishonchli bo‘lsa, yo‘qotish shuncha kichik.
  • Chekkadagi xulq: $p_t\to1$ da $\mathrm{FL}\approx(1-p_t)^{\gamma+1}$, chunki $-\log p_t\approx1-p_t$.
  • Logit bo‘yicha qavariq emas $\gamma>0$ da: juda qiyin misollar uchun ($\gamma=2$ da — $p_t<0{,}058$, $z_t<-2{,}79$ uchun) $z_t$ bo‘yicha ikkinchi hosila manfiy. Kross-entropiya logit bo‘yicha hamma joyda qavariq.
  • Qat’iy xos baholash qoidasi emas (proper scoring rule): kutilgan FL minimumiga haqiqiy ehtimollikda erishilmaydi. Shuning uchun FL da o‘rganilgan ehtimolliklarni kalibrlash kerak ($\alpha$ bo‘limiga qarang).
Muvozanatsizlikka qarshi boshqa usullar bilan taqqoslash

Sinflarni vaznlash ($\alpha$) butun sinf vaznini oson va qiyin misollar uchun bir xil o‘zgartiradi. Qayta tanlash va hard negative mining misollarning bir qismini qat’iy qoida bo‘yicha tashlab yuboradi. Focal loss har bir misol vaznini model u bilan qanchalik uddalayotganiga qarab ravon o‘zgartiradi — va tanlashni talab qilmaydi.

Hosila: logit bo‘yicha gradiyent

Model $z$ logit bo‘yicha gradiyent orqali o‘rganadi, shuning uchun aynan u o‘qitish kimni «eshitishini» ko‘rsatadi. Kross-entropiya uchun u oddiy: $\partial\,\mathrm{CE}/\partial z_t=-(1-p_t)$ — xato qancha katta bo‘lsa, gradiyent shuncha kuchli, monoton. Focal loss’da ikkinchi had paydo bo‘ladi.

Qadam-baqadam keltirib chiqarish

1-qadam. $p_t$ bo‘yicha hosila — $-(1-p_t)^\gamma\log p_t$ uchun ko‘paytma qoidasi:

$$\frac{\partial\,\mathrm{FL}}{\partial p_t}=\gamma(1-p_t)^{\gamma-1}\log p_t-\frac{(1-p_t)^{\gamma}}{p_t}$$

2-qadam. Sigmoida hosilasi: $\partial p_t/\partial z_t=p_t(1-p_t)$ (sigmoidaga qarang).

3-qadam. Zanjir qoidasi va umumiy $(1-p_t)^\gamma$ ko‘paytuvchini qavsdan chiqarish:

$$\frac{\partial\,\mathrm{FL}}{\partial z_t}=\gamma p_t(1-p_t)^{\gamma}\log p_t-(1-p_t)^{\gamma+1}=(1-p_t)^{\gamma}\bigl(\gamma p_t\log p_t+p_t-1\bigr)$$

4-qadam. Dastlabki $z$ logit uchun: $z_t=\pm z$, shuning uchun $\partial\,\mathrm{FL}/\partial z=\pm\,\partial\,\mathrm{FL}/\partial z_t$ ($y=1$ da plyus, $y=0$ da minus), $\alpha_t$ esa natijani shunchaki ko‘paytiradi. Tekshiruv: $\gamma=0$ da $p_t-1$, ya’ni kross-entropiya gradiyenti chiqadi.

$$\left|\frac{\partial\,\mathrm{FL}}{\partial z_t}\right|=(1-p_t)^{\gamma}\Bigl[(1-p_t)+\gamma\,p_t\,|\log p_t|\Bigr]$$

Kvadrat qavs ichida — CE gradiyenti $1-p_t$ va manfiy bo‘lmagan $\gamma p_t|\log p_t|$ qo‘shimcha. Tashqarida — o‘sha $(1-p_t)^\gamma$ ko‘paytuvchi. Oson misollar uchun ko‘paytuvchi g‘olib chiqadi, juda qiyinlari uchun esa qo‘shimcha gradiyentni CE’dagidan hatto kattaroq qilishi mumkin.

3-rasm. To‘g‘ri sinf logiti bo‘yicha gradiyent kuchi. Kulrang shtrix — CE, $1-p_t$. To‘q sariq — FL: $\gamma=2$ da $1{,}129$ maksimumga $p_t=0{,}058$ da erishiladi, $p_t<0{,}298$ da FL gradiyenti CE’nikidan kuchli, $p_t=0{,}9$ da esa u CE gradiyentining atigi $0{,}029$ qismini tashkil qiladi (35 marta kichik).
Gradiyent endi monoton emas

CE’da misol qancha yomon bo‘lsa, shuncha kuchli tortadi. $\gamma>0$ li FL’da eng kuchli gradiyent $p_t$ bir necha foiz atrofidagi misollarda, $p_t\to0$ tomon esa u yana 1 gacha tushadi. $\gamma=1$ uchun FL CE’dan kuchliroq tortadigan chegara aynan $p_t=1/e\approx0{,}368$. Agar ma’lumotlarda xato belgilar bo‘lsa, ular aynan shu zonaga tushadi — focal loss ularni zo‘r berib «o‘rganadi».

FL(p_t, γ) sirti 3D’da

Butun egri chiziqlar oilasini $(p_t,\gamma)$ tekisligi ustidagi bitta sirtga yig‘amiz. $\gamma=0$ dagi kesim — kross-entropiya; $\gamma$ bo‘yicha harakatlanganda sirt «cho‘kadi», $p_t$ qancha katta bo‘lsa, shuncha tez.

4-rasm. Chapda — $\mathrm{FL}(p_t,\gamma)$ (sichqoncha bilan aylantiring), ko‘k chiziq — tanlangan $\gamma$ dagi kesim, firuza — tanlangan $p_t$ dagi kesim. O‘ngda — o‘sha firuza egri chiziq logarifmik shkalada: bu $\ln(1-p_t)$ qiyalikli to‘g‘ri chiziq. $p_t=0{,}5$ va $\gamma=2$ da: $\mathrm{FL}=0{,}173$, qiyalik $\ln0{,}5=-0{,}693$.

Nega to‘g‘ri chiziq: $\log\mathrm{FL}=\log\mathrm{CE}+\gamma\log(1-p_t)$. $\gamma$ bo‘yicha yo‘qotish eksponensial so‘nadi, so‘nish tezligi — $|\ln(1-p_t)|$: $p_t=0{,}5$ uchun $\gamma$ birligiga $0{,}69$, $p_t=0{,}9$ uchun — $2{,}30$, $p_t=0{,}99$ uchun — $4{,}61$. $\gamma$ parametri oson va qiyin misollarni tartiblar shkalasi bo‘yicha bir-biridan uzoqlashtiradi.

Muvozanatsizlik: yo‘qotish qayerdan keladi

Bir bosqichli detektor holatini modellashtiramiz. Har bir pozitivga 1000 ta negativ to‘g‘ri keladi. Negativlar asosan oson: to‘g‘ri sinf logiti $z_t\sim N(4,\,1)$, ya’ni tipik $p_t=\sigma(4)\approx0{,}98$. Pozitivlar qiyin: $z_t\sim N(0,\,1)$, tipik $p_t=0{,}5$. Umumiy yo‘qotishning qancha ulushi har bir guruhga to‘g‘ri kelishini hisoblaymiz.

5-rasm. Chapda — $0{,}05$ kenglikdagi $p_t$ savatlari bo‘yicha umumiy yo‘qotish ulushi (kulranglar — CE, ko‘klar — FL). O‘ngda — yig‘indi tarkibi. Oson negativlar ($p_t\ge0{,}9$) — misollarning $96{,}3\%$ i. CE’da ular yo‘qotishning $78{,}1\%$ ini beradi, pozitivlar esa atigi $2{,}7\%$ ini. $\gamma=2$ li FL’da osonlar $9{,}0\%$, pozitivlar esa $58{,}0\%$ beradi.

Aynan shu «fokuslash». Gradiyent tushish yig‘indini minimallashtiradi, CE’da esa bu yig‘indi deyarli butunlay allaqachon yechilgan misollardan iborat. Focal loss «e’tibor byudjeti»ni qayta taqsimlaydi: oson misollar yo‘qotishlari o‘nlab va yuzlab marta so‘ndiriladi, yig‘indida esa qiyin negativlar va pozitivlar — model haqiqatan yaxshilanishi mumkin bo‘lganlar — ustunlik qila boshlaydi.

RetinaNet

2017 yilgacha bir bosqichli detektorlar aniqlikda ikki bosqichlilardan (Faster R-CNN) sezilarli ortda qolardi. Ikki bosqichlilar muvozanatsizlikni takliflar bosqichi va pozitiv hamda negativlarni 1 : 3 nisbatda tanlash hisobiga yengardi. Lin va hammualliflar ortda qolishning asosiy sababi aynan muvozanatsizlik ekanini ko‘rsatdi, va yo‘qotishni oddiygina almashtirish (RetinaNet = ResNet + FPN + focal loss) bir bosqichli detektorga ikki bosqichlilardan o‘zib ketish imkonini berdi. Ish ICCV 2017 da eng yaxshi talabalik maqolasi mukofotini oldi.

α-muvozanatlash va kalibrlash

$\alpha_t$ ko‘paytuvchi — oddiy sinflarni vaznlash. Intuitsiya kamyob sinfga kattaroq vazn berishni taklif qiladi: $\alpha>0{,}5$. Lekin RetinaNet’da eng yaxshisi $\alpha=0{,}25$ bo‘lib chiqdi — pozitivlar negativlardan yengilroq. Sababi — $\gamma$ ishni allaqachon qilib bo‘lgan: oson negativlar so‘ndirilgan va endi ustunlik ko‘proq pozitivlarda. $\alpha$ va $\gamma$ ni birga tanlash kerak; mualliflar $\gamma=2$, $\alpha=0{,}25$ ni tavsiya qiladi; ularning tajribalarida CE ustidan yutuq $0{,}5$ dan $5$ gacha barcha $\gamma$ larda saqlangan, $\gamma$ o‘sishi bilan esa eng yaxshi $\alpha$ biroz kamaygan.

Unutiladigan nozik jihat ham bor. Eng oddiy «model»ni olamiz — barcha misollar uchun bir xil bitta $p$ son. Agar pozitivlar ulushi $\pi$ bo‘lsa, kross-entropiya aynan $p=\pi$ da minimal: CE — xos baholash qoidasi, u halol ehtimolliklarga o‘rgatadi. Focal loss bilan bu endi unday emas.

6-rasm. O‘zgarmas $p$ bashoratning o‘z minimumiga bo‘lingan o‘rtacha yo‘qotishi. Pozitivlar ulushi $\pi=0{,}01$. CE $p=0{,}01$ da minimal. $\gamma=2$, $\alpha=0{,}25$ li FL — $p=0{,}108$ da (logit $-2{,}107$), ya’ni model pozitivlar chastotasini 11 marta oshirib baholaydi. $\alpha$ siz ($\alpha=0{,}5$) minimum $p=0{,}154$ da bo‘lardi.

Xulosa: $(1-p_t)^\gamma$ ko‘paytuvchi bashoratlarni o‘rtaga tortadi — u ishonchni «yoqtirmaydi», chunki ishonch uchun to‘lov to‘xtaydi. Shuning uchun focal loss’da o‘qitilgan model chiqishini ehtimollik deb o‘qib bo‘lmaydi: chegaralar va tartiblash uchun bu normal, ehtimolliklar kerak bo‘lsa — ularni validatsiyada kalibrlang (Platt scaling, izotonik regressiya, harorat bilan shkalalash). $\alpha$ siz FL’ning optimal bashorati haqiqiy ehtimollikning o‘suvchi funksiyasi bo‘lib, $0{,}5$ da $0{,}5$ ga teng (Charoenphakdee va boshq., 2021): tartib va $0{,}5$ chegara bo‘yicha qaror saqlanadi, faqat qiymatlarning o‘zi buziladi. CE’da haddan tashqari ishonchli bo‘lib qoladigan katta tarmoqlarda esa bu o‘rtaga surilish ba’zan kalibrlashni hatto yaxshilaydi (Mukhoti va boshq., 2020) — lekin bu kafolat emas, empirik kuzatuv.

Kamyob sinf uchun boshlang‘ich qiymat

O‘qitish boshida tarmoq barcha anchorlar uchun $p\approx0{,}5$ beradi, va 100 000 negativ yo‘qotishlari birinchi qadamlarni portlatib yuboradi. Shuning uchun oxirgi qatlam siljishi $p=\pi$ bo‘ladigan qilib boshlanadi: $b=-\ln\frac{1-\pi}{\pi}$; $\pi=0{,}01$ uchun bu $b\approx-4{,}595$. Bundan tashqari, barcha anchorlar bo‘yicha FL yig‘indisi barcha anchorlar soniga emas, pozitiv anchorlar soniga bo‘linadi.

O‘qitishda focal loss

Logistik regressiyani 1 : 20 muvozanatsizlikdagi (400 negativ, 20 pozitiv) ikki o‘lchovli ma’lumotlarda ikki usulda — CE va FL bilan — bir xil boshlanish (siljish RetinaNet’dagidek pozitivlar ulushiga moslab boshlangan) va bir xil qadam bilan o‘qitamiz. Har bir nuqta o‘lchami uning $|\partial L/\partial z|$ gradiyentiga proporsional: shunda o‘qitish qaysi misollarni «eshitishi» ko‘rinadi.

7-rasm. Chapda — CE, o‘ngda — $\gamma=2$ li FL; yaxlit chiziq — $p=0{,}5$ chegara, shtrixlar — $p=0{,}1$ va $p=0{,}9$. «Boshlash»ni bosing. Boshida oson misollarga ($p_t>0{,}9$) CE umumiy gradiyentining $50{,}0\%$ i, FL’da esa atigi $0{,}6\%$ i to‘g‘ri keladi; 400 qadamdan keyin — $12{,}8\%$ va $0{,}7\%$. Ikkala model ham 20 tadan 13 ta pozitivni mos ravishda 3 va 4 ta soxta signal bilan topadi.

Rasmda nima ko‘rinadi. CE’da yirik nuqtalar butun negativlar buluti bo‘ylab sochilgan: 400 ta oson misolning har biri gradiyentning o‘z kichik ulushini qo‘shadi. FL’da faqat chegaradagi nuqtalar va pozitivlar yirik qoladi — qolganlari deyarli yo‘qoladi. Chegaraning o‘zi ikki modelda o‘xshash chiqadi: bunday ma’lumotlardagi chiziqli model uchun optimal yo‘nalish deyarli bir xil. Farq boshqa joyda: FL o‘z chegarasiga bir necha o‘n qadamda yetib boradi va uni boshqa siljitmaydi, CE esa vaznlarni oshirishda davom etib, oson misollarni yanada ishonchliroq qiladi. Millionlab parametrli chuqur tarmoqda bu farq hal qiluvchi: «baribir tushunarli» fonga sarflangan gradiyent — qiyin holatlarga sarflanmagan tarmoq sig‘imi.

$$w\leftarrow w-\eta\,\frac1n\sum_{i=1}^{n}\frac{\partial\,\mathrm{FL}_i}{\partial z_i}\,x_i,\qquad \frac{\partial\,\mathrm{FL}_i}{\partial z_i}=\pm(1-p_{t,i})^{\gamma}\bigl(\gamma p_{t,i}\log p_{t,i}+p_{t,i}-1\bigr)$$
Halol izoh

Focal loss muvozanatsizlikka qarshi sehrli vosita emas. Agar model oddiy, sinflar esa yaxshi ajraladigan bo‘lsa, u CE bilan deyarli bir xil chegarani, faqat kamroq ishonchli ehtimolliklar bilan beradi. Yutuq oson misollar qiyinlaridan tartiblarga ko‘p bo‘lgan va gradiyentni haqiqatan tortib oladigan joyda paydo bo‘ladi: zich aniqlash, segmentatsiya, kamyob sinfli katta jadvallar.

Kodda

Focal loss’ni ehtimolliklar bo‘yicha emas, logitlar bo‘yicha hisoblang: $\log p_t=\log\sigma(z_t)=-\operatorname{softplus}(-z_t)$ — $\log0$ va to‘lib ketishsiz. Quyida — gradiyentli va qo‘llanmadagi misolda tekshiriladigan NumPy versiyasi.

pythonimport numpy as np

def log_sigmoid(z):
    return -np.logaddexp(0.0, -z)          # to‘lib ketishsiz log σ(z)

def focal_loss(z, y, gamma=2.0, alpha=None):
    """z logitlar va y ∈ {0, 1} belgilar bo‘yicha binar focal loss, elementma-element."""
    zt = np.where(y == 1, z, -z)           # to‘g‘ri sinf logiti: p_t = σ(z_t)
    log_pt = log_sigmoid(zt)
    pt = np.exp(log_pt)
    at = 1.0 if alpha is None else np.where(y == 1, alpha, 1 - alpha)
    return -at * (1 - pt) ** gamma * log_pt

def focal_grad(z, y, gamma=2.0, alpha=None):
    """dFL/dz = ±α_t (1 − p_t)^γ (γ p_t log p_t + p_t − 1)."""
    zt = np.where(y == 1, z, -z)
    log_pt = log_sigmoid(zt)
    pt = np.exp(log_pt)
    at = 1.0 if alpha is None else np.where(y == 1, alpha, 1 - alpha)
    g = at * (1 - pt) ** gamma * (gamma * pt * log_pt + pt - 1)
    return np.where(y == 1, g, -g)

z = np.array([np.log(9.0), np.log(3 / 7), -np.log(9.0)])  # p_t = 0.9, 0.3, 0.9
y = np.array([1, 1, 0])
print(focal_loss(z, y, gamma=0.0).round(4))   # [0.1054 1.204  0.1054]  — bu CE
print(focal_loss(z, y).round(5))              # [0.00105 0.58995 0.00105]
print(focal_grad(z, y, gamma=0.0).round(4))   # [-0.1 -0.7  0.1]
print(focal_grad(z, y).round(4))              # [-0.0029 -0.697   0.0029]

PyTorch’da binar versiya torchvision’da bor; ko‘p sinflisini log_softmax orqali yozish oson. Oxirgi qator — siljishni kamyob sinfga moslab boshlash.

pythonimport math
import torch
import torch.nn as nn
from torchvision.ops import sigmoid_focal_loss

# Binar (har bir anchor va sinf bo‘yicha): α = 0.25, γ = 2 — RetinaNet’dagidek
logits = torch.tensor([math.log(9.0), math.log(3 / 7)])
targets = torch.tensor([1.0, 1.0])
loss = sigmoid_focal_loss(logits, targets, alpha=0.25, gamma=2.0, reduction="none")
# ≈ [0.00026, 0.14749] = 0.25 · [0.00105, 0.58995]

# log_softmax orqali ko‘p sinfli versiya
def focal_loss_multiclass(logits, target, gamma=2.0):
    logp = torch.log_softmax(logits, dim=-1)
    logp_t = logp.gather(-1, target[:, None]).squeeze(-1)
    return (-(1 - logp_t.exp()) ** gamma * logp_t).mean()

# Oxirgi qatlam siljishini kamyob sinfga moslab boshlash (π = 0.01)
cls_head = nn.Conv2d(256, 9 * 80, kernel_size=3, padding=1)   # A = 9 anchor × K = 80 sinf
nn.init.constant_(cls_head.bias, -math.log((1 - 0.01) / 0.01))   # ≈ −4.595
Gradiyentni tekshirish

$\varepsilon=10^{-6}$ dagi $\bigl(\mathrm{FL}(z+\varepsilon)-\mathrm{FL}(z-\varepsilon)\bigr)/2\varepsilon$ sonli hosila focal_grad bilan to‘rt xonagacha mos keladi: $-0{,}0029$, $-0{,}697$, $0{,}0029$. $p_t=0{,}3$ da FL va CE gradiyentlari deyarli teng ($0{,}7$ ga qarshi $0{,}697$): bu 3-rasmdagi $p_t\approx0{,}298$ kesishish nuqtasiga yaqin.

Keng tarqalgan xatolar

  1. $\gamma$ bilan birga «chastota bo‘yicha» $\alpha$. $\gamma=2$ da ulushi 1% bo‘lgan sinf uchun $\alpha=0{,}99$ qo‘yish — ikki karra kompensatsiya. $\gamma=2$, $\alpha=0{,}25$ dan boshlang va ularni birga tanlang.
  2. Kamyob sinf uchun boshlang‘ich qiymat yo‘q. Siljish 0 bo‘lganda birinchi iteratsiyalar fon yo‘qotishlariga cho‘kadi; RetinaNet maqolasida oddiy CE bilan $\pi=0{,}01$ boshlang‘ich qiymatsiz o‘qitish uzoqlashib ketgan.
  3. Barcha misollar soniga normallash. 100 000 anchor bo‘yicha o‘rtacha yo‘qotishni juda kichik va rasm o‘lchamiga bog‘liq qiladi; aniqlashda pozitivlar soniga bo‘linadi.
  4. clamp bilan ehtimolliklar bo‘yicha focal loss. $\log(\max(p,\varepsilon))$ eng qiyin misollarda ($p<\varepsilon$) logarifm gradiyentini uzib qo‘yadi — u eng kerak bo‘lgan joyda; buning ustiga $p=\sigma(z)$ float32 da to‘yinadi. Logitlar bo‘yicha hisoblang.
  5. Chiqishni ehtimollik deb o‘qish. FL bashoratlarni o‘rtaga suradi (6-rasm); xavflarni baholash va narxlash uchun ehtimolliklarni kalibrlash kerak.
  6. Shovqinli belgilarda katta $\gamma$. Xato belgilar juda qiyin misollarga o‘xshaydi, FL esa ularning nisbiy vaznini oshiradi. Shovqin gumoni bo‘lsa, $\gamma$ ni kamaytiring yoki belgilashni tozalang.
  • BCE va kross-entropiya: $\gamma=0$, $\alpha_t=1$ li FL ular bilan mos keladi.
  • Sigmoida: $p_t=\sigma(z_t)$, uning $p_t(1-p_t)$ hosilasi esa FL gradiyentiga kiradi.
  • Softmax: ko‘p sinfli holatda $p_t$ — to‘g‘ri sinf uchun softmax komponentasi.
  • Huber — qarama-qarshi falsafa: Huber eng katta xatolarni chetga chiquvchi deb hisoblab ularning hissasini susaytiradi, FL esa kattalari ko‘zga tashlanishi uchun eng kichiklarini susaytiradi.
  • Triplet loss metrikani o‘qitishda qarindosh masalani yechadi: nol yo‘qotishli oson uchliklar gradiyent bermaydi va o‘qitish qiyinlariga qaratiladi (hard negative mining).

Xulosa

1) $\mathrm{FL}=-\alpha_t(1-p_t)^\gamma\log p_t$ — «xato darajasi» $(1-p_t)^\gamma$ ga ko‘paytirilgan kross-entropiya; $\gamma=0$ — CE. 2) Oson misollar $(1-p_t)^{\gamma+1}$ kabi so‘ndiriladi: $\gamma=2$ da $p_t=0{,}9$ li misol 100 marta yengil. 3) Logit bo‘yicha $(1-p_t)^\gamma(\gamma p_t\log p_t+p_t-1)$ gradiyent monoton emas: $\gamma=2$ da maksimum $p_t\approx0{,}06$ da. 4) 1 : 1000 muvozanatsizlikda FL yo‘qotishning asosiy qismini oson negativlardan pozitivlar va qiyin negativlarga ko‘chiradi. 5) RetinaNet amaliyoti: $\gamma=2$, $\alpha=0{,}25$, $b=-\ln\frac{1-\pi}{\pi}$ boshlang‘ich qiymat, pozitivlar soniga normallash; chiqishdagi ehtimolliklarni kalibrlash kerak.

O‘zingizni tekshiring

1. Model to‘g‘ri sinfga $p_t=0{,}8$ ehtimollik berdi. $\gamma=2$ da modulyatsiyalovchi ko‘paytuvchi nimaga teng?
2. $\gamma=0$ va $\alpha_t=1$ da focal loss’dan nima chiqadi?
3. $\gamma=2$ da logit bo‘yicha FL gradiyenti $p_t$ ga qarab o‘zini qanday tutadi?
4. Nega RetinaNet’da kamyob obyektlar sinfi uchun, aytaylik, $0{,}99$ emas, $\alpha=0{,}25$?
5. Model $\gamma=2$ li focal loss’da o‘qitilgan. Uning chiqish ehtimolliklari haqida nima to‘g‘ri?