AI kezdőknek · Természetes nyelvfeldolgozás · Lecke 15

Nyelvi modellezés. Saját szóbeágyazások tanítása

Ebben a leckében megmutatjuk, hogyan lehet magukat a szóbeágyazásokat betanítani, nem csak felhasználni egy kész változatukat.

Vissza a tananyaghoz


Szó vagy tokenBeágyazásivektorNyelvi modell
A modell minden tokent egy sűrű, számokból álló vektorra képez le.

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.


Tanítási feladat felcímkézetlen szövegből a macska felugrott ??? asztalra A modell a környező szavakból jósolja meg a kitakart szót
Egy szó kitakarása bármilyen szövegből ingyen ad tanítási feladatot, ezért nem kell kézzel címkézett adat.

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.


Korábbi szavakKontextusvektorKövetkezőszó valószínűsége
A nyelvi modell a kontextusból becsüli meg a legvalószínűbb folytatást.

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.

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.


  1. Korpusz összegyűjtéseFelcímkézetlen szakterületi szöveg kell, címkézésre nincs szükség.
  2. Ablakok kivágásaA szövegből rögzített hosszúságú tokenablakokat képezünk.
  3. 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.
  4. Vektorok frissítéseA hibából a rejtett vektorreprezentációk lépésről lépésre finomodnak.
  5. 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.


← Előző lecke Következő lecke →

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 →