A természetes nyelvfeldolgozás egyik legfontosabb feladata a gépi fordítás, ez áll a Google Fordítóhoz hasonló eszközök mögött is. Általánosabban ezt sorozat a sorozat feladatnak nevezzük, hiszen a bemenet is és a kimenet is szavak sorozata. A visszacsatolt neurális hálókkal, vagyis RNN-ekkel ezt korábban két hálózat együttműködésével oldották meg. Az enkóder a bemeneti mondatot egyetlen rejtett állapotba sűrítette, a dekóder pedig ebből az állapotból építette fel a lefordított mondatot.
Ennek a megközelítésnek két komoly korlátja volt. Az enkóder végső állapota nehezen őrizte meg a hosszú mondat elején szereplő információt, ezért hosszú mondatoknál romlott a minőség. Emellett a modell minden szót egyformán kezelt, holott a valóságban egy adott kimeneti szó szempontjából a bemenet bizonyos szavai sokkal fontosabbak, mint mások.
A figyelem mechanizmus
Erre a problémára jelentett megoldást a figyelem mechanizmus. Az ötlet lényege, hogy amikor a modell egy kimeneti szót generál, ne csak az enkóder utolsó állapotára támaszkodjon, hanem az összes köztes rejtett állapotra, mindegyiket egy külön súllyal figyelembe véve. Így a modell minden kimeneti szóhoz meg tudja határozni, hogy a bemeneti mondat mely részei a legrelevánsabbak. Ez a súlyozás lényegében egy mátrixot ad, amely megmutatja, hogy a kimenet egyes szavai mennyire "figyelnek" a bemenet egyes szavaira.
A figyelem mechanizmus bevezetése jelentősen javította az RNN alapú modellek teljesítményét, ugyanakkor jelentősen meg is növelte a paraméterek számát. Ez pedig egy másik problémára világított rá. Az RNN-ek szekvenciális jellege miatt a tanítás nehezen párhuzamosítható, hiszen egy sorozat elemeit egymás után, sorban kell feldolgozni. Minél nagyobb és minél több figyelmet tartalmazó modellt szerettek volna építeni, annál inkább akadályozta ez a korlát a méretezést.
A transformer architektúra
A transformer modellek pontosan ezt a korlátot küszöbölik ki. A fő ötlet az, hogy teljesen elhagyjuk az RNN-ek szekvenciális feldolgozását, és egy olyan architektúrát építünk, amely a tanítás során párhuzamosítható. Ezt két elem teszi lehetővé, a pozíciós kódolás és az önfigyelem mechanizmus. A koncepciót bemutató eredeti tudományos cikk címe is erre utal, ez az "Attention is all you need", vagyis "A figyelem minden, amire szükséged van".
Mivel az RNN-eknél a szavak sorrendjét maga a lépésenkénti feldolgozás kódolta, a transformernél ezt explicit módon kell megadni. A pozíciós kódolás úgy működik, hogy minden tokenhez a jelentését leíró beágyazás mellé hozzáadunk egy másik beágyazást is, amely a token mondatbeli pozícióját reprezentálja. Így a modell tudni fogja, melyik szó hol helyezkedik el a sorozatban, anélkül hogy sorban kellene feldolgoznia őket.
A minták felismerését az önfigyelem, angolul self-attention mechanizmus végzi. Ez lényegében ugyanaz a figyelem mechanizmus, amelyet korábban az enkóder és a dekóder között alkalmaztunk, csak most a mondat önmagára figyel. Ez teszi lehetővé, hogy a modell felismerje, mely szavak tartoznak össze jelentés szerint egy mondaton belül, például hogy egy névmás melyik korábbi szóra utal vissza.
A transformerek gyakorlatban nem egy, hanem több figyelemfejet, angolul multi head attention mechanizmust használnak egyszerre. Minden fej más és más típusú kapcsolatot tanulhat meg felismerni, van amelyik a rövid távú, mondaton belüli összefüggésekre érzékeny, van amelyik inkább hosszabb távú, szemantikai kapcsolatokra. Ezek a fejek párhuzamosan futnak, és az eredményüket a modell egyesíti.
A teljes architektúrában a figyelem két helyen jelenik meg. Egyrészt a bemeneti szövegen belüli minták megragadására, ez az önfigyelem, másrészt a fordítási feladatoknál az enkóder és a dekóder közötti figyelemre, amely azt szabályozza, hogy a kimenet generálásakor mely bemeneti szavakra érdemes összpontosítani. Mivel minden bemeneti pozíció a kimeneti pozíciókhoz függetlenül, párhuzamosan rendelhető hozzá, a transformerek sokkal jobban skálázhatók, mint az RNN-ek. Ez tette lehetővé, hogy a modellek mérete és kifejezőereje az elmúlt években ugrásszerűen nőjön.
A BERT és a maszkolt nyelvi modellezés
A BERT, vagyis Bidirectional Encoder Representations from Transformers egy nagy méretű, sok rétegű transformer hálózat, az alapváltozat 12, a nagyobb változat 24 réteget tartalmaz. A BERT-et nem egy konkrét feladatra tanítják be először, hanem egy hatalmas szövegkorpuszon, ilyen például a Wikipédia és könyvek gyűjteménye, felügyelet nélküli módon. A tanítás alapötlete egyszerű, a mondatokban véletlenszerűen elrejtenek, vagyis maszkolnak szavakat, és a modellnek ezeket kell kitalálnia a szövegkörnyezet alapján.
Ez a feladat kényszeríti a modellt arra, hogy valódi nyelvi megértést fejlesszen ki, hiszen egy maszkolt szó kitalálásához figyelembe kell vennie a mondat elejét is és a végét is egyszerre. Innen ered a "bidirectional" jelző a névben, a BERT mindkét irányból, kétirányúan olvassa a szöveget, nem csak balról jobbra, ahogy a korábbi nyelvi modellek jellemzően tették.
Előtanítás és finomhangolás
Az előtanítás során a BERT a nyelv általános szabályszerűségeit sajátítja el, ezt a tudást pedig utólag lehet átvinni konkrét feladatokra. Ezt a folyamatot transzfer tanulásnak nevezzük. A gyakorlatban ez azt jelenti, hogy a már betanított modellhez hozzáadunk egy kisebb, feladatspecifikus réteget, majd a modellt egy jóval kisebb, célfeladathoz tartozó adathalmazon finomhangoljuk.
Ennek a megközelítésnek több gyakorlati előnye is van.
- Nem kell minden feladathoz hatalmas mennyiségű címkézett adatot gyűjteni, mert a nyelvi alapmegértést a modell már az előtanítás során megszerezte.
- A finomhangolás sokkal gyorsabb és olcsóbb, mint egy modell nulláról való betanítása.
- Ugyanaz az előtanított modell számos különböző feladathoz újrahasznosítható, például szövegosztályozáshoz, kérdésmegválaszoláshoz vagy névelem felismeréshez.
Ez a mintázat, vagyis egy nagy, általános célú modell előtanítása, majd finomhangolása konkrét feladatokra, ma is az egyik legfontosabb alapelve a modern nyelvi mesterséges intelligenciának. A BERT mellett számos más transformer alapú architektúra is épül erre a gondolatra, ilyen a DistilBERT, a BigBird vagy a GPT modellcsalád, és ezek elérhetők olyan nyílt eszközökön keresztül is, mint a HuggingFace könyvtára.
Gyakorlati kód
Ha szeretnéd saját kezűleg is kipróbálni, hogyan épül fel egy transformer réteg és hogyan használható a figyelem mechanizmus PyTorchban, a Microsoft eredeti jegyzetfüzete lépésről lépésre bemutatja a folyamatot. Gyakorlati kód a GitHubon.
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 →