Biais Positionnels dans les transformers auto-régressifs

Description du biais positionnel dans les transformers auto-régressifs

Introduction sur le biais positionnel

Le biais positionnel : c’est quoi ?

Le papier [Lost in the Middle: How Language Models Use Long Contexts](https://arxiv.org/pdf/2307.03172) décrit comment, pour des contextes très longs, les LLMs se concentrent surtout sur les débuts et la fin du prompt. Le biais positionnel dans les LLMs, c'est la tendance du modèle à se concentrer excessivement sur certaines parties de l'entrée, qu'importe la sémantique. Et cette concentration influence significativement les performances et la fiabilité des transformers: en fonction de l'ordre des éléments dans le prompt, le modèle va générer des réponses différentes. Notamment, plus on a un contexte long, plus le modèle a tendance à se concentrer sur les éléments au début et à la fin du prompt (effet "lost in the middle").

Le biais positionnel : ça vient d’où ?

Qu’est-ce que l’encodage de position ?

L’encodage de position est nécessaire dans les transformers à cause du calcul de l’attention qui prend en compte tous les azutres tokens de la séquence. Sans encodage positionnel, chaque token identique aurait la même influence, peu importe l’endroit dans la séquence :
“Le chat mange la souris” et “La souris mange le chat” seraient équivalents. Avec l’encodage de position, deux tokens identiques mais à des positions différentes auront des vecteurs différents.

  1. Encodage absolu (sinusoïdal ou appris)
    Ajouté aux embeddings initiaux. Limité pour extrapoler à des longueurs supérieures à celles vues à l’entraînement.

  2. Encodages relatifs
    • T5 : biais appris pour chaque distance relative.
    • Alibi : biais fonctionnel selon la distance.
  3. RoPE (Rotary Positional Encoding)
    rotation appliqué à la représentation intermédiaire de chaque token dépendante de la position du token au niveau du calcul du score d’attention (chaque paire de dimensions du vecteur est tournée dans le plan d’un angle qui dépend de sa position dans la séquence). Mais du coup, quand on applique cette rotation à query et key, et qu’on fait un produit scalaire, le dot product dépend de la position relative $i−j$, même si on encode chaque position de manière absolue.

SOTA des approches pour corriger le biais positionnel

1. Modifier le mécanisme d’attention

</div>
<div class="col-md-6">
</div>

</div>

Ainsi, plusieurs approches visent à contre-balancer le biais positionnel induit par RoPE:

</div>

2. Jouer sur les données

Introduction du papier « Mitigate Positional Biais via Scaling a Single Dimension »

Tâche de retrieval utilisée

Identification des dimensions positionnelles

  1. Monotonie : $h(p)$ doit être strictement croissante ou décroissante.
  2. Smoothness : dérivée seconde faible (évolution “douce”).
  3. Choix de la dimension $t$ et de l’échelle $s<1$ minimisant la perte

    \[\arg\min_{h_t,s<1} \mathbb{E}\left[\sum_{i=1}^{|P|} \mathcal{L}(x,y,p_i; F(\theta,h_t,s))\right]\]

    avec $F(\theta,h_t,s)$ le modèle scaled sur la $t$-ième dimension.

Construction de $h(p_i)$

Résultats de l’identification

Dimensions causées par le masque causal

Correction proposée

Effet du scaling

Performances

Gain significatif sur LongBench :

Limitations (selon moi)

  1. Hypothèses de monotonie et smoothness de $h(p)$ très discutables et infondées.
  2. Lien causal masque => hidden-states pas rigoureusement démontré. le fait qu’il y ait du biais positionnel dans les états cachés est un postulat de départ de ce papier non prouvé proprement.
  3. Approche de scaling de “la dimension positionnelle” discutable

Points forts du papier

Pour aller plus loin : découpler sémantique et position

Spline-based Transformers (ECCV’25)

Decomposed Positional Vectors (NeurIPS)