Kai mašina pradeda „suprasti” kalbą
Prisimenu, kai pirmą kartą naudojau „Google Translate” – tai buvo kažkur 2007-aisiais, ir rezultatai buvo, švelniai tariant, juokingi. Verčiau kažkokį vokišką tekstą į lietuvių kalbą ir gavau tokią beprasmybių kratinį, kad net nesupratau, apie ką iš viso buvo kalba. Bet tada kažkas atsitiko – maždaug 2016-2017 metais vertimų kokybė staiga šoktelėjo taip aukštai, kad žmonės pradėjo kalbėti apie „mašinų revoliuciją”. Kas pasikeitė? Atsakymas – neuroniniai tinklai. Bet iki jų buvo ilgas kelias, ir jį verta suprasti, jei nori tikrai žinoti, kaip visa tai veikia.
Automatinis teksto vertimas – tai ne tik technologijų istorija. Tai istorija apie tai, kaip žmonės bandė išmokyti mašinas daryti kažką, kas žmogui atrodo visiškai natūralu, bet iš tikrųjų yra neįtikėtinai sudėtinga. Kalba nėra tik žodžių rinkinys. Ji pilna konteksto, kultūrinių niuansų, dviprasmybių, ironijos, humoro ir tūkstančio kitų dalykų, kuriuos mes suprantame intuityviai, bet labai sunkiai galime paaiškinti algoritmui.
Nuo žodynų iki statistikos – pirmieji bandymai
Pirmieji automatinio vertimo bandymai buvo, tiesą sakant, gana naivūs. Idėja buvo paprasta: padaryk didelį žodyną, surašyk gramatikas, ir leisk kompiuteriui „versti” žodis po žodžio. Tai vadinama taisyklėmis pagrįstu vertimu (angl. Rule-Based Machine Translation arba RBMT). Lingvistai rankiniu būdu kūrė taisykles – jei šis žodis yra veiksmažodis ir stovi šioje pozicijoje, tai versk jį taip, jei daiktavardis turi tokį galūnę, tai daryk štai taip.
Problema? Kalbos taisyklių yra begalė, ir kiekviena taisyklė turi išimčių. Lietuvių kalba – puikus pavyzdys. Mes turime septynis linksnius, sudėtingą veiksmažodžių sistemą, ir žodžių tvarka sakinyje gali keistis gana laisvai. Anglų kalboje žodžių tvarka yra griežta. Kaip mašinai paaiškinti, kad lietuviškai „Katė suvalgė pelę”, „Pelę suvalgė katė” ir „Suvalgė katė pelę” – visi šie sakiniai reiškia tą patį, tik su skirtingais akcentais? Taisyklėmis pagrįsti sistemai tai buvo košmaras.
Tada atėjo statistinis vertimas (SMT – Statistical Machine Translation). Čia idėja jau buvo visiškai kitokia ir, reikia pripažinti, gana elegantiškai paprasta: užuot rašius taisykles, leisk kompiuteriui mokytis iš didelių tekstų kiekių. Duok jam milijonus sakinių poromis – originalas ir vertimas – ir leisk jam pačiam išsiaiškinti, kokie žodžiai ir frazės atitinka vienas kitus.
Statistinis vertimas naudojo tikimybių skaičiavimą. Sistema iš esmės klausdavo: „Atsižvelgiant į šį šaltinio sakinį, koks yra labiausiai tikėtinas vertimas?” Tai buvo milžiniškas žingsnis į priekį. Bet ir čia buvo rimtų problemų – sistema vis tiek nesuprato konteksto plačiąja prasme, dažnai klysdavo su ilgesniais sakiniais, ir jos vertimai skambėdavo mechaniškai.
Neuroniniai tinklai – kai viskas pasikeitė
2014-2016 metais mokslininkų grupės, dirbančios tiek „Google”, tiek universitetuose, pristatė kažką, kas pakeitė žaidimo taisykles: neuroninius tinklus vertimui (Neural Machine Translation arba NMT). Ir čia prasideda tikrai įdomu.
Neuroninis tinklas – tai kompiuterinė sistema, kuri labai laisvai imituoja žmogaus smegenų neuronų veikimą. Tai sluoksniai „mazgų” (neuronų), kurie yra sujungti tarpusavyje ir perduoda informaciją. Kiekvienas ryšys turi svorį – skaičių, kuris parodo, kiek svarbi yra ta informacija. Mokymo metu šie svoriai nuolat koreguojami, kol sistema pradeda duoti teisingus atsakymus.
Pirmieji neuroniniai tinklai vertimui naudojo architektūrą, vadinamą koduotoju-dekoduotoju (encoder-decoder). Idėja tokia:
- Koduotojas perskaito visą šaltinio sakinį ir sukuria jo „supresuotą” matematinę reprezentaciją – vektorių, kuris tarsi „sulaiko” viso sakinio prasmę.
- Dekoduotojas ima tą vektorių ir generuoja vertimą žodis po žodžio.
Tai jau buvo daug geriau nei statistiniai metodai, bet vis tiek turėjo vieną didelę problemą: ilgiems sakiniams tas vienas vektorius tiesiog nesugebėdavo sutalpinti visos informacijos. Įsivaizduok, kad turi sudėti visą knygą į vieną sakinį – kažkas prarandama.
Sprendimas atėjo su dėmesio mechanizmu (attention mechanism). Tai buvo tikras proveržis. Dabar dekoduotojas, generuodamas kiekvieną vertimo žodį, gali „žiūrėti” atgal į visus šaltinio sakinio žodžius ir nuspręsti, kurie iš jų yra svarbiausi šiuo konkrečiu momentu. Verčiant žodį „katė”, sistema žiūri į šaltinio žodį „cat”. Verčiant veiksmažodį, ji žiūri į atitinkamą šaltinio veiksmažodį. Tai labai panašu į tai, kaip žmogus vertėjas skanuoja originalą, kol rašo vertimą.
Transformer architektūra – šiuolaikinis standartas
2017 metais „Google Brain” komanda publikavo straipsnį pavadinimu „Attention Is All You Need” (Dėmesys yra viskas, ko reikia). Tai buvo vienas įtakingiausių mokslinių straipsnių pastarojo dešimtmečio dirbtinio intelekto srityje. Jame pristatyta Transformer architektūra – tai, kas šiandien yra beveik visų modernių kalbos modelių pagrindas.
Transformer visiškai atsisakė ankstesnių architektūrų sekvencinės logikos (kur informacija buvo apdorojama žodis po žodžio) ir pasiūlė kažką radikaliai kitokio: lygiagrečią dėmesio apdorojimą. Vietoj to, kad žiūrėtum į žodžius po vieną, Transformer vienu metu žiūri į visus žodžius ir skaičiuoja, kaip kiekvienas žodis susijęs su kiekvienu kitu žodžiu sakinyje.
Tai vadinama savęs dėmesiu (self-attention). Sakinyje „Bankas prie upės buvo šlapias” žodis „bankas” turi ryšį su žodžiu „upė” ir „šlapias” – ir Transformer tai supranta, nes mato visus šiuos ryšius vienu metu. Todėl jis gali teisingai interpretuoti, kad čia kalbama apie upės krantą, o ne finansų įstaigą.
Praktiškai tai reiškia:
- Geresnį konteksto supratimą net labai ilguose sakiniuose
- Galimybę mokyti modelius daug greičiau (nes apdorojimas yra lygiagretus)
- Žymiai geresnę dviprasmybių sprendimą
- Natūraliau skambančius vertimus
Šiandien tokios sistemos kaip „DeepL”, „Google Translate” (naujesnės versijos), „Microsoft Translator” – visos jos remiasi Transformer architektūra arba jos modifikacijomis.
Kaip sistema iš tikrųjų „skaito” tekstą
Čia norėčiau sustoti ir paaiškinti vieną dalyką, kuris dažnai lieka neaiškus: kaip kompiuteris iš viso „supranta” žodžius? Juk kompiuteris dirba tik su skaičiais.
Atsakymas – žodžių vektoriai (word embeddings). Kiekvienas žodis paverčiamas dideliu skaičių masyvu (vektoriumi), kuris tarsi „aprašo” to žodžio prasmę matematinėje erdvėje. Ir čia prasideda tikra magija: žodžiai, kurie turi panašią prasmę, turi panašius vektorius. Žodžiai „šuo” ir „katė” bus matematiškai arčiau vienas kito, nei „šuo” ir „automobilis”.
Dar įdomiau – šiuose vektoriuose galima atlikti matematinius veiksmus su prasme. Klasikinis pavyzdys: vektorius(„karalius”) – vektorius(„vyras”) + vektorius(„moteris”) ≈ vektorius(„karalienė”). Tai nėra triukas – tai tikra matematika, kuri atspindi kalbos struktūrą.
Šiuolaikiniuose modeliuose naudojami ne tik žodžių, bet ir subžodžių vektoriai (subword tokenization). Tai reiškia, kad žodžiai yra skaidomi į mažesnius gabalus – tokius kaip šaknys, galūnės, priešdėliai. Lietuvių kalbai tai ypač svarbu, nes mūsų žodžiai gali turėti labai daug formų. Žodis „namas” gali tapti „namo”, „name”, „namai”, „namų”, „namuose” ir t.t. – ir sistema turi suprasti, kad tai vis tas pats konceptas.
Praktinis patarimas: jei naudoji automatinį vertėją ir gauni keistus rezultatus, pabandyk supaprastinti sakinį. Ilgi, sudėtingi sakiniai su daug šalutinių sakinių dažnai duoda blogesnius rezultatus nei keli trumpi, aiškūs sakiniai.
Duomenys – tikrasis vertėjų variklis
Yra vienas dalykas, apie kurį kalbama mažiau nei apie algoritmus, bet kuris yra lygiai tiek pat svarbus: duomenys. Neuroniniai tinklai yra tik įrankis – jų kokybė priklauso nuo to, kuo jie buvo „maitinami”.
Šiuolaikiniai vertimo modeliai buvo apmokyti su astronomiškai dideliais tekstų kiekiais. „Google Translate” naudojo, be kita ko, Europos Parlamento posėdžių protokolus (kurie yra išversti į visas ES kalbas), Jungtinių Tautų dokumentus, milijardus interneto puslapių. Tai yra milijardai žodžių porų.
Bet čia yra ir problema: jei duomenys yra šališki, modelis bus šališkas. Jei didžioji dalis mokymo duomenų yra iš formalių dokumentų, modelis gali prastai versti šnekamąją kalbą, žargoną ar socialinių tinklų tekstus. Jei tam tikros kalbų poros turi mažiau mokymo duomenų (o taip nutinka su mažesnėmis kalbomis, tarp jų ir lietuvių), vertimų kokybė bus prastesnė.
Lietuvių kalba šiuo atžvilgiu yra vidutinėje padėtyje. Mes turime pakankamai duomenų, kad vertimas veiktų priimtinai, bet toli gražu ne tiek, kiek anglų-ispanų ar anglų-prancūzų poros. Todėl verčiant iš lietuvių į kitas kalbas ar atvirkščiai, vis dar galima pastebėti klaidų, kurios su populiaresnėmis kalbomis neatsitiktų.
Dar vienas svarbus momentas: daugelis sistemų naudoja tarpinę kalbą (pivot language). Jei nori išversti iš lietuvių į japonų, sistema gali iš tikrųjų versti lietuvių → anglų → japonų. Tai reiškia, kad klaidos gali kauptis dviejuose etapuose. Kai gauni keistą vertimą, kartais tai yra dėl šios priežasties.
Kas dar neveikia gerai ir kodėl
Nepaisant visų šių technologinių stebuklų, automatinis vertimas vis dar turi rimtų silpnybių. Ir čia norėčiau būti atviras, nes kartais žmonės pervertina šias sistemas.
Ironija ir humoras – tai turbūt sunkiausia sritis. Kai sakome „Taip, žinoma, labai mėgstu stovėti eilėje” – žmogus iš tono ir konteksto supranta ironiją. Mašina dažniausiai – ne. Ji verčia tiesioginę prasmę, ir ironija dingsta.
Kultūriniai idiomų vertimas taip pat dažnai stringa. „Laikyti akmenį už krūtinės” lietuviškai reiškia turėti slaptą piktą ketinimą. Jei sistema verčia žodis po žodžio, gausite kažką apie akmenį ir krūtinę, kas anglakalbiam skaitytojui nieko nereiškia.
Kontekstas tarp sakinių – dar viena problema. Šiuolaikiniai modeliai paprastai apdoroja tekstą gabalais, ir kartais praranda ryšį tarp tolimų sakinio dalių. Jei pirmame sakinyje paminėjai „Marija”, o penkiame sakinyje rašai „ji” – sistema ne visada teisingai supranta, apie ką kalba.
Specifinė terminija – medicinos, teisės, technikos tekstai reikalauja tikslios terminologijos, ir automatiniai vertėjai čia dažnai klysta. Jie gali žinoti bendrą žodžio prasmę, bet ne specifinį terminą, naudojamą tam tikroje srityje.
Praktinės rekomendacijos, jei naudoji automatinį vertimą profesionaliai:
- Visada patikrink svarbius terminus rankiniu būdu
- Niekada nenaudok automatinio vertimo teisinių ar medicininių dokumentų galutinei versijai be žmogaus peržiūros
- Jei verčiamas tekstas bus viešas, paprašyk gimtakalbio peržiūrėti
- Naudok „DeepL” sudėtingesniems tekstams – daugelio tyrimų duomenimis, jo kokybė dažnai pranoksta „Google Translate” europietiškoms kalboms
Kai mašina ir žmogus dirba kartu – ir ką tai reiškia mums visiems
Galiausiai norisi pakalbėti apie tai, kur visa tai veda ir ką tai reiškia praktiškai. Nes technologijos yra įdomios, bet svarbiausia – kaip jos keičia mūsų gyvenimą.
Profesionalūs vertėjai šiandien dažnai naudoja vadinamą mašininio vertimo po redagavimo (MTPE – Machine Translation Post-Editing) metodą. Tai reiškia, kad mašina padaro pirmąjį vertimą, o žmogus jį patikrina ir pataiso. Tyrimai rodo, kad tai gali padidinti vertėjo produktyvumą 30-50%. Tai nereiškia, kad vertėjai tampa nereikalingi – jie tampa kokybės kontrolieriais ir kūrybiniais sprendimų priėmėjais.
Kalbant apie ateitį – modeliai kaip GPT-4, Claude ar Gemini jau rodo, kad ribos tarp „vertimo” ir „kalbos supratimo” nyksta. Šie modeliai ne tik verčia – jie gali adaptuoti tekstą skirtingoms auditorijoms, paaiškinti kultūrinius skirtumus, pasiūlyti alternatyvius vertimus su paaiškinimais. Tai jau yra kažkas daugiau nei mechaninis vertimas.
Bet čia norėčiau pasakyti kažką, kas gal nuskambės netikėtai: kuo geriau suprantame, kaip šios sistemos veikia, tuo geriau galime jas naudoti. Žmogus, kuris žino, kad sistema gali klysti su idiomomis, su ironija, su specifine terminija – tas žmogus naudos ją protingai. O žmogus, kuris mano, kad mašina visada teisi – tas gali padaryti rimtų klaidų.
Automatinis vertimas yra nuostabus įrankis. Jis leidžia mums bendrauti su žmonėmis visame pasaulyje, skaityti tekstus kalbomis, kurių nemokame, dirbti tarptautinėje aplinkoje. Bet jis yra įrankis – ne magas. O geriausiai įrankius naudoja tie, kurie supranta, kaip jie veikia. Tikiuosi, kad po šio straipsnio tu esi šiek tiek arčiau to supratimo.

