SwiGLU
Por que isso importa
Em profundidade
FFN padrão: FFN(x) = W2 · GELU(W1 · x). Duas matrizes de pesos, uma ativação. FFN SwiGLU: SwiGLU(x) = W2 · (SiLU(W1 · x) ⊗ W3 · x). Três matrizes de pesos, um mecanismo de portão. O portão (W3 · x) controla o que passa, permitindo que a rede suprima ou amplifique seletivamente diferentes features. Para manter a contagem de parâmetros constante, a dimensão intermediária é tipicamente reduzida de 4×model_dim para (8/3)×model_dim.
Por Que Portões Ajudam
Portões dão à rede uma interação multiplicativa que ativações padrão não possuem. Ativações padrão aplicam uma não-linearidade fixa. Portões aplicam uma não-linearidade aprendida e dependente da entrada. Essa expressividade adicional ajuda a rede a aprender funções mais complexas por camada, o que significa que você precisa de menos camadas (ou camadas menores) para desempenho equivalente. Shazeer (2020) mostrou que variantes GLU superam consistentemente FFN padrão em todos os tamanhos de modelo.
A Família GLU
SwiGLU é uma de várias variantes GLU: GeGLU (usa GELU em vez de SiLU), ReGLU (usa ReLU) e o GLU original (usa sigmoid). SwiGLU e GeGLU têm desempenho similar e ambos superam ReGLU. A escolha entre eles é principalmente empírica — SwiGLU se tornou o padrão por convenção (LLaMA adotou, outros seguiram) em vez de superioridade teórica clara sobre GeGLU.