Zamysleli ste sa niekedy nad tým, ako funguje strojový preklad? Niekoľko riadkov kódu stačí na vytvorenie nástrojov podobných Google Translate, DeepL atď. V tomto článku vás prevedieme procesom vytvárania modelu strojového prekladu zo sekvencie na sekvenciu (seq2seq). Na konci budete schopní pochopiť, ako to funguje a ako mať nasaditeľný model prekladu.
Pochopenie modelu Seq2Seq
Aby sme pochopili koncept modelu seq2seq, ponorme sa do príkladu. Predstavte si, že máte vetu v angličtine:
"How are you?"
a chcete to preložiť do tamazightu:
"Amek tettiliḍ?"
Model seq2seq pozostáva z kodéra a dekodéra, ktoré spolupracujú pri vykonávaní tohto prekladu.
-
Kódovač: Kodér vezme zdrojovú vetu „Ako sa máš?“ a spracuje ju slovo po slove. Kóduje informácie do vektora s pevnou dĺžkou nazývaného kontextový vektor. V našom príklade by kodér analyzoval každé slovo a vytvoril zmysluplnú reprezentáciu vety.
-
Dekodér: Dekodér prijme kontextový vektor z kodéra a začne generovať cieľovú vetu „Amek tettiliḍ?“. Robí to slovo po slove, pričom berie do úvahy kontextový vektor a predtým vygenerované slová. Dekodér sa naučí generovať správny preklad na základe vzorov, ktoré objaví počas tréningu.
Príprava údajov
Teraz, keď sme pochopili model seq2seq, povedzme si o príprave údajov na rovnakom príklade.
Na trénovanie modelu strojového prekladu je potrebný paralelný korpus, ktorý pozostáva zo zoradených viet v zdrojovom (v našom prípade angličtina) aj cieľovom jazyku (tamazight). Niekoľko zdrojov ako Europarl a Paralelný korpus OSN poskytuje obrovské množstvo viacjazyčných údajov.
-
Tokenizácia: Prvým krokom pri príprave údajov je tokenizácia. Anglické a tamazightské vety rozložíme na jednotlivé žetóny alebo slová. Napríklad anglická veta "How are you?" by sa tokenizovalo do ['Ako', 'sa', 'vy', '?'] a veta z Tamazight "Amek tettiliḍ?" by sa tokenizovalo do ['SOS', 'Amek', 'tettiliḍ', '?', 'EOS']. Na označenie začiatku a konca sekvencie používame SOS a EOS.
-
Čistenie a normalizácia: Ďalej vykonáme čistenie a normalizáciu tokenizovaných viet. To zahŕňa odstránenie všetkých nepotrebných znakov, interpunkcie alebo špeciálnych symbolov, ktoré by mohli brániť procesu prekladu. Napríklad by sme mohli odstrániť otáznik na konci anglickej a tamazightskej vety, aby sme zjednodušili tréningové údaje.
V závislosti od charakteristík zdrojového a cieľového jazyka môžu byť potrebné ďalšie kroky predbežného spracovania špecifické pre daný jazyk. Napríklad vo francúzštine možno budeme musieť spracovať špeciálne znaky, ako sú diakritika alebo diakritika.
- Tvorba slovnej zásoby: Slovnú zásobu vytvárame zbieraním jedinečných slov zo zdrojovej aj cieľovej vety. Každému slovu je potom priradený jedinečný index alebo identifikátor, výsledkom čoho je to, čo nazývame mapa vkladania slov, ktorá sa použije počas tréningového procesu:
6: "how"
330: "are"
537: "you"
S tým by náš tokenizovaný príklad vyzeral takto:
[6, 330, 537] # How Are You
[420, 775] # Amek tettiliḍ
- Vloženie sekvencie: Na zabezpečenie jednotnej dĺžky sekvencie vyplníme vety špeciálnymi tokenmi (napr. „PAD“ alebo 0), aby mali všetky rovnakú dĺžku. Výplň je potrebná, pretože neurónové siete zvyčajne očakávajú vstupy s pevnou dĺžkou. Pridaním výplňových žetónov na koniec kratších viet vytvárame sekvencie rovnakej dĺžky, čo umožňuje efektívny tréning. Dĺžka by bola počtom slov najdlhšej vstupnej vety.
Napríklad použitie výplne 13 na naše vstupné a výstupné tokeny poskytne nasledujúci výsledok:
[6, 330, 537, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # How Are You
[420, 775, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # Amek tettiliḍ
Modelový tréning
S pripravenými údajmi môžeme pokračovať v trénovaní nášho modelu strojového prekladu. Údaje sme rozdelili do tréningových a validačných súborov. Tréningová súprava slúži na aktualizáciu parametrov modelu počas tréningu, zatiaľ čo validačná súprava nám pomáha monitorovať výkon modelu a predchádzať preťaženiu.
Školenie neurónových sietí
Počas tréningu dodávame modelu zdrojové vety (angličtina) ako vstup a zodpovedajúce cieľové vety (tamazight) ako požadovaný výstup. Model generuje predpovede pre cieľové vety slovo po slove na základe vstupných sekvencií. Tieto predpovede sa porovnávajú so skutočnými cieľovými sekvenciami pomocou funkcie straty, ako je kategorická krížová entropia.
Backpropagation a aktualizácie parametrov
Procesom spätného šírenia model vypočítava gradienty straty vzhľadom na jeho parametre. Tieto gradienty označujú smer a veľkosť aktualizácií parametrov potrebných na minimalizáciu straty. Optimalizačný algoritmus, ako je stochastický gradientový zostup (SGD) alebo Adam, používa tieto gradienty na iteračnú aktualizáciu parametrov modelu, čím sa predpovede časom presnejšie.
Iteratívne školenie
Tréningový proces prebieha iteratívne vo viacerých epochách. V každej epoche model prechádza celým tréningovým dátovým súborom, aktualizuje jeho parametre a dolaďuje svoje chápanie prekladových vzorov. Opakovaním tohto procesu sa model stáva čoraz zdatnejším pri generovaní presných prekladov.
Validácia a hodnotenie
Počas školenia pravidelne hodnotíme výkonnosť modelu na overovacej sade. Toto vyhodnotenie nám pomáha sledovať pokrok modelu a v prípade potreby vykonať úpravy. Na posúdenie kvality prekladov a ich porovnanie s referenčnými prekladmi môžeme použiť metriky ako BLEU (Bilingual Evaluation Understudy).
Nasadenie
Keď je model vyškolený a vyhodnotený, je pripravený na nasadenie. TensorFlow poskytuje niekoľko možností na nasadenie modelov strojového prekladu vrátane TensorFlow Serving, TensorFlow Lite a TensorFlow.js. TensorFlow Serving umožňuje obsluhu modelu prostredníctvom REST API, čo umožňuje jednoduchú integráciu s inými aplikáciami. TensorFlow Lite umožňuje spustiť model na mobilných zariadeniach s obmedzenými zdrojmi. TensorFlow.js umožňuje nasadenie vo webových prehliadačoch, vďaka čomu je preklad dostupný používateľom priamo na webových stránkach.
Na vytvorenie rozhrania REST API možno použiť aj webový rámec, ako napríklad FastAPI.
Ďalšie podrobnosti nájdete aj v našom článku ako nasadiť model strojového učenia.
Neustále zlepšovanie
Vytvorenie modelu strojového prekladu je iteratívny proces. Monitorovanie spätnej väzby od používateľov, zhromažďovanie dodatočných údajov a dolaďovanie modelu prostredníctvom pravidelných aktualizácií sú nevyhnutné pre neustále zlepšovanie. Flexibilita a škálovateľnosť TensorFlow uľahčuje prispôsobenie modelu meniacim sa požiadavkám a novým jazykom.