Sobes.tech
Middle — Senior

Co je to FFN vrstva v transformátoru a proč je potřeba nelinearita mezi attention-bloky?

sobes.tech AI

Odpověď od AI

Vrstva FFN (Feed-Forward Network) v transformátoru je dvouvrstvá plně propojená neuronová síť, která se aplikuje samostatně na každý prvek sekvence po vrstvě pozornosti. Jejím úkolem je přidat další nelineární zpracování a zvýšit výrazy schopnosti modelu.

Nelinearita mezi bloky pozornosti je nutná, aby model mohl aproximovat složité funkce a závislosti. Pozornost je zodpovědná za vážené součty informací na různých pozicích, a FFN s nelineární aktivací (například ReLU nebo GELU) pomáhá transformátoru modelovat složitější vzory než pouhé lineární kombinace.

Příklad struktury vrstvy FFN:

import torch
import torch.nn as nn

class FFN(nn.Module):
    def __init__(self, d_model, d_ff):
        super().__init__()
        self.linear1 = nn.Linear(d_model, d_ff)
        self.activation = nn.GELU()
        self.linear2 = nn.Linear(d_ff, d_model)

    def forward(self, x):
        return self.linear2(self.activation(self.linear1(x)))

Zde je d_model rozměr vektorů vstupu a výstupu, d_ff je rozměr vnitřní vrstvy, obvykle větší než d_model.

Tímto způsobem FFN vrstva s nelinearitou zajišťuje hlubokou nelineární transformaci rysů, což zlepšuje učení a kvalitu modelu.