AI 101
Co jsou Transformer Neural Networks?

Transformer Neural Networks Popis
Transforméry jsou typem modelu strojového učení, který se specializuje na zpracování a interpretaci sekvencí dat, což je dělá optimálními pro úkoly zpracování přirozeného jazyka. Abychom lépe pochopili, co je strojové učení transformátor a jak fungují, podívejme se blíže na modely transformátorů a mechanismy, které je pohání.
Tento článek bude pokrývat:
- Modely Sekvence-na-Sekvenci
- Architektura Transformer Neural Network
- Mechanismus Pozornosti
- Rozdíly Mezi Transforméry a RNNs/LSTMs
Modely Sekvence-na-Sekvenci
Modely Sekvence-na-Sekvenci jsou typem modelu NLP, který se používá k převodu sekvencí jednoho typu na sekvenci jiného typu. Existuje několik typů modelů Sekvence-na-Sekvenci, jako jsou Recurrent Neural Network modely a Long Short-Term Memory (LSTM) modely.
Tradiční modely Sekvence-na-Sekvenci, jako jsou RNN a LSTM, nejsou zaměřeny na tento článek, ale porozumění jim je nezbytné pro ocenění, jak fungují modely transformátorů a proč jsou lepší než tradiční modely Sekvence-na-Sekvenci.
Stručně řečeno, RNN modely a LSTM modely se skládají z encoder a decoder sítí, které analyzují vstupní data v různých časových krocích. Encoder model je zodpovědný za vytváření zakódované reprezentace slov ve vstupních datech. V každém časovém kroku encoder síť přijímá vstupní sekvenci a skrytý stav z předchozího časového kroku v sérii. Skryté stavové hodnoty jsou aktualizovány, jak data procházejí sítí, až do posledního časového kroku, kde je generován “kontextový vektor”. Kontextový vektor je pak předán do decoder sítě, která se používá k generování cílové sekvence předpovědí nejpravděpodobnějšího slova, které pairuje s vstupním slovem pro příslušné časové kroky.
Tyto modely lze rozšířit pomocí “mechanismu pozornosti”. Mechanismus pozornosti definuje, které části vstupního vektoru by se síť měla soustředit, aby generovala správný výstup. Jinými slovy, mechanismus pozornosti umožňuje transformátorovému modelu zpracovávat jedno vstupní slovo, zatímco současně přihlíží k relevantním informacím obsaženým v ostatních vstupních slovech. Mechanismy pozornosti také maskují slova, která neobsahují relevantní informace.
Architektura Transformer Neural Network
Podrobněji se budeme zabývat mechanismem pozornosti později, ale nyní se podívejme na architekturu transformer neural network na vyšší úrovni.
Obecně vypadá transformer neural network nějak takto:

