lbourdois/en-fr-nyu-dl-course-corpus huggingface dataset:
English: So, the activation of the next layer hil+1​ is a function of the activation of the previous layer hil​ at node i and the neighbourhood of i. When we change the function, we get an entire family of graphs.
French: Ainsi, l’activation de la couche suivante hil+1​ est une fonction de l’activation de la couche précédente hil​ au nœud i et au voisinage de i. Lorsque nous modifions la fonction, nous obtenons une famille entière de graphes.
English: The above defined Vanilla Spatial GCN is a simplification of ChebNets. We can truncate the expansion of ChebNet by using the first two Chebyshev functions to end up with,
French: Le GCN spatial standard défini ci-dessus est une simplification des ChebNets. Nous pouvons tronquer l’expansion de ChebNet en utilisant les deux premières fonctions de Chebyshev pour aboutir à :
English: For this equation, we give the central/core vertex i and it’s neighbourhood the same template weight wl. We can differentiate this by giving the central node W1l​, and having a different template node W2l​ for the one-hot neighbourhood. This will improve the performance of the GNNs by a substantial amount. This model is still considered to be Isotropic in nature, since the neighbours have the same weight.
French: Pour cette équation, nous donnons au sommet central/cœur i et à son voisinage le même poids de patron wl. Nous pouvons différencier cette équation en donnant au nœud central W1l​, et en ayant un nœud de patron différent W2l​ pour le voisinage one-hot. Cela permet d’améliorer considérablement les performances des GNNs. Ce modèle est toujours considéré comme étant de nature isotrope puisque les voisins ont le même poids.
English: An architecture that can differentiate graphs that are not isomorphic. Isomorphism is the measure of equivalence between graphs. In the figure below, the two graphs are considered isomorphic to each other. Isomorphic graphs will be treated in a similar way and non-isomorphic graphs will be treated differently.
French: Une architecture qui peut différencier les graphes qui ne sont pas isomorphiques. L’isomorphisme est la mesure de l’équivalence entre les graphes. Dans la figure ci-dessous, les deux graphes sont considérés comme isomorphes l’un par rapport à l’autre. Les graphes isomorphes seront traités de manière similaire et les graphes non isomorphes seront traités différemment.
English: Standard CNNs have the ability to produce anisotropic filters — ones that favour certain directions. This is because the directional structure is based on up, down, left, and right. However, the GCNs described above have no notion of direction, and thus can only produce isotropic filters. Anisotropy can be introduced naturally, with edge features. For instance, molecules can have single, double, and triple bonds. Graphically, it is introduced weighting different neighbours differently.
French: Les ConvNets standards ont la capacité de produire des filtres anisotropes qui favorisent certaines directions. En effet, la structure directionnelle est basée sur le haut, le bas, la gauche et la droite. Cependant les ConvNets décrits ci-dessus n’ont aucune notion de direction et ne peuvent donc produire que des filtres isotropes. L’anisotropie peut être introduite naturellement avec des caractéristiques d’arêtes. Par exemple, les molécules peuvent avoir des liaisons simples, doubles et triples. Graphiquement, elle est introduite en pondérant différemment les différents voisins.
English: This is the graph version of the standard transformer, commonly used in NLP. If the graph is fully connected (every two nodes share an edge), we recover the definition of a standard transformer.
French: Il s’agit de la version sous la forme d’un graphe du transformer standard communément utilisé en traitement du langage naturel. Si le graphe est entièrement connecté (tous les deux nœuds partagent une arête), on retrouve la définition d’un transformer standard.
English: Graphs obtain their structure from sparsity, so the fully connected graph has trivial structure and is essentially a set. Transformers then can be viewed as Set Neural Networks, and are in fact the best technique currently to analyse sets/bags of features.
French: Les graphes obtiennent leur structure à partir d’une éparsité, donc le graphe entièrement connecté a une structure triviale et est essentiellement un ensemble. Les transformers peuvent alors être considérés comme des réseaux de neurones Set et sont en fait la meilleure technique actuelle pour analyser des ensembles de caractéristiques.
English: Benchmarks are an essential part of progress in any field. The recently released benchmark Benchmarking Graph Neural Networks has six medium-scale datasets that can be used for four fundamental graph problems - graph classification, graph regression, node classification and edge classification. Though these datasets are mediumly sized, they are enough to statistically separate trends in various GNNs.
French: Les critères de référence sont un élément essentiel du progrès dans tout domaine. Le benchmark récemment publié Benchmarking Graph Neural Networks comporte six jeux de données à moyenne échelle qui peuvent être utilisés pour quatre problèmes fondamentaux des graphes : la classification de graphes, la régression de graphes, la classification des nœuds et la classification des arêtes. Bien que ces jeux de données soient de taille moyenne, ils sont suffisants pour séparer statiquement les tendances des différents réseaux de neurones des graphes.
English: For an Edge Classification task, we have considered the Combinatorial Optimization problem of the Travelling Salesman Problem (TSP) - where we want to know if a particular edge belongs to the optimal solution. If it belongs to the solution it falls in class 1, else class 0. Here we need explicit edge features, and the only model that does a good job of this is GatedGCN.
French: Pour une tâche de classification des arêtes, nous avons considéré le problème d’optimisation combinatoire du problème du voyageur de commerce (TSP en anglais pour Travelling Salesman Problem). Nous voulons savoir si une arête particuliere appartient à la solution optimale. S’il fait partie de la solution, il appartient à la classe 1, sinon à la classe 0. Ici, nous avons besoin de caractéristiques explicites des arêtes et le seul modèle qui fait un bon travail à cet égard est GatedGCN.
English: We can use GCNs for self-supervised tasks as well, they are not limited to supervised learning models. According to Dr. Yann LeCun, almost all self-supervised learning tasks exploit some sort of graph structure. When we do a self-supervised learning task in text, where we take a sequence of words and we learn to predict missing words or new sentences. There is a graphs structure here, which is how many times a word appears some distance away from another word. Text would be a linear graph, and the neighbours chosen would be used to train a Transformer. In the case of contrastive training, where we have two samples that are similar, and two which are dissimilar - it is essentially a similarity graph, where two samples are linked when they are similar and if they are not linked they are considered dissimilar.
French: Les GCNs ne se limitent pas à des modèles d’apprentissage supervisés et peuvent être utilisés pour des tâches autosupervisées. Selon Yann, presque toutes les tâches d’apprentissage autosupervisé exploitent une sorte de structure graphique. Lorsque nous effectuons une tâche d’apprentissage autosupervisé dans un texte, nous prenons une séquence de mots et nous apprenons à prédire les mots manquants ou les nouvelles phrases. Il existe ici une structure graphique, qui correspond au nombre de fois qu’un mot apparaît à une certaine distance d’un autre mot. Le texte serait un graphe linéaire et les voisins choisis seraient utilisés pour entraîner un transformer. Dans le cas de l’entraînement contrastif, où nous avons deux échantillons qui sont similaires et deux qui sont dissemblables, il s’agit essentiellement d’un graphe de similarité où deux échantillons sont liés lorsqu’ils sont similaires et s’ils ne le sont pas, ils sont considérés comme dissemblables.
English: GCNs generalize CNNs to data on graphs. The convolution operator needed to be redesigned on graphs. Doing this for template matching gave rise to Spatial GCNs, and for spectral convolution lead to Spectral GCNs. There is linear complexity for sparse graphs, and GPU implementation, although the latter is not yet optimized for sparse matrix multiplication. The applications are abound as shown below.
French: Les GCNs généralisent les ConvNets pour les données de type graphes. L’opérateur de convolution a dû être repensé. Cette opération a donné naissance aux GCNs spatiaux pour l’appariement de patrons et aux GCNs spectraux pour la convolution spectrale. Il existe une complexité linéaire pour les graphes épars et l’implémentation GPU, bien que cette dernière ne soit pas encore optimisée pour la multiplication des matrices éparses. Les applications sont nombreuses, comme le montre le tableau ci-dessous.
English: Graph Convolutional Network (GCN) is one type of architecture that utilizes the structure of data. Before going into details, let’s have a quick recap on self-attention, as GCN and self-attention are conceptually relevant.
French: Le réseau convolutif pour graphe (GCN pour Graph Convolutional Network) est un type d’architecture qui utilise la structure des données. Avant d’entrer dans les détails, faisons un rapide rappel sur l’auto-attention car le GCN et l’auto-attention sont conceptuellement pertinents.
English: In Figure 1, vertex v is comprised of two vectors: input x and its hidden representation hh. We also have multiple vertices vj​, which is comprised of xj​ and hj​. In this graph, vertices are connected with directed edges.
French: Dans la figure 1, le sommet v est composé de deux vecteurs : l’entrée x et sa représentation cachée h. Nous avons également plusieurs sommets vj​, qui se composent de xj​ et de hj​. Dans ce graphe, les sommets sont reliés par des arêtes dirigées.
English: The degree (number of incoming edges) d is defined as the norm of this adjacency vector, i.e. ∥a∥1, which is the number of ones in the vector a.
French: Le degré (nombre d’arêtes entrantes) d est défini comme la norme de ce vecteur de’adjacence, c’est-à-dire ∥a∥1​, qui est le nombre de 1 dans le vecteur a.
English: where f(⋅) is a non-linear function such as ReLU (⋅)+, Sigmoid σ(⋅), and hyperbolic tangent tanh(⋅).
French: où f(⋅) est une fonction non linéaire telle que ReLU (⋅)+, Sigmoïde σ(⋅) et tangente hyperbolique tanh(⋅).
English: Remember that in self-attention, the hidden vector h is computed by Xa, which means that the columns in x is scaled by the factors in a. In the context of GCN, this means that if we have multiple incoming edges,i.e. multiple ones in adjacency vector a, Xa gets larger. On the other hand, if we have only one incoming edge, this value gets smaller. To remedy this issue of the value being proportionate to the number of incoming edges, we divide it by the number of incoming edges dd. We then apply rotation v to Xad−1.
French: Dans l’auto-attention, le vecteur caché h est calculé par Xa, ce qui signifie que les colonnes dans x sont mises à l’échelle par les facteurs dans a. Dans le contexte du GCN, cela signifie que si nous avons plusieurs arêtes entrantes, c’est-à-dire plusieurs dans le vecteur d’adjacence a, Xa s’agrandit. En revanche, si nous n’avons qu’une seule arête entrante, cette valeur devient plus petite. Pour remédier à ce problème de proportionnalité de la valeur par rapport au nombre d’arêtes entrantes, nous la divisons par le nombre d’arêtes entrantes dd. Nous appliquons ensuite la rotation v à Xad−1.
English: As with the standard GCN, the vertex v consists of two vectors: input x and its hidden representation hh. However, in this case, the edges also have a feature representation, where ejxejx​ represents the input edge representation and ejh​ represents the hidden edge representation.
French: Comme pour le GCN standard, le sommet v est constitué de deux vecteurs : l’entrée x et sa représentation cachée hh. Toutefois, dans ce cas, les arêtes ont également une représentation de caractéristique, où ejxejx​ représente la représentation de l’arête d’entrée et ejh représente la représentation de l’arête cachée.
English: where x is the input representation, Ax represents a rotation applied to the input x and ∑vj​→v​η(ej​)⊙Bxj​ denotes the summation of elementwise multiplication of rotated incoming features Bxj​ and a gate η(ej​). In contrast to the standard GCN above where we average the incoming representations, the gate term is critical to the implementation of Residual Gated GCN since it allows us to modulate the incoming representations based on the edge representations.
French: où x est la représentation de l’entrée, Ax représente une rotation appliquée à l’entrée x et ∑vj​→v​η(ej​)⊙Bxj​ indique la somme des multiplications par éléments des éléments entrants ayant subi une rotation Bxj​ et d’une porte η(ej​). Contrairement au GCN standard ci-dessus où nous faisons la moyenne des représentations entrantes, le terme de porte est essentiel à la mise en œuvre du RG CGN car il nous permet de moduler les représentations des entrées en fonction des représentations des arêtes.
English: Note that the summation is only over vertices vj​ that have incoming edges to vertex v. The term residual (in Residual Gated GCN) comes from the fact that in order to calculate the hidden representation h, we add the input representation x. The gate term η(ej​) is calculated as shown below:
French: A noter que la sommation se fait uniquement sur les sommets vj qui ont des arêtes entrantes au sommet v. Le terme résiduel (dans Residual Gated GCN) vient du fait que pour calculer la représentation cachée h, on ajoute la représentation d’entrée x. Le terme de porte η(ej) est calculé comme indiqué ci-dessous :
English: The gate value η(ej) is a normalized sigmoid obtained by dividing the sigmoid of the incoming edge representation by the sum of sigmoids of all incoming edge representations. Note that in order to calculate the gate term, we need the representation of the edge ej​, which can be computed using the equations below:
French: La valeur de porte η(ej) est une sigmoïde normalisée obtenue en divisant la sigmoïde de la représentation de l’arête entrante par la somme des sigmoïdes de toutes les représentations de l’arête entrante. A noter que pour calculer le terme de porte, nous avons besoin de la représentation de l’arête ej​, qui peut être calculée à l’aide des équations ci-dessous :
English: The hidden edge representation ejh​ is obtained by the summation of the initial edge representation ejxejx​ and ReLU(⋅) applied to ej​ where ej​ is in turn given by the summation of a rotation applied to ejx​, a rotation applied to the input representation xj of the vertex vj​ and a rotation applied to the input representation x of the vertex v.
French: La représentation des arêtes cachées ejhejh​ est obtenue par la sommation de la représentation initiale des arêtes ejxejx​ et ReLU(⋅) appliqué à ej​ où ej​ est à son tour donné par la somme d’une rotation appliquée à ejx​, une rotation appliquée à la représentation en entrée xj​ du sommet vj​ et une rotation appliquée à la représentation en entrée x du sommet v.
English: Note: In order to calculate hidden representations downstream (e.g. 2nd layer hidden representations), we can simply replace the input feature representations by the 1st layer feature representations in the equations above.
French: Note : afin de calculer les représentations cachées en aval (par exemple la deuxième couche de représentations cachées), nous pouvons simplement remplacer les représentations des caractéristiques d’entrée par les représentations des caractéristiques de la couche première dans les équations au-dessus.
English: In this notebook, the task is to classify a given graph structure into one of 8 graph types. The dataset obtained from dgl.data.MiniGCDataset yields some number of graphs (num_graphs) with nodes between min_num_v and max_num_v. Hence, all the graphs obtained do not have the same number of nodes/vertices.
French: Dans ce notebook, la tâche consiste à classer une structure de graphe donnée dans l’un des 8 types de graphes. Le jeu de données obtenu à partir de dgl.data.MiniGCDataset donne un certain nombre de graphes (num_graphs) avec des nœuds entre min_num_v et max_num_v. Par conséquent, tous les graphes obtenus n’ont pas le même nombre de nœuds/sommets.
English: Having created the graphs, the next task is to add some signal to the domain. Features can be applied to nodes and edges of a DGLGraph. The features are represented as a dictionary of names (strings) and tensors (fields). ndata and edata are syntax sugar to access the feature data of all nodes and edges.
French: Après avoir créé les graphes, la tâche suivante consiste à ajouter un signal au domaine. Des caractéristiques peuvent être appliquées aux nœuds et aux arêtes d’un DGLGraph. Les caractéristiques sont représentées par un dictionnaire de noms (chaînes de caractères) et de tenseurs (champs). Les ndata et edata sont des sucres syntaxiques permettant d’accéder aux données des caractéristiques de tous les nœuds et arêtes.
English: The following code snippet shows how the features are generated. Each node is assigned a value equal to the number of incident edges, whereas each edge is assigned the value 1.
French: L’extrait de code suivant montre comment les caractéristiques sont générées. Chaque nœud se voit attribuer une valeur égale au nombre d’arêtes incidentes, tandis que chaque bord se voit attribuer la valeur 1.
English: A sample graph from the trainset has the following representation. Here, we observe that the graph has 15 nodes and 45 edges and both the nodes and edges have a feature representation of shape (1,) as expected. Furthermore, the 0 signifies that this graph belongs to class 0.
French: Un exemple de graphe issu du jeu d’entraînement a la représentation suivante. Ici, nous observons que le graphe a 15 nœuds et 45 arêtes et que les nœuds et les arêtes ont une représentation caractéristique de la forme (1,) comme prévu. De plus, le 0 signifie que ce graphe appartient à la classe 0.
English: Firstly, all the rotations of the input features Ax, Bxj​, Cejx​, Dxj​ and Ex are computed by defining nn.Linear layers inside the __init__ function and then forward propagating the input representations h and e through the linear layers inside the forward function.
French: Premièrement, toutes les rotations des caractéristiques d’entrée Ax, Bxj​, Cejx​, Dxj​ et Ex sont calculées en définissant nn.Linear couches à l’intérieur de la fonction __init__ puis en propageant les représentations d’entrée h et e à travers les couches linéaires à l’intérieur de la fonction forward.
English: Secondly, we compute the edge representations. This is done inside the message_func function, which iterates over all the edges and computes the edge representations. Specifically, the line e_ij = edges.data['Ce'] + edges.src['Dh'] + edges.dst['Eh'] computes (Eq. 7) from above. The message_func function ships Bh_j (which is Bxj​ from (Eq. 5)) and e_ij (Eq. 7) through the edge into the destination node’s mailbox.
French: Deuxièmement, nous calculons les représentations de l’arête. Ceci est fait à l’intérieur de la fonction message_func, qui itère sur toutes les arêtes et calcule leurs représentations. Plus précisément, la ligne e_ij = edges.data['Ce'] + edges.src['Dh'] + edges.dst['Eh'] calcule (Eq. 7) à partir du haut. La fonction message_func envoie Bh_j (qui est Bxj​ de (Eq. 5)) et e_ij (Eq. 7) par le bord dans la boîte aux lettres du noeud de destination.
English: Thirdly, the reduce_func function collects the shipped messages by the message_func function. After collecting the node data Ah and shipped data Bh_j and e_ij from the mailbox, the line h = Ah_i + torch.sum(sigma_ij * Bh_j, dim=1) / torch.sum(sigma_ij, dim=1) computes the hidden representation of each node as indicated in (Eq. 5). Note however, that this only represents the term (Ax+∑vj→vη(ej)⊙Bxj without the ReLU(⋅) and residual connection.
French: Troisièmement, la fonction reduce_func collecte les messages envoyés par la fonction message_func. Après avoir collecté les données du nœud Ah et les données expédiées Bh_j et e_ij de la mailbox, la ligne h = Ah_i + torch.sum(sigma_ij * Bh_j, dim=1) / torch.sum(sigma_ij, dim=1) calcule la représentation cachée de chaque nœud comme indiqué dans (Eq. 5). A noter cependant que cela ne représente que le terme (Ax+∑vj​→v​η(ej​)⊙Bxj​) sans le ReLU(⋅) et la connexion résiduelle.
English: Inside the forward function, having called g.update_all, we obtain the results of graph convolution h and e, which represent the terms (Ax+∑vj​→v​η(ej​)⊙Bxj​) from (Eq.5) and ej​ from (Eq. 7) respectively. Then, we normalize h and e with respect to the graph node size and graph edge size respectively. Batch normalization is then applied so that we can train the network effectively. Finally, we apply ReLU(⋅) and add the residual connections to obtain the hidden representations for the nodes and edges, which are then returned by the forward function.
French: A l’intérieur de la fonction forward, ayant appelé g.update_all, nous obtenons les résultats de la convolution des graphes h et e, qui représentent les termes Ax+∑vj​→v​η(ej​)⊙Bxj​) de (Eq.5) et ej​ de (Eq. 7) respectivement. Ensuite, nous normalisons h et e par rapport à la taille du nœud et de l’arête du graphe respectivement. La batch normalisation est ensuite appliquée afin que nous puissions entraîner le réseau efficacement. Enfin, nous appliquons ReLU(⋅) et ajoutons les connexions résiduelles pour obtenir les représentations cachées des nœuds et des arêtes, qui sont ensuite renvoyées par la fonction forward.
English: Finally, we define our GatedGCN model which comprises of the previously defined classes: GatedGCN_layer and MLP_layer. The definition of our model (GatedGCN) is shown below.
French: Enfin, nous définissons notre modèle GatedGCN qui comprend les classes définies précédemment : GatedGCN_layer et MLP_layer. La définition de notre modèle (GatedGCN) est présentée ci-dessous.
English: In our constructor, we define the embeddings for e and h (self.embedding_e and self.embedding_h), self.GatedGCN_layers which is list (of size L) of our previously defined model: GatedGCN_layer, and finally self.MLP_layer which was also defined before. Next, using these initializations, we simply forward through the model and output y.
French: Dans notre constructeur, nous définissons les enchâssements pour e et h (self.embedding_e et self.embedding_h), self.GatedGCN_layers qui est la liste (de taille L) de notre modèle précédemment défini : GatedGCN_layer, et enfin self.MLP_layer qui a également été défini auparavant. Ensuite, en utilisant ces initialisations, nous faisons simplement avancer le modèle et nous obtenons un y.