Kas slepiasi už kategorijų priskyrimo?
Kiekvieną kartą, kai „Netflix” pasiūlo filmą, kurį tikrai norisi žiūrėti, kai el. pašto filtras automatiškai išmeta šlamštą į atskirą aplanką arba kai „Google” nuotraukos atpažįsta, kad nuotraukoje yra katė – visa tai yra kategorijų priskyrimo technologijos darbas. Angliškai tai vadinama „extracting assigned categories”, o lietuviškai galėtume sakyti – priskirtos kategorijos ištraukimas arba kategorijų identifikavimas.
Bet kas tai iš tikrųjų reiškia? Paprastai tariant, tai procesas, kai sistema – dažniausiai kompiuterinė – paima tam tikrą objektą (tekstą, vaizdą, garsą, duomenų įrašą) ir nusprendžia, kuriai grupei jis priklauso. Skamba paprastai, bet už šio proceso slypi dešimtmečiais kauptos matematikos, statistikos ir informatikos žinios.
Šiame straipsnyje išnagrinėsime, kaip ši technologija veikia nuo pat pradžių, kodėl ji tokia svarbi šiuolaikiniame skaitmeniniame pasaulyje ir kaip ją suprasti net neturint gilių techninių žinių.
Nuo bibliotekos kortelių iki mašininio mokymosi – trumpa istorija
Kategorijų priskyrimas nėra išimtinai skaitmeninio amžiaus išradimas. Žmonės klasifikuoja daiktus nuo neatmenamų laikų. Linėjaus biologinė klasifikacija, Dewei dešimtainė bibliotekų sistema, pašto indeksai – visa tai yra rankiniai kategorijų priskyrimo metodai.
Kompiuterinė kategorijų priskyrimo istorija prasidėjo maždaug XX amžiaus viduryje. Pirmieji bandymai buvo grynai taisyklėmis pagrįsti: programuotojas rankiniu būdu surašydavo sąlygas – jei dokumente yra žodis „pirkti”, priskirk kategoriją „reklama”. Tokie sprendimai veikė, bet tik labai siauruose kontekstuose ir reikalavo milžiniško rankinio darbo.
Tikras lūžis įvyko 1980–1990-aisiais, kai mokslininkai pradėjo taikyti statistinius metodus. Vietoj griežtų taisyklių sistema pradėjo mokytis iš pavyzdžių. Duok jai tūkstantį el. laiškų, pažymėtų kaip „šlamštas” ir tūkstantį normalių laiškų – ir ji pati išmoks atpažinti skirtumus.
Šiandien kategorijų priskyrimas yra viena iš pagrindinių dirbtinio intelekto ir mašininio mokymosi sričių. Gilieji neuroniniai tinklai sugeba priskirti kategorijas su tikslumu, kuris kartais pranoksta žmogų – ypač medicininių vaizdų analizėje ar kalbos atpažinime.
Kaip sistema iš tikrųjų „supranta”, kur ką dėti?
Čia prasideda įdomiausia dalis. Kompiuteris, skirtingai nuo žmogaus, nemato pasaulio taip, kaip mes. Jam reikia viską paversti skaičiais. Ir būtent tai yra pirmasis žingsnis kategorijų priskyrimo procese – požymių ištraukimas (angl. feature extraction).
Įsivaizduokite, kad norite automatiškai klasifikuoti naujienų straipsnius į kategorijas: sportas, politika, technologijos, kultūra. Kaip kompiuteris tai padarys?
- Teksto atveju: sistema skaičiuoja, kokie žodžiai dažniausiai pasirodo kiekvienoje kategorijoje. „Rungtynės”, „rezultatas”, „čempionas” – sportas. „Seimas”, „balsavimas”, „ministras” – politika. Kiekvienas žodis tampa dimensija matematinėje erdvėje.
- Vaizdo atveju: pikseliai paverčiami skaičiais, sistema ieško kraštų, formų, spalvų pasiskirstymo. Gilieji tinklai automatiškai išmoksta, kokios vizualios savybės būdingos kiekvienai kategorijai.
- Garso atveju: garso bangos paverčiamos spektrogramomis – vizualiais dažnių vaizdais – ir tada apdorojamos panašiai kaip nuotraukos.
Kai požymiai ištraukti, ateina klasifikatoriaus eilė. Populiariausi metodai:
Naive Bayes – vienas seniausių ir vis dar naudojamų metodų. Jis remiasi tikimybių teorija ir klausia: „Kokia tikimybė, kad šis dokumentas priklauso kategorijai X, atsižvelgiant į jame esančius žodžius?” Nepaisant pavadinimo „naivus” (nes daro supaprastintą prielaidą, kad visi požymiai nepriklausomi), jis puikiai veikia el. pašto filtravimui.
Sprendimų medžiai ir atsitiktiniai miškai – sistema mokosi serijos „jei-tai” klausimų. Ar straipsnyje minimas futbolas? Taip → ar minimas rezultatas? Taip → sportas. Atsitiktiniai miškai naudoja šimtus tokių medžių ir balsuoja, kuri kategorija laimi.
Neuroniniai tinklai – šiuolaikiniai modeliai, ypač transformeriai (kaip GPT ar BERT), sugeba suprasti kontekstą ir semantiką tokiu lygiu, kuris anksčiau buvo neįsivaizduojamas. Jie ne tik žiūri į atskirus žodžius, bet supranta jų ryšius ir reikšmę sakinyje.
Mokymas su mokytoju ir be jo – du skirtingi keliai
Vienas iš svarbiausių skirtumų kategorijų priskyrimo pasaulyje – ar sistema mokoma su iš anksto pažymėtais duomenimis, ar ne.
Mokymasis su mokytoju (angl. supervised learning) – tai klasikinis kelias. Žmogus rankiniu būdu pažymi tūkstančius pavyzdžių: šis el. laiškas yra šlamštas, šis – ne. Sistema mokosi iš šių pavyzdžių ir vėliau gali savarankiškai klasifikuoti naujus duomenis. Privalumas – didelis tikslumas. Trūkumas – reikia daug žmogaus darbo pažymėjimui.
Mokymasis be mokytojo (angl. unsupervised learning) – sistema pati ieško struktūros duomenyse. Grupavimo algoritmai (kaip K-means) suskirsto duomenis į klasterius pagal panašumą, bet pati sistema nežino, kaip šias grupes pavadinti. Tai naudinga, kai kategorijos iš anksto nežinomos – pavyzdžiui, analizuojant klientų elgesį ir ieškant natūraliai susiformavusių grupių.
Pusiau prižiūrimas mokymasis – kompromisas tarp abiejų. Turima nedaug pažymėtų duomenų ir daug nepažymėtų. Sistema naudoja abu šaltinius. Tai ypač vertinga medicinoje, kur ekspertų laikas brangus ir pažymėtų duomenų visada trūksta.
Praktinis patarimas: jei kuriate savo kategorijų priskyrimo sistemą ir turite ribotus išteklius duomenų žymėjimui, apsvarstykite aktyvaus mokymosi (angl. active learning) metodą. Sistema pati parenka, kuriuos pavyzdžius labiausiai reikia pažymėti – tuos, kuriais ji labiausiai abejoja. Taip galima pasiekti gerų rezultatų su gerokai mažesniu pažymėtų duomenų kiekiu.
Kur tai naudojama – ir tai nustebins
Kategorijų priskyrimas yra visur, tik mes to dažniausiai nepastebime. Pabandykime surinkti konkrečius pavyzdžius, kurie parodo, kokia plati šios technologijos taikymo sritis.
Medicina: radiologinių vaizdų analizė – sistema klasifikuoja, ar rentgeno nuotraukoje matomas auglys yra gerybinis ar piktybinis. „Google DeepMind” sukurta sistema akių ligų diagnozavimui pasiekė tokį tikslumą, kad lenkia vidutinį oftalmologą. Tai ne ateitis – tai jau veikia klinikose.
Finansai: sukčiavimo aptikimas. Kiekviena jūsų banko kortelės operacija realiu laiku klasifikuojama – ar tai įprastas mokėjimas, ar galimas sukčiavimas. Sistema vertina šimtus požymių: operacijos suma, vieta, laikas, įprastas jūsų elgesio modelis. Visa tai per milisekundes.
Teisė: teisinių dokumentų peržiūra. Didelėse bylose gali būti milijonai dokumentų. Kategorijų priskyrimo sistemos padeda advokatams greitai surasti relevantius dokumentus, klasifikuodamos juos pagal temą, konfidencialumą ar svarbą.
Žemės ūkis: palydovinių vaizdų analizė. Sistemos klasifikuoja žemės naudojimą – kur yra pasėliai, miškai, vandenys, miestai. Tai padeda stebėti miškų kirtimą, planuoti drėkinimą, prognozuoti derlių.
Socialiniai tinklai: turinio moderavimas. „Facebook”, „YouTube”, „Twitter” naudoja kategorijų priskyrimo sistemas, kad automatiškai identifikuotų žalingą turinį – neapykantą kurstančią kalbą, smurtą, dezinformaciją. Tai labai sudėtinga užduotis, nes kontekstas ir ironija dažnai klaidina sistemas.
Muzika ir garso įrašai: „Shazam” tipo programėlės klasifikuoja garso fragmentus ir identifikuoja dainas. „Spotify” priskiria dainas žanrams ir numood kategorijoms, kad galėtų kurti personalizuotas grojaraščių rekomendacijas.
Kur sistema klysta – ir kodėl tai svarbu žinoti
Būtų naivu manyti, kad kategorijų priskyrimo sistemos yra tobulos. Jos klysta, ir kartais labai rimtai. Suprasti, kodėl jos klysta, yra ne mažiau svarbu nei suprasti, kaip jos veikia.
Šališkumas duomenyse (angl. data bias) – tai bene didžiausia problema. Jei sistema mokoma iš šališkų duomenų, ji pati taps šališka. Garsusis pavyzdys: veido atpažinimo sistemos, mokytos daugiausia ant baltaodžių veidų, žymiai blogiau atpažįsta tamsesnės odos žmones. Tai nėra teorinė problema – tai turėjo realių pasekmių, kai tokios sistemos buvo naudojamos teisėsaugoje.
Pasiskirstymo pokytis (angl. distribution shift) – sistema mokoma vienomis sąlygomis, bet naudojama kitomis. COVID-19 pandemija tai parodė labai aiškiai: daugelis prognozavimo modelių, mokyti iki pandemijos, tapo beveik nenaudingi, nes pasaulis pasikeitė taip drastiškai, kad istoriniai duomenys nebeatspindėjo realybės.
Ilgos uodegos problema (angl. long tail problem) – sistemos puikiai veikia su dažnomis kategorijomis, bet prastai su retomis. Jei turite 1000 pavyzdžių kategorijai „sportas” ir tik 10 pavyzdžių kategorijai „buriavimas”, sistema bus labai prasta buriavimo atpažinime.
Praktinis patarimas: jei naudojate kategorijų priskyrimo sistemą versle, visada tikrinkite jos tikslumą atskirai kiekvienai kategorijai, ne tik bendrą tikslumą. Bendras 95% tikslumas gali slėpti tai, kad viena svarbi kategorija atpažįstama tik 60% tikslumu.
Taip pat svarbu žinoti apie priešiškus pavyzdžius (angl. adversarial examples) – specialiai sukurtus įvesties duomenis, kurie apgauna sistemą. Klasikinis eksperimentas: panda nuotrauka su minimaliu triukšmu, nepastebimam žmogaus akiai, bet sistema ją klasifikuoja kaip gibono nuotrauką su 99% pasitikėjimu. Tai rimta saugumo problema sistemose, naudojamose kritinėse srityse.
Kaip įvertinti, ar sistema veikia gerai?
Vienas dažniausių klaidingų supratimų – kad tikslumas (angl. accuracy) yra vienintelis svarbus rodiklis. Tai gali labai klaidinti, ypač kai kategorijos yra nesubalansuotos.
Įsivaizduokite sistemą, kuri aptinka retą ligą, kuria serga 1% žmonių. Sistema, kuri visada sako „sveikas”, turės 99% tikslumą – bet bus visiškai nenaudinga.
Todėl naudojami kiti rodikliai:
- Tikslumas (Precision) – iš visų, kuriuos sistema pažymėjo kaip teigiamus, kiek iš tikrųjų yra teigiami? Svarbu, kai klaidingas teigiamas rezultatas yra brangus (pvz., nereikalinga operacija).
- Atgaminamumas (Recall) – iš visų tikrų teigiamų, kiek sistema rado? Svarbu, kai praleistas teigiamas rezultatas yra brangus (pvz., neaptikta liga).
- F1 balas – tikslumo ir atgaminamumo harmoninis vidurkis. Geras bendras rodiklis, kai reikia balanso tarp abiejų.
- AUC-ROC kreivė – parodo, kaip sistema veikia esant skirtingiems sprendimo slenksčiams. Ypač naudinga medicinoje ir finansuose.
Dar vienas svarbus aspektas – kalibracija. Sistema ne tik turi teisingai klasifikuoti, bet ir teisingai įvertinti savo pasitikėjimą. Jei sistema sako „esu 90% tikras”, ji turėtų būti teisi maždaug 90% tokių atvejų. Blogai kalibruota sistema gali būti pavojinga – ji gali būti labai pasitikinti savimi ten, kur klysta.
Kai kategorijų priskyrimas susitinka su realiu gyvenimu
Technologijos supratimas yra vienas dalykas, bet kaip tai pritaikyti praktiškai? Keletas konkrečių scenarijų ir rekomendacijų žmonėms, kurie nori naudoti ar kurti tokias sistemas.
Jei esate smulkaus verslo savininkas ir norite automatizuoti klientų atsiliepimų kategorijų priskyrimą – pradėkite nuo paprastų, jau paruoštų įrankių. „Google Cloud Natural Language API”, „AWS Comprehend” ar „Azure Text Analytics” leidžia pradėti be gilių techninių žinių. Jums nereikia kurti sistemos nuo nulio – tiesiog pateikite tekstą ir gaukite kategorijas.
Jei esate duomenų analitikas ir dirbate su struktūrizuotais duomenimis – „scikit-learn” Python biblioteka yra puiki pradžia. Ji turi daugybę klasifikavimo algoritmų ir puikią dokumentaciją. Pradėkite nuo paprastų modelių (logistinė regresija, atsitiktinis miškas) prieš pereidami prie sudėtingų neuroninių tinklų – dažnai paprasti modeliai veikia pakankamai gerai ir yra daug lengviau interpretuojami.
Jei dirbate su tekstais ir norite klasifikuoti dokumentus – apsvarstykite iš anksto apmokytus modelius (angl. pre-trained models). „Hugging Face” platformoje yra šimtai modelių, kuriuos galima pritaikyti savo užduočiai su nedideliu kiekiu pažymėtų duomenų. Tai vadinamas perkėlimo mokymasis (angl. transfer learning) ir jis gali sutaupyti milžinišką kiekį laiko ir resursų.
Svarbus praktinis patarimas: prieš kuriant bet kokią kategorijų priskyrimo sistemą, aiškiai apibrėžkite kategorijas. Tai skamba trivialiai, bet dažnai yra didžiausia problema. Jei du žmonės, žymėdami tuos pačius duomenis, nesutaria, kuriai kategorijai priklauso objektas – sistema niekada neišmoks to gerai. Apskaičiuokite tarpžymėtojų sutarimo koeficientą (angl. inter-annotator agreement, pvz., Cohen’s kappa) prieš pradedant mokyti modelį.
Taip pat nepamirškite nuolatinio stebėjimo. Kategorijų priskyrimo sistemos laikui bėgant prastėja – pasaulis keičiasi, kalbos keičiasi, kontekstas keičiasi. Nustatykite reguliarius tikrinimus ir atnaujinimus. Tai ypač svarbu sistemose, kurios veikia su nuolat besikeičiančiu turiniu, kaip socialiniai tinklai ar naujienų portalai.
Kai mašina klasifikuoja geriau nei žmogus – ir ką tai reiškia mums
Grįžkime prie platesnio vaizdo. Kategorijų priskyrimo technologijos pasiekė tokį lygį, kad daugelyje sričių mašinos klasifikuoja tiksliau nei žmonės. Tai kelia ir praktinių, ir filosofinių klausimų.
Viena vertus, tai neabejotinai naudinga. Medicinos srityje automatinė diagnostika gali padėti ten, kur trūksta specialistų – kaip besivystančiose šalyse, kur vienas radiologas aptarnauja tūkstančius pacientų. Automatizuotas turinio moderavimas gali sustabdyti žalingą turinį greičiau nei žmogus.
Kita vertus, kai sistema priima sprendimus, kurie veikia žmonių gyvenimus – ar tai būtų paskolų suteikimas, darbo interviu atranka ar teisėsauga – kyla rimtų etinių klausimų. Kas atsakingas, kai sistema klysta? Kaip užtikrinti, kad sistema nėra šališka? Kaip paaiškinti sprendimą žmogui, kuriam jis buvo priimtas?
Šiuo metu aktyviai vystoma interpretuojamo dirbtinio intelekto (angl. explainable AI) sritis, kuri bando atsakyti į klausimą: kodėl sistema priėmė tokį sprendimą? Metodai kaip LIME ar SHAP leidžia pamatyti, kurie požymiai labiausiai lėmė klasifikavimo sprendimą. Tai ne tik akademinis klausimas – Europos Sąjungos BDAR reglamentas jau dabar reikalauja, kad automatizuoti sprendimai būtų paaiškinami.
Kategorijų priskyrimas iš pirmo žvilgsnio atrodo kaip gryna techninė užduotis – paimi objektą, priskirk jam etiketę. Bet iš tikrųjų tai yra viena iš tų technologijų, kuri liečia kone kiekvieną mūsų gyvenimo aspektą, nuo to, kokias naujienas matome, iki to, ar gauname paskolą. Suprasti, kaip ji veikia, reiškia geriau suprasti skaitmeninį pasaulį, kuriame gyvename – ir turėti galimybę jį kritiškai vertinti, o ne tiesiog priimti kaip duotybę.

