A nyelvi modellezés alapötlete
A Word2Vec és a GloVe típusú szemantikus szóbeágyazások valójában az első lépést jelentik egy nagyobb cél felé, amit nyelvi modellezésnek hívunk. A nyelvi modell olyan rendszer, amely valamilyen formában megérti, illetve reprezentálja a nyelv belső szerkezetét, nem csak egyedi szavak jelentését.
A nyelvi modellezés mögötti fő ötlet, hogy a modelleket felcímkézetlen szövegen tanítjuk, felügyelet nélküli módon. Ez azért különösen hasznos, mert felcímkézetlen szövegből rengeteg áll rendelkezésre, míg a kézzel felcímkézett adat mennyisége mindig korlátos, hiszen az emberi munka ráfordítása szab neki határt. A leggyakoribb megközelítés, hogy a modellt arra tanítjuk, hogy a szövegben hiányzó szavakat jósolja meg, mivel egy szó véletlenszerű kitakarása és utólagos "kitalálása" könnyen előállítható tanítási feladat.
Miért érdemes saját beágyazást tanítani
A korábbi leckékben előre betanított szemantikus beágyazásokat használtunk, vagyis olyan modelleket, amelyeket valaki más már megtanított egy nagy, általános szövegkorpuszon. Érdemes viszont tudni, hogy ezek a beágyazások pontosan hogyan jönnek létre, mert ez az ismeret felszabadít egy fontos lehetőséget. Ha egy adott szakterület nyelvezete jelentősen eltér az általános nyelvhasználattól, akár orvosi, jogi vagy egy iparágra jellemző zsargonról van szó, saját beágyazást is taníthatunk kifejezetten arra a szövegkorpuszra.
Egy ilyen, szakterületre szabott beágyazás sokkal pontosabban ragadja meg a benne szereplő szavak közti valódi kapcsolatokat, mint egy általános célú, internetes szövegen tanított modell, hiszen az adott terület saját szóhasználatát és fogalmi viszonyait tükrözi.
Előre betanított beágyazás
- Nagy, általános internetes korpuszon tanult
- Azonnal használható, nem kell tanítani
- Az orvosi, jogi vagy iparági zsargont pontatlanul reprezentálja
Saját, szakterületi beágyazás
- A saját szövegkorpuszon tanul
- Az adott terület szóhasználatát és fogalmi viszonyait tükrözi
- Pontosabb kapcsolatokat ragad meg a szakszavak között
N-gram nyelvi modellezés
Az egyik legegyszerűbb megközelítés az N-gram nyelvi modellezés, amelyben egy adott token, vagyis szó vagy szótöredék valószínűségét az előtte álló N darab token alapján jósoljuk meg. A modell tehát a szövegkörnyezetet mindig csak visszafelé, egy rögzített hosszúságú ablakon keresztül nézi, és ebből tanulja meg, hogy egy adott szósorozat után statisztikailag melyik szó a legvalószínűbb folytatás.
Folytonos szózsák és Skip-gram
A szóbeágyazások tanításának két klasszikus, egymással rokon módszere a folytonos szózsák, angol nevén Continuous Bag-of-Words vagy röviden CBoW, és ennek fordítottja, a Skip-gram.
- CBoW esetén a modell egy $W_{-N}, \dots, W_N$ token sorozat középső, $W_0$ tagját próbálja megjósolni a körülötte lévő szavak alapján. A modell tehát a kontextusból következtet a hiányzó középső szóra.
- Skip-gram esetén a feladat fordított. A középső $W_0$ token alapján a modell a körülötte lévő szomszédos szavak halmazát, $\{W_{-N},\dots, W_{-1}, W_1,\dots, W_N\}$, próbálja megjósolni.
Mindkét módszer lényege, hogy a modell tanítás közben egy rejtett vektorreprezentációt épít fel minden egyes szóhoz, és ezek a vektorok lesznek végül a beágyazások. Azok a szavak, amelyek hasonló szövegkörnyezetekben fordulnak elő, egymáshoz közeli vektorokat kapnak, így a modell megtanulja megragadni a szavak közti szemantikai hasonlóságot, anélkül hogy bárki explicit módon megmondta volna neki, mit jelentenek.
CBoW
- A környező szavakból jósolja a középső szót
- Gyorsabban tanítható
- A gyakori szavakat reprezentálja jól
Skip-gram
- A középső szóból jósolja a környező szavakat
- Lassabb a tanítása
- A ritka szavakból is több tanulási szignált nyer ki
Miért nem bonyolult a beágyazások tanítása
Az előző lecke azt mutatta meg, hogy a kész szóbeágyazások szinte varázslatosan jól működnek, hiszen néhány egyszerű vektorművelettel is értelmes szemantikai kapcsolatokat lehet velük kifejezni. Ez a lecke azonban azt is megvilágítja, hogy a beágyazások betanítása maga nem egy rendkívül bonyolult feladat. Ha valaki egy adott szakterületre optimalizált, pontosabb reprezentációra vágyik, a szükséges módszerek, mint az N-gram, a CBoW vagy a Skip-gram, viszonylag egyszerűen megvalósíthatók, és saját szövegkorpuszon is taníthatók.
- Korpusz összegyűjtéseFelcímkézetlen szakterületi szöveg kell, címkézésre nincs szükség.
- Ablakok kivágásaA szövegből rögzített hosszúságú tokenablakokat képezünk.
- Jóslási feladatCBoW módban a kontextusból a középső szót, Skip-gram módban a szóból a környezetét jósoljuk.
- Vektorok frissítéseA hibából a rejtett vektorreprezentációk lépésről lépésre finomodnak.
- Beágyazások kinyeréseA kész rejtett vektorok maguk a szakterületi beágyazások.
Gyakorlati kód. A CBoW modell PyTorch alapú betanítását bemutató jegyzetfüzet elérhető a Microsoft eredeti tananyagában. Megnyitás GitHubon.
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 →