Sobes.tech
Middle — Senior

Mis on FFN kiht transformatsioonis ja miks on vaja mitte-lineaarset tähelepanu plokkide vahel?

sobes.tech AI

Vastus AI-lt

Transformeri FFN (Feed-Forward Network) kiht on kahekihiline täielikult ühendatud närvivõrk, mida rakendatakse iga sekvitsi elemendi kohta eraldi pärast tähelepanu (attention) kihti. Selle ülesandeks on lisada täiendav mitte-lineaarne töötlemine ja suurendada mudeli väljendusvõimet.

Attentioni blokkide vahelise mitte-lineaarse vajadus on, et mudel saaks lähemalt sobitada keerulisi funktsioone ja sõltuvusi. Attention vastutab erinevates positsioonides olevate teabe kaalutud summade eest, ning FFN mitte-lineaarse aktivatsiooniga (näiteks ReLU või GELU) aitab transformeerijal modelleerida keerukamaid mustreid kui lihtsalt lineaarseid kombinatsioone.

Näide FFN kihi struktuurist:

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)))

Siin, d_model on sisend- ja väljendite vektorite mõõt, d_ff on sisemise kihi mõõt, mis on tavaliselt suurem kui d_model.

Seega, FFN kiht mitte-lineaarsusega tagab sügava mitte-lineaarse omaduste transformatsiooni, mis parandab õppimist ja mudeli kvaliteeti.