Skip to content

Conversation

@lepagejeremi
Copy link
Contributor

@lepagejeremi lepagejeremi commented Nov 18, 2025

@tdhock
Copy link
Contributor

tdhock commented Nov 18, 2025

Preview

- Nous commençons par simuler et visualiser quelques données 2d pour une classification binaire.
<!-- comment -->
- We then show how a classification function in 2d can be visualized by computing predictions on a grid, and then using `geom_tile()` or `geom_path()` with contour lines.
- Nous montrons ensuite comment une fonction de classification en 2d peut être visualisée en calculant les prédictions sur une grille, puis en utilisant la fonction de classification en 2d. `geom_tile()` ou `geom_path()` avec des lignes de contour.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Nous montrons ensuite comment une fonction de classification en 2d peut être visualisée en calculant les prédictions sur une grille, puis en utilisant la fonction de classification en 2d. `geom_tile()` ou `geom_path()` avec des lignes de contour.
- Nous montrons ensuite comment une fonction de classification en 2d peut être visualisée en calculant les prédictions sur une grille, puis en utilisant `geom_tile()` ou `geom_path()` avec des lignes de contour.

<!-- paragraph -->

In the simulation, the data table above has the "hidden" features which are used to create the labels, but are not available for learning.
Dans la simulation, le tableau de données ci-dessus comporte les caractéristiques "cachées" qui sont utilisées pour créer les étiquettes, mais ne sont pas disponibles pour l'apprentissage.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Dans la simulation, le tableau de données ci-dessus comporte les caractéristiques "cachées" qui sont utilisées pour créer les étiquettes, mais ne sont pas disponibles pour l'apprentissage.
Dans la simulation, le tableau de données ci-dessus comporte les caractéristiques "hidden" (cachées) qui sont utilisées pour créer les étiquettes, mais ne sont pas disponibles pour l'apprentissage.

<!-- paragraph -->

The best classifier is visualized below in the feature space,
Le meilleur classificateur est visualisé ci-dessous dans l'espace des caractéristiques,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Le meilleur classificateur est visualisé ci-dessous dans l'espace des caractéristiques,
Le meilleur ("best") classificateur est visualisé ci-dessous dans l'espace des caractéristiques,

<!-- paragraph -->

To implement the gradient descent algorithm for learning neural network model parameters, we will use a simple auto-grad system.
Pour implémenter l'algorithme de descente de gradient pour l'apprentissage des paramètres du modèle de réseau de neurones, nous utiliserons un système simple d'auto-gradation.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Pour implémenter l'algorithme de descente de gradient pour l'apprentissage des paramètres du modèle de réseau de neurones, nous utiliserons un système simple d'auto-gradation.
Pour implémenter l'algorithme de descente de gradient pour l'apprentissage des paramètres du modèle de réseau de neurones, nous utiliserons un système simple d'auto-grad.

L'idée de l'auto-grad est que la structure du modèle de réseau neuronal doit être définie une seule fois et que cette structure doit être utilisée pour dériver les calculs de propagation vers l'avant (prédiction) et vers l'arrière (gradient).
<!-- comment -->
Below we use a simple auto-grad system where each node in the computation graph is represented by an R environment (a mutable data structure, necessary so that the gradients are back-propagated to all the model parameters).
Nous utilisons ci-dessous un système auto-grad simple où chaque nœud du graphe de calcul est représenté par un environnement R (une structure de données mutable, nécessaire pour que les gradients soient rétropropagés à tous les paramètres du modèle).
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Nous utilisons ci-dessous un système auto-grad simple où chaque nœud du graphe de calcul est représenté par un environnement R (une structure de données mutable, nécessaire pour que les gradients soient rétropropagés à tous les paramètres du modèle).
Nous utilisons ci-dessous un système auto-grad simple où chaque nœud du graphique de calcul est représenté par un environnement R (une structure de données mutable, nécessaire pour que les gradients soient rétropropagés à tous les paramètres du modèle).

