Sobes.tech
Middle — Senior

Ի՞նչ է FFN շերտը տրանսֆորմատորում և ինչու է անհրաժեշտ ոչ գծայինությունը ուշադրության բլոկների միջև։

sobes.tech AI

Պատասխան AI-ից

FFN (Feed-Forward Network) շերտը տրանսֆորմատորում երկու շերտանոց լրիվ կապակցված նեյրոնային ցանց է, որը առանձին կիրառվում է յուրաքանչյուր հաջորդականության տարրին ուշադրության շերտից հետո։ Նրա գործառույթն է ավելացնել լրացուցիչ ոչ գծային մշակում և բարձրացնել մոդելի արտահայտչականությունը։

Անհրաժեշտ է ուշադրության բլոկների միջև ոչ գծայինությունը, որպեսզի մոդելը կարողանա մոտավորել բարդ ֆունկցիաներ և կախվածություններ։ Ակնարկը պատասխանատու է տարբեր դիրքերում տեղեկատվության քաշային գումարման համար, իսկ FFN-ն ոչ գծային ակտիվացմամբ (օրինակ ReLU կամ GELU) օգնում է տրանսֆորմատորին մոդելավորել ավելի բարդ օրինակներ, քան պարզապես գծային համադրությունները։

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

Այստեղ, d_model-ը մուտքային և ելքային վեկտորների չափն է, d_ff՝ ներքին շերտի չափը, որը սովորաբար մեծ է d_model-ից:

Այսպիսով, FFN շերտը ոչ գծայինությամբ ապահովում է հատկանիշների խորը ոչ գծային փոխարկում, ինչը բարելավում է ուսուցումը և մոդելի որակը։