HeadlinesBriefing favicon HeadlinesBriefing.com

Pourquoi les Transformers ont besoin d'encodage positionnel

Towards Data Science •
×

En plongeant dans les modèles de fondation pour les séries temporelles, j'ai réalisé que je ne pouvais pas vraiment les comprendre sans d'abord comprendre les transformers. Je ne voulais pas utiliser ces modèles comme des boîtes noires, alors j'ai commencé à retracer les idées à rebours, des modèles de fondation aux transformers, et des transformers à l'auto-attention. Ce qui a rendu la transition intéressante, c'est que bien que les transformers aient été initialement conçus pour le langage, l'idée centrale s'étend naturellement aux séries temporelles. Les deux modalités sont très différentes, mais elles partagent quelque chose de fondamental : ce sont toutes deux des séquences, et dans les deux cas, l'ordre change le sens. En langage, le chien mord l'homme est très différent de l'homme mord le chien. Les séries temporelles ne sont pas différentes. Une température de 30° hier et 20° aujourd'hui raconte une histoire différente de 20° hier et 30° aujourd'hui. Les valeurs peuvent être les mêmes, mais leur ordre change le sens de la séquence. La question est que si l'auto-attention regarde toutes les observations à la fois, comment un transformer sait-il quelle observation est venue en premier, laquelle est venue plus tard, ou à quelle distance se trouvent deux observations ? Cette question m'a conduit à l'encodage positionnel. Ce qui m'a le plus surpris, c'est comment une idée mathématique aussi simple pouvait donner à un Transformer un sens de l'ordre. Les techniques exactes ont considérablement évolué depuis, mais le problème sous-jacent reste le même. Cet article est ma tentative de construire cette intuition depuis le début, en commençant par une série temporelle simple et en suivant le chemin des observations brutes à l'auto-attention et enfin à l'encodage positionnel.

Des observations scalaires aux représentations vectorielles Considérons une série temporelle simple contenant la température enregistrée sur cinq jours ouvrables : Exemple de série temporelle : historique des températures sur 5 jours Chaque observation x_t est seulement un scalaire. Un transformer, cependant, opère sur des vecteurs de dimensionnalité d_model. Les observations scalaires doivent donc d'abord être mappées dans cet espace de représentation. Une façon simple de le faire est par une projection linéaire apprise, c'est-à-dire un embedding : e_t = W_e x_t + b_e nous donnant une séquence de représentations vectorielles : e_1, e_2, e_3, e_4, e_5 Un embedding est une représentation profonde et abstraite de la série sous forme d'un vecteur numérique multidimensionnel qui encode ses caractéristiques et que le modèle comprend. Chaque token de série temporelle est représenté par un embedding appris. Chaque e_t capture des informations sur la valeur observée à ce pas de temps, mais à ce stade, ce n'est qu'une représentation de l'observation. Le mot important ici est appris. Le modèle ne reçoit pas une représentation vectorielle prédéfinie pour une température telle que 18°. Les paramètres W_e et b_e sont appris pendant l'entraînement afin que les représentations résultantes deviennent utiles pour la tâche. À ce stade, e_t représente ce qui a été observé. Il ne dit pas encore au modèle où cette observation s'est produite dans la séquence.

Comment l'auto-attention construit-elle le contexte ? L'auto-attention permet à chaque observation d'utiliser des informations du reste de la séquence. Supposons que nous voulions mettre à jour la représentation du vendredi. Le modèle crée d'abord trois projections apprises à partir de chaque e_t : q_t = W_Q e_t, k_t = W_K e_t, v_t = W_V e_t Les vecteurs de requête, clé et valeur sont appris dans le bloc d'auto-attention. Les matrices W_Q, W_K et W_V sont également apprises pendant l'entraînement. On ne dit pas au modèle à l'avance à quoi devraient ressembler une requête, une clé ou une valeur utile. Pour le vendredi, sa requête q_5 est comparée avec les clés de toutes les observations : k_1, k_2, k_3, k_4, k_5. Chaque comparaison produit un...