Nous utilisons ci-dessous un système auto-grad simple où chaque nœud du graphe de calcul est représenté par un environnement R (une structure de données mutable, nécessaire pour que les gradients soient rétropropagés à tous les paramètres du modèle).
<!-- comment -->
The function below is a constructor for the most basic building block of the auto-grad system, a node in the computation graph:
La fonction ci-dessous est un constructeur pour l'élément le plus élémentaire du système auto-grad, un nœud dans le graphe de calcul :
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
La fonction ci-dessous est un constructeur pour l'élément le plus élémentaire du système auto-grad, un nœud dans le graphe de calcul :
La fonction ci-dessous est un constructeur pour l'élément le plus élémentaire du système auto-grad, un nœud dans le graphique de calcul :

<!-- paragraph -->

- `value` is a matrix computed by forward propagation at this node in the computation graph.
- `value` est une matrice calculée par propagation vers l'avant à ce nœud du graphe de calcul.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- `value` est une matrice calculée par propagation vers l'avant à ce nœud du graphe de calcul.
- `value` est une matrice calculée par propagation vers l'avant à ce nœud du graphique de calcul.

- `parent.list` est une liste de nœuds parents, chacun d'entre eux étant utilisé pour calculer `value`.
<!-- comment -->
- `backward` is a function which should be called by the user on the final/loss node in the computation graph.
- `backward` est une fonction qui doit être appelée par l'utilisateur sur le nœud final/de perte dans le graphe de calcul.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- `backward` est une fonction qui doit être appelée par l'utilisateur sur le nœud final/de perte dans le graphe de calcul.
- `backward` est une fonction qui doit être appelée par l'utilisateur sur le nœud final/de perte dans le graphique de calcul.

- `backward` est une fonction qui doit être appelée par l'utilisateur sur le nœud final/de perte dans le graphe de calcul.
<!-- comment -->
It calls `gradient`, which should compute the gradient of the loss with respect to the parent nodes, which are stored in the `grad` attribute in each corresponding parent node, before recursively calling `backward` on each parent node.
Elle appelle `gradient` qui doit calculer le gradient de la perte par rapport aux nœuds parents, qui sont stockés dans le fichier `grad` dans chaque nœud parent correspondant, avant d'appeler récursivement `backward` sur chaque nœud parent.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Elle appelle `gradient` qui doit calculer le gradient de la perte par rapport aux nœuds parents, qui sont stockés dans le fichier `grad` dans chaque nœud parent correspondant, avant d'appeler récursivement `backward` sur chaque nœud parent.
Elle appelle `gradient` qui doit calculer le gradient de la perte par rapport aux nœuds parents, qui sont stockés dans l'attribut `grad` dans chaque nœud parent correspondant, avant d'appeler récursivement `backward` sur chaque nœud parent.

<!-- paragraph -->

