Self attention vs cross attention
Twee vormen van aandacht
Self-attention en cross-attention zijn twee varianten van het attention mechanism. Bij self-attention wordt een sequentie met zichzelf vergeleken. Elk element in de sequentie wordt gerepresenteerd door een query, key en value. De query van een element wordt vergeleken met de keys van alle elementen in dezelfde sequentie, inclusief zichzelf. Dit resulteert in attention-gewichten die aangeven hoe belangrijk elk ander element is voor het huidige element. Self-attention stelt een model in staat om relaties te leren tussen alle posities in een sequentie, ongeacht de afstand. Dit is een groot voordeel ten opzichte van RNN's, die informatie sequentieel moeten doorgeven. Bij cross-attention wordt een sequentie vergeleken met een andere sequentie. De queries komen uit de ene sequentie (bijvoorbeeld de decoder), terwijl de keys en values uit de andere sequentie komen (bijvoorbeeld de encoder). Dit wordt gebruikt in encoder-decoder architecturen, zoals machine translation, waar de decoder zich richt op de relevante delen van de bronzin. Cross-attention wordt ook gebruikt in multimodale modellen, waar tekst zich richt op beeld en omgekeerd. Beide vormen zijn essentieel in Transformers.
Toepassingen en verschillen
Self-attention wordt gebruikt in de encoder van Transformers, zoals BERT, om een rijke representatie van de invoer te leren. Het wordt ook gebruikt in de decoder van GPT, waar het gemaskeerd is om te voorkomen dat het model naar toekomstige tokens kijkt. Cross-attention wordt gebruikt in de decoder van sequence-to-sequence modellen, zoals T5 en BART, om de invoer te betrekken bij het genereren van de uitvoer. In multimodale modellen zoals CLIP en DALL-E wordt cross-attention gebruikt om tekst en beeld met elkaar in verband te brengen. Het verschil is conceptueel eenvoudig: self-attention relateert binnen één sequentie, cross-attention relateert tussen twee sequenties. In de praktijk worden ze vaak gecombineerd. Een Transformer-decoder heeft bijvoorbeeld zowel masked self-attention (voor de gegenereerde uitvoer) als cross-attention (naar de encoder). Het begrijpen van dit onderscheid is cruciaal voor het begrijpen van moderne architecturen. Self-attention is de motor van taalmodellen; cross-attention is de brug tussen modaliteiten.