Przekształtnik (Transformer) to architektura sieci neuronowej, która szeroko stosowana jest w zadaniach przetwarzania języka naturalnego, takich jak tłumaczenie języka, modelowanie języka czy klasyfikacja tekstu. Oto kilka ważnych wzorów projektowych dla przekształtnika:
Mechanizm uwagi: Mechanizm uwagi używany w przekształtniku można zdefiniować następująco:
★ Uwaga(Q, K, V) = softmax(QK^T / sqrt(d_k))V
★ Q, K i V to macierze reprezentujące zapytania, klucze i wartości odpowiednio.
★ d_k to wymiarowość przestrzeni kluczy.
Wielogłowicowa uwaga: Mechanizm wielogłowicowej uwagi w przekształtniku można zdefiniować następująco:
Wielogłowicowa(Q, K, V) = Łączenie(głowa_1, ..., głowa_h)W^O
★ głowa_i = Uwaga(QW_i^Q, KW_i^K, VW_i^V), W_i^Q, W_i^K, W_i^V to macierze wag dla i-tej głowy.
★ W^O to macierz wag dla wyjścia.
Kodowanie pozycyjne: Aby uwzględnić informacje o pozycji w sekwencji wejściowej, przekształtnik korzysta z kodowania pozycyjnego.
Funkcja kodowania pozycyjnego może być zdefiniowana następująco:
KodowaniePozycyjne(pos, 2i) = sin(pos / 10000^(2i/d_model))
KodowaniePozycyjne(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
★ pos to pozycja tokena w sekwencji.
★ i to indeks wymiaru.
★ d_model to wymiarowość modelu.
Sieć jednokierunkowa: Sieć jednokierunkowa używana w przekształtniku może być zdefiniowana następująco:
SiećJednokierunkowa(x) = max(0, xW_1 + b_1)W_2 + b_2
★ W_1, b_1, W_2, b_2 to macierze wag i wektory biasu.
Normalizacja warstwowa: Aby znormalizować wyjście każdej warstwy, przekształtnik używa normalizacji warstwowej.
Funkcja normalizacji warstwowej może być zdefiniowana następująco: LayerNorm(x) = (x - średnia(x)) / sqrt(wariancja(x) + epsilon) * gamma + beta ★ średnia(x) i wariancja(x) to odpowiednio średnia i wariancja x, epsilon to mała stała zapobiegająca dzieleniu przez zero. ★ gamma i beta to parametry skali i przesunięcia, które są poddawane uczeniu.