Sobes.tech
Middle — Senior

Jak je transformátor sestaven a jaké hlavní bloky obsahuje?

sobes.tech AI

Odpověď od AI

Transformátor je architektura neuronové sítě, která je široce používána pro zpracování sekvencí, například textu. Hlavní myšlenkou transformátoru je využití mechanismu pozornosti (attention) k vážení důležitosti různých částí vstupních dat bez rekurentních nebo konvolučních vrstev.

Hlavní bloky transformátoru:

  1. Vstupní reprezentace (Embedding) — převádí vstupní tokeny na vektorové reprezentace.

  2. Pozicové kódování (Positional Encoding) — přidává informace o pozici tokenů v sekvenci, protože mechanismus pozornosti nezohledňuje pořadí.

  3. Mechanismus pozornosti (Self-Attention) — vypočítává váhové koeficienty pro každý token vzhledem ke všem ostatním, což umožňuje modelu zaměřit se na relevantní části vstupu.

  4. Multi-Head Attention — paralelně aplikuje několik mechanismů pozornosti, aby zachytil různé aspekty závislosti.

  5. Normalizace a reziduální spojení (Layer Normalization a Residual Connections) — pomáhají stabilizovat trénink a zlepšit tok gradientů.

  6. Plně propojené vrstvy (Feed-Forward Network) — jsou aplikovány na každý prvek sekvence samostatně pro nelineární transformaci.

  7. Výstupní vrstva — pro úlohy generování nebo klasifikace.

Příklad zjednodušené struktury jedné vrstvy transformátoru:

class TransformerLayer(nn.Module):
    def __init__(self, d_model, nhead):
        super().__init__()
        self.self_attn = nn.MultiheadAttention(d_model, nhead)
        self.linear1 = nn.Linear(d_model, d_model*4)
        self.linear2 = nn.Linear(d_model*4, d_model)
        self.norm1 = nn.LayerNorm(d_model)
        self.norm2 = nn.LayerNorm(d_model)

    def forward(self, x):
        attn_output, _ = self.self_attn(x, x, x)
        x = self.norm1(x + attn_output)
        ff_output = self.linear2(F.relu(self.linear1(x)))
        x = self.norm2(x + ff_output)
        return x

Tím je transformátor složen z opakujících se vrstev, což umožňuje efektivně modelovat závislosti v datech.