Expert • Les 28

Activatiefuncties in LLMs: SwiGLU, GeGLU en waarom ze beter zijn dan ReLU

De feed-forward laag in een transformer-blok bevat twee lineaire transformaties met een niet-lineaire activatiefunctie ertussen. Lange tijd was ReLU (Rectified Linear Unit) de standaard. Moderne LLMs — LLaMA, PaLM, Gemini — gebruiken bijna allemaal SwiGLU of GeGLU, varianten die consistent betere perplexity geven bij vergelijkbare parametertellingen.

Van ReLU naar GELU

ReLU is eenvoudig: max(0, x). Negatieve waarden worden op nul gezet, positieve waarden worden doorgelaten. Dit is snel maar heeft twee nadelen: een knik bij nul (niet overal differentieerbaar) en een groot deel van de neuronen dat inactief is (“dying ReLU”). GELU (Gaussian Error Linear Unit) benadert een vloeiendere drempel door de invoer te wegen met de cumulatieve normaalverdeling. BERT en GPT-2 gebruiken GELU, wat betere resultaten gaf dan ReLU.

Gated Linear Units (GLU)

GLU splitst de invoer in twee helften: een contenttak en een gate-tak. De output is het element-gewijs product van de content en een sigmoid van de gate. De sigmoid bepaalt hoeveel van de content wordt doorgelaten. Dit introduceert een multiplicatieve interactie die het netwerk de mogelijkheid geeft te selecteren welke informatie relevant is. Varianten vervangen de sigmoid door andere functies.

SwiGLU en GeGLU

SwiGLU combineert de Swish-activatiefunctie (x * sigmoid(x)) met de GLU-structuur: de gate-tak gebruikt Swish in plaats van sigmoid. GeGLU doet hetzelfde met GELU. Empirisch onderzoek van Noam Shazeer (2020) toonde aan dat SwiGLU en GeGLU consequent betere language modeling perplexity geven dan ReLU- of GELU-varianten bij gelijke parametertellingen. De reden is niet volledig theoretisch verklaard — het is een van de empirische ontdekkingen in het veld. SwiGLU is de standaard geworden in LLaMA, PaLM en latere Gemini-modellen.

Impliciete dimensie-uitbreiding

De GLU-structuur vereist twee lineaire projecties in de feed-forward laag in plaats van één. Om het parameterbudget gelijk te houden wordt de tussenliggende dimensie iets verkleind (typisch van 4d naar 8d/3, waarbij d de modeldimensie is). Dit is een van de subtiele architectuurbeslissingen die zichtbaar zijn als je modelgewichten vergelijkt.