Pradžia / Mokslas ir atradimai / Kaip veikia neuroniniai tinklai: vizualus paaiškinimas

Kaip veikia neuroniniai tinklai: vizualus paaiškinimas

Smegenys iš matematikos: kas iš tikrųjų slypi po tuo žodžiu

Jei bent kartą per pastaruosius metus naudojai ChatGPT, „Midjourney” ar net „Spotify” rekomendacijas – tu jau susidūrei su neuroniniais tinklais. Bet kas tai per daiktas? Dažniausiai žmonės arba sako „tai kažkas labai sudėtingo, nesuprasiu” arba pasitenkina paviršutinišku „na, tai kaip smegenys, tik kompiuteryje”. Abu atsakymai yra netikslūs. Tiesa yra kažkur per vidurį – ir, kas svarbiausia, ji yra visiškai suprantama, jei ją paaiškini teisingai.

Neuroninis tinklas iš esmės yra matematinė struktūra, sukurta taip, kad galėtų mokytis iš duomenų. Ne programuojama rankiniu būdu su tūkstančiais taisyklių, o mokoma – kaip mokinys, kuriam rodai pavyzdžius ir sakai: „tai teisinga, tai ne”. Laikui bėgant, sistema supranta, kaip atpažinti šunis nuotraukose, versti tekstą, generuoti muzikos takelius ar diagnozuoti ligas iš rentgeno nuotraukų. Skamba kaip magija? Visai ne. Skamba kaip labai protinga statistika? Jau arčiau tiesos.

Vienas neuronas – viena sprendimo mašina

Pradėkime nuo pačios mažiausios dalies. Biologiniame smegenyse neuronas yra ląstelė, kuri gauna signalus iš kitų neuronų, juos apdoroja ir, jei signalas pakankamai stiprus, perduoda toliau. Dirbtinis neuronas veikia lygiai tuo pačiu principu – tik vietoj elektros impulsų čia skaičiai.

Įsivaizduok paprastą situaciją: nori nuspręsti, ar eiti į kiną. Turi kelis veiksnius:

  • Ar filmas geras? (įvertinimas 1–10)
  • Ar turi pinigų? (taip/ne)
  • Ar oras blogas lauke? (taip/ne)
  • Ar turi su kuo eiti? (taip/ne)

Kiekvienas šių veiksnių turi skirtingą svorį tavo sprendime. Filmo kokybė galbūt sveria daugiausiai. Oras – gal mažiau. Dirbtinis neuronas daro lygiai tą patį: gauna įvestis, kiekvieną iš jų padaugina iš svorio (kuris parodo, kiek svarbus tas veiksnys), sudeda viską kartu ir priima sprendimą. Jei suma viršija tam tikrą ribą – neuronas „suaktyvėja” ir perduoda signalą toliau. Jei ne – tyli.

Matematiškai tai atrodo taip: išvestis = f(w₁x₁ + w₂x₂ + w₃x₃ + ... + b), kur w yra svoriai, x – įvestys, b – papildomas korekcijos parametras (bias), o f – vadinamoji aktyvacijos funkcija. Nesibaidyk šios formulės – ji tiesiog sako: „sudėk viską su svoriais, tada nuspręsk, ar reaguoti”.

Sluoksniai, sluoksniai ir dar daugiau sluoksnių

Vienas neuronas gali priimti paprastus sprendimus. Bet realus pasaulis nėra paprastas. Štai kodėl neuronus jungiame į tinklus – ir čia prasideda tikroji magija.

Klasikinis neuroninis tinklas turi tris pagrindinius komponentus:

  1. Įvesties sluoksnis (Input layer) – čia patenka duomenys. Jei analizuoji nuotrauką, kiekvienas pikselis tampa atskiru neuronu šiame sluoksnyje.
  2. Paslėpti sluoksniai (Hidden layers) – čia vyksta tikrasis darbas. Kiekvienas sluoksnis išmoksta atpažinti vis sudėtingesnius šablonus.
  3. Išvesties sluoksnis (Output layer) – čia gauname atsakymą: „tai šuo”, „tai katė”, „šis el. laiškas yra spam”.

Vizualiai tai galima įsivaizduoti taip: pirmasis paslėptas sluoksnis galbūt išmoksta atpažinti paprastas linijas ir kraštus nuotraukoje. Antrasis sluoksnis sujungia tas linijas į formas – apskritimus, kampus. Trečiasis sluoksnis iš formų sudeda objektus – ausis, akis, snukį. Ir galiausiai paskutinis sluoksnis sako: „tai labai panašu į šunį”.

