Decoder (Transformer) (PL)

From Systems analysis Wiki
Jump to navigation Jump to search

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:

  1. Enkoder kompresuje dane wejściowe do ukrytej reprezentacji.
  2. 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 (N) identycznych warstw, z których każda posiada trzy główne podwarstwy:

  1. 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 i zależy wyłącznie od już znanych wyjść na pozycjach <i, zachowując właściwość autoregresyjną.
  2. 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.
  3. 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.