The code above says that an initial node simply stores the input matrix `mat` as the value, and has a `gradient` method that does nothing (because initial nodes in the computation graph have no parents for which gradients could be computed).
Le code ci-dessus indique qu'un nœud initial stocke simplement la matrice d'entrée `mat` comme valeur, et a une valeur `gradient` qui ne fait rien (parce que les nœuds initiaux dans le graphe de calcul n'ont pas de parents pour lesquels des gradients pourraient être calculés).
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Le code ci-dessus indique qu'un nœud initial stocke simplement la matrice d'entrée `mat` comme valeur, et a une valeur `gradient` qui ne fait rien (parce que les nœuds initiaux dans le graphe de calcul n'ont pas de parents pour lesquels des gradients pourraient être calculés).
Le code ci-dessus indique qu'un nœud initial stocke simplement la matrice d'entrée `mat` comme valeur, et a une méthode `gradient` qui ne fait rien (parce que les nœuds initiaux dans le graphique de calcul n'ont pas de parents pour lesquels des gradients pourraient être calculés).

Le code ci-dessus indique qu'un nœud initial stocke simplement la matrice d'entrée `mat` comme valeur, et a une valeur `gradient` qui ne fait rien (parce que les nœuds initiaux dans le graphe de calcul n'ont pas de parents pour lesquels des gradients pourraient être calculés).
<!-- comment -->
The code below defines `mm`, a node in the computation graph which represents a matrix multiplication,
Le code ci-dessous définit `mm` un noeud dans le graphe de calcul qui représente une multiplication de matrice,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Le code ci-dessous définit `mm` un noeud dans le graphe de calcul qui représente une multiplication de matrice,
Le code ci-dessous définit `mm`, un noeud dans le graphique de calcul qui représente une multiplication de matrice,

<!-- paragraph -->

The `mm` definition above assumes that there is a weight node with the same number of rows as the number of columns (plus one for intercept) in the feature node.
Le `mm` ci-dessus suppose qu'il existe un nœud de pondération ayant le même nombre de lignes que le nombre de colonnes (plus une pour l'interception) dans le nœud de caractéristique.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Le `mm` ci-dessus suppose qu'il existe un nœud de pondération ayant le même nombre de lignes que le nombre de colonnes (plus une pour l'interception) dans le nœud de caractéristique.
La définition de `mm` ci-dessus suppose qu'il existe un nœud de pondération ayant le même nombre de lignes que le nombre de colonnes (plus une pour l'ordonnée à l'origine) dans le nœud de caractéristiques.

Les calculs d'avance/valeur et de gradient utilisent la multiplication matricielle.
<!-- comment -->
For instance, we can use`mm` as follows to define a simple linear model,
Par exemple, nous pouvons utiliser`mm` pour définir un modèle linéaire simple,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Par exemple, nous pouvons utiliser`mm` pour définir un modèle linéaire simple,
Par exemple, nous pouvons utiliser `mm` de la manière suivante pour définir un modèle linéaire simple,

<!-- paragraph -->

It can be seen in the code above that the `mm` function returns a node representing predicted values, one for each row in the feature matrix.
On peut voir dans le code ci-dessus que l'élément `mm` renvoie un nœud représentant les valeurs prédites, un pour chaque ligne de la matrice des fonctions).
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
On peut voir dans le code ci-dessus que l'élément `mm` renvoie un nœud représentant les valeurs prédites, un pour chaque ligne de la matrice des fonctions).
On peut voir dans le code ci-dessus que la fonction `mm` renvoie un nœud représentant les valeurs prédites, un pour chaque ligne de la matrice des caractéristiques).

Maintenant que nous avons calculé la perte, nous pouvons calculer le gradient de la perte par rapport aux pondérations, qui est utilisé pour effectuer les mises à jour pendant l'apprentissage.
<!-- comment -->
Remember that we should now call`backward` (on the subtrain loss), which should eventually store the gradient as `weight.node$grad`.
Rappelez-vous que nous devons maintenant appeler`backward` (sur la perte de soustraction), qui devrait finalement stocker le gradient en tant que `weight.node$grad`.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Rappelez-vous que nous devons maintenant appeler`backward` (sur la perte de soustraction), qui devrait finalement stocker le gradient en tant que `weight.node$grad`.
Rappelez-vous que nous devons maintenant appeler `backward` (sur la perte de sous-entrainement), qui devrait finalement stocker le gradient en tant que `weight.node$grad`.

<!-- paragraph -->

Note that since `loss.node` contains recursive back-references to its parent nodes (including predictions and weights), the `backward` call above is able to conveniently compute and store `weight.node$grad`, the gradient of the loss with respect to the weight parameters.
Notez que, puisque `loss.node` contient des références récursives à ses nœuds parents (y compris les prédictions et les pondérations), l'élément `backward` ci-dessus est capable de calculer et de stocker de manière pratique les données de l'appel `weight.node$grad` le gradient de la perte par rapport aux paramètres de pondération.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Notez que, puisque `loss.node` contient des références récursives à ses nœuds parents (y compris les prédictions et les pondérations), l'élément `backward` ci-dessus est capable de calculer et de stocker de manière pratique les données de l'appel `weight.node$grad` le gradient de la perte par rapport aux paramètres de pondération.
Notez que, puisque `loss.node` contient des références récursives à ses nœuds parents (y compris les prédictions et les pondérations), l'appel `backward` ci-dessus est capable de calculer et de stocker de manière pratique `weight.node$grad`, le gradient de la perte par rapport aux paramètres de pondération.

<!-- comment -->
For example, a common and efficient non-linear activation function is the ReLU (Rectified Linear Units), which is implemented below,
Afin d'apprendre une fonction de prédiction qui est une fonction non linéaire des caractéristiques, chaque couche, à l'exception de la dernière, doit avoir une fonction d'activation non linéaire, appliquée élément par élément aux unités après la multiplication de la matrice.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change

For example, a common and efficient non-linear activation function is the ReLU (Rectified Linear Units), which is implemented below,
Afin d'apprendre une fonction de prédiction qui est une fonction non linéaire des caractéristiques, chaque couche, à l'exception de la dernière, doit avoir une fonction d'activation non linéaire, appliquée élément par élément aux unités après la multiplication de la matrice.

<!-- -- commentaire -->
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
<!-- -- commentaire -->
<!-- comment -->

<!-- paragraph -->

Finally, the last node that we need to implement our neural network is a node for predictions, computed via the for loop over weight nodes in the function below,
Enfin, le dernier nœud dont nous avons besoin pour implémenter notre réseau neuronal est un nœud pour les prédictions, calculé via la boucle for sur les nœuds de pondération dans la fonction ci-dessous,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Enfin, le dernier nœud dont nous avons besoin pour implémenter notre réseau neuronal est un nœud pour les prédictions, calculé via la boucle for sur les nœuds de pondération dans la fonction ci-dessous,
Enfin, le dernier nœud dont nous avons besoin pour implémenter notre réseau neuronal est un nœud pour les prédictions, calculé avec la boucle `for` sur les nœuds de pondération dans la fonction ci-dessous,

<!-- paragraph -->

The `pred_node` function is also useful for computing predictions on the grid of features, which will be useful later for visualizing the learned function,
Le `pred_node` est également utile pour calculer les prédictions sur la grille de caractéristiques, ce qui sera utile plus tard pour visualiser la fonction apprise,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Le `pred_node` est également utile pour calculer les prédictions sur la grille de caractéristiques, ce qui sera utile plus tard pour visualiser la fonction apprise,
La fonction `pred_node` est également utile pour calculer les prédictions sur la grille de caractéristiques, ce qui sera utile plus tard pour visualiser la fonction apprise,

<!-- paragraph -->

- Add animation over the number of iterations.
- Ajouter l'animation sur le nombre d'itérations.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Ajouter l'animation sur le nombre d'itérations.
- Ajoutez l'animation sur le nombre d'itérations.

- Ajouter l'animation sur le nombre d'itérations.
<!-- comment -->
- Add smooth transitions when changing the selected number of iterations.
- Ajouter des transitions graduelles lors du changement du nombre d'itérations sélectionné.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Ajouter des transitions graduelles lors du changement du nombre d'itérations sélectionné.
- Ajoutez des transitions graduelles lors du changement du nombre d'itérations sélectionné.

- Ajouter des transitions graduelles lors du changement du nombre d'itérations sélectionné.
<!-- comment -->
- Add a for loop over random seeds (or cross-validation folds) in the data splitting step, and create a visualization that shows how that affects the results.
- Ajoutez une boucle for sur des graines aléatoires (ou des plis de validation croisée) dans l'étape de division des données, et créez une visualisation qui montre comment cela affecte les résultats.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Ajoutez une boucle for sur des graines aléatoires (ou des plis de validation croisée) dans l'étape de division des données, et créez une visualisation qui montre comment cela affecte les résultats.
- Ajoutez une boucle `for` sur des graines aléatoires (ou des plis de validation croisée) dans l'étape de division des données, et créez une visualisation qui montre comment cela affecte les résultats.

- Ajoutez une boucle for sur des graines aléatoires (ou des plis de validation croisée) dans l'étape de division des données, et créez une visualisation qui montre comment cela affecte les résultats.
<!-- comment -->
- Add a for loop over random seeds at the weight matrix initialization step, and create a visualization that shows how that affects the results.
- Ajoutez une boucle for sur des graines aléatoires à l'étape d'initialisation de la matrice de pondération, et créez une visualisation qui montre comment cela affecte les résultats.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Ajoutez une boucle for sur des graines aléatoires à l'étape d'initialisation de la matrice de pondération, et créez une visualisation qui montre comment cela affecte les résultats.
- Ajoutez une boucle `for` sur des graines aléatoires à l'étape d'initialisation de la matrice de pondération, et créez une visualisation qui montre comment cela affecte les résultats.

- Ajoutez une boucle for sur des graines aléatoires à l'étape d'initialisation de la matrice de pondération, et créez une visualisation qui montre comment cela affecte les résultats.
<!-- comment -->
- Compute results for another neural network architecture (and/or linear model, by adding a for loop over different values of `units.per.layer`).
- Calculez les résultats pour une autre architecture de réseau neuronal (et/ou un modèle linéaire, en ajoutant une boucle for sur différentes valeurs de `units.per.layer`).
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Calculez les résultats pour une autre architecture de réseau neuronal (et/ou un modèle linéaire, en ajoutant une boucle for sur différentes valeurs de `units.per.layer`).
- Calculez les résultats pour une autre architecture de réseau neuronal (et/ou un modèle linéaire, en ajoutant une boucle `for` sur différentes valeurs de `units.per.layer`).

- Calculez les résultats pour une autre architecture de réseau neuronal (et/ou un modèle linéaire, en ajoutant une boucle for sur différentes valeurs de `units.per.layer`).
<!-- comment -->
Add another plot or facet which allows selecting the neural network architecture, and allows easy comparison of the min validation loss between models (for example, add facet columns to loss plot, and add horizontal lines to emphasize min loss).
Ajouter un autre graphique ou une facette permettant de sélectionner l'architecture du réseau neuronal et de comparer facilement la perte de validation minimale entre les modèles (par exemple, ajouter des colonnes de facettes au graphique de perte et ajouter des lignes horizontales pour mettre en évidence la perte minimale).
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Ajouter un autre graphique ou une facette permettant de sélectionner l'architecture du réseau neuronal et de comparer facilement la perte de validation minimale entre les modèles (par exemple, ajouter des colonnes de facettes au graphique de perte et ajouter des lignes horizontales pour mettre en évidence la perte minimale).
Ajoutez un autre graphique ou une facette permettant de sélectionner l'architecture du réseau neuronal et de comparer facilement la perte de validation minimale entre les modèles (par exemple, ajoutez des colonnes de facettes au graphique de perte et ajoutez des lignes horizontales pour mettre en évidence la perte minimale).

<!-- paragraph -->

Next, [Chapter 19](/ch19) explains how to visualize P-values, including how to work around overplotting, using a heat map linked to a zoomed scatter plot.
Suivant, [Chapitre 19](/ch19) explique comment visualiser les valeurs de P, y compris comment contourner le surdimensionnement, à l'aide d'une carte thermique liée à un graphique de dispersion zoomé.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Suivant, [Chapitre 19](/ch19) explique comment visualiser les valeurs de P, y compris comment contourner le surdimensionnement, à l'aide d'une carte thermique liée à un graphique de dispersion zoomé.
Ensuite, dans le [chapitre 19](/ch19), nous vous expliquerons comment visualiser les valeurs-P ("P-values"), notamment comment contourner le sur-représentement (overplotting), en utilisant une carte thermique reliée à un nuage de points agrandi.

@lepagejeremi
Copy link
Contributor Author

J'ai terminé @annartiges

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants