Multi head attention uitgelegd
Meerdere perspectieven
Multi-head attention is een kerncomponent van de Transformer-architectuur. In plaats van één enkele attention-operatie uit te voeren, worden meerdere attention-koppen parallel uitgevoerd. Elke kop heeft zijn eigen lineaire projecties voor queries, keys en values. Hierdoor kan elke kop zich richten op verschillende aspecten van de invoer. De ene kop kan bijvoorbeeld syntactische relaties leren, terwijl een andere semantische relaties leert. De uitvoeren van alle koppen worden geconcateneerd en lineair getransformeerd naar de uiteindelijke uitvoer. Formeel: MultiHead(Q, K, V) = Concat(head_1, ..., head_h) W^O, waarbij head_i = Attention(Q W_i^Q, K W_i^K, V W_i^V). De attention-functie is scaled dot-product attention: Attention(Q, K, V) = softmax(QK^T / sqrt(d_k)) V. De schaling met sqrt(d_k) voorkomt dat de dot-producten te groot worden, wat tot verzadiging van de softmax zou leiden. Multi-head attention verhoogt de expressiviteit van het model zonder de rekenkosten enorm te verhogen. Het is een van de redenen waarom Transformers zo succesvol zijn. Het aantal koppen is een hyperparameter, meestal tussen 8 en 16.
Implementatie en varianten
In de praktijk wordt multi-head attention geïmplementeerd door de queries, keys en values te splitsen in h stukken, elk met dimensie d_k = d_model / h. Elke kop wordt apart berekend, en de resultaten worden geconcateneerd. Dit kan efficiënt worden gedaan met matrixvermenigvuldigingen. Er bestaan varianten zoals multi-query attention (MQA), waarbij alle koppen dezelfde keys en values delen, wat de inference versnelt. Grouped-query attention (GQA) is een tussenweg: meerdere query-koppen delen een set keys en values. Deze varianten worden gebruikt in grote taalmodellen zoals Llama 2 en Mistral om geheugen en rekenkracht te besparen. Een andere variant is cross-attention, waarbij queries uit de ene sequentie komen en keys/values uit een andere. Multi-head attention is ook toegepast in computer vision, audio en multimodale modellen. Het is een van de meest bestudeerde en gebruikte componenten in deep learning. Het begrijpen van multi-head attention is essentieel voor het begrijpen van moderne AI-architecturen.