2025 m. gruodžio 13 d. min read

Kaip pasirinkti tinkamą loss funkciją modeliui: praktinis gidas

Sužinokite, kaip teisingai pasirinkti loss funkciją mašininio mokymosi modeliui: nuo regresijos ir klasifikacijos iki disbalansinių duomenų, outlier atvejų ir verslo metriko derinimo.

Kaip pasirinkti tinkamą loss funkciją modeliui: praktinis gidas

Teisingas loss funkcijos pasirinkimas yra viena svarbiausių, bet dažnai nuvertinamų, mašininio mokymosi modelio kūrimo dalių. Nuo šio sprendimo priklauso ne tik tai, kaip modelis mokysis, bet ir kokio tipo klaidas jis laikys „svarbiomis“ bei kaip elgsis kraštutiniais atvejais. Net ir moderniausios architektūros modelis su netinkama loss funkcija gali veikti gerokai prasčiau, nei paprastesnis modelis su gerai pritaikytu nuostolio skaičiavimu.

Kas yra loss funkcija ir kodėl ji tokia svarbi?

Loss funkcija (nuostolio funkcija) apibrėžia, kiek „blogai“ modelis atlieka prognozes, palyginti su tikrosiomis reikšmėmis. Kiekvienas mokymo žingsnis bando šią funkciją minimizuoti, todėl iš esmės ji yra formalizuotas atsakymas į klausimą: „kokio tipo klaidas laikome brangiausiomis?“.

Intuityviai galima sakyti: pasakykite man savo loss funkciją ir aš pasakysiu, ko iš tiesų mokote modelį. Jei pasirenkate netinkamą funkciją, modelis optimizuos ne tą tikslą, kurio jums realiai reikia verslo ar produkto prasme.

Pagrindiniai loss funkcijų vaidmenys

  • Tikslo formalizavimas. Iš vartotojo ar verslo tikslo darote matematinį tikslą, kurį galima optimizuoti gradientiniais metodais.
  • Mokymosi dinamika. Funkcija nulemia gradientų dydžius ir stabilumą – ar mokymasis bus lėtas, per greitas, ar nestabilus.
  • Jautrumas anomalijoms. Skirtingos funkcijos skirtingai reaguoja į outlier duomenis – vienos labai baudžia, kitos santykinai ignoruoja.
  • Modelio elgsena kraštuose. Pavyzdžiui, ar klasifikatorius bus labiau „atsargus“, ar labiau „drąsus“ su tikimybių prognozėmis.

Loss funkcijų tipai pagal užduotį

Pirmas žingsnis renkantis nuostolio funkciją – aiškiai identifikuoti, kokio tipo užduotį sprendžiate.

Regresija (nuolatinių reikšmių prognozė)

Regresijos užduotims, kai prognozuojate skaičius (pvz., kainą, laiką, atstumą), dažniausiai naudojamos:

  • MSE (Mean Squared Error) – vidutinė kvadratinė paklaida.
  • MAE (Mean Absolute Error) – vidutinė absoliuti paklaida.
  • Huber loss – kompromisas tarp MSE ir MAE, atsparesnis išskirtinėms reikšmėms.

MSE labai stipriai baudžia dideles klaidas (dėl kvadrato), todėl yra jautri outlier atvejams, bet dažnai patogi matematine prasme ir gerai veikia, kai duomenys gana „švarūs“.

MAE labiau „atlaidus“ didelėms klaidoms, nes klaida nedidinama kvadratu. Jis labiau atspindi medianinį elgesį ir dažnai naudojamas, kai norima sumažinti vidutinį absoliutų nukrypimą, o duomenyse gausu išskirtinių reikšmių.

Huber loss derina abiejų privalumus: mažoms klaidoms elgiasi kaip MSE, didelėms – kaip MAE. Tai puikus pasirinkimas, kai norite stabilaus mokymosi, bet nenorite, kad keli ekstremalūs taškai visiškai valdytų gradientus.

Dvejetainė klasifikacija

Dvejetainėje klasifikacijoje (pvz., „sukčiavimas / nesukčiavimas“, „spam / ne spam“) standartas yra:

  • Binary Cross-Entropy (log loss) – dvejetainė kryžminė entropija.

