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

Transformerek és a BERT

Ez a lecke a Microsoft "AI kezdőknek" (AI For Beginners) tananyagának magyar adaptációja, és bemutatja, miért váltották le a transformerek az RNN-eket, és hogyan tanul nyelvet a BERT.

Vissza a tananyaghoz


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.

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.


← 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 →