One big advantage about the multi-headed attention is that it is very parallelisable. Unlike RNNs, it computes all heads of the multi-head attention modules and all the time-steps at once. One problem of computing all time-steps at once is that it could look at futures words too, while we only want to condition on previous words. One solution to that is what is called self-attention masking. The mask is an upper triangular matrix that have zeros in the lower triangle and negative infinity in the upper triangle. The effect of adding this mask to the output of the attention module is that every word to the left has a much higher attention score than words to the right, so the model in practice only focuses on previous words. The application of the mask is crucial in language model because it makes it mathematically correct, however, in text encoders, bidirectional context can be helpful.
Un grand avantage de l’attention multi-têtes est qu’elle est très parallélisable. Contrairement aux RNNs, le calcul de toutes les têtes des modules d’attention multi-têtes et toutes les étapes de temps peut se faire en même temps. Un des problèmes du calcul de tous les pas de temps en une fois est qu’il pourrait également examiner les mots futurs, alors que nous ne voulons que conditionner les mots précédents. Une solution à ce problème est ce que l’on appelle le masquage de l’auto-attention. Le masque est une matrice triangulaire supérieure qui comporte des zéros dans le triangle inférieur et une infinité négative dans le triangle supérieur. L’effet de l’ajout de ce masque à la sortie du module d’attention est que chaque mot à gauche a un score d’attention beaucoup plus élevé que les mots à droite, de sorte que le modèle en pratique se concentre uniquement sur les mots précédents. L’application du masque est cruciale dans le modèle linguistique car elle le rend mathématiquement correct. Cependant, dans les modules encodeurs, le contexte bidirectionnel peut être utile.