Sobes.tech
Middle — Senior

Wyjaśnij wzór skalowanej uwagi iloczynu skalarnego. Dlaczego dzielić przez sqrt(d_k)?

sobes.tech AI

Odpowiedź od AI

Ważenie skalowanej uwagi punktowej to mechanizm uwagi, który oblicza współczynniki wag dla elementów sekwencji na podstawie iloczynów skalarnych zapytań (Q) i kluczy (K). Wzór wygląda tak:

[ \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) V ]

Tutaj:

  • Q — macierz zapytań,
  • K — macierz kluczy,
  • V — macierz wartości,
  • (d_k) — wymiar wektorów kluczy.

Dzielenie przez (\sqrt{d_k}) jest konieczne do skalowania wyniku iloczynu skalarnego. Bez tego kroku wartości mogą stać się zbyt duże przy dużych wymiarach, co prowadzi do bardzo dużych argumentów funkcji softmax. To powoduje problem "zanikających gradientów" — softmax staje się bardzo "sztywny", prawie jeden element otrzymuje wagę 1, a pozostałe prawie 0, co pogarsza uczenie. Skalowanie stabilizuje gradienty i poprawia zbieżność modelu.