Ši funkcija skatina modelį pateikti tikimybes, artimas 1 teisingai klasei ir 0 – neteisingai. Ji labai smarkiai baudžia „per daug užtikrintas, bet klaidingas“ prognozes, todėl yra geras pasirinkimas, kai jums svarbus tikimybių kalibravimas ir norite interpretuojamų rezultatų (pvz., sukčiavimo rizikos procentais).

Daugiaklasė klasifikacija

Kai turite daugiau nei dvi klases (pvz., 10 skaitmenų atpažinimas, kelių tipų defektų klasifikacija), įprasta naudoti:

  • Categorical Cross-Entropy – kategorinė kryžminė entropija.
  • Sparse Categorical Cross-Entropy – efektyvesnė versija, kai etiketės pateiktos kaip sveikieji skaičiai.

Šios funkcijos kartu su softmax sluoksniu leidžia modeliu prognozuoti klasių tikimybes ir efektyviai mokytis atskirti kelias klases vienu metu. Jei klasės tarpusavyje panašios ar persidengiančios, kryžminė entropija skatina didelį atskyrimo „pasitikėjimą“ ten, kur modelis įsitikinęs, ir baus klaidas proporcingai tam pasitikėjimui.

Rangavimas, rekomendacijos ir informacijos paieška

Rekomendacijų sistemose, paieškos rezultatuose ir rangavimo užduotyse dažnai svarbu ne absoliuti vertė, o eiliškumas. Čia dažnai naudojamos:

  • Pairwise loss (pvz., hinge, pairwise logistic) – moko, kad teisingas elementas būtų „aukščiau“ neteisingo.
  • Listwise loss (pvz., ListNet, LambdaRank) – optimizuoja visą sąrašą rezultatų, dažnai apytiksliai maksimalizuodamos NDCG ar kitus paieškos rodiklius.

Tokiose užduotyse MSE ar paprasta kryžminė entropija dažnai nėra optimalios, nes jos nesutampa su galutine verslo metrika (pavyzdžiui, vartotojui aktuali viršutinė 5 rezultatų pozicija, o ne vidutinė klaida visame sąraše).

Kaip loss funkcija susijusi su verslo metrikoje?

Labai svarbu suvokti, jog loss funkcija nebūtinai yra ta pati, kaip jūsų verslo metrika. Pavyzdžiui, galite optimizuoti kryžminę entropiją, bet verslo prasme jus domins F1, ROC-AUC, NDCG ar pelnas.

Surasti tiltą tarp loss ir metrikos

Praktikoje dažnai daroma taip:

  1. Pasirenkama diferencijuojama loss funkcija, kuri apytiksliai atspindi tai, kas svarbu versle.
  2. Mokymo metu optimizuojama ši loss funkcija, nes gradientiniai metodai ją gerai apdoroja.
  3. Vertinant modelį, naudojamos papildomos metrikos (pvz., F1, Recall, Precision), kad įsitikintumėte, jog modelis tikrai atitinka verslo tikslą.

Pavyzdžiui, jei jums itin svarbu sumažinti klaidingus neigiamus atvejus (angl. false negatives) medicinoje, galite ir toliau mokyti su kryžmine entropija, bet skirsit daug dėmesio recall ir slenksčio parinkimui po mokymo. Kai kuriais atvejais galima naudoti asimetriškas loss funkcijas, kurios skirtingai baudžia skirtingų tipų klaidas.

Dažnos loss funkcijų pasirinkimo klaidos

Kai loss funkcija parenkama mechaniškai, „pagal šabloną“, atsiranda keli tipiniai pavojai.

1. Naudojama netinkama loss tipo funkcija

Vienas akivaizdžiausių pavyzdžių – naudoti MSE klasifikacijai. Nors techniškai modelis mokysis, praktiškai jis:

  • blogiau išnaudos tikimybių erdvę;
  • turės mažiau informatyvius gradientus kraštinėse srityse;
  • dažnai konverguos lėčiau ir į prastesnį sprendinį.

Dėl to klasifikacijai praktiškai visada rekomenduojama kryžminė entropija su tinkamu aktyvacijos sluoksniu (sigmoid arba softmax).

2. Neatsižvelgiama į klasių disbalansą

