Encoder (Transformer) (HU)
Enkóder (ang. Encoder, kódoló) — a gépi tanulásban és a mély tanulásban egy neurális hálózat olyan komponense, amelynek fő feladata a bemeneti adatsorozat (például szöveg vagy kép) átalakítása egy gazdag numerikus reprezentációvá, amelyet általában rejtett állapotnak, kontextusvektornak vagy embeddingnek neveznek. Ez a reprezentáció a bemeneti adatok legfontosabb jellemzőit és szemantikáját rögzíti a további feldolgozáshoz alkalmas formában.
Tágabb értelemben, az információelméletben az enkóder bármely eszköz vagy algoritmus, amely az információt egyik formátumból egy másikba alakítja át, gyakran tömörítési vagy továbbítási céllal.
Koncepció és rendeltetés
Az enkóder alapvető célja a neurális hálózatokban az, hogy a bemeneti adatokból hasznos jellemzőket nyerjen ki, és ezeket egy rögzített hosszúságú sűrű vektorba „kódolja". Ez a folyamat egyfajta nemlineáris dimenziócsökkentésként fogható fel, amelynek során a magas dimenziójú és ritka bemeneti adatok (például one-hot vektorokkal ábrázolt szöveg) egy alacsony dimenziójú, de informatikusan gazdag vektortérré (látens tér) alakulnak.
Ez a kódolt vektor ezt követően felhasználható:
- Dekóder által új sorozat generálásához (például gépi fordításban).
- Osztályozó által elemzési feladatok megoldásához (például szöveg hangulatelemzése).
- Olyan feladatokhoz, amelyek a teljes bemeneti kontextus megértését igénylik.
Az enkóder különböző architektúrákban
Az enkóder az autoenkoderben
Az egyik klasszikus példa az autoenkóder architektúra. Ez két részből áll:
- Enkóder: A bemeneti adatokat kisebb dimenziójú rejtett reprezentációvá (látens kód) tömöríti.
- Dekóder: Megkísérli az eredeti adatokat visszaállítani ebből a tömörített reprezentációból.
Az ilyen hálózat rekonstrukciós hiba minimalizálására való tanításával az enkóder megtanulja kinyerni az adatok legfontosabb jellemzőit.
Az enkóder a rekurrens neurális hálózatokban (RNN/LSTM)
A Transformer architektúra megjelenése előtt a sorozatfeldolgozási feladatokban (seq2seq) az enkódereket rekurrens neurális hálózatokra (RNN) vagy azok fejlettebb változatára, az LSTM-re építették.
- Működési elv: Az RNN-enkóder a bemeneti sorozatot token-ről tokenre dolgozza fel. Minden lépésben frissíti rejtett állapotát, beépítve az aktuális token és az előző állapot információját. Az egész sorozat feldolgozása után kapott végső rejtett állapotot a teljes bemeneti sorozat értelmét kódoló vektornak tekintik. Ezt a vektort gyakran kontextusvektornak vagy „gondolatvektornak" (thought vector) nevezik.
Az enkóder a Transformer architektúrában
A természetes nyelvfeldolgozás forradalma a Transformer architektúrán alapuló enkóder megjelenéséhez köthető. Az RNN-nel ellentétben ez a sorozat összes tokenét párhuzamosan dolgozza fel.
A Transformer enkódere azonos rétegek egy veremjéből () áll. Minden rétegnek két fő alrétege van:
- Többfejű önfigyelem (Multi-Head Self-Attention): Ez a mechanizmus lehetővé teszi, hogy a bemeneti sorozat minden tokenje „figyelmet fordítson" az összes többi tokenre, és mérlegelje azok fontosságát a saját kontextuális reprezentációjának kialakításához. Ez lehetővé teszi, hogy a modell összetett függőségeket ragadjon meg a szavak között, azok pozíciójától függetlenül.
- Teljesen összekötött neurális hálózat (Feed-Forward Network): Az egyes tokenek reprezentációjára külön-külön kerül alkalmazásra a további nemlineáris átalakítás céljából.
A Transformer enkóder és az RNN-enkóder közötti legfontosabb különbség az, hogy a Transformer enkódere kimenetként nem egyetlen kontextusvektort ad, hanem kontextualizált vektorok sorozatát — minden bemeneti tokenhez egyet. Minden ilyen vektor az adott token információját tartalmazza a teljes sorozat kontextusában.
Az enkóderen alapuló modelltípusok
Enkóder-dekóder modellek
Ez a klasszikus architektúra a sorozatból sorozatba (seq2seq) alakítási feladatokhoz, mint például a gépi fordítás vagy a szövegösszefoglalás.
- Működési elv: Az enkóder feldolgozza a teljes bemeneti sorozatot (például a forrásnyelvi mondatot). Kimeneti reprezentációit ezután átadja a dekódernek, amely azokat felhasználva autoregresszív módon generálja a kimeneti sorozatot (a célnyelvi mondatot). A dekóder egy speciális kereszt-figyelmi (cross-attention) mechanizmus segítségével „tekint" az enkóder kimenetére.
- Példák: Az eredeti Transformer, T5, BART.
Csak-enkóderes modellek (Encoder-Only)
Ezek a modellek kizárólag a Transformer enkóder-veremét használják.
- Működési elv: Olyan feladatokhoz készültek, amelyek a teljes bemeneti szöveg kontextusának mélyreható megértését igénylik. Az önfigyelem mechanizmusának kétirányú természetének köszönhetően minden tokenhez gazdag kontextuális reprezentációkat hoznak létre.
- Alkalmazás: Ideálisak a nyelvanalízis és -megértési (NLU) feladatokhoz, például:
- Szövegklasszifikáció (például hangulatelemzés).
- Névvel ellátott entitások felismerése (NER).
- Kérdés-megválaszolás (Question Answering), ahol a válasz a szöveg egy részlete.
- Példa: BERT és annak származékai (RoBERTa, ALBERT).
Kapcsolat a dekóderrel
Az enkóder-dekóder architektúrában az enkóder és a dekóder komplementer szerepeket tölt be:
- Az enkóder felelős a bemeneti sorozat megértéséért.
- A dekóder felelős a kimeneti sorozat generálásáért.
A köztük lévő kulcsfontosságú összekötő kapocs a dekóderen belüli kereszt-figyelmi (cross-attention) mechanizmus. A generálás minden lépésében a dekóder lekérdezést (Query) alkot a már legenerált kimeneti sorozatrész alapján, és ezt felhasználja arra, hogy „figyelmet fordítson" az enkóder kimeneti reprezentációira (amelyek kulcsokként és értékekként — Key és Value — szolgálnak). Ez lehetővé teszi a dekóder számára, hogy a következő token generálásához a bemeneti sorozat legrelevántabb részeire összpontosítson.
Irodalom
- Hinton, G. E.; Salakhutdinov, R. R. (2006). Reducing the Dimensionality of Data with Neural Networks. Science. DOI:10.1126/science.1127647.
- Cho, K. et al. (2014). Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation. arXiv:1406.1078.
- Sutskever, I.; Vinyals, O.; Le, Q. V. (2014). Sequence to Sequence Learning with Neural Networks. arXiv:1409.3215.
- Bahdanau, D.; Cho, K.; Bengio, Y. (2015). Neural Machine Translation by Jointly Learning to Align and Translate. arXiv:1409.0473.
- Kingma, D. P.; Welling, M. (2014). Auto-Encoding Variational Bayes. arXiv:1312.6114.
- Vaswani, A. et al. (2017). Attention Is All You Need. arXiv:1706.03762.
- Devlin, J. et al. (2019). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv:1810.04805.
- Dai, Z. et al. (2019). Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context. arXiv:1901.02860.
- Raffel, C. et al. (2020). Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. arXiv:1910.10683.
- Brown, T. B. et al. (2020). Language Models Are Few-Shot Learners. arXiv:2005.14165.
- Dosovitskiy, A. et al. (2020). An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale. arXiv:2010.11929.
Lásd még
- BERT