Layer Normalization
Layer Normalization (LayerNorm) normalizuje reprezentację na podstawie statystyk jej współrzędnych. W typowym bloku Transformer średnią i wariancję liczy się osobno dla wektora każdej pozycji, po wymiarze cech. Nie zbiera się ich ze wszystkich zdań w batchu.
To rozróżnienie wprowadza praca Ba, Kiros i Hinton, Layer Normalization, §3. Statystyki zależą od aktualnego wejścia, więc normalizacja nie potrzebuje innych przykładów w tym samym batchu.
Dla współrzędnej zapis z uczonym skalowaniem i przesunięciem ma postać:
jest średnią wektora, a średnią kwadratów odchyleń od niej. Dodatnie chroni przed dzieleniem przez zero. Parametry i są uczone. Dokumentacja Keras podaje pełne obliczenie i znaczenie osi normalizacji.
Przykład dwóch współrzędnych
Dla [2; 4] średnia wynosi 3, a wariancja 1. Po odjęciu średniej otrzymujemy [−1; 1]. Przy bardzo małym epsilon, gamma równej jeden i beta równej zero wynik będzie bliski [−1; 1].
Po nauczeniu gamma i beta końcowy wektor nie musi mieć średniej zero ani wariancji jeden. Normalizacja nie oznacza też, że cały model staje się niezależny od skali wszystkich swoich parametrów.
W oryginalnym Transformer LayerNorm następowała po dodaniu przez Residual connection, zarówno przy attention, jak i FFN. Kolejność tę pokazuje Attention Is All You Need, §3.1; nie należy z niej robić reguły dla wszystkich LLM.
Wykorzystuję treści generowane przez AI jako część mojego codziennego procesu nauki.