lbourdois/en-fr-nyu-dl-course-corpus huggingface dataset:
English: Figure 5 above shows how VAE loss pushed the estimated latent variables as close together as possible without any overlap while keeping the estimated variance of each point around one.
French: La figure 5 ci-dessus montre comment la perte du VAE a poussé les variables latentes estimées aussi près que possible l’une de l’autre sans aucun chevauchement tout en maintenant la variance estimée de chaque point autour de 1.
English: 2. For the last linear layer of encoder, we define the output to be of size 2d, of which the first d values are the means and the remaining d values are the variances. We sample z∈Rd using these means and variances as explained in the reparameterisation trick before.
French: 2. Pour la dernière couche linéaire de l’encodeur, nous définissons la sortie comme étant de taille 2d, dont les premières valeurs d sont les moyennes et les autres valeurs d sont les variances. Nous échantillonnons z∈Rd en utilisant ces moyennes et variances comme expliqué dans l’astuce de reparamétrage précédente.
English: For the reparameterise function, if the model is in training mode, we compute the standard deviation (std) from log variance (logvar). We use log variance instead of variance because we want to make sure the variance is non-negative, and taking the log of it ensures that we have the full range of the variance, which makes the training more stable.
French: Pour la fonction reparameterise, si le modèle est en mode entraînement, nous calculons l’écart-type (std) de la variance logarithmique (logvar). Nous utilisons la variance logarithmique au lieu de la variance parce que nous voulons nous assurer que la variance n’est pas négative, et le fait de prendre le logarithme de celle-ci nous assure d’avoir la gamme complète de la variance, ce qui entraîne une plus grande stabilité de l’apprentissage.
English: During training, the reparameterise function will do the reparameterisation trick so that we can do backpropagation in training. To connect to the concept of a yellow bubble, as explained in the lecture, every time this function is called, we draw a point eps = std.data.new(std.size()).normal_(), so if we do 100 times, we will get 100 points which roughly forms a sphere because it’s normal distribution, and the line eps.mul(std).add_(mu) will make this sphere centred in mu with radius equal to std.
French: Pendant l’entraînement, la fonction reparameterise permet de faire l’astuce permettant la rétropropagation. Pour faire le lien avec le concept de la bulle jaune, chaque fois que cette fonction est appelée, nous dessinons un point eps = std.data.new(std.size()).normal_(). Donc si nous le faisons 100 fois, nous obtenons 100 points qui forment approximativement une sphère parce que c’est une distribution normale et la ligne eps.mul(std).add_(mu) fait que cette sphère est centrée en mu avec un rayon égal à std.
English: For the forward function, we first compute the mu (first half) and logvar (second half) from the encoder, then we compute the z via the reparamterise function. Finally, we return the output of the decoder.
French: Pour la fonction forward, nous calculons d’abord mu (première moitié) et le logvar (seconde moitié) à partir de l’encodeur, puis nous calculons le symbole z via la fonction reparamterise. Enfin, nous renvoyons la sortie du décodeur.
English: After we train our model, we can sample a random z from the normal distribution and feed it to our decoder. We can observe in Figure 6 that some of the results are not good because our decoder has not “covered” the whole latent space. This can be improved if we train the model for more epochs.
French: Après avoir entraîné notre modèle, nous pouvons échantillonner un z aléatoire de la distribution normale et l’envoyer à notre décodeur. Nous pouvons observer sur la figure 6 que certains des résultats ne sont pas bons parce que notre décodeur n’a pas couvert tout l’espace latent. Cela peut être amélioré si nous entraînons le modèle pour d’autres époques.
English: We can look at how one digit morphs into another, which would not have been possible if we used an autoencoder. We can see that when we walk in the latent space, the output of the decoder still looks legit. Figure 7 below shows how we morph the digit 3 to 8.
French: Nous pouvons voir comment un chiffre se transforme en un autre, ce qui n’aurait pas été possible si nous avions utilisé un auto-encodeur. Nous pouvons voir que lorsque nous marchons dans l’espace latent, la sortie du décodeur semble toujours légitime. La figure 7 ci-dessous montre comment nous transformons le chiffre 3 en 8.
English: Finally, let’s take a look at how the latent space changes during/after training. The following charts in Figure 8 are the means from the output of the encoder, projected on 2D space, where each colour represents a digit. We can see that from epoch 0, the classes are spreading everywhere, with only little concentration. As the model is trained, the latent space becomes more well-defined and the classes (digits) starts to form clusters.
French: Enfin, examinons comment l’espace latent change pendant ou après l’entraînement. Les graphiques de la figure 8 sont les moyennes issues de la sortie de l’encodeur, projetées sur l’espace 2D, où chaque couleur représente un chiffre. Nous pouvons voir qu’à partir de l’époque 0, les classes se répandent partout, avec une faible concentration. Au fur et à mesure que le modèle est entraîné, l’espace latent devient plus défini et les classes (chiffres) commencent à former des groupes.
English: We discussed discriminative recurrent sparse auto-encoders and group sparsity. The main idea was how to combine sparse coding with discriminative training. We went through how to structure a network with a recurrent autoencoder similar to LISTA and a decoder. Then we discussed how to use group sparsity to extract invariant features.
French: Nous discutons des auto-encodeurs discriminants récurrents épars et de l’éparsité de groupe. L’idée principale est de savoir comment combiner un codage épars avec un entraînement discriminant. Nous examinons comment structurer un réseau avec un auto-encodeur récurrent similaire à LISTA et un décodeur. Nous discutons ensuite de la manière d’utiliser l’éparsité de groupe pour extraire les caractéristiques invariantes.
English: In this section, we talked about the World Models for autonomous control including the neural network architecture and training schema. Then, we discussed the difference between World Models and Reinforcement Learning (RL). Finally, we studied Generative Adversarial Networks (GANs) in terms of energy-based model with the contrastive method.
French: Dans cette section, nous parlons des modèles du monde (world models) pour le contrôle autonome, y compris l’architecture du réseau neuronal et le schéma d’entraînement. Ensuite, nous discutons de la différence entre les modèles du monde et l’apprentissage par renforcement. Enfin, nous étudions les Generative Adversarial Networks (GANs) à travers les EBMs avec la méthode contrastive.
English: During this week’s practicum, we explored Generative Adversarial Networks (GANs) and how they can produce realistic generative models. We then compared GANs with VAEs from week 8 to highlight key differences between two networks. Next, we discussed several model limitations of GANs. Finally, we looked at the source code for the PyTorch example Deep Convolutional Generative Adversarial Networks (DCGAN).
French: Nous explorons les GANs et la manière dont ils peuvent produire des modèles générateurs réalistes. Nous comparons ensuite les GANs avec les VAEs de la semaine 8 pour mettre en évidence les principales différences entre les deux réseaux. Ensuite, nous discutons de plusieurs limites des GANs. Enfin, nous examinons le code source de l’exemple « PyTorch Deep Convolutional Generative Adversarial Networks (DCGAN) ».
English: The encoder, We​, is similar to the encoder in the LISTA method. The X variable is run through We​, and then through a non-linearity. This result is then multiplied by another learned matrix, S, and added to We​. Then it is sent through another non-linearity. This process can be repeated a number of times, with each repetition as a layer.
French: L’encodeur We​ est similaire à celui de la méthode LISTA. La variable X est passée par We​, puis par une non-linéarité. Ce résultat est ensuite multiplié par une autre matrice apprise, S, et ajouté à We​. Il est ensuite envoyé à travers une autre non-linéarité. Ce processus peut être répété un certain nombre de fois, chaque répétition constituant une couche.
English: 2. Reconstruct X: This is done using a decoding matrix that reproduces the input on the output. This is done by minimizing square error, indicated by Wd​ in Figure 1.
French: 2. Reconstruire X : ceci est fait en utilisant une matrice de décodage qui reproduit l’entrée sur la sortie. Ceci est fait en minimisant l’erreur quadratique, indiquée par Wd​ dans la figure 1.
English: The advantage of this is by forcing the system to find representations that can reconstruct the input, then you’re basically biasing the system towards extracting features that contain as much information about the input as possible. In other words, it enriches the features.
French: L’avantage de cette méthode est de forcer le système à trouver des représentations qui peuvent reconstruire l’entrée, puis nous biaisons le système vers l’extraction de caractéristiques qui contiennent autant d’informations sur l’entrée que possible. En d’autres termes, cela enrichit les caractéristiques.
English: The idea here is to generate sparse features, but not just normal features that are extracted by convolutions, but to basically produce features that are sparse after pooling.
French: L’idée ici est de générer des caractéristiques éparses, c’est-à-dire pas seulement des caractéristiques normales qui sont extraites par des convolutions mais de produire essentiellement des caractéristiques qui sont éparses après le pooling.
English: Figure 2 shows an example of an auto-encoder with group sparsity. Here, instead of the latent variable Z going to an L1​, it goes through basically an L2​ over groups. So you take the L2​ norm for each component in a group of Z, and take the sum of those norms. So now that is what is used as the regulariser, so we can have sparsity on groups of Z. These groups, or pools of features, tend to group together features that are similar to one another.
French: La figure 2 montre un exemple d’auto-encodeur avec éparsité de groupe. Ici, au lieu de la variable latente Z passant par une L1​, elle passe par une L2​ sur les groupes. Nous prenons donc la norme L2​ pour chaque composant dans un groupe de Z et effectuons la somme de ces normes. C’est donc ce qui est utilisé comme régulariseur afin que nous puissions avoir une certaine éparsité dans les groupes de Z. Ces groupes de caractéristiques ont tendance à regrouper des caractéristiques qui sont similaires les unes aux autres.
English: The answer about whether it helps is not clear. People interested in this are either interested in image restoration or some kind of self-supervised learning. This would work well when dataset was very small. When you have an encoder and decoder that is convolutional and you train with group sparsity on complex cells, after you are done pre-training, the system you get rid of the decoder and only use the encoder as a feature extractor, say the first layer of the convolutional net and you stick a second layer on top of it.
French: La réponse à la question de savoir si cela aide n’est pas claire. Les personnes travaillant sur le sujet s’intéressent soit à la restauration d’images, soit à une sorte d’apprentissage autosupervisé. Cela fonctionnerait plutôt bien lorsque le jeu de données est très réduit. Lorsque nous avons un encodeur et un décodeur convolutifs et entraînons avec l’éparsité de groupe sur des cellules complexes, après avoir terminé l’entraînement, le système nous débarrasse du décodeur et n’utilise l’encodeur que comme un extracteur de caractéristiques. Nous pouvons alors coller une deuxième couche par-dessus.
English: As can be seen above, you are start with an image, you have an encoder which is basically Convolution RELU and some kind of scaling layer after this. You train with group sparsity. You have a linear decoder and a criterion which is group by 1. You take the group sparsity as a regulariser. This is like L2 pooling with an architecture similar to group sparsity.
French: Comme on peut le voir ci-dessus, nous commençons avec une image, nous avons un encodeur qui est en fait une convolution puis une ReLU et une sorte de couche de mise à l’échelle. Nous entrainons avec une éparsité de groupe. Nous avons un décodeur linéaire et un critère qui est le groupe par 1. Nous prenons l’éparsité de groupe comme régularisation. C’est comme le pooling L2 avec une architecture similaire à l’éparsité de groupe.
English: You can also train another instance of this network. This time, you can add more layers and have a decoder with the L2 pooling and sparsity criterion, train it to reconstruct its input with pooling on top. This will create a pretrained 2-layer convolutional net. This procedure is also called Stacked Autoencoder. The main characteristic here is that it is trained to produce invariant features with group sparsity.
French: Nous pouvons aussi entraîner une autre instance de ce réseau. Cette fois, en ajoutant d’autres couches et en ayant un décodeur avec le polling L2 et le critère d’éparsité. On entraîne alors à reconstruire l’entrée avec le pooling au-dessus. Cela crée un ConvNet à deux couches pré-entraîné. Cette procédure est également appelée stacked autoencoder. La principale caractéristique de cette procédure est qu’elle est entraînée à produire des caractéristiques invariantes avec une éparsité de groupe.
English: These are called pin-wheel patterns. This is a kind of organisation of the features. The orientation varies continuously as you go around those red dots. If we take one of those red dots and if do a little circle around the red dots, you notice that the orientation of the extractor kind of varies continuously as you move around. Similar trends are observed in the brain.
French: C’est ce qu’on appelle les pinwheel patterns (motifs en forme de pales de turbines). C’est une sorte d’organisation des caractéristiques. L’orientation varie continuellement lorsque vous contournez ces points rouges. Si nous prenons un de ces points rouges et si nous faisons un petit cercle autour des points rouges, nous remarquons que l’orientation de l’extracteur varie en quelque sorte continuellement lorsque nous nous déplaçons. Des tendances similaires sont observées dans le cerveau.
English: It is a regulariser. The term itself is not trained, it’s fixed. It’s just the L2 norm of the groups and the groups are predetermined. But, because it is a criterion, it determines what the encoder and decoder will do and what sort of features will be extracted.
French: Il s’agit d’un régulariseur. Le terme lui-même n’est pas entraîné, il est fixe. C’est juste la norme L2 des groupes et les groupes sont prédéterminés. Mais, comme c’est un critère, il détermine ce que l’encodeur et le décodeur vont faire et quel type de caractéristiques seront extraites.
English: Here, there is a linear decoder with square reconstruction error. There is a criterion in the energy. The matrix S is either determined by hand or learned so as to maximise this term. If the terms in S are positive and large, it implies that the system does not want zi and zj to be on at the same time. Thus, it is sort of a mutual inhibition (called natural inhibition in neuroscience). Thus, you try to find a value for S that is as large as possible.
French: Ici, il y a un décodeur linéaire avec une erreur de reconstruction quadratique. Il y a un critère dans l’énergie. La matrice S est soit déterminée à la main, soit apprise de façon à maximiser ce terme. Si les termes dans S sont positifs et grands, cela implique que le système ne veut pas que zi​ et zj​ soient allumés en même temps. Il s’agit donc d’une sorte d’inhibition mutuelle (appelée inhibition naturelle en neurosciences). Nous essayons donc de trouver une valeur pour S qui soit la plus grande possible.
English: If you organise S in terms of a tree, the lines represent the zero terms in the S matrix. Whenever you don’t have a line, there is a non-zero term. So, every feature inhibits all other features except those which are up the tree or down the tree from it. This is something like the converse of group sparsity.
French: En organisant S en termes d’arbre, les lignes représentent les termes nuls dans la matrice S. Chaque fois qu’il n’y a pas de ligne, il y a un terme non nul. Ainsi, chaque caractéristique inhibe toutes les autres caractéristiques, sauf celles qui sont en haut de l’arbre ou en bas de l’arbre. C’est un peu l’inverse de l’éparsité de groupe.
English: You see again that systems are organising features in more or less a continuous fashion. Features along the branch of a tree represent the same feature with different levels of selectivity. Features along the periphery vary more or less continuously because there is no inhibition.
French: Nous voyons encore une fois que les systèmes organisent les caractéristiques de manière plus ou moins continue. Les caractéristiques le long de la branche d’un arbre représentent la même caractéristique avec différents niveaux de sélectivité. Les caractéristiques en périphérie varient plus ou moins.
English: To train this system, at each iteration, you give an x and find the z which minimizes this energy function.Then do one step of gradient descent to update W. You can also do one step of gradient ascent to make the terms in S larger.
French: Pour entraîner ce système, à chaque itération, nous donnons un x et trouvons z qui minimise cette fonction énergétique. Ensuite, nous faisons une étape de descente de gradient pour mettre à jour le W. Nous pouvons également faire une étape de montée de gradient pour augmenter les termes en S.
English: One of the most important uses of self-supervised learning is to learn world models for control. When humans perform a task, we have an internal model for how the world works. For example, we gain an intuition for physics when we’re about 9 months old, mostly through observation. In some sense, this is similar to self-supervised learning; in learning to predict what will happen, we learn abstract principles, just like self-supervised models learn latent features. But taking this one step further, the internal models let us act on the world. For example, we can use our learned physics intuition and our learned understanding of how our muscles work to predict — and execute — how to catch a falling pen.
French: L’une des utilisations les plus importantes de l’apprentissage autosupervisé est l’apprentissage de modèles du monde pour le contrôle. Lorsque les humains effectuent une tâche, ils disposent d’un modèle interne pour le fonctionnement du monde. Par exemple, nous acquérons une intuition pour la physique à l’âge de 9 mois environ, principalement par l’observation. Dans un certain sens, cela ressemble à l’apprentissage autosupervisé. En apprenant à prédire ce qui va se passer, nous apprenons des principes abstraits, tout comme les modèles autosupervisés apprennent des caractéristiques latentes. Mais en allant plus loin, les modèles internes nous permettent d’agir sur le monde. Par exemple, nous pouvons utiliser notre intuition en physique et notre compréhension du fonctionnement de nos muscles pour prédire (et exécuter) comment attraper un stylo qui tombe.
English: An autonomous intelligence system comprises four major modules (Figure 1.). First, the perception module observes the world and computes a representation of the state of the world. This representation is incomplete because 1) the agent doesn’t observe the whole universe, and 2) the accuracy of the observations is limited. It is also worth noting that in the feed-forward model, the perception module is only present for the initial time step. Second, the actor module (also called a policy module) imagines taking some action based on the (represented) state of the world. Third, the model module predicts the outcome of the action given the (represented) state of the world, and also possibly given some latent features. This prediction gets passed forward to the next time step as the guess for the next state of the world, taking on the role of the perception module from the initial time step. Fig 2 gives an in-detail demonstration of this feed-forward process. Finally, the critic module turns that same prediction into a cost of performing the proposed action, e.g. given the speed with which I believe the pen is falling, if I move muscles in this particular way, how badly will I miss the catch?
French: Un système intelligent autonome comprend quatre grands modules (figure 1). Tout d’abord, le module de perception observe le monde et calcule une représentation de l’état du monde. Cette représentation est incomplète parce que : 1) l’agent n’observe pas l’univers en entier 2) la précision des observations est limitée. Il est également intéressant de noter que dans le modèle feed-forward, le module de perception n’est présent que pour le pas de temps initial. Deuxièmement, le module acteur (également appelé module politique) imagine une action basée sur l’état (représenté) du monde. Troisièmement, le module modèle prédit le résultat de l’action en fonction de l’état (représenté) du monde, et peut-être aussi en fonction de certaines caractéristiques latentes. Cette prédiction est transmise au pas de temps suivant en tant que supposition de l’état suivant du monde, en prenant le rôle du module de perception à partir du pas de temps initial. La figure 2 présente une démonstration détaillée de ce processus d’anticipation. Enfin, le module critique transforme cette même prédiction en un coût de réalisation de l’action proposée. Par exemple étant donné la vitesse à laquelle je crois que le stylo tombe, si je bouge les muscles de cette manière particulière, à quel point vais-je rater la prise ?
English: In classical optimal control, there is no actor/policy module, but rather just an action variable. This formulation is optimized by a classical method called Model Predictive Control, which was used by NASA in the 1960s to compute rocket trajectories when they switched from human computers (mostly Black women mathematicians) to electronic computers. We can think of this system as an unrolled RNN, and the actions as latent variables, and use backpropagation and gradient methods (or possibly other methods, such as dynamic programming for a discrete action set) to infer the sequence of actions that minimizes the sum of the time step costs.
French: Dans le cadre classique du contrôle, il n’y a pas de module acteur/politique, mais plutôt une variable d’action. Cette formulation est optimisée par une méthode classique appelée « Model Predictive Control » qui a été utilisée par la NASA dans les années 1960 pour calculer les trajectoires des fusées lorsqu’elles sont passées des ordinateurs humains (principalement des mathématiciennes noires) aux ordinateurs électroniques. Nous pouvons considérer ce système comme un RNN déroulé et les actions comme des variables latentes. On peut utiliser des méthodes de rétropropagation et de gradient (ou éventuellement d’autres méthodes, comme la programmation dynamique pour un ensemble d’actions discrètes) pour inférer la séquence d’actions qui minimise la somme des coûts des pas de temps.
English: Aside: We use the word “inference” for latent variables, and “learning” for parameters, though the process of optimizing them is generally similar. One important difference is that a latent variable takes a specific value for each sample, whereas, parameters are shared between samples.
French: Note : nous utilisons le mot « inférence » pour les variables latentes et « apprentissage » pour les paramètres, bien que le processus d’optimisation de ceux-ci soit généralement similaire. Une différence importante est qu’une variable latente prend une valeur spécifique pour chaque échantillon, alors que les paramètres sont partagés entre les échantillons.