Mitől lesz egy nyelvi modell "nagy"
Az eddigi leckékben mindig egy neurális hálót tanítottunk be egy konkrét feladatra, címkézett adathalmaz segítségével. A BERT-hez hasonló nagy transzformer modelleknél már más a logika. Előbb önfelügyelt módon, hatalmas mennyiségű szövegen betanítunk egy általános nyelvi modellt, amelyet aztán további, célfeladatra szabott tréninggel specializálunk.
A nagy nyelvi modellek (LLM, angolul large language model) esetében kiderült, hogy egy bizonyos méret felett a modell sok feladatot képes megoldani anélkül, hogy erre külön betanítottuk volna. Ezt a jelenséget elsőként a GPT (Generative Pre-trained Transformer) családja mutatta meg, amelyet az OpenAI fejlesztett. A GPT nem egyetlen modell, hanem modellek sorozata. A GPT-2 még legfeljebb 1,5 milliárd paraméterrel dolgozott, a GPT-3 már 175 milliárdig ment fel, a GPT-4 pedig szöveget és képet is elfogad bemenetként, és becslések szerint több tízezermilliárd paramétert mozgat. A méretnövekedéssel a modell nemcsak folyékonyabban fogalmaz, hanem egyre több apró mintázatot és összefüggést tanul meg a világról, egyszerűen azért, mert emberi tudás óriási mennyiségén tanult.
Szöveggenerálás és a következő szó valószínűsége
A GPT típusú modellek működésének alapja egyszerű elven nyugszik. A modell mindig a következő szó valószínűségét jósolja meg, a már leírt szavak ismeretében. Ha csak a szó önmagában vett gyakoriságát néznénk a szövegkorpuszban, keveset tudnánk kezdeni vele. A GPT ehhez képest feltételes valószínűséget számol, vagyis azt nézi, mi a legvalószínűbb folytatás az adott előzmények után. Ez az autoregresszív generálás lényege, a modell szóról szóra (pontosabban tokenről tokenre) építi fel a választ, és minden új token az addig legenerált szöveg fényében születik meg.
A generálás minőségét egy úgynevezett perplexitás nevű mutatóval szokás jellemezni. Ez azt méri, mennyire "lepődik meg" a modell egy adott mondaton. Ha egy mondat természetes és értelmes, a modell magas valószínűséget rendel hozzá, tehát alacsony a perplexitása. Ha a mondat furcsa vagy értelmetlen, a modell bizonytalanabb, ez magasabb perplexitásban mutatkozik meg. A perplexitás azért hasznos, mert feladat-specifikus adathalmaz nélkül is jelzi, mennyire jó a modell nyelvi értelemben.
- A modell szöveggenerálás közben mindig a legvalószínűbb (vagy egy véletlenszerűen kiválasztott, magas valószínűségű) következő tokent választja.
- Minél nagyobb a tanítóadat és a modell mérete, annál árnyaltabb ez a valószínűségi becslés.
- A szöveg megértése és a szöveg előállítása gyakorlatilag ugyanannak a képességnek a két oldala.
Kontextusban tanulás, zero-shot és few-shot promptolás
A nagy nyelvi modellek egyik legfontosabb tulajdonsága, hogy új feladatot tudnak megtanulni pusztán a bemenetből, anélkül hogy a súlyaikat módosítanánk. Ezt hívjuk kontextusban tanulásnak (in-context learning). Ha egyszerűen csak leírjuk, mit szeretnénk (például "fordítsd le ezt a mondatot angolra"), és a modell rögtön nekilát a feladatnak, azt zero-shot promptolásnak nevezzük, hiszen a modell egyetlen konkrét példát sem kapott a feladatra.
Ha ehelyett a kérés elé beírunk néhány mintapéldát (bemenet és elvárt kimenet párokat), a modell ezekből "kiolvassa" a feladat logikáját, és a mintázatot folytatva old meg egy új, hasonló esetet. Ez a few-shot promptolás, és gyakran meglepően jól működik olyan feladatokon is, amelyekre a modellt sosem tanították direkt módon. A GPT-3-at bemutató tanulmány éppen ezt a jelenséget helyezte a középpontba, innen a cím is: "Language Models are Few-Shot Learners".
A gyakorlatban ez azt jelenti, hogy egyetlen előre betanított modellel nagyon sokféle feladatot le lehet fedni, csak a promptot kell hozzá megfelelően megírni. Ez alapjaiban változtatta meg, hogyan gondolkodunk az NLP feladatok megoldásáról, korábban minden új feladathoz saját, célzottan tanított modellre volt szükség.
Prompt engineering, avagy a prompt programozás
Mivel a modell viselkedését nagymértékben meghatározza, hogyan fogalmazzuk meg a kérést, kialakult egy önálló gyakorlati terület, a prompt engineering, vagy magyarul prompt programozás. Ennek lényege, hogy a megfelelő szóválasztással, formátummal, sorrenddel és példákkal terelhető a modell a kívánt válasz felé, anélkül hogy egyetlen sor kódot is írnánk vagy a modell paramétereihez hozzányúlnánk.
Néhány bevált elem, amivel egy prompt hatékonysága javítható:
- Egyértelmű szerepmeghatározás, amikor a modellnek megmondjuk, milyen szerepben, milyen hangnemben válaszoljon.
- Konkrét formátum megadása a válaszra, például lista, táblázat vagy meghatározott hosszúságú összefoglaló.
- Néhány jó minőségű példa beillesztése a few-shot módszer szerint, hogy a modell lássa a mintát.
- A feladat lépésekre bontása, hogy a modell "gondolkodás közben" jusson el a válaszig.
Ez a téma, vagyis hogy egy nagy nyelvi modellt hogyan lehet üzleti környezetben, napi munkában hatékonyan használni, ma már önálló szakterület. Az AI kezdőknek tananyag ezt a leckét 2022 körül írta, azóta a ChatGPT és a Claude típusú asszisztensek gyakorlatilag mindenki számára elérhetővé tették ezt a technológiát. Aki ezt üzleti mélységben, konkrét eszközök összehasonlításával szeretné megismerni, annak érdemes körülnézni a site guide és blog rovataiban is.
Korlátok, amikkel érdemes tisztában lenni
A nagy nyelvi modellek lenyűgöző képességei mellett komoly korlátaik is vannak. A modell időnként magabiztosan állít olyan dolgokat, amelyek nem igazak, ezt hívjuk hallucinációnak. Mivel a modell a tanítóadatból tanul, öröklődhetnek benne a forrásszövegekben jelen lévő torzítások (bias) is, legyen szó nemi, kulturális vagy egyéb elfogultságról. A nagy modellek tanítása és futtatása emellett jelentős számítási kapacitást és energiát igényel, ez pedig közvetlen költségkorlátot jelent, és felveti a fenntarthatóság kérdését is.
Éppen ezért a nagy nyelvi modelleket célszerű olyan eszközként kezelni, amely erős segítséget nyújt, de az eredményeit érdemes ellenőrizni, különösen ha a válasz tényeken, számokon vagy jogi, pénzügyi következményeken alapul.
Gyakorlat
Aki szeretné kódban is megnézni, hogyan generál szöveget egy GPT típusú modell, a Microsoft eredeti jegyzetfüzetében talál egy futtatható példát Hugging Face Transformers és PyTorch segítségével. Gyakorlati kód megtekintése
Forrás
Ez a lecke a Microsoft nyílt forráskódú, MIT licenc alatt elérhető "AI For Beginners" tananyagának magyar adaptációja. Eredeti angol lecke. GitHub. Felhasznált magyar gépi fordítás. GitHub.
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 →