Miért kell egyáltalán feldarabolni
A modell számokkal dolgozik, nem betűkkel. Az első lépés ezért mindig az, hogy a nyers szöveget apró, jól kezelhető egységekre bontja, és ezekhez az egységekhez rendel egy-egy azonosítót. Ezt az egységet nevezzük tokennek, a feldarabolás folyamatát pedig tokenizációnak (tokenization). A tokenizáló egy rögzített szótár alapján dolgozik, amelyben minden ismert token egy egyedi számot kap. A szövegből így számok sorozata lesz, és a modell innentől ezekkel a számokkal számol.
Sem betű, sem szó
Kézenfekvőnek tűnne betűnként vagy szavanként dolgozni, de mindkét szélső megoldásnak komoly hátránya van. Ha minden token egy betű, akkor a szótár apró, viszont a leghétköznapibb mondat is nagyon sok tokenből áll, és a modellnek mindent az egyes betűkből kell felépítenie. Ha viszont minden token egy egész szó, akkor a szótár beláthatatlanul nagyra hízik, és minden ritka vagy még sosem látott szó megoldhatatlan problémát okoz. A modern tokenizálók ezért a kettő közötti szódarab szintet választják, amit az angol szakszó subword néven ismer.
Két szélső megoldás gyengéi
- Betűnként túl sok token egy mondathoz
- Szavanként hatalmasra nő a szótár
- Ismeretlen szó nem fér a szótárba
- Ragozott alakok mind külön férőhelyet kérnek
Miért jó a szódarab
- Gyakori szavak egyben maradnak
- Ritka szavak ismert darabokból állnak össze
- A szótár mérete kézben tartható
- Ismeretlen szó is mindig ábrázolható
A byte pair encoding alapötlete
A legelterjedtebb módszer, amellyel a szótár összeáll, a byte pair encoding, rövidítve BPE. Az alapötlet egyszerű. Kezdjük a lehető legkisebb egységekkel, a különálló karakterekkel, majd nézzük meg, melyik két szomszédos egység fordul elő a legtöbbször egymás mellett a tanítószövegben. Ezt a leggyakoribb párt összevonjuk egyetlen új tokenné, és felírjuk az összevonás szabályát. Utána megismételjük az egészet, keressük a most leggyakoribb párt, összevonjuk, és így tovább. Minden összevonás egy hosszabb, gyakori darabot ad a szótárhoz.
A folyamat addig ismétlődik, amíg el nem érjük a kívánt szótárméretet. A végeredmény egy szótár, amely tartalmazza a karaktereket és a fokozatosan összevont, egyre hosszabb gyakori darabokat, valamint az összevonási szabályok listája, amely alapján bármely új szöveg ugyanígy tokenizálható.
- Karakterekre bontásMinden szöveg először a legkisebb egységeire, a különálló karakterekre esik szét.
- A leggyakoribb pár kereséseMegszámoljuk, melyik két szomszédos egység fordul elő a legtöbbször egymás mellett.
- ÖsszevonásA leggyakoribb párt egyetlen új tokenné vonjuk össze, és felírjuk az összevonás szabályát.
- Ismétlés a célméretigA keresést és összevonást addig ismételjük, amíg a szótár el nem éri a kívánt méretet.
Miért fontos ez a gyakorlatban
A tokenizáció nem semleges technikai lépés, hanem érdemben befolyásolja, mennyibe kerül egy szöveg feldolgozása. A modell a tokenek számában méri a munkát, így ugyanaz a gondolat annál drágább és lassabb, minél több tokenre esik szét. A gyakori angol szavak jellemzően egyetlen tokenből állnak, míg a ritkább nyelvek és a hosszú, ragozott alakok több darabra bomlanak. A magyar szöveg emiatt gyakran több tokent igényel, mint egy hasonló hosszúságú angol mondat, mert a ragozás sok szódarabot hoz létre.
A tokenizáció szabja meg azt is, mit lát egyáltalán a modell. Ha egy tokenizáló nem ismeri jól egy nyelv jellegzetes darabjait, akkor a szöveget kevésbé hatékonyan bontja fel, és a modellnek több munkából kell összeraknia ugyanazt a jelentést.
Két rögzített dolog. A tanítás végén két dolog áll készen. Egy szótár, amely minden ismert tokenhez egy számot rendel, és az összevonási szabályok listája, amely alapján bármilyen új szöveg ugyanígy, kiszámíthatóan tokenekre bontható.
Workshop
AI Transformation Day
Egésznapos, vezetőknek szóló program. Feltérképezzük, hol tart a szervezet, mi az első reális lépés, és milyen belső feltételek szükségesek a sikerhez. A nap végén konkrét, prioritizált cselekvési lista.
Érdekel a program →