Skalowany iloczyn skalarny i multi-head
Wykonywać attention równolegle w podprzestrzeniach
Skalowany iloczyn skalarny i multi-head to bezpłatna lekcja Deep Learning Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Deep Learning Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Deep Learning Academy zawiera 4 lekcji w sumie.
Problem ze skalowaniem
Gdy wektory key są długie, wyniki iloczynów skalarnych stają się ogromne, a softmax — zbyt ostry. Niszczy to gradienty, dlatego musimy zmniejszyć skalę wyników.
Podziel przez pierwiastek z d
Rozwiązaniem jest podzielenie każdego wyniku przez pierwiastek kwadratowy z wymiaru key. Dzięki temu liczby pozostają w stabilnym zakresie przed użyciem softmax.
scores = (q @ k.transpose(-2, -1)) / d_k ** 0.5Scaled dot-product attention
Połączmy wszystko: oceń, przeskaluj, zastosuj softmax, a następnie połącz value. Ta czterostopniowa procedura to słynne scaled dot-product attention.
w = scores.softmax(dim=-1)
out = w @ vJedna głowica, jeden sposób patrzenia
Pojedyncza głowica attention uczy się tylko jednego sposobu łączenia tokenów. Język ma jednak wiele relacji jednocześnie, więc jedna głowica jest ograniczeniem.
Wiele głowic równolegle
Multi-head attention uruchamia kilka głowic attention obok siebie. Każda ma własne projekcje Q, K i V oraz korzysta z innej podprzestrzeni.
Podziel wymiar
Nie zwiększasz szerokości modelu. Dzielisz wymiar modelu między głowice, aby każda pracowała równolegle na mniejszym fragmencie.
d_head = d_model // num_headsPrzekształć na głowice
Aby uruchomić głowice równolegle, wykonujesz reshape Q, K i V, dodając oś głowic, a następnie stosujesz attention niezależnie w każdej głowicy.
q = q.view(B, T, H, d_head).transpose(1, 2)Różne wzorce
Jedna głowica może śledzić gramatykę, a inna łączyć zaimek z rzeczownikiem. Wiele głowic wychwytuje różnorodne wzorce zawarte w tych samych danych wejściowych.
Połącz głowice
Po uzyskaniu wyjścia przez każdą głowicę łączysz je z powrotem w jeden wektor o początkowym wymiarze modelu.
out = out.transpose(1, 2).reshape(B, T, d_model)Końcowa projekcja
Ostatnia projekcja wyjściowa łączy rezultaty poszczególnych głowic, pozwalając modelowi wykorzystać odkrycia każdej z nich.
out = self.W_o(out)Użyj gotowego rozwiązania
W praktyce PyTorch udostępnia nn.MultiheadAttention, więc rzadko trzeba ręcznie wykonywać reshape. Znajomość matematyki nadal pomaga w debugowaniu.
attn = nn.MultiheadAttention(d_model, num_heads)Szybkie sprawdzenie
Sprawdźmy, dlaczego skalujemy wyniki.
Podsumowanie
Zobaczyłeś, jak skalowanie stabilizuje softmax oraz jak multi-head attention dzieli pracę między równoległe głowice, a następnie łączy je i wykonuje projekcję. Świetne postępy!
Często zadawane pytania
Czy lekcja „Skalowany iloczyn skalarny i multi-head” jest bezpłatna?
Tak — pełny tekst „Skalowany iloczyn skalarny i multi-head” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Deep Learning Academy, przejdź na CoddyKit PRO. Kurs Deep Learning Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Skalowany iloczyn skalarny i multi-head”?
Wykonywać attention równolegle w podprzestrzeniach Ćwiczysz Deep Learning Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Deep Learning Academy?
Nie wymagamy żadnego doświadczenia. Deep Learning Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Skalowany iloczyn skalarny i multi-head”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Deep Learning Academy?
Tak. Każda lekcja Deep Learning Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Self-attention: query, key i value
- Skalowany iloczyn skalarny i multi-head
- Kodowanie pozycyjne dla zachowania kolejności
- Złożyć blok enkodera transformera