Réseaux de neurones: exercices interactifs

Dans les exercices interactifs ci-dessous, vous explorerez plus en détail le fonctionnement interne de les réseaux de neurones. Tout d'abord, vous verrez comment les paramètres et les hyperparamètres affectent les prédictions du réseau. Vous utiliserez ensuite ce que vous avez appris pour entraîner un pour ajuster des données non linéaires.

Exercice n° 1

Le widget suivant définit un réseau de neurones avec la configuration suivante:

  • Couche d'entrée avec trois neurones contenant les valeurs 0.00, 0.00 et 0.00
  • Couche cachée avec 4 neurones
  • Couche de sortie avec un neurone
  • Fonction d'activation ReLU appliquée à tous les nœuds de couche cachée et le nœud de sortie

Vérifiez la configuration initiale du réseau (remarque: ne cliquez pas sur le bouton ▶️ ou >|), puis effectuez les tâches demandées sous le widget.

Tâche 1

Les valeurs des trois caractéristiques d'entrée du modèle de réseau de neurones sont toutes 0.00 Cliquez sur chacun des nœuds du réseau pour afficher tous les nœuds initialisés valeurs. Avant d'appuyer sur le bouton de lecture (▶️), répondez à cette question:

Quel type de valeur de sortie utilisez-vous ? devrait être produit: positif, négatif ou nul ?
Valeur de sortie positive
Valeur de sortie négative
Valeur de sortie : 0

Cliquez sur le bouton Lecture (▶️) au-dessus du réseau et regardez toutes les vidéos de la couche cachée. et les valeurs des nœuds de sortie sont insérées. La réponse ci-dessus était-elle correcte ?

Cliquez ici pour obtenir une explication.

La valeur de sortie exacte dépend de la pondération et les paramètres de biais sont initialisés de manière aléatoire. Cependant, puisque chaque neurone de la couche d'entrée a la valeur 0, les pondérations permettant de calculer les valeurs des nœuds de la couche cachée sont remises à zéro. Par exemple, le premier le calcul du nœud de la couche cachée se fera comme suit:

y = ReLU(w11* 0,00 + w21* 0,00 + w31* 0,00 + b)

y = ReLU(b)

Ainsi, la valeur de chaque nœud de la couche cachée sera égale à la valeur ReLU du nœud biais (b), qui sera égal à 0 si b est négatif et b lui-même si b est égal à 0 ou positif.

La valeur du nœud de sortie est alors calculée comme suit:

y = ReLU(w11* x11 + w21* x21 + w31* x31 + w41* x41 + b)

Tâche 2

Avant de modifier le réseau de neurones, répondez à la question suivante:

Si vous ajoutez une autre couche cachée au réseau de neurones après la première couche cachée, et attribuez à cette nouvelle couche trois nœuds, en conservant les paramètres d'entrée et de pondération/biais sont identiques, ce qui n'est pas le cas calculs sera-t-il affecté ?
Tous les nœuds du réseau, à l'exception des nœuds d'entrée
Seuls les nœuds du première couche cachée
Uniquement le nœud de sortie

À présent, modifiez le réseau de neurones pour ajouter une couche cachée à trois nœuds, comme suit:

  1. Cliquez sur le bouton + à gauche du texte 1 calque caché pour ajouter un nouveau texte. couche cachée avant la couche de sortie.
  2. Cliquez deux fois sur le bouton + au-dessus de la nouvelle couche cachée pour ajouter deux nœuds supplémentaires. au calque.

La réponse ci-dessus était-elle correcte ?

Cliquez ici pour obtenir une explication.

Seul le nœud de sortie change. Comme l'inférence pour ce réseau de neurones est "feed-forward" (progression des calculs du début à la fin), l'ajout d'une nouvelle couche au réseau n'affecte les nœuds qu'après la nouvelle et non celles 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 réseau. graphique. Avant d'apporter des modifications à la configuration réseau, répondez à la question suivante:

Si vous modifiez la valeur pondération w12 (affichée sous le premier nœud d'entrée, x1), quels autres nœuds les calculs pourraient être affectés pour certaines entrées de valeurs ?
Aucun
Le deuxième nœud de la première couche cachée, tous les nœuds de la deuxième couche cachée nœud de sortie.
Tous les nœuds du la première couche cachée, la deuxième couche cachée et la couche de sortie.

Maintenant, cliquez dans le champ de texte correspondant à la pondération w12 (qui s'affiche sous le premier nœud d'entrée, x1), remplacez sa valeur par 5.00, puis appuyez sur Entrée. Observez les mises à jour du graphique.

Était-ce correct ? Soyez prudent lorsque vous vérifiez votre réponse: si un nœud ne change pas, cela signifie-t-il que le calcul sous-jacent n’a pas changé ?

Cliquez ici pour obtenir une explication.

Le seul nœud affecté dans la première couche cachée est le deuxième nœud ( (celle sur laquelle vous avez cliqué). Les calculs de valeur des autres nœuds du premier la couche cachée ne contiennent pas w12 comme paramètre. Ils ne sont donc pas concernés. Tous les nœuds de la deuxième couche cachée sont affectés, car leur les calculs dépendent de la valeur du deuxième nœud dans le premier couche cachée. De même, la valeur du nœud de sortie est affectée, car son les calculs dépendent des valeurs des nœuds de la deuxième couche cachée.

Pensez-vous que la réponse était « aucune » car aucune des valeurs de nœud a changé lorsque vous avez modifié la valeur de pondération. Notez qu'une couche sous-jacente le calcul d'un nœud peut changer sans changer sa valeur (par exemple, Les fonctions ReLU(0) et ReLU(-5) produisent toutes deux une sortie de 0). Ne faites pas de suppositions sur la façon dont le réseau a été affecté uniquement par en examinant les valeurs des nœuds. assurez-vous de revoir également les calculs.

Exercice 2

Dans les exercices de croisement de caractéristiques, dans le module Données catégorielles, vous avez créé manuellement des croisements de caractéristiques pour ajuster des données non linéaires. Nous allons maintenant voir s'il est possible de créer un réseau de neurones capable d'apprendre automatiquement comment ajuster des données non linéaires pendant l'entraînement.

Votre tâche:configurer un réseau de neurones capable de séparer les points orange points bleus dans le diagramme ci-dessous pour obtenir une perte inférieure à 0, 2 sur les deux les données d'entraînement et de test.

Instructions:

Dans le widget interactif ci-dessous:

  1. Modifiez les hyperparamètres du réseau de neurones en testant certaines des paramètres de configuration suivants:
    • Ajoutez ou supprimez des calques masqués en cliquant sur les boutons + et - à gauche du titre COUCHES CACHÉES dans le diagramme de réseau.
    • Pour ajouter ou supprimer des neurones d'une couche cachée, cliquez sur les boutons + et - au-dessus d'une colonne de couche cachée.
    • Modifiez le taux d'apprentissage en choisissant une nouvelle valeur dans Taux d'apprentissage. au-dessus du diagramme.
    • Modifiez la fonction d'activation en choisissant une nouvelle valeur dans Activation au-dessus du diagramme.
  2. Cliquez sur le bouton de lecture (▶️) au-dessus du diagramme pour entraîner le réseau de neurones. à l'aide des paramètres spécifiés.
  3. Observer la visualisation du modèle qui ajuste les données en tant qu'entraînement les progrès réalisés, ainsi que Perte de test et Les valeurs de la perte d'entraînement dans dans la section Résultat.
  4. 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", puis répétez les étapes 1 à 3 avec un ensemble de paramètres de configuration différent. paramètres. Répétez ce processus jusqu'à ce que vous obteniez les résultats souhaités.

Cliquez ici pour découvrir notre solution

Nous sommes parvenus à réduire la perte d'évaluation et d'entraînement en dessous de 0,2 en:

  • Ajout d'une couche cachée contenant trois neurones.
  • Choisir un taux d'apprentissage de 0,01.
  • Choisir une fonction d'activation de la fonction ReLU.