Kai viena klasė duomenyse labai reta (pvz., 1 % sukčiavimo atvejų), paprasta kryžminė entropija gali paskatinti modelį „žaidžiant saugiai“ beveik visada prognozuoti dažniausią klasę ir vis tiek pasiekti aukštą tikslumą. Tokiais atvejais svarbu:

  • naudoti svorines loss funkcijos versijas (class-weighted cross-entropy);
  • arba taikyti specializuotas funkcijas, pvz., focal loss, kuri stipriau fokusuojasi į sunkiai klasifikuojamus pavyzdžius.

3. Nepagalvojama apie outlier poveikį

Jei regresijos užduotyje turite keletą labai išskirtinių reikšmių, MSE gali tapti itin nestabilus, nes tie keli taškai dominuos gradientuose. Tokiais atvejais geriau rinktis MAE, Huber ar kitą robustesnę loss funkciją.

Praktiniai kriterijai, kaip pasirinkti loss funkciją

Kai jau žinote užduoties tipą, galite vadovautis keliais praktiniais klausimais, kurie padės susiaurinti pasirinkimą.

1. Kokia yra jūsų pagrindinė metrika?

Pirmiausia aiškiai įvardinkite, kokiu vienu skaičiumi vertinsite modelio sėkmę:

  • Regresija: RMSE, MAE, MAPE ir pan.
  • Klasifikacija: Accuracy, F1, ROC-AUC, PR-AUC ir pan.
  • Rangavimas: NDCG, MAP, MRR ir kt.

Tada pagalvokite, kuri diferencijuojama loss funkcija labiausiai koreliuoja su šia metrika. Pvz., jei jums svarbus MAE, natūralus pasirinkimas – L1 tipo loss (MAE, Huber su atitinkamu slenksčiu).

2. Ar duomenyse daug išskirtinių atvejų?

Jeigu turite daug outlier (tiek X, tiek y dimensijose), pirmenybę teikite robustiems loss variantams:

  • Regresija: MAE, Huber, Quantile loss.
  • Klasifikacija: focal loss arba svorinė kryžminė entropija, jei išskirtinumai susiję su retomis klasėmis.

3. Ar projektas jautrus klaidingiems teigiamams ar klaidingiems neigiamams?

Daugelyje taikymų vienos klaidos kainuoja daug brangiau už kitas. Pavyzdžiui:

  • Medicina: klaidingas neigiamas (neaptiktas pavojingas atvejis) yra daug brangesnis.
  • Marketingas: klaidingas teigiamas (nereikalingai pasiūlytas pasiūlymas) dažnai yra mažesnė problema.

Tada galite:

  • naudoti asimetriškas loss funkcijas, kur skirtingoms klaidoms taikomi skirtingi svoriai;
  • arba su paprasta loss funkcija (pvz., kryžmine entropija) reguliuoti sprendimo slenksčius ir po mokymo kalibruoti rezultatus.

4. Ar reikia gerai sukalibruotų tikimybių?

Jei svarbios pačios tikimybės (pvz., kredito rizikos vertinimas, draudimo įmokos skaičiavimas), kryžminė entropija paprastai yra geresnis pasirinkimas nei, tarkime, „hinge“ tipo nuostolio funkcijos. Vėliau, jei reikia, tikimybes galima papildomai kalibruoti (Platt scaling, isotonic regression), bet gera loss funkcija čia padeda nuo pat pradžių.

Pažangesni loss funkcijų pavyzdžiai ir panaudojimas

Be klasikinių loss funkcijų, realiuose projektuose vis dažniau naudojamos pritaikytos ar sudėtinės funkcijos, geriau atitinkančios konkrečius poreikius.

Focal loss klasifikacijai su disbalansu

Focal loss buvo pasiūlyta objektų detekcijai, bet plačiai pritaikyta ir kitur. Ji „prislopina“ lengvus pavyzdžius ir stipriau akcentuoja tuos, kuriuos modelis klasifikuoja neteisingai arba labai neužtikrintai. Taip modelis nešvaisto daug gradientų lengviems atvejams, o daugiau „moko save“ ant sudėtingų pavyzdžių.

Custom loss su verslo logika

Didesniuose produktuose vis dažniau kuriamos savos, verslo specifiką atspindinčios loss funkcijos. Pavyzdžiui:

  • Nuostolio dalis skirta tikimybių kalibracijai.
  • Kita dalis – netiesioginiam verslo rodikliui, pvz., prognozuojamo pelno ar CLV (Customer Lifetime Value).
  • Trečia dalis – reguliavimui (L1, L2) ir modelio sudėtingumo kontrolei.

