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.
RNN enkóder és dekóder
- A teljes mondat egyetlen rejtett állapotba sűrűsödik
- Hosszú mondatnál a mondat eleji információ elveszik
- Minden bemeneti szó egyforma súllyal számít
Figyelem mechanizmussal
- A dekóder az összes köztes állapotot látja
- Minden kimeneti szóhoz külön súlyok tartoznak
- A modell megtanulja, a bemenet mely része releváns éppen
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.
RNN
- A sorrendet a lépésenkénti feldolgozás kódolja
- A tokeneket egymás után, sorban kell feldolgozni
- A tanítás emiatt nehezen párhuzamosítható
Transformer
- A sorrendet pozíciós kódolás adja a beágyazás mellé
- Az önfigyelem minden tokent egyszerre lát
- Párhuzamosan tanítható, ezért sokkal jobban skálázható
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.
- ElőtanításA BERT hatalmas korpuszon, maszkolt szavak kitalálásával tanulja meg a nyelv általános szabályszerűségeit.
- Feladatspecifikus rétegA kész modellhez egy kisebb, a célfeladatra szabott réteget adunk.
- FinomhangolásA modellt egy jóval kisebb, címkézett adathalmazon igazítjuk a feladathoz.
- ÚjrahasznosításUgyanaz az alapmodell osztályozásra, kérdésmegválaszolásra és névelem felismerésre is bevethető.
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.
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 →