Decoder (Transformer) (PL)
Dekoder (ang. Decoder) — w uczeniu maszynowym i głębokim uczeniu jest to komponent sieci neuronowej, którego głównym zadaniem jest przekształcenie zakodowanej reprezentacji (np. wektora kontekstowego lub sekwencji ukrytych stanów uzyskanych od enkodera) w wyjściową sekwencję danych (np. tekst lub obraz). Dekoder generuje dane wyjściowe krok po kroku, zazwyczaj w trybie autoregresyjnym.
W szerszym sensie, w teorii informacji, dekoder to dowolne urządzenie lub algorytm, który przekształca zakodowane dane z powrotem do ich oryginalnego lub zrozumiałego formatu.
Koncepcja i przeznaczenie
Jeśli enkoder odpowiada za rozumienie i kompresję danych wejściowych, to dekoder odpowiada za generowanie i rozwijanie danych wyjściowych. Pobiera on zwartą, bogatą w informacje reprezentację i sekwencyjnie przekształca ją w pożądany format — czy to zdanie w innym języku, tekstowy opis obrazu, czy sekwencja nut muzycznych.
Kluczową cechą większości dekoderów jest ich autoregresyjna natura: do wygenerowania kolejnego elementu sekwencji (np. słowa lub piksela) wykorzystują zarówno zakodowaną reprezentację, jak i wszystkie wcześniej wygenerowane elementy.
Dekoder w różnych architekturach
Dekoder w autoenkoderze
W architekturze autoenkodera dekoder wykonuje zadanie odwrotne do enkodera:
- Enkoder kompresuje dane wejściowe do ukrytej reprezentacji.
- Dekoder pobiera tę ukrytą reprezentację i próbuje odtworzyć (zrekonstruować) z niej oryginalne dane.
Trenowanie takiej sieci pozwala na odrębne wykorzystanie dekodera do generowania nowych danych poprzez podawanie na jego wejście wektorów z przestrzeni latentnej.
Dekoder w rekurencyjnych sieciach neuronowych (RNN/LSTM)
W klasycznych modelach przetwarzania sekwencji na sekwencję (seq2seq), opartych na RNN lub LSTM, dekoder jest siecią rekurencyjną, która generuje sekwencję wyjściową token po tokenie.
- Zasada działania: Dekoder jest inicjalizowany końcowym ukrytym stanem (wektorem kontekstowym) enkodera. Na każdym kroku przyjmuje jako wejście poprzednio wygenerowany token oraz swój poprzedni stan ukryty, a następnie generuje kolejny token i aktualizuje swój stan. Proces ten trwa do momentu wygenerowania specjalnego tokenu końca sekwencji (`<EOS>`).
Dekoder w architekturze Transformer
Dekoder oparty na architekturze Transformer również działa autoregresyjnie, jednak jego wewnętrzna struktura jest odmienna. Składa się ze stosu () identycznych warstw, z których każda posiada trzy główne podwarstwy:
- Maskowany wielogłowowy mechanizm samo-uwagi (Masked Multi-Head Self-Attention): Mechanizm ten działa podobnie jak w enkoderze, lecz z jedną istotną różnicą — maskowaniem. Maska uniemożliwia każdej pozycji „zwracanie uwagi" na kolejne pozycje w sekwencji. Gwarantuje to, że predykcja dla pozycji zależy wyłącznie od już znanych wyjść na pozycjach , zachowując właściwość autoregresyjną.
- Wielogłowowy mechanizm uwagi krzyżowej (Multi-Head Cross-Attention): Jest to kluczowy mechanizm łączący dekoder z enkoderem. Zapytania (Query) pochodzą z poprzedniej warstwy dekodera, natomiast klucze (Key) i wartości (Value) — z reprezentacji wyjściowych enkodera. Pozwala to dekoderowi na każdym kroku generowania skupiać się na najbardziej relewantnych częściach sekwencji wejściowej.
- W pełni połączona sieć neuronowa (Feed-Forward Network): Analogiczna do tej stosowanej w enkoderze.
Typy modeli opartych na dekoderze
Modele enkoder-dekoder
Jest to klasyczna architektura, w której enkoder i dekoder współpracują w parze.
- Zasada działania: Enkoder tworzy reprezentację danych wejściowych, a dekoder generuje dane wyjściowe, korzystając z tej reprezentacji.
- Przykłady: Oryginalny Transformer, T5, BART.
Modele tylko-dekoder (Decoder-Only)
Modele te, które stały się dominujące w generatywnej AI, wykorzystują wyłącznie stos dekoderów Transformera.
- Zasada działania: W takich modelach brak jest mechanizmu uwagi krzyżowej do enkodera, ponieważ enkoder nie istnieje. Model działa w trybie czysto autoregresyjnym, przewidując kolejny token na podstawie wszystkich poprzednich tokenów w tej samej sekwencji. Wejściowy prompt oraz już wygenerowany tekst są przetwarzane łącznie.
- Zastosowanie: Idealne do zadań wymagających kontynuowania zadanego tekstu (generowanie tekstu, systemy dialogowe, chatboty).
- Przykłady: Seria GPT, LLaMA, Claude.
Związek z enkoderem
Interakcja enkodera i dekodera to fundamentalna zasada w zadaniach transformacji.
- Enkoder kompresuje informacje o sekwencji wejściowej do zbioru wektorów.
- Dekoder wykorzystuje ten zbiór wektorów, aby sekwencyjnie wygenerować nową sekwencję.
Mechanizm uwagi krzyżowej pozwala dekoderowi na każdym kroku „konsultować się" z enkoderem, aby zrozumieć, na której części oryginalnego tekstu należy się w danym momencie skupić. Na przykład podczas tłumaczenia zdania dekoder, generując niemieckie słowo, może „spojrzeć" na odpowiadające mu angielskie słowo z wejścia.
Zobacz też
- GPT
Literatura
- Vaswani, A. et al. (2017). Attention Is All You Need. NIPS.