Fixes
This commit is contained in:
parent
137340b1ab
commit
9a3d411257
@ -37,15 +37,19 @@ nie tylko od pozycji $k$ czy słowa $w_k$. W naszym uproszczonym przypadku
|
|||||||
jako kontekst możemy rozpatrywać słowo bezpośrednio poprzedzające
|
jako kontekst możemy rozpatrywać słowo bezpośrednio poprzedzające
|
||||||
odgadywane słowa (kontekstem jest $w_{i-1}$).
|
odgadywane słowa (kontekstem jest $w_{i-1}$).
|
||||||
|
|
||||||
Wygodnie również przyjąć, że $\sum_{k=1}^j \omega_k = 1$, wówczas mamy do czynienia ze średnią ważoną.
|
Wygodnie również przyjąć, że $\sum_{k=1}^j \omega_k = 1$ i $\omega_k
|
||||||
|
\in (0,1)$, wówczas mamy do czynienia ze średnią ważoną.
|
||||||
|
|
||||||
*** Nieznormalizowane wagi atencji
|
*** Nieznormalizowane wagi atencji
|
||||||
|
|
||||||
Będziemy liczyć nieznormalizowane **wagi atencji**
|
Będziemy liczyć nieznormalizowane **wagi atencji**
|
||||||
$\hat{\alpha}_{k,j}$. Określają one, jak bardzo słowo $w_j$ „zwraca
|
$\hat{\alpha}_{k,j}$. Określają one, jak bardzo słowo $w_j$ „zwraca
|
||||||
uwagę” na poszczególne, inne słowa. Innymi słowy, wagi opisują, jak
|
uwagę” na poszczególne, inne słowa. Innymi słowy, wagi atencji opisują, jak
|
||||||
bardzo słowo $w_k$ pasuje do naszego kontekstu, czyli słowa $w_j$.
|
bardzo słowo $w_k$ pasuje do naszego kontekstu, czyli słowa $w_j$.
|
||||||
|
|
||||||
|
*Uwaga*: (nieznormalizowane czy znormalizowane) wagi atencji nie należą do wyuczalnych
|
||||||
|
wag (parametrów) modelu.
|
||||||
|
|
||||||
Najprostszy sposób mierzenia dopasowania to po prostu iloczyn skalarny:
|
Najprostszy sposób mierzenia dopasowania to po prostu iloczyn skalarny:
|
||||||
|
|
||||||
$$\hat{\alpha}_{k,j} = E(w_k)E(w_j),$$
|
$$\hat{\alpha}_{k,j} = E(w_k)E(w_j),$$
|
||||||
@ -95,13 +99,13 @@ jest *zapytaniem* (/query/). To zapytanie dopasowujemy do *kluczy*
|
|||||||
(/keys/), w najprostszym ujęciu po prostu słów $w_1,\dots,w_{j-1}$ (a
|
(/keys/), w najprostszym ujęciu po prostu słów $w_1,\dots,w_{j-1}$ (a
|
||||||
właściwie ich zanurzeń). Jeśli klucz pasuje do zapytania, odpowiednia
|
właściwie ich zanurzeń). Jeśli klucz pasuje do zapytania, odpowiednia
|
||||||
wartość (/value/) jest wydobywana z bazy. Nasza baza jest jednak
|
wartość (/value/) jest wydobywana z bazy. Nasza baza jest jednak
|
||||||
„miękka”, nie — zerojedynkowa, zapytanie pasuje klucza w pewnym
|
„miękka”, nie — zerojedynkowa, zapytanie pasuje do klucza w pewnym
|
||||||
stopniu, mniej lub bardziej.
|
stopniu, mniej lub bardziej.
|
||||||
|
|
||||||
W najprostszym ujęciu wartości są tym samym co klucze, czyli z naszej
|
W najprostszym ujęciu wartości są tym samym co klucze, czyli z naszej
|
||||||
bazy wydobywamy te same zanurzenia słów, których używamy jako kluczy.
|
bazy wydobywamy te same zanurzenia słów, których używamy jako kluczy.
|
||||||
Można jednak skomplikować schemat rozróżniając klucze i wartości —
|
Można jednak skomplikować schemat rozróżniając klucze i wartości —
|
||||||
mogą one powstawać przez rzutowanie podstawowe zanurzenia różnymi
|
mogą one powstawać przez rzutowanie podstawowych zanurzeń różnymi
|
||||||
macierzami:
|
macierzami:
|
||||||
|
|
||||||
$$\vec{k_i} = W_k E(w_i),$$
|
$$\vec{k_i} = W_k E(w_i),$$
|
||||||
@ -126,24 +130,24 @@ $$\hat{\alpha}_{i,j} = \vec{q_i}^T\vec{k_j} = (W_q E(w_i))(W_k E(k_j)).$$
|
|||||||
Zauważmy, że ciąg $\hat{\alpha}_{1,j},\dots,\hat{\alpha}_{j-1,j}$ można potraktować jako wektor
|
Zauważmy, że ciąg $\hat{\alpha}_{1,j},\dots,\hat{\alpha}_{j-1,j}$ można potraktować jako wektor
|
||||||
$\hat{\vec{\alpha}_{*,j}}$ i wyliczać w postaci zwartej:
|
$\hat{\vec{\alpha}_{*,j}}$ i wyliczać w postaci zwartej:
|
||||||
|
|
||||||
$$\hat{\vec{\alpha}_{*,j}} = \vec{k_j}^T K$$
|
$$\hat{\vec{\alpha}_{*,j}} = \vec{q_j}^T K$$
|
||||||
|
|
||||||
gdzie $K$ to macierz kluczy złożona z wektorów
|
gdzie $K$ to macierz kluczy złożona z wektorów
|
||||||
$\vec{k_1},\dots,\vec{k_{j-1}}$, tj. macierz o rozmiarze $d_k \times (j-1)$.
|
$\vec{k_1},\dots,\vec{k_{j-1}}$, tj. macierz o rozmiarze $d_k \times (j-1)$.
|
||||||
|
|
||||||
Wektor znormalizowanych wag atencji będzie miał wówczas postać:
|
Wektor znormalizowanych wag atencji będzie miał wówczas postać:
|
||||||
|
|
||||||
$$\vec{\alpha}_{*,j} = \operatorname{softmax}(\vec{k_j}^T K).$$
|
$$\vec{\alpha}_{*,j} = \operatorname{softmax}(\vec{q_j}^T K).$$
|
||||||
|
|
||||||
Dokonajmy teraz agregacji wartości — obliczeniamy średnią wektorów
|
Dokonajmy teraz agregacji wartości — obliczamy średnią wektorów
|
||||||
wartości (\vec{v_i}) ważoną atencją:
|
wartości ($\vec{v_i}$) ważoną atencją:
|
||||||
|
|
||||||
$$A(w_1,\dots,j-1) = \alpha_{1,j} \vec{v_1} + \dots + \alpha_{j-1,j} \vec{v_{j-1}} = \sum_{i=1}^{j-1} \alpha_{i,j} v_i.$$
|
$$A(w_1,\dots,j-1) = \alpha_{1,j} \vec{v_1} + \dots + \alpha_{j-1,j} \vec{v_{j-1}} = \sum_{i=1}^{j-1} \alpha_{i,j} v_i.$$
|
||||||
|
|
||||||
Jeśli $j-1$ wektorów wartości ułożyłem w macierz $V$ (o rozmiarze
|
Jeśli $j-1$ wektorów wartości ułożyłem w macierz $V$ (o rozmiarze
|
||||||
$(j-1) \times d_v$), powyższy wzór będziemy mogli zapisać jako iloczyn wektora wag atencji i macierzy $V$:
|
$(j-1) \times d_v$), powyższy wzór będziemy mogli zapisać jako iloczyn wektora wag atencji i macierzy $V$:
|
||||||
|
|
||||||
$$A(w_1,\dots,j-1) = \vec{\alpha}_{*,j}^T V = \operatorname{softmax}(\vec{k_j}^T K)^T V.$$
|
$$A(w_1,\dots,j-1) = \vec{\alpha}_{*,j}^T V = \operatorname{softmax}(\vec{q_j}^T K)^T V.$$
|
||||||
|
|
||||||
Sposób patrzenia na atencję przez pryzmat trójki
|
Sposób patrzenia na atencję przez pryzmat trójki
|
||||||
zapytania-klucze-wartości okaże się niezwykle ważny w wypadku modelu Transformer (zob. kolejny wykład).
|
zapytania-klucze-wartości okaże się niezwykle ważny w wypadku modelu Transformer (zob. kolejny wykład).
|
||||||
|
Loading…
Reference in New Issue
Block a user