Ačkoli tato obecná struktura se může lišit mezi sítěmi, základní části zůstanou stejné: positionální kódování, word vektory, mechanismus pozornosti, feed-forward neural network.
Positionální Kódování a Word Vektory
Transformer neural network funguje tak, že přijímá sekvenci vstupů a převádí je na dvě jiné sekvence. Transformer produkuje sekvenci word vector embeddings a positionálních kódování.
Word vector embeddings jsou pouze text reprezentovaný v numerickém formátu, který může síť zpracovat. Zatímco positionální kódování jsou vektorizované reprezentace obsahující informace o poloze aktuálního slova ve vstupní větě, ve vztahu k ostatním slovům.
Ostatní textové neuronové sítě, jako jsou RNN a LSTM, používají vektory k reprezentaci slov ve vstupních datech. Tyto vektorové embeddings mapují slova na konstantní hodnoty, ale to je omezené, protože slova lze použít v různých kontextech. Transformer síť řeší tento problém tím, že dělá word hodnoty flexibilnější, pomocí sinusoidálních funkcí, aby word vektory mohly nabývat různých hodnot v závislosti na poloze slova ve větě.
To umožňuje neuronové síti zachovat informace o relativní poloze vstupních slov, i po přechodu vektorů skrz vrstvy transformer sítě.
Positionální kódování a word vector embeddings jsou sečteny a poté předány do obou encoder a decoder sítí. Ačkoli transformer neural sítě používají encoder/decoder schéma stejně jako RNN a LSTM, jeden z hlavních rozdílů mezi nimi je, že všechny vstupní data jsou zavedena do sítě současně, zatímco u RNN/LSTM jsou data zavedena sekvenčně.
Encoder sítě jsou zodpovědné za převod vstupů na reprezentace, které síť může naučit, zatímco decoder sítě dělají opak a převádějí kódování na pravděpodobnostní distribuci, která se používá k generování nejpravděpodobnějších slov ve výstupní větě. Důležité je, že obě encoder a decoder sítě mají mechanismus pozornosti.
Protože GPU jsou schopny paralelního zpracování, jsou používány multiple mechanismy pozornosti paralelně, které počítají relevantní informace pro všechna vstupní slova. Tato schopnost soustředit se na více slov současně, nazývaná “multi-head” pozornost, pomáhá neuronové síti naučit se kontext slova ve větě, a je to jedna z hlavních výhod, které mají transformer sítě oproti RNN a LSTM.
Mechanismus Pozornosti
Mechanismus pozornosti je nejvýznamnější částí transformer sítě. Mechanismus pozornosti je tím, co umožňuje transformer modelům překročit limit pozornosti typického RNN nebo LSTM modelu. Tradiční modely Sekvence-na-Sekvenci zahazují všechny mezilehlé stavy a používají pouze konečný stav/kontextový vektor, když inicializují decoder síť k generování předpovědí o vstupní sekvenci.
Zahazování všeho kromě konečného kontextového vektoru funguje dobře, když jsou vstupní sekvence poměrně krátké. Ale jakmile délka vstupní sekvence vzroste, výkon modelu se zhorší, když se používá tato metoda. To je protože je poměrně obtížné shrnout dlouhou vstupní sekvenci jako jeden vektor. Řešením je zvýšit “pozornost” modelu a využít mezilehlé encoder stavy k vytvoření kontextových vektorů pro decoder.
Mechanismus pozornosti definuje, jak důležité jsou ostatní vstupní tokeny pro model, když se vytvářejí kódování pro daný token. Například “it” je obecné zájmeno, často používané k odkazování na zvířata, když jejich pohlaví není známo. Mechanismus pozornosti by umožnil transformer modelu určit, že v aktuálním kontextu “it” odkazuje na veverku, protože může prozkoumat všechna relevantní slova ve vstupní větě.
Mechanismus pozornosti lze použít třemi různými způsoby: encoder-decoder, encoder-only, decoder-only.
Encoder-decoder pozornost umožňuje decoderu zvažovat vstupní sekvence, když generuje výstup, zatímco encoder-only a decoder-only pozornost mechanismy umožňují sítím zvažovat všechny části předchozích a aktuálních sekvencí.
Konstrukce mechanismu pozornosti lze rozdělit do pěti kroků:
- Výpočet skóre pro všechny encoder stavy.
- Výpočet pozornostních vah
- Výpočet kontextových vektorů
- Aktualizace kontextového vektoru s předchozím výstupem
- Generování výstupu s decoderem
Prvním krokem je, aby decoder vypočítal skóre pro všechny encoder stavy. To se provádí pomocí trénovaného decoder sítě, která je základní feed-forward neuronovou sítí. Když je decoder trénován na prvním slově ve vstupní sekvenci, nebyla dosud vytvořena žádná vnitřní/skrytá stav, takže se obvykle používá poslední stav encoderu jako předchozí stav decoderu.
Pro výpočet pozornostních vah se používá softmax funkce, která generuje pravděpodobnostní distribuci pro pozornostní váhy.
Jakmile jsou pozornostní váhy vypočteny, je třeba vypočítat kontextový vektor. To se provádí násobením pozornostních vah a skrytého stavu pro každý časový krok.
Po výpočtu kontextového vektoru se používá spolu s generovaným slovem v předchozím časovém kroku k generování dalšího slova ve výstupní sekvenci. Protože decoder nemá žádný předchozí výstup, na který by se mohl odvolat v prvním časovém kroku, často se používá speciální “start” token.
Rozdíly Mezi Transforméry a RNNs/LSTMs
Podívejme se rychle na některé rozdíly mezi RNN a LSTMs.
RNN zpracovávají vstupní data sekvenčně, zatímco se udržuje a mění skrytý stavový vektor vstupními slovy, jak procházejí sítí. Skryté stavy RNN obvykle obsahují velmi málo relevantních informací o předchozích vstupních datech. Nová vstupní data často přepíší aktuální stav, což způsobuje ztrátu informací a zhoršení výkonu v čase.
Naopak, transformer modely zpracovávají celou vstupní sekvenci najednou. Mechanismus pozornosti umožňuje, aby každé výstupní slovo bylo informováno všemi vstupními a skrytými stavy, což činí síť spolehlivější pro dlouhé texty.
LSTMs jsou modifikovanou verzí RNN, upravenou pro zpracování delších vstupních sekvencí. Architektura LSTM používá strukturu nazývanou “gates”, se “input gates”, “output gates” a “forget gates”. Gated design řeší informační ztrátu běžnou u RNN modelů. Data jsou stále zpracovávána sekvenčně a architektura sítě činí LSTM modely obtížně trénovatelné pomocí paralelního zpracování, což prodlužuje celkovou dobu trénování.
Inženýři LSTM často přidávali mechanismy pozornosti do sítě, což se prokázalo jako zlepšení výkonu modelu. Ale nakonec bylo zjištěno, že mechanismus pozornosti sám o sobě zlepšuje přesnost. Toto zjištění vedlo k vytvoření transformer sítí, které používají mechanismy pozornosti a paralelní zpracování díky GPU.








