Back to archive
#ai#llm#glossary#aigen

Position-wise Feed-Forward Network

Model zebrał dla danego fragmentu informacje z reszty zdania. Teraz trzeba ten zebrany opis przetworzyć: połączyć cechy i wyliczyć nową reprezentację. Ponowne odczytanie innych pozycji nie jest jedyną potrzebną operacją.

Position-wise Feed-Forward Network (FFN) to część bloku, która przekształca opis każdej pozycji osobno. Opis jest wektorem, czyli listą liczb. Wszystkie pozycje w danym bloku przechodzą przez tę samą wyuczoną funkcję, ale dostają różne wyniki, bo mają różne wejścia.

W małym przykładzie lista czterech liczb jest rozwijana do dwunastu, przekształcana i sprowadzana do czterech. Między rozwinięciem a zwężeniem działa reguła nieliniowa: np. zachowuje liczby dodatnie, a ujemne zamienia na zero, więc [−2, 3] daje [0, 3]. Dzięki temu całość robi więcej niż jedna operacja sumowania liczb pomnożonych przez stałe współczynniki. Współdzielimy regułę obliczeń, zamiast tworzyć osobny zestaw wag dla każdego słowa.

FFN sama nie miesza pozycji, choć jej wejście może już zawierać kontekst z Self-attention. „Position-wise” opisuje tę osobną pracę, a nie nakaz identycznej budowy wszystkich późniejszych modeli.

Mechanizm i szczegóły

W oryginalnym Transformer stosowano dwie transformacje afiniczne z ReLU pomiędzy nimi:

FFN⁡(x)=max⁡(0,xW1+b1)W2+b2.\operatorname{FFN}(x)=\max(0,xW_1+b_1)W_2+b_2.

Tutaj xx to wektor jednej pozycji, W1W_1 i W2W_2 są macierzami wag, a b1b_1 i b2b_2 wektorami bias. ReLU zastępuje ujemne współrzędne zerami. Parametry współdzielono między pozycjami, ale nie między kolejnymi blokami. Attention Is All You Need, §3.3.

Ta sama funkcja, różne wejścia

W małym, wymyślonym modelu wektor może przechodzić przez wymiary 4 → 12 → 4. Dla sekwencji 20 tokenów wykonujemy tę samą funkcję 20 razy na różnych wejściach. Nie tworzymy 20 osobnych zestawów wag. Jeśli dwa wektory wejściowe są identyczne, ta sama deterministyczna FFN zwróci identyczne wyniki.

Przykład w Dive into Deep Learning, §11.7.2 pokazuje właśnie współdzielenie funkcji oraz zmianę ostatniego wymiaru tensora.

Wyjście FFN w bloku Transformer jest łączone z wejściem przez Residual connection. Dlatego wymiar końcowy wraca do wymiaru potrzebnego do dodawania. „Position-wise” określa sposób przetwarzania pozycji, nie obowiązek używania ReLU w każdej późniejszej odmianie modelu.