lbourdois/en-fr-nyu-dl-course-corpus huggingface dataset:
English: where each xi​ is an n-dimensional vector. Since the set has t elements, each of which belongs to Rn, we can represent the set as a matrix X∈Rn×t.
French: où chaque symbole xi​ est un vecteur dimensionnel nn. Comme l’ensemble comporte des éléments t, dont chacun appartient à Rn, nous pouvons représenter l’ensemble comme une matrice X∈Rn×t.
English: With hard-attention, we impose the following constraint on the alphas: ∥a∥0=1. This means a is a one-hot vector. Therefore, all but one of the coefficients in the linear combination of the inputs equals zero, and the hidden representation reduces to the input xi corresponding to the element αi​=1.
French: Avec beaucoup d’attention, nous imposons aux alphas la contrainte suivante : ∥a∥0=1. Cela signifie que a est un vecteur one-hot. Par conséquent, tous les coefficients de la combinaison linéaire des entrées sauf un sont égaux à 0 et la représentation cachée se réduit à l’entrée xi correspondant à l’élément αi​=1.
English: Where β represents the inverse temperature parameter of the soft(arg)max(⋅). X⊤∈Rt×n is the transposed matrix representation of the set {xi​}i=1t​, and x represents a generic xi from the set. Note that the j-th row of X⊤ corresponds to an element xj∈Rn, so the j-th row of X⊤x is the scalar product of xj​ with each xi in {xi​}i=1t​.
French: où β représente le paramètre de température inverse du soft(arg)max(⋅). X⊤∈Rt×n est la représentation matricielle transposée de l’ensemble {xi​}i=1t​, et x représente un xi générique de l’ensemble. Notez que la ligne jème de X⊤ correspond à un élément xj∈Rn, Ainsi, la jème rangée de X⊤x est le produit scalaire de xj​ avec chaque xi dans {xi​}i=1t​.
English: The components of the vector a are also called “scores” because the scalar product between two vectors tells us how aligned or similar two vectors are. Therefore, the elements of a provide information about the similarity of the overall set to a particular xi​.
French: Les composantes du vecteur a sont également appelées scores car le produit scalaire entre deux vecteurs nous indique dans quelle mesure deux vecteurs sont alignés ou similaires. Par conséquent, les éléments de a fournissent des informations sur la similarité de l’ensemble global avec un symbole particulier xi.
English: The square brackets represent an optional argument. Note that if argmax(⋅) is used, we get a one-hot vector of alphas, resulting in hard attention. On the other hand, soft(arg)max(⋅) leads to soft attention. In each case, the components of the resulting vector a sum to 1.
French: Les crochets représentent un argument facultatif. A noter que si argmax(⋅) est utilisé, nous obtenons un vecteur one-hot d’alphas, ce qui entraîne une attention soutenue. En revanche, soft(arg)max(⋅) conduit à une attention douce. Dans chaque cas, les composantes du vecteur résultant a s’additionnent à 1.
English: Generating a this way gives a set of them, one for each xi​. Moreover, each ai∈Rt so we can stack the alphas in a matrix A∈Rt×t.
French: En générant a de cette façon, on obtient un ensemble d’entre elles, une pour chaque symbole xi​. De plus, chaque ai​∈Rt permet d’empiler les alphas dans une matrice A∈Rt×t.
English: Since each hidden state is a linear combination of the inputs x and a vector a, we obtain a set of t hidden states, which we can stack into a matrix H∈Rn×t.
French: Comme chaque état caché est une combinaison linéaire des entrées x et d’un vecteur a, nous obtenons un ensemble d’états cachés t, que nous pouvons empiler dans une matrice H∈Rn×t.
English: For example, say we wanted to find a recipe to make lasagne. We have a recipe book and search for “lasagne” - this is the query. This query is checked against all possible keys in your dataset - in this case, this could be the titles of all the recipes in the book. We check how aligned the query is with each title to find the maximum matching score between the query and all the respective keys. If our output is the argmax function - we retrieve the single recipe with the highest score. Otherwise, if we use a soft argmax function, we would get a probability distribution and can retrieve in order from the most similar content to less and less relevant recipes matching the query.
French: Par exemple, disons que nous voulons trouver une recette pour faire des lasagnes. Nous avons un livre de recettes et nous cherchons « lasagne » : c’est la requête. Cette requête est comparée à toutes les clés possibles de votre ensemble de données : dans ce cas, il peut s’agir des titres de toutes les recettes du livre. Nous vérifions l’alignement de la requête avec chaque titre pour trouver le score maximum de correspondance entre la requête et toutes les clés respectives. Si notre résultat est la fonction argmax, nous récupérons la recette unique ayant obtenu le score le plus élevé. Sinon, si nous utilisons une fonction argmax souple, nous obtenons une distribution de probabilité et pouvons récupérer dans l’ordre, à partir du contenu le plus similaire, les recettes de moins en moins pertinentes qui correspondent à la requête.
English: Each of the vectors q,k,v can simply be viewed as rotations of the specific input x. Where q is just x rotated by Wq​, k is just x rotated by Wk​ and similarly for v. Note that this is the first time we are introducing “learnable” parameters. We also do not include any non-linearities since attention is completely based on orientation.
French: Chacun des vecteurs q,k,v peut être simplement considéré comme une rotation de l’entrée spécifique x. Où q est juste x tourné par Wq​, k est juste x tourné par Wk​ et de même pour v. Notons que c’est la première fois que nous introduisons des paramètres apprenables. Nous n’incluons pas non plus de non-linéarités puisque l’attention est entièrement basée sur l’orientation.
English: However, v can be of any dimension. If we continue with our lasagne recipe example - we need the query to have the dimension as the keys, i.e. the titles of the different recipes that we’re searching through. The dimension of the corresponding recipe retrieved, v, can be arbitrarily long though. So we have that v∈Rd’’.
French: Cependant, v peut être de n’importe quelle dimension. Si nous continuons avec notre exemple de recette de lasagnes, nous avons besoin que la requête ait la dimension comme clés, c’est-à-dire les titres des différentes recettes que nous recherchons. La dimension de la recette correspondante v, peut cependant être arbitrairement longue. Nous avons donc ce v∈Rd’’.
English: So now we have a set of x’s, a set of queries, a set of keys and a set of values. We can stack these sets into matrices each with t columns since we stacked t vectors; each vector has height d.
French: Nous avons donc maintenant un ensemble de x, un ensemble de requêtes, un ensemble de clés et un ensemble de valeurs. Nous pouvons empiler ces ensembles dans des matrices dont chacune comporte des colonnes t puisque nous avons empilé t vecteurs. Chaque vecteur a une hauteur d.
English: There is also the concept of “heads”. Above we have seen an example with one head but we could have multiple heads. For example, say we have h heads, then we have h q’s, h k’s and h v’s and we end up with a vector in R3hd:
French: Il y a aussi le concept de têtes. Nous avons vu ci-dessus un exemple avec une seule tête, mais nous pouvons en avoir plusieurs. Par exemple, disons que nous avons h têtes puis nous avons des h q, h k et h v et nous nous retrouvons avec un vecteur en R3hd :
English: However, we can still transform the multi-headed values to have the original dimension Rd by using a Wh​∈Rd×hd. This is just one possible way to implement the key-value store.
French: Cependant, nous pouvons toujours transformer les valeurs des têtes pour obtenir la dimension originale Rd en utilisant un Wh​∈Rd×hd. Ce n’est qu’une des façons possibles de mettre en œuvre le key-value store.
English: Expanding on our knowledge of attention in particular, we now interpret the fundamental building blocks of the transformer. In particular, we will take a forward pass through a basic transformer, and see how attention is used in the standard encoder-decoder paradigm and compares to the sequential architectures of RNNs.
French: En élargissant notre connaissance de l’attention, nous interprétons maintenant les éléments fondamentaux du transformer. En particulier, nous allons faire une passe en avant à travers un transformer de base et voir comment l’attention est utilisée dans le paradigme standard de l’encodeur-décodeur. Nous allons également effectuer une comparaison avec les architectures séquentielles des RNNs.
English: We should be familiar with this terminology. It is shown most prominently during autoencoder demonstrations, and is prerequisite understanding up to this point. To summarize, an input is fed through an encoder and decoder which impose some sort of bottleneck on the data, forcing only the most important information through. This information is stored in the output of the encoder block, and can be used for a variety of unrelated tasks.
French: Nous devons nous familiariser avec cette terminologie. Elle est surtout mise en évidence lors des démonstrations d’auto-encodeurs et constitue jusqu’à présent un préalable à la compréhension. Pour résumer, une entrée passe par un encodeur et un décodeur qui imposent une sorte de goulot d’étranglement aux données, ne laissant passer que les informations les plus importantes. Ces informations sont stockées dans la sortie du bloc de l’encodeur et peuvent être utilisées pour toute une série de tâches sans rapport les unes avec les autres.
English: The encoder module accepts a set of inputs, which are simultaneously fed through the self attention block and bypasses it to reach the Add, Norm block. At which point, they are again simultaneously passed through the 1D-Convolution and another Add, Norm block, and consequently outputted as the set of hidden representation. This set of hidden representation is then either sent through an arbitrary number of encoder modules i.e. more layers), or to the decoder. We shall now discuss these blocks in more detail.
French: Le module d’encodage accepte un ensemble d’entrées, qui sont simultanément passées par le bloc d’auto-attention et le contourne pour atteindre le bloc Add, Norm. À ce stade, elles sont à nouveau passées simultanément par la convolution 1D et un autre bloc Add, Norm. Elles en ressortent en sortie comme l’ensemble de la représentation cachée. Cet ensemble de représentation cachée est alors envoyé soit par un nombre arbitraire de modules d’encodage (c’est-à-dire plus de couches), soit au décodeur. Nous allons examiner ces blocs plus en détail.
English: The self-attention model is a normal attention model. The query, key, and value are generated from the same item of the sequential input. In tasks that try to model sequential data, positional encodings are added prior to this input. The output of this block is the attention-weighted values. The self-attention block accepts a set of inputs, from 1,⋯,t, and outputs 1,⋯,t attention weighted values which are fed through the rest of the encoder.
French: Le modèle d’auto-attention est un modèle d’attention normale. La requête, la clé et la valeur sont générées à partir du même élément de l’entrée séquentielle. Dans les tâches qui tentent de modéliser des données séquentielles, des encodeurs de position sont ajoutés avant cette entrée. La sortie de ce bloc est constituée des valeurs pondérées de l’attention. Le bloc auto-attention accepte un ensemble d’entrées, de 1,⋯,t, et produit des valeurs pondérées par l’attention de 1,⋯ ,t qui sont transmises au reste de l’encodeur.
English: Following this step, a 1D-convolution (aka a position-wise feed forward network) is applied. This block consists of two dense layers. Depending on what values are set, this block allows you to adjust the dimensions of the output hEnchEnc.
French: Après cette étape, une convolution 1D est appliquée. Ce bloc est constitué de deux couches denses. En fonction des valeurs définies, ce bloc permet d’ajuster les dimensions de la sortie hEnchEnc.
English: The cross attention follows the query, key, and value setup used for the self-attention blocks. However, the inputs are a little more complicated. The input to the decoder is a data point yi​, which is then passed through the self attention and add norm blocks, and finally ends up at the cross-attention block. This serves as the query for cross-attention, where the key and value pairs are the output hEnc, where this output was calculated with all past inputs x1,⋯ ,xt​.
French: L’attention croisée suit la configuration des requêtes, des clés et des valeurs utilisées pour les blocs d’auto-attention. Cependant, les entrées sont un peu plus compliquées. L’entrée dans le décodeur est un point de données yi, qui est ensuite passé par l’auto-attention et les blocs Add Norm, et qui se termine finalement par le bloc d’auto-attention. Celui-ci sert de requête pour l’attention croisée, où les paires de clés et de valeurs sont la sortie hEnc, où cette sortie a été calculée avec toutes les entrées passées x1​,⋯,xt​.
English: A set, x1 to xt​ is fed through the encoder. Using self-attention and some more blocks, an output representation, {hEnc}i=1t​ is obtained, which is fed to the decoder. After applying self-attention to it, cross attention is applied. In this block, the query corresponds to a representation of a symbol in the target language yi​, and the key and values are from the source language sentence (x1 to xt​). Intuitively, cross attention finds which values in the input sequence are most relevant to constructing yt​, and therefore deserve the highest attention coefficients. The output of this cross attention is then fed through another 1D-convolution sub-block, and we have hDec. For the specified target language, it is straightforward from here to see how training will commence, by comparing {hDec}i=1t​ to some target data.
French: Un ensemble, x1​ à xt​ est transmis par l’encodeur. En utilisant l’auto-attention et quelques autres blocs, on obtient une représentation de sortie, t{hEnc}i=1t​, qui est envoyée au décodeur. Après lui avoir appliqué l’auto-attention, l’attention croisée est appliquée. Dans ce bloc, la requête correspond à une représentation d’un symbole dans la langue cible yi​, et la clé et les valeurs proviennent de la phrase de la langue source (x1​ à xt​). Intuitivement, l’attention croisée permet de trouver quelles valeurs de la séquence d’entrée sont les plus pertinentes pour construire yt​, et méritent donc les coefficients d’attention les plus élevés. La sortie de cette attention croisée est ensuite acheminée à travers un autre sous-bloc à convolution 1D et nous obtenons hDec. Pour la langue cible spécifiée, il est facile de voir comment l’entraînement va commencer, en comparant {hDec}i=1t à certaines données cibles.
English: There are a few important facts we left out before to explain the most important modules of a transformer, but will need to discuss them now to understand how transformers can achieve state-of-the-art results in language tasks.
French: Abordons quelques éléments laissés de côté lors de l’explication des modules les plus importants d’un transformer pour comprendre comment cette architecture peut obtenir des résultats de pointe dans les tâches linguistiques.
English: Attention mechanisms allow us to parallelize the operations and greatly accelerate a model’s training time, but loses sequential information. The positional encoding feature enables allows us to capture this context.
French: Les mécanismes d’attention nous permettent de mettre en parallèle les opérations et d’accélérer considérablement le temps d’entraînement d’un modèle mais perdent des informations séquentielles. L’encodage positionnel nous permet de saisir ce contexte.
English: Throughout the training of a transformer, many hidden representations are generated. To create an embedding space similar to the one used by the word-language model example in PyTorch, the output of the cross-attention, will provide a semantic representation of the word xi​, at which point further experimentation can be performed over this dataset.
French: Tout au long de l’entraînement d’un transformer, de nombreuses représentations cachées sont générées. Pour créer un espace d’enchâssement similaire à celui utilisé dans PyTorch, la sortie de l’attention croisée fournit une représentation sémantique du mot xi pouvant servir à d’autres expériences (tâches) sur ce jeu de données.
English: The first module we will look at the multi-headed attention block. Depending on query, key, and values entered into this block, it can either be used for self or cross attention.
French: Dans le premier module, nous examinons le bloc d’attention mullti-têtes. En fonction de la requête, de la clé et des valeurs entrées dans ce bloc, il peut être utilisé pour l’auto-attention ou l’attention croisée.
English: Initialization of multi-headed attention class. If a d_input is provided, this becomes cross attention. Otherwise, self-attention. The query, key, value setup is constructed as a linear transformation of the input d_model.
French: Initialisation de la classe d’attention à plusieurs têtes. Si une d_input est fournie, cela devient une attention croisée. Sinon, c’est l’auto-attention. La configuration de la requête, de la clé, de la valeur est construite comme une transformation linéaire du d_model d’entrée.
English: Return hidden layer corresponding to encodings of values after scaled by the attention vector. For book-keeping purposes (which values in the sequence were masked out by attention?) A is also returned.
French: Retourne la couche cachée correspondant aux encodeurs des valeurs après mise à l’échelle par le vecteur d’attention. Pour des raisons comptables (quelles valeurs de la séquence ont été masquées par l’attention ?), a est également renvoyé.
English: Given an input is split into q, k, and v, at which point these values are fed through a scaled dot product attention mechanism, concatenated and fed through a final linear layer. The last output of the attention block is the attention found, and the hidden representation that is passed through the remaining blocks.
French: Une entrée donnée est divisée en q, k et v, et ces valeurs sont alors transmises par un mécanisme d’attention par produit scalaire, puis concaténées et transmises par une couche linéaire finale. La dernière sortie du bloc d’attention est l’attention trouvée et la représentation cachée qui est passée à travers les blocs restants.
English: Although the next block shown in the transformer/encoder’s is the Add,Norm, which is a function already built into PyTorch. As such, it is an extremely simple implementation, and does not need it’s own class. Next is the 1-D convolution block. Please refer to previous sections for more details.
French: Le bloc Add,Norm est une fonction déjà intégrée dans PyTorch. En tant que telle, c’est une implémentation extrêmement simple et n’a pas besoin de sa propre classe. Le bloc suivant est le bloc de convolution 1D.
English: Recall that self attention by itself does not have any recurrence or convolutions, but that’s what allows it to run so quickly. To make it sensitive to position we provide positional encodings. These are calculated as follows:
French: Rappelons que l’auto-attention n’a en soi ni récurrence ni convolutions, mais que c’est ce qui lui permet de fonctionner si rapidement. Pour être sensible à la position, nous fournissons des encodeurs de position. Ceux-ci sont calculés comme suit :
English: Using the imdb review dataset, we can output from the encoder a latent representation of a sequence of text, and train this encoding process with binary cross entropy, corresponding to a positive or negative movie review.
French: En utilisant le jeu de données d’IMDB (l’équivalent anglophone d’AlloCiné), nous pouvons sortir de l’encodeur une représentation latente d’une séquence de texte et entraîner ce processus d’encodage avec une entropie croisée binaire, correspondant à une critique de film positive ou négative.
English: In this section, we discuss the architecture and convolution of traditional convolutional neural networks. Then we extend to the graph domain. We understand the characteristics of graph and define the graph convolution. Finally, we introduce spectral graph convolutional neural networks and discuss how to perform spectral convolution.
French: Dans cette section, nous abordons l’architecture et la convolution dans les ConvNets traditionnels. Puis nous l’étendons au domaine des graphes. Nous comprenons les caractéristiques des graphes et définissons la convolution pour un graphe. Enfin, nous introduisons les réseaux convolutifs spectraux pour graphe et discutons de la manière d’effectuer la convolution spectrale.
English: This section covers the complete spectrum of Graph Convolutional Networks (GCNs), starting with the implementation of Spectral Convolution through Spectral Networks. It then provides insights on applicability of the other convolutional definition of Template Matching to graphs, leading to Spatial networks. Various architectures employing the two approaches are detailed out with their corresponding pros & cons, experiments, benchmarks and applications.
French: Cette section couvre le spectre complet des réseaux convolutifs pour graphe (GCNs pour Graph Convolutional Networks) en commençant par la mise en œuvre de la convolution spectrale à travers les réseaux spectraux. Elle donne ensuite un aperçu de l’applicabilité de la définition de la convolution via l’appariement de patrons (template matching) aux graphes aboutissant aux réseaux spatiaux. Diverses architectures utilisant les deux approches sont détaillées avec leurs avantages et inconvénients, des expériences, les références et les applications correspondants.
English: In this section, we introduce Graph Convolutional Network (GCN) which is one type of architecture that utilizes the structure of data. Actually, the concept of GCNs is closely related to self-attention. After understanding the general notation, representation and equations of GCN, we delve into the theory and code of a specific type of GCN known as Residual Gated GCN.
French: Dans cette section, nous présentons le réseau convolutif pour graphe (GCN) qui est un type d’architecture utilisant la structure des données. En fait, le concept de GCN est étroitement lié à l’auto-attention. Après avoir compris la notation générale, la représentation et les équations des GCNs, nous nous penchons sur la théorie et le code d’un type spécifique de GCN connu sous le nom de GCN résiduel à porte.
English: Consider an image of 1024 x 1024 pixels. This image can be seen as a point in the space for 1,000,000 dimensions. Using 10 samples per dimension generates 10^1,000,000 images, which is extremely high. ConvNets are extremely powerful to extract best representation of high-dimensional image data, such as the one given in the example.
French: Considérons une image de 1024×1024 pixels. Cette image peut être considérée comme un point dans l’espace de 1000000 de dimensions. L’utilisation de 10 échantillons par dimension génère 10^1000000 images, ce qui est extrêmement élevé. Les réseaux convolutifs sont extrêmement puissants pour extraire la meilleure représentation des données d’images en grandes dimensions, comme celle donnée dans l’exemple.
English: Hierarchical Low level features will be combined to form medium level features. Subsequently, these medium level features will combined to progressively form higher and higher level features. For example, a visual representation.
French: Hiérarchiques : les caractéristiques de bas niveau seront combinées pour former des caractéristiques de niveau moyen. Par la suite, ces éléments de niveau moyen seront combinés pour former des éléments de niveau supérieur.
English: Images, volumes, videos lie on 2D, 3D, 2D+1 Euclidean domains (grids). Each pixel is represented by a vector of red, green, and blue values.
French: Les images, volumes, vidéos se situent sur des domaines euclidiens 2D, 3D, 2D+1 (grilles). Chaque pixel est représenté par un vecteur de valeurs rouge, vert et bleu.