Sobes.tech
Middle — Senior

Čo je FFN vrstva v transformatorju in zakaj je potrebna nelinearnost med attention blokov?

sobes.tech AI

Odpoveď od AI

Súbor FFN (Feed-Forward Network) v transformeri je dvojvrstvová úplne prepojená neurónová sieť, ktorá sa aplikuje samostatne na každý prvok sekvencie po vrstve pozornosti. Jeho úlohou je pridať ďalšie nelineárne spracovanie a zvýšiť výrazy schopnosti modelu.

Nelinearita medzi blokmi pozornosti je nevyhnutná, aby model mohol aproximovať zložité funkcie a závislosti. Pozornosť je zodpovedná za vážené súčty informácií na rôznych pozíciách, a FFN s nelineárnou aktiváciou (napríklad ReLU alebo GELU) pomáha transformátoru modelovať zložitejšie vzory než len lineárne kombinácie.

Príklad štruktúry 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)))

Tu je d_model rozmer vstupných a výstupných vektorov, d_ff je rozmer vnútorného vrstvy, zvyčajne väčší ako d_model.

Týmto spôsobom zabezpečuje vrstva FFN s nelinearitou hlbokú nelineárnu transformáciu znakov, čo zlepšuje učenie a kvalitu modelu.