0Pricing
Deep Learning Academy · Lekcja

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.5

Scaled 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 @ v

Jedna 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_heads

Przekształć 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

  1. Self-attention: query, key i value
  2. Skalowany iloczyn skalarny i multi-head
  3. Kodowanie pozycyjne dla zachowania kolejności
  4. Złożyć blok enkodera transformera
← Powrót do Deep Learning Academy