Comment un modèle encode où se trouve un mot — en tournant, pas en étiquetant.

SRC·30 Source
Ce qui compte n'est pas où sont deux mots, mais leur écart.

Ce qui compte n'est pas où sont deux mots, mais leur écart.

La solution habituelle ajoute une adresse à chaque mot. Mais l'attention ne compare jamais que deux mots à la fois, et une phrase a le même sens à la page 1 ou à la page 50 : seul compte l'écart entre eux. Rotary position embedding (RoPE) fait pivoter le point de vue de chaque mot selon sa place, si bien que lorsque deux mots se rencontrent, la comparaison ne ressent que la distance.
Ajoutez une adresse, et la comparaison la traîne avec elle.

Ajoutez une adresse, et la comparaison la traîne avec elle.

(xm+pm)(xn+pn)=xmxn+xmpn+pmxn+pmpn(x_m + p_m)^{\top}(x_n + p_n) = x_m^{\top}x_n + x_m^{\top}p_n + p_m^{\top}x_n + p_m^{\top}p_n
Comme échanger des adresses postales pour savoir à quelle distance on habite : vous lâchez deux absolus alors que vous ne vouliez que l'écart. Ajouter une position colle le au quoi. Multipliez deux mots ainsi et le score se scinde en quatre — et les morceaux de position dépendent des places absolues, pas de la distance. Le modèle doit ré-extraire l'écart.
La solution : ne pas ajouter un lieu. S'y tourner.

La solution : ne pas ajouter un lieu. S'y tourner.

(x1x2)=(cosmθsinmθsinmθcosmθ)(x1x2)\begin{pmatrix} x'_1 \\ x'_2 \end{pmatrix} = \begin{pmatrix} \cos m\theta & -\sin m\theta \\ \sin m\theta & \cos m\theta \end{pmatrix} \begin{pmatrix} x_1 \\ x_2 \end{pmatrix}
Comme le faisceau d'un phare : la même lumière, orientée vers un cap fixé par l'instant. RoPE prend les nombres de chaque mot deux par deux et fait pivoter chaque paire d'un angle fixé par sa position (multiplié par un taux fixe). Rien n'est rajouté : le vecteur du mot est simplement tourné. La position cesse d'être une étiquette et devient une direction.
Deux rotations se rencontrent, et seul l'écart subsiste.

Deux rotations se rencontrent, et seul l'écart subsiste.

R(mθ)R(nθ)=R((nm)θ)    R(mθ)q,  R(nθ)k=qR((nm)θ)kR(m\theta)^{\top} R(n\theta) = R\big((n-m)\theta\big) \;\Longrightarrow\; \langle R(m\theta)\,q,\; R(n\theta)\,k\rangle = q^{\top} R\big((n-m)\theta\big)\,k
Comme deux danseurs enlacés : faites-les tourner n'importe où sur la piste, l'angle entre leurs corps ne change jamais. Faites pivoter la query selon sa place, la key selon la sienne — et quand elles se rencontrent, les deux rotations absolues s'annulent. Seul n − m, l'écart, subsiste. Le score lit une distance pure, exactement ce qu'on voulait.
Une seule vitesse brouille. Alors on tourne à plusieurs.

Une seule vitesse brouille. Alors on tourne à plusieurs.

θi=b2(i1)/d,i=1,,d/2,b=10000\theta_i = b^{-2(i-1)/d}, \quad i = 1, \dots, d/2, \quad b = 10000
Un seul taux de rotation finit par boucler : assez loin, deux écarts se ressemblent. Comme une volée de cloches graduées : les petites oscillent vite, les grandes lentement, et seules toutes ensemble elles sonnent un instant sans équivoque. RoPE donne à chaque paire son propre taux : les paires rapides fixent les mots proches, les lentes atteignent l'autre bout de la page.
Elle n'ajoute rien — et ne s'efface jamais.

Elle n'ajoute rien — et ne s'efface jamais.

q~m=RΘ,mqm,k~n=RΘ,nkn(0 new parameters)\tilde{q}_m = R_{\Theta,m}\,q_m, \qquad \tilde{k}_n = R_{\Theta,n}\,k_n \qquad (\text{0 new parameters})
Comme une porte à tambour : la rotation est tout le mécanisme — aucune machinerie en plus, et chacun qui passe reprend la même rotation. RoPE ne touche que les queries et les keys, avec une rotation fixe et pas un seul poids nouveau à entraîner. Elle empile toutes ces petites rotations 2-D en une seule rotation bloc-diagonale, ré-appliquée dans chaque couche — si bien qu'au fond du modèle, le sens de la distance ne s'estompe jamais.
La position devient une rotation — et la rotation continue.

La position devient une rotation — et la rotation continue.

m=mLtrainLtargetm' = m \cdot \dfrac{L_{\text{train}}}{L_{\text{target}}}
Rassemblez le tout : la position n'est plus une étiquette qu'on rajoute, mais une rotation qu'on applique — et le modèle ne lit que l'écart entre les mots. Comme le filetage d'une longue vis : un pas fixe qui continue de s'emboîter aussi loin que court la tige. Dépassez la longueur d'entraînement, rétrécissez doucement chaque rotation pour qu'elle tienne, et la même règle mord encore.
Il connaît toutes les distances. Il ne connaît aucun lieu.

Il connaît toutes les distances. Il ne connaît aucun lieu.

Un mot ne ressent jamais sa propre place — seulement l'angle entre lui et un autre. Il peut vous dire l'écart vers n'importe quel mot, mais n'en désigner aucun en disant . 🌱 Si un esprit ne garde que des distances et jamais un seul lieu fixe, le existe-t-il pour lui — ou seulement le à quelle distance ?
touchez →balayez ↑ pour approfondirbalayez ↓ pour quitter