Architektura encoder–decoder
Modele koder-dekoder (ang. Encoder-Decoder Models) — to klasa architektur sieci neuronowych przeznaczonych do rozwiązywania zadań przekształcania sekwencji w sekwencję (sequence-to-sequence, seq2seq). Architektura ta składa się z dwóch głównych komponentów:
- Koder (enkoder): Przetwarza sekwencję wejściową i kompresuje ją do zwartej reprezentacji numerycznej (wektor kontekstowy lub sekwencja ukrytych stanów).
- Dekoder: Pobiera tę reprezentację i na jej podstawie generuje sekwencję wyjściową.
Architektura ta stanowi podstawę wielu zadań z zakresu przetwarzania języka naturalnego (NLP) i widzenia komputerowego, takich jak tłumaczenie maszynowe, streszczanie tekstu oraz generowanie podpisów do obrazów.
Koncepcja
Podstawowa idea architektury koder-dekoder polega na rozdzieleniu zadań rozumienia i generowania. Koder odpowiada za rozumienie sekwencji wejściowej, wydobywając z niej wszelkie niezbędne informacje semantyczne. Dekoder odpowiada za generowanie nowej sekwencji, wykorzystując informacje dostarczone przez koder.
Pozwala to modelowi pracować z sekwencjami o różnej długości na wejściu i wyjściu, co było trudne do osiągnięcia we wcześniejszych architekturach.
Ewolucja architektury
Wczesne modele oparte na RNN/LSTM
Pierwotnie architektura koder-dekoder była implementowana z wykorzystaniem rekurencyjnych sieci neuronowych (RNN) lub ich udoskonalonego wariantu LSTM.
- Koder: Koder RNN przetwarzał sekwencję wejściową token po tokenie i na wyjściu produkował jeden wektor kontekstowy — ukryty stan po przetworzeniu ostatniego tokenu, który miał zawierać informacje o całej sekwencji.
- Dekoder: Dekoder RNN był inicjalizowany tym wektorem kontekstowym i autoregresyjnie generował sekwencję wyjściową.
Główną wadą tego podejścia był problem \"wąskiego gardła\": wszystkie informacje z sekwencji wejściowej musiały być skompresowane do jednego wektora o stałej długości, co prowadziło do utraty informacji, szczególnie w przypadku długich sekwencji.
Wprowadzenie mechanizmu uwagi
Przełom nastąpił wraz z wprowadzeniem mechanizmu uwagi (attention mechanism) (Bahdanau et al., 2014).
- Zasada działania: Zamiast polegać na jednym wektorze kontekstowym, dekoder na każdym kroku generowania \"zwraca uwagę\" na wszystkie ukryte stany kodera. Oblicza wagi uwagi, które wskazują, które części sekwencji wejściowej są najbardziej istotne dla wygenerowania bieżącego tokenu wyjściowego.
- Zalety: Rozwiązało to problem \"wąskiego gardła\" i pozwoliło modelowi efektywnie pracować z długimi sekwencjami, znacząco poprawiając jakość, zwłaszcza w tłumaczeniu maszynowym.
Architektura Transformer
W 2017 roku w artykule „Attention Is All You Need" przedstawiono architekturę Transformer, która całkowicie zrezygnowała z rekurencyjności na rzecz mechanizmu uwagi.
- Koder Transformera: Składa się ze stosu warstw, z których każda wykorzystuje samouwagę (self-attention) do tworzenia skontekstualizowanych reprezentacji dla każdego tokenu wejściowego.
- Dekoder Transformera: Składa się ze stosu warstw, z których każda posiada dwa typy mechanizmów uwagi:
- Maskowana samouwaga: Do przetwarzania już wygenerowanej części sekwencji wyjściowej.
- Uwaga krzyżowa (Cross-Attention): Do \"zwracania uwagi\" na reprezentacje wyjściowe kodera.
Architektura ta stała się standardem dla zadań seq2seq dzięki wysokiej wydajności i możliwości zrównoleglenia obliczeń.
Zastosowania
Architektura koder-dekoder jest standardem dla szerokiego zakresu zadań:
- Tłumaczenie maszynowe: Przekształcanie zdania z jednego języka na inny.
- Automatyczne streszczanie tekstu: Tworzenie skróconej wersji długiego dokumentu.
- Systemy dialogowe: Generowanie odpowiedzi na wypowiedź użytkownika.
- Podpisy do obrazów (Image Captioning): Koder (często oparty na splotowej sieci neuronowej) przetwarza obraz, a dekoder (często RNN lub Transformer) generuje jego tekstowy opis.
- Rozpoznawanie mowy: Przekształcanie sygnału audio na transkrypcję tekstową.
Główne modele
- Oryginalny Transformer (Vaswani et al., 2017): Model, który zapoczątkował tę architekturę.
- BART (Bidirectional and Auto-Regressive Transformers): Model firmy Facebook, wstępnie trenowany na zadaniu odtwarzania \"uszkodzonego\" tekstu. Koder jest dwukierunkowy (jak w BERT), a dekoder — autoregresyjny (jak w GPT).
- T5 (Text-to-Text Transfer Transformer): Model firmy Google, który ujednolica wszystkie zadania NLP, przedstawiając je jako problem przekształcania tekstu w tekst. T5 osiągnął wybitne wyniki na wielu benchmarkach.
Porównanie z innymi architekturami
| Architektura | Główne zadanie | Komponenty | Typowe modele |
|---|---|---|---|
| Koder-dekoder | Przekształcanie sekwencji w sekwencję | Koder + Dekoder | T5, BART, oryginalny Transformer |
| Tylko-koder | Rozumienie tekstu | Tylko koder | BERT, RoBERTa |
| Tylko-dekoder | Generowanie tekstu | Tylko dekoder |
Literatura
- Bahdanau, D. et al. (2014). Neural Machine Translation by Jointly Learning to Align and Translate. arXiv:1409.0473.
- Sutskever, I. et al. (2014). Sequence to Sequence Learning with Neural Networks. arXiv:1409.3215.
- Luong, M.-T. et al. (2015). Effective Approaches to Attention-based Neural Machine Translation. arXiv:1508.04025.
- Wu, Y. et al. (2016). Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation. arXiv:1609.08144.
- Vaswani, A. et al. (2017). Attention Is All You Need. arXiv:1706.03762.
- Britz, D. et al. (2017). Massive Exploration of Neural Machine Translation Architectures. arXiv:1703.03906.
- Lewis, M. et al. (2020). BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation. arXiv:1910.13461.
- Raffel, C. et al. (2020). Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. arXiv:1910.10683.
- Dong, L. et al. (2019). Unified Language Model Pre-training for Natural Language Understanding and Generation. arXiv:1905.03197.
- Zhang, J. et al. (2020). PEGASUS: Pre-training with Extracted Gap-Sentences for Abstractive Summarization. arXiv:1912.08777.