Dans les exercices interactifs ci-dessous, vous explorerez plus en détail le fonctionnement interne des réseaux de neurones. Vous verrez d'abord comment les modifications des paramètres et des hyperparamètres affectent les prédictions du réseau. Ensuite, vous utiliserez vos connaissances pour entraîner un réseau de neurones à modéliser des données non linéaires.
Exercice 1
Le widget suivant configure un réseau neuronal avec la configuration suivante :
- Couche d'entrée avec 3 neurones contenant les valeurs
0.00 , 0.00 et 0.00 - Couche cachée avec 4 neurones
- Couche de sortie avec 1 neurone
- La fonction d'activation ReLU est appliquée à tous les nœuds de la couche cachée et au nœud de sortie.
Vérifiez la configuration initiale du réseau (remarque : ne cliquez pas encore sur les boutons ▶️ ou >| ), puis effectuez les tâches sous le widget.
Tâche 1
Les valeurs des trois variables d'entrée du modèle de réseau neuronal sont toutes égales 0.00 . Cliquez sur chaque nœud du réseau pour afficher toutes les valeurs initialisées. Avant de cliquer sur le bouton « Lecture » ( ▶️ ), répondez à la question suivante :
Quel type de valeur de sortie pensez-vous qui sera produite : positive, négative ou nulle ?
valeur de sortie positive
Vous avez choisi une valeur de sortie positive . Suivez les instructions ci-dessous pour effectuer une inférence sur les données d'entrée et vérifier votre hypothèse.
Valeur de sortie négative
Vous avez choisi une valeur de sortie négative . Suivez les instructions ci-dessous pour effectuer une inférence sur les données d'entrée et vérifier si votre hypothèse est correcte.
Valeur de sortie de 0
Vous avez choisi la valeur de sortie 0. Suivez les instructions ci-dessous pour effectuer une inférence sur les données d'entrée et vérifier si votre réponse est correcte.
Cliquez maintenant sur le bouton Lecture (▶️) situé au-dessus du réseau et observez l'affichage des valeurs des nœuds cachés et de sortie. Votre réponse ci-dessus était-elle correcte ?
Cliquez ici pour une explication
La valeur de sortie exacte obtenue dépendra de l'initialisation aléatoire des paramètres de poids et de biais. Cependant, comme chaque neurone de la couche d'entrée a une valeur de 0, les poids utilisés pour calculer les valeurs des nœuds de la couche cachée seront tous mis à zéro. Par exemple, le calcul du premier nœud de la couche cachée sera :
y = ReLU(w 11 * 0,00 + w 21 * 0,00 + w 31 * 0,00 + b)
y = ReLU(b)
Ainsi, la valeur de chaque nœud de la couche cachée sera égale à la valeur ReLU du biais (b), qui sera 0 si b est négatif et b lui-même si b est 0 ou positif.
La valeur du nœud de sortie sera alors calculée comme suit :
y = ReLU(w 11 * x 11 + w 21 * x 21 + w 31 * x 31 + w 41 * x 41 + b)
Tâche 2
Avant de modifier le réseau neuronal, répondez à la question suivante :
Si vous ajoutez une autre couche cachée au réseau neuronal après la première couche cachée, et que vous attribuez à cette nouvelle couche 3 nœuds, en conservant tous les paramètres d'entrée et de poids/biais identiques, quels autres calculs de nœuds seront affectés ?
Tous les nœuds du réseau, à l'exception des nœuds d'entrée
Vous avez sélectionné tous les nœuds du réseau, à l'exception des nœuds d'entrée . Suivez les instructions ci-dessous pour mettre à jour le réseau neuronal et vérifier votre sélection.
Uniquement les nœuds de la première couche cachée
Vous avez sélectionné uniquement les nœuds de la première couche cachée . Suivez les instructions ci-dessous pour mettre à jour le réseau neuronal et vérifier votre sélection.
Uniquement le nœud de sortie
Vous avez sélectionné uniquement le nœud de sortie . Suivez les instructions ci-dessous pour mettre à jour le réseau neuronal et vérifier votre choix.
Modifiez maintenant le réseau neuronal pour ajouter une nouvelle couche cachée avec 3 nœuds comme suit :
- Cliquez sur le bouton + à gauche du texte « 1 calque caché » pour ajouter un nouveau calque caché avant le calque de sortie.
- Cliquez deux fois sur le bouton + situé au-dessus du nouveau calque caché pour ajouter 2 nœuds supplémentaires au calque.
Votre réponse ci-dessus était-elle correcte ?
Cliquez ici pour une explication
Seul le nœud de sortie est modifié. Comme l'inférence de ce réseau neuronal est de type « à propagation directe » (les calculs s'effectuent du début à la fin), l'ajout d'une nouvelle couche n'affectera que les nœuds situés après cette nouvelle couche, et non ceux qui la précèdent.
Tâche 3
Cliquez sur le deuxième nœud (en partant du haut) de la première couche cachée du graphe du réseau. Avant de modifier la configuration du réseau, répondez à la question suivante :
Si vous modifiez la valeur du poids w 12 (affiché sous le premier nœud d'entrée, x 1 ), quels autres calculs de nœuds pourraient être affectés pour certaines valeurs d'entrée ?
Aucun
Vous n'avez sélectionné aucune option . Suivez les instructions ci-dessous pour mettre à jour le réseau neuronal et vérifier si votre choix est correct.
Le deuxième nœud de la première couche cachée, tous les nœuds de la deuxième couche cachée et le nœud de sortie.
Vous avez sélectionné le deuxième nœud de la première couche cachée, tous les nœuds de la deuxième couche cachée et le nœud de sortie . Suivez les instructions ci-dessous pour mettre à jour le réseau de neurones et vérifier votre sélection.
Tous les nœuds de la première couche cachée, de la deuxième couche cachée et de la couche de sortie.
Vous avez sélectionné tous les nœuds de la première couche cachée, de la deuxième couche cachée et de la couche de sortie . Suivez les instructions ci-dessous pour mettre à jour le réseau de neurones et vérifier votre sélection.
Cliquez maintenant dans le champ de texte du poids w 12 (affiché sous le premier nœud d'entrée, x 1 ), modifiez sa valeur à 5.00 et appuyez sur Entrée. Observez les mises à jour du graphique.
Votre réponse était-elle correcte ? Soyez prudent lors de la vérification de votre réponse : si la valeur d'un nœud ne change pas, cela signifie-t-il que le calcul sous-jacent n'a pas changé ?
Cliquez ici pour une explication
Dans la première couche cachée, seul le deuxième nœud (celui sur lequel vous avez cliqué) est affecté. Les calculs des autres nœuds de cette couche ne prennent pas en compte le paramètre w12 ; ils ne sont donc pas concernés. En revanche, tous les nœuds de la deuxième couche cachée sont affectés, car leurs calculs dépendent de la valeur du deuxième nœud de la première couche cachée. De même, la valeur du nœud de sortie est affectée, car ses calculs dépendent des valeurs des nœuds de la deuxième couche cachée.
Avez-vous pensé que la réponse était « aucune » parce qu'aucune valeur de nœud du réseau n'a changé lorsque vous avez modifié la valeur du poids ? Sachez qu'un calcul sous-jacent à un nœud peut être modifié sans que sa valeur ne le soit (par exemple, ReLU(0) et ReLU(–5) produisent toutes deux une sortie de 0). Ne tirez pas de conclusions sur l'impact sur le réseau en vous basant uniquement sur les valeurs des nœuds ; assurez-vous également d'examiner les calculs.
Exercice 2
Dans les exercices de croisement de caractéristiques du module Données catégorielles , vous avez construit manuellement des croisements de caractéristiques pour ajuster des données non linéaires. Vous allez maintenant tenter de construire un réseau de neurones capable d'apprendre automatiquement à ajuster des données non linéaires pendant l'entraînement.
Votre tâche : configurer un réseau neuronal capable de séparer les points orange des points bleus dans le diagramme ci-dessous, en obtenant une perte inférieure à 0,2 sur les données d’entraînement et de test.
Instructions:
Dans le widget interactif ci-dessous :
- Modifiez les hyperparamètres du réseau neuronal en expérimentant avec certains des paramètres de configuration suivants :
- Ajoutez ou supprimez des calques cachés en cliquant sur les boutons + et - situés à gauche de l'en-tête CALQUES CACHÉS dans le diagramme de réseau.
- Ajoutez ou supprimez des neurones d'une couche cachée en cliquant sur les boutons + et - situés au-dessus d'une colonne de couche cachée.
- Modifiez le taux d'apprentissage en choisissant une nouvelle valeur dans la liste déroulante « Taux d'apprentissage » située au-dessus du diagramme.
- Modifiez la fonction d'activation en choisissant une nouvelle valeur dans la liste déroulante Activation située au-dessus du diagramme.
- Cliquez sur le bouton Lecture (▶️) au-dessus du diagramme pour entraîner le modèle de réseau neuronal en utilisant les paramètres spécifiés.
- Observez la visualisation du modèle s'adaptant aux données au fur et à mesure de l'entraînement, ainsi que les valeurs de perte de test et de perte d'entraînement dans la section Sortie .
- Si le modèle n'atteint pas une perte inférieure à 0,2 sur les données de test et d'entraînement, cliquez sur « Réinitialiser » et répétez les étapes 1 à 3 avec une configuration différente. Répétez ce processus jusqu'à obtenir les résultats souhaités.
Cliquez ici pour découvrir notre solution.
Nous avons pu obtenir des pertes inférieures à 0,2, tant pour les tests que pour l'entraînement, grâce à :
- Ajout d'une couche cachée contenant 3 neurones.
- Choisir un taux d'apprentissage de 0,01.
- Choisir une fonction d'activation ReLU.