Kuo daugiau sluoksnių, tuo giliau tinklas gali analizuoti duomenis. Štai kodėl modernūs modeliai vadinami „gilaus mokymosi” (deep learning) sistemomis – jie turi dešimtis, šimtus, o kartais net tūkstančius sluoksnių. GPT-4 architektūra turi 96 transformerių sluoksnius. Tai jau ne tik „keli sluoksniai” – tai tikra hierarchinė informacijos apdorojimo sistema.

Kaip tinklas iš tikrųjų mokosi: klaidos ir korekcijos

Čia yra pati įdomiausia dalis, kurią dauguma paaiškinimų praleido. Kaip tinklas žino, kad jo svoriai yra teisingi? Trumpas atsakymas: iš pradžių nežino. Visai.

Mokymosi procesas prasideda nuo atsitiktinių svorių – tinklas tiesiog spėja. Tada jam parodomas pavyzdys: nuotrauka su šunimi. Tinklas sako „tai katė” (nes svoriai atsitiktiniai). Sistema palygina šį atsakymą su teisingumu ir apskaičiuoja klaidą (loss). Kuo didesnė klaida, tuo blogiau.

Tada vyksta kažkas nuostabaus – algoritmas, vadinamas atgalinio sklidimo (backpropagation), eina per visą tinklą atgal ir šiek tiek pakoreguoja kiekvieną svorį taip, kad kita karta klaida būtų mažesnė. Šis procesas kartojamas milijonus kartų su milijonais pavyzdžių. Kiekviena iteracija – mažas žingsnis link tikslumo.

Praktiškai tai reiškia: jei moki tinklą atpažinti katės nuotraukas, reikia:

  • Daugybės pažymėtų nuotraukų (šimtų tūkstančių ar net milijonų)
  • Daug skaičiavimo galios (GPU arba TPU procesoriai)
  • Laiko – modernių modelių mokymas gali trukti savaites ar mėnesius
  • Elektros – ir čia jau kalbame apie rimtas sumas

Gradientinio nusileidimo (gradient descent) algoritmas – tai tas mechanizmas, kuris valdo korekciją. Įsivaizduok kalną su rūku. Tu stovi ant jo ir nori nusileisti į slėnį (minimalią klaidą), bet nematai toliau nei kelis žingsnius. Ką darei? Žiūri, kuria kryptimi žemyn, ir žengiate žingsnį. Tada vėl. Ir vėl. Lygiai taip veikia gradientinis nusileidimas.

Konvoliuciniai tinklai, rekurentiniai tinklai ir transformeriai – kam ko reikia

Ne visi neuroniniai tinklai yra vienodi. Skirtingoms užduotims buvo sukurtos skirtingos architektūros, ir verta žinoti bent pagrindinius tipus.

Konvoliuciniai neuroniniai tinklai (CNN) – tai nuotraukų karaliai. Jie naudoja specialius filtrus, kurie „slenka” per vaizdą ir ieško šablonų. Kaip kai fotografuoji su filtru, kuris pabrėžia kraštus – CNN daro tą patį, tik automatiškai ir daug sudėtingiau. Naudojama: veidų atpažinimui, medicininių vaizdų analizei, autonominiams automobiliams.

Rekurentiniai neuroniniai tinklai (RNN) – sukurti darbui su sekomis. Tekstas, muzika, laiko eilutės – visa tai yra sekos, kur kontekstas svarbus. RNN turi „atmintį” – jis prisimena, ką matė anksčiau. Problema: ilgos sekos jiems sunkios, nes atmintis „išblunka”. Štai kodėl buvo sukurtas LSTM (Long Short-Term Memory) – patobulinta versija su geresne atmintimi.

Transformeriai – tai šiuolaikinė revoliucija. GPT, BERT, T5 – visi jie remiasi transformer architektūra, sukurta 2017 metais Google komandos. Jų pagrindas – dėmesio mechanizmas (attention mechanism), kuris leidžia tinklui vienu metu žiūrėti į visą seką ir nuspręsti, kurios dalys svarbios kuriai. Rašant sakinį „Bankas prie upės buvo senas”, transformer supranta, kad „bankas” čia reiškia krantą, o ne finansų įstaigą – nes „dėmesys” nukreipiamas į žodį „upė”.

Overfitting, underfitting ir kiti spąstai, į kuriuos patenka visi

Neuroninis tinklas gali mokytis per daug arba per mažai – ir abu atvejai yra problema.

Overfitting (permokymasis) – tai situacija, kai tinklas per gerai išmoksta mokymo duomenis. Jis tiesiog įsimena kiekvieną pavyzdį, vietoj to, kad išmoktų bendrą šabloną. Rezultatas: ant mokymo duomenų veikia puikiai, bet su naujais duomenimis – fiasko. Tai kaip studentas, kuris išmoksta atsakymus į egzamino klausimus, bet nesupranta pačios temos.

Underfitting (nepakankamai mokymasis) – priešinga problema. Tinklas per paprastas arba per mažai mokytas, kad suprastų duomenų struktūrą. Kaip studentas, kuris nė nesivargino mokytis.