Tokiu atveju bendra loss funkcija tampa svertiniu kelių komponentų deriniu, kurį galima reguliuoti keičiant svorius, kad modelis rastų norimą balansą tarp tikslumo, stabilumo ir perprastumo.

Reguliavimas kaip loss dalis

Praktikoje naudojama nuostolio funkcija dažnai susideda iš dviejų dalių:

  • Empirinė klaida (training loss) – pvz., kryžminė entropija, MSE.
  • Reguliavimo narys – L1, L2, Elastic Net ir pan., kurie riboja modelio parametrų dydį.

Šis reguliavimo narys taip pat yra loss dalis ir stipriai veikia tai, kaip modelis mokosi ir generalizuoja. Kartais tinkama reguliacija duoda didesnę naudą nei bandymai išraityti labai egzotišką pagrindinę loss funkciją.

Praktinis žingsnis po žingsnio pasirinkimo gidas

Apibendrinkime procesą, kaip praktiškai priimti sprendimą dėl loss funkcijos naujame projekte.

1. Apibrėžkite užduotį ir duomenis

  • Nustatykite, ar tai regresija, klasifikacija, rangavimas, generacinė užduotis ir pan.
  • Įsivertinkite klasių balansą, outlier skaičių, duomenų triukšmingumą.

2. Pasirinkite „numatytąją“ loss funkciją

  • Regresija be išskirtinių anomalijų: MSE.
  • Regresija su daug outlier: MAE arba Huber.
  • Dvejetainė klasifikacija: Binary Cross-Entropy.
  • Daugiaklasė klasifikacija: Categorical Cross-Entropy.
  • Disbalansiniai duomenys: svorinė cross-entropy arba focal loss.

3. Suderinkite su verslo metrika

  • Nuspręskite, kokia metrika rodys „sėkmę“ verslo akimis.
  • Patikrinkite, ar pasirinkta loss funkcija bent jau kryptingai koreliuoja su ta metrika.
  • Jei koreliacija silpna, apsvarstykite alternatyvias loss funkcijas ar jų derinius.

4. Atlikite eksperimentus ir A/B testus

Teorinės įžvalgos labai naudingos, bet galutinį žodį turi praktika:

  • Išbandykite kelias loss versijas toje pačioje architektūroje.
  • Sekite ne tik training/validation loss, bet ir verslo metrikas.
  • Jei įmanoma, atlikite A/B testus produkcinėje aplinkoje.

5. Stebėkite ilgesnį laikotarpį

Kai kurios loss funkcijos gali atrodyti geresnės trumpalaikėse statistinėse metrikose, bet ilgainiui sukelti nepageidaujamą elgseną (pvz., per agresyvias prognozes, neadekvačias tikimybes, nenumatytas sąveikas su vartotojų elgesiu). Todėl naujas loss pasirinkimas turėtų būti vertinamas ir laiko perspektyvoje.

Išvados: loss funkcija kaip strateginis sprendimas

Loss funkcijos pasirinkimas nėra tik techninė detalė, kurią galima aklai perimti iš bibliotekų pavyzdžių. Tai strateginis sprendimas, tiesiogiai susijęs su tuo, ką iš tikrųjų mokote savo modelį daryti ir kokias klaidas jis laikys rimčiausiomis.

Praktiškai geriausi rezultatai pasiekiami tada, kai:

  • aiškiai suprantate savo užduoties tipą ir duomenų savybes;
  • tiesiogiai susiejate loss funkciją su verslo ar produkto metrika;
  • nebijote eksperimentuoti su keliomis loss versijomis ir jų kombinacijomis;
  • įtraukiate reguliavimą ir, jei reikia, klasės svorius ar specializuotus terminus;
  • nuolat stebite, kaip loss pasirinkimas veikia modelio elgseną realiame pasaulyje.

Kai pradėsite sąmoningai žiūrėti į loss funkciją kaip į centralų modelio projektavimo komponentą, pamatysite, kad daugelį „keistų“ mokymosi problemų galima išspręsti ne keičiant architektūrą ar didinant duomenų kiekį, o tiesiog parenkant tinkamesnį būdą vertinti klaidą.

Kaip pasirinkti tinkamą loss funkciją modeliui: praktinis gidas | AI Technologijos