Kaip su tuo kovoti? Keletas praktinių metodų:

  • Dropout – mokymosi metu atsitiktinai „išjungiami” kai kurie neuronai. Tai verčia tinklą nesikliauti tik keliais neuronais ir mokytis robustiškiau.
  • Regularizacija – baudžiama už per didelius svorius, kas neleidžia tinklui per daug specializuotis.
  • Daugiau duomenų – dažniausiai paprasčiausias sprendimas. Daugiau įvairių pavyzdžių = geresnė generalizacija.
  • Ankstyvasis sustabdymas (Early stopping) – stebima, kaip tinklas veikia su validacijos duomenimis, ir mokymasis sustabdomas, kai rezultatai pradeda blogėti.

Realus pasaulis: kur neuroniniai tinklai veikia dabar pat

Teorija – gerai. Bet kur tai matosi kasdieniniame gyvenime? Atsakymas: visur, tik to nepastebime.

Kai „YouTube” rekomenduoja vaizdo įrašą – tai neuroninis tinklas, analizuojantis tavo žiūrėjimo istoriją, laiką, kurį praleidai prie kiekvieno vaizdo, ir tūkstančius kitų signalų. Kai „Gmail” filtruoja spam – CNN ir transformer hibridai tikrina kiekvieną laišką. Kai „Google Translate” verčia tekstą – transformer architektūra. Kai „Face ID” atrakina telefoną – CNN atpažįsta tavo veidą iš 3D gylio žemėlapio.

Medicinos srityje neuroniniai tinklai jau diagnozuoja diabetinę retinopatiją iš akies dugno nuotraukų tiksliau nei daugelis gydytojų. Klimatologijoje jie prognozuoja ekstremalių orų įvykius. Muzikos industrijoje generuoja naujus kūrinius. Finansuose aptinka sukčiavimą per milisekundes.

Ir, žinoma, didieji kalbos modeliai – ChatGPT, Claude, Gemini – tai gigantiniai transformer tinklai, išmokyti ant beveik viso interneto turinio, galinčio generuoti tekstą, spręsti matematikos uždavinius, rašyti kodą ir diskutuoti apie filosofiją.

Kai algoritmas tampa per protingas: apie tai, ką verta žinoti

Suprasti, kaip veikia neuroniniai tinklai, svarbu ne tik techniškai – tai svarbu ir kaip piliečiui skaitmeniniame amžiuje. Nes šios sistemos turi rimtų apribojimų ir problemų, apie kurias dažnai nekalbama.

Pirma – juodosios dėžės problema. Net ir kūrėjai dažnai negali paaiškinti, kodėl tinklas priėmė konkretų sprendimą. Tinklas su šimtais milijardų parametrų yra tiesiog per sudėtingas žmogaus intuicijai. Tai kelia rimtų klausimų, kai neuroniniai tinklai naudojami sprendžiant, ar suteikti paskolą, ar priimti į darbą, ar paleisti iš kalėjimo anksčiau.

Antra – šališkumas duomenyse. Tinklas mokosi iš duomenų, o duomenys atspindi realų pasaulį su visais jo šališkumais. Jei mokymo duomenyse veidų atpažinimo sistema matė daugiausia baltaodžių veidų – ji blogiau atpažins tamsesnės odos žmones. Tai ne teorinė problema – tai buvo dokumentuota realiose sistemose.

Trečia – energijos sąnaudos. GPT-4 mokymas sunaudojo apie 50 GWh elektros energijos – tiek, kiek vidutinis Lietuvos miestas sunaudoja per kelis mėnesius. Kiekvienas ChatGPT pokalbis sunaudoja maždaug 10 kartų daugiau energijos nei įprasta Google paieška. Kai kalbame apie milijardus pokalbių per dieną – tai jau klimato klausimas.

Ketvirta – haliucinacijos. Didieji kalbos modeliai gali generuoti įtikinamai skambančią, bet visiškai klaidingą informaciją. Jie neturi „tiesos detektoriaus” – jie tiesiog generuoja statistiškai tikėtiną tekstą. Tai reiškia, kad naudojant šias sistemas kritinis mąstymas yra ne pasirinktinis, o privalomas.

Žinoti, kaip veikia neuroniniai tinklai, nereiškia tapti mokslininkų duomenų. Tai reiškia suprasti, kad kai algoritmas sako „tu gali patikti šis filmas” arba „šis žmogus yra kredito rizikas” – tai nėra objektyvi tiesa. Tai matematinė funkcija, išmokyta ant istorinių duomenų, su visais jų privalumais ir trūkumais. O žinant tai, galima ir geriau naudotis šiomis technologijomis, ir protingiau joms priešintis, kai reikia.