Outils pour utilisateurs

Outils du site


comment_configurer_le_nombre_de_couches_et_de_nœuds_dans_un_reseau_neuronal

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
comment_configurer_le_nombre_de_couches_et_de_nœuds_dans_un_reseau_neuronal [2020/10/03 09:48] – [Introduction] sergecomment_configurer_le_nombre_de_couches_et_de_nœuds_dans_un_reseau_neuronal [2020/12/27 15:13] (Version actuelle) serge
Ligne 1: Ligne 1:
 ====== Comment configurer le nombre de couches et de nœuds dans un réseau neuronal ====== ====== Comment configurer le nombre de couches et de nœuds dans un réseau neuronal ======
 +<WRAP center round box 60% centeralign>
 +**{{tagpage>ia|Intelligence Artificielle}}**     **[[http://translate.google.com/translate?hl=&sl=auto&tl=en&u=https%3A%2F%2Fressources.labomedia.org%2Fcomment_configurer_le_nombre_de_couches_et_de_nœuds_dans_un_reseau_neuronal|English Version]]**
 +</WRAP>
 +<WRAP center round box 60% centeralign>
 +**[[les_pages_intelligence_artificielle_en_details|Les Pages Intelligence Artificielle en détails]]**
 +</WRAP>
  
 Traduction de **[[https://machinelearningmastery.com/how-to-configure-the-number-of-layers-and-nodes-in-a-neural-network/|How to Configure the Number of Layers and Nodes in a Neural Network]]** à **machinelearningmastery.com** Traduction de **[[https://machinelearningmastery.com/how-to-configure-the-number-of-layers-and-nodes-in-a-neural-network/|How to Configure the Number of Layers and Nodes in a Neural Network]]** à **machinelearningmastery.com**
  
 +====Ressources====
 +  * https://keras.io/api/layers/ Liste ce qui existe dans keras mais ne dit pas comment choisir !
 +  * **[[https://stackoverflow.com/questions/44747343/keras-input-explanation-input-shape-units-batch-size-dim-etc|Keras input explanation: input_shape, units, batch_size, dim, etc]]**
 =====Introduction===== =====Introduction=====
 Les réseaux de neurones artificiels ont deux hyperparamètres principaux qui contrôlent l'architecture ou la topologie du réseau: le nombre de couches et le nombre de nœuds dans chaque couche cachée.\\ Les réseaux de neurones artificiels ont deux hyperparamètres principaux qui contrôlent l'architecture ou la topologie du réseau: le nombre de couches et le nombre de nœuds dans chaque couche cachée.\\
Ligne 10: Ligne 19:
  
 =====Aperçu===== =====Aperçu=====
-Cet article est divisé en quatre sections; elles sont:+Cet article est divisé en quatre sections:
   - [[comment_configurer_le_nombre_de_couches_et_de_nœuds_dans_un_reseau_neuronal#le_perceptron_multicouche|Le Perceptron multicouche]]    - [[comment_configurer_le_nombre_de_couches_et_de_nœuds_dans_un_reseau_neuronal#le_perceptron_multicouche|Le Perceptron multicouche]] 
   - [[comment_configurer_le_nombre_de_couches_et_de_nœuds_dans_un_reseau_neuronal#comment_compter_les_couches|Comment compter les couches? ]]   - [[comment_configurer_le_nombre_de_couches_et_de_nœuds_dans_un_reseau_neuronal#comment_compter_les_couches|Comment compter les couches? ]]
Ligne 49: Ligne 58:
 Un réseau neuronal monocouche ne peut être utilisé que pour représenter des fonctions linéairement séparables. Cela signifie des problèmes très simples où, par exemple, les deux classes d'un problème de classification peuvent être soigneusement séparées par une ligne. Si votre problème est relativement simple, peut-être qu'un réseau monocouche serait suffisant.\\ Un réseau neuronal monocouche ne peut être utilisé que pour représenter des fonctions linéairement séparables. Cela signifie des problèmes très simples où, par exemple, les deux classes d'un problème de classification peuvent être soigneusement séparées par une ligne. Si votre problème est relativement simple, peut-être qu'un réseau monocouche serait suffisant.\\
 La plupart des problèmes que nous souhaitons résoudre ne sont pas linéairement séparables. La plupart des problèmes que nous souhaitons résoudre ne sont pas linéairement séparables.
-Un Perceptron multicouche peut être utilisé pour représenter des régions convexes. Cela signifie qu'en fait, ils peuvent apprendre à dessiner des formes autour d'exemples dans un espace de grande dimension qui peut les séparer et les classer, surmontant ainsi la limitation de la séparabilité linéaire.\\ +Un Perceptron multicouche peut être utilisé pour représenter des régions convexes. Cela signifie qu'en fait, ils peuvent apprendre à dessiner des formes autour d'exemples dans un espace de grande dimension qui peut les séparer et les classer, surmontant ainsi la limitation de la séparabilité linéaire. 
-En fait, il y a une découverte théorique de Lippmann dans l'article de 1987 « Une introduction au calcul avec des réseaux neuronaux » qui montre qu'un MLP avec deux couches cachées est suffisant pour créer des régions de classification de toute forme souhaitée. Ceci est instructif, même s'il convient de noter qu'aucune indication sur le nombre de nœuds à utiliser dans chaque couche ou sur la manière d'apprendre les poids n'est donnée.\\+ 
 +====En théorie==== 
 +En fait, il y a une **découverte théorique de Lippmann dans l'article de 1987** « Une introduction au calcul avec des réseaux neuronaux » qui montre qu'un MLP avec deux couches cachées est suffisant pour créer des régions de classification de toute forme souhaitée. Ceci est instructif, même s'il convient de noter qu'aucune indication sur le nombre de nœuds à utiliser dans chaque couche ou sur la manière d'apprendre les poids n'est donnée.\\
 Une autre découverte théorique et une preuve ont montré que les MLP sont des approximateurs universels . Avec une couche cachée, un MLP peut se rapprocher de n'importe quelle fonction dont nous avons besoin. Une autre découverte théorique et une preuve ont montré que les MLP sont des approximateurs universels . Avec une couche cachée, un MLP peut se rapprocher de n'importe quelle fonction dont nous avons besoin.
  
 ===Remarque=== ===Remarque===
-Plus précisément, le théorème d'approximation universelle stipule qu'un réseau à anticipation avec une couche de sortie linéaire et au moins une couche cachée avec une fonction d'activation «écrasante» (telle que la fonction d'activation sigmoïde logistique) peut approximer n'importe quelle fonction mesurable de Borel à partir d'un espace de dimension finie à un autre avec toute quantité d'erreur non nulle souhaitée, à condition que le réseau dispose d'un nombre suffisant d'unités cachées.+Plus précisément, le théorème d'approximation universelle stipule qu'un réseau à anticipation avec une couche de sortie linéaire et au moins une couche cachée avec une fonction d'activation «écrasante» (telle que la fonction d'activation sigmoïde logistique) peut approximer n'importe quelle fonction mesurable de [[https://fr.wikipedia.org/wiki/Hiérarchie_de_Borel|Borel]] à partir d'un espace de dimension finie à un autre avec toute quantité d'erreur non nulle souhaitée, à condition que le réseau dispose d'un nombre suffisant d'unités cachées.
  
 ====En pratique==== ====En pratique====
-Il s'agit d'une découverte théorique souvent citée et il existe une tonne de littérature à ce sujet. En pratique, nous n'avons encore aucune idée du nombre de nœuds à utiliser dans la couche cachée unique pour un problème donné, ni comment apprendre ou définir efficacement leurs poids. En outre, de nombreux contre-exemples ont été présentés de fonctions qui ne peuvent pas être apprises directement via un seul MLP à une seule couche cachée ou qui nécessitent un nombre infini de nœuds.\\+En pratique, nous n'avons encore aucune idée du nombre de nœuds à utiliser dans la couche cachée unique pour un problème donné, ni comment apprendre ou définir efficacement leurs poids. En outre, de nombreux contre-exemples ont été présentés de fonctions qui ne peuvent pas être apprises directement via un seul MLP à une seule couche cachée ou qui nécessitent un nombre infini de nœuds.\\
 Même pour les fonctions qui peuvent être apprises via un MLP suffisamment grand à une couche cachée, il peut être plus efficace de l'apprendre avec deux (ou plus) couches cachées.\\ Même pour les fonctions qui peuvent être apprises via un MLP suffisamment grand à une couche cachée, il peut être plus efficace de l'apprendre avec deux (ou plus) couches cachées.\\
 Puisqu'une seule couche cachée suffisamment grande est adéquate pour l'approximation de la plupart des fonctions, pourquoi quelqu'un en utiliserait-il plus? Une des raisons tient aux mots «suffisamment grand». Bien qu'une seule couche cachée soit optimale pour certaines fonctions, il y en a d'autres pour lesquelles une solution à une seule couche cachée est très inefficace par rapport aux solutions avec plus de couches. Puisqu'une seule couche cachée suffisamment grande est adéquate pour l'approximation de la plupart des fonctions, pourquoi quelqu'un en utiliserait-il plus? Une des raisons tient aux mots «suffisamment grand». Bien qu'une seule couche cachée soit optimale pour certaines fonctions, il y en a d'autres pour lesquelles une solution à une seule couche cachée est très inefficace par rapport aux solutions avec plus de couches.
  
 =====Combien de couches et de nœuds utiliser?===== =====Combien de couches et de nœuds utiliser?=====
-Avec le préambule des MLP à l'écart, passons à votre vraie question.\\ 
 Combien de couches devez-vous utiliser dans votre Perceptron multicouche et combien de nœuds par couche? Combien de couches devez-vous utiliser dans votre Perceptron multicouche et combien de nœuds par couche?
 Dans cette section, nous énumérerons cinq approches pour résoudre ce problème.\\ Dans cette section, nous énumérerons cinq approches pour résoudre ce problème.\\
Ligne 72: Ligne 82:
 Le nombre de couches et le nombre de nœuds dans chaque couche sont des hyperparamètres de modèle que vous devez spécifier. Le nombre de couches et le nombre de nœuds dans chaque couche sont des hyperparamètres de modèle que vous devez spécifier.
 Vous êtes probablement la première personne à tenter de résoudre votre problème spécifique avec un réseau neuronal. Personne ne l'a résolu avant vous. Par conséquent, personne ne peut vous dire comment configurer le réseau. Vous êtes probablement la première personne à tenter de résoudre votre problème spécifique avec un réseau neuronal. Personne ne l'a résolu avant vous. Par conséquent, personne ne peut vous dire comment configurer le réseau.
-Vous devez découvrir la réponse en utilisant un harnais de test robuste et des expériences contrôlées. Par exemple, voir l'article: +Vous devez découvrir la réponse en utilisant un harnais de test robuste et des expériences contrôlées.\\
-  * Comment évaluer la compétence des modèles d'apprentissage profond +
 Indépendamment de l'heuristique que vous pourriez rencontrer, toutes les réponses reviendront à la nécessité d'une expérimentation minutieuse pour voir ce qui fonctionne le mieux pour votre ensemble de données spécifique. Indépendamment de l'heuristique que vous pourriez rencontrer, toutes les réponses reviendront à la nécessité d'une expérimentation minutieuse pour voir ce qui fonctionne le mieux pour votre ensemble de données spécifique.
  
Ligne 81: Ligne 90:
 Un modèle profond fournit une hiérarchie de couches qui construisent des niveaux d'abstraction croissants de l'espace des variables d'entrée aux variables de sortie. Un modèle profond fournit une hiérarchie de couches qui construisent des niveaux d'abstraction croissants de l'espace des variables d'entrée aux variables de sortie.
 Étant donné une compréhension du domaine du problème, nous pouvons croire qu'un modèle hiérarchique profond est nécessaire pour résoudre suffisamment le problème de prédiction. Dans ce cas, nous pouvons choisir une configuration de réseau comportant de nombreuses couches de profondeur. Étant donné une compréhension du domaine du problème, nous pouvons croire qu'un modèle hiérarchique profond est nécessaire pour résoudre suffisamment le problème de prédiction. Dans ce cas, nous pouvons choisir une configuration de réseau comportant de nombreuses couches de profondeur.
-Le choix d'un modèle profond encode une croyance très générale selon laquelle la fonction que nous voulons apprendre devrait impliquer la composition de plusieurs fonctions plus simples. Cela peut être interprété du point de vue de l'apprentissage de la représentation comme indiquant que nous croyons que le problème d'apprentissage consiste à découvrir un ensemble de facteurs sous-jacents de variation qui peuvent à leur tour être décrits en termes d'autres facteurs sous-jacents de variation plus simples. +Le choix d'un modèle profond encode une croyance très générale selon laquelle la fonction que nous voulons apprendre devrait impliquer la composition de plusieurs fonctions plus simples. Cela peut être interprété du point de vue de l'apprentissage de la représentation comme indiquant que nous croyons que le problème d'apprentissage consiste à découvrir un ensemble de facteurs sous-jacents de variation qui peuvent à leur tour être décrits en termes d'autres facteurs sous-jacents de variation plus simples.\\ 
- +Cette intuition peut provenir de l'expérience du domaine, de l'expérience des problèmes de modélisation avec les réseaux de neurones, ou d'un mélange des deux.\\ 
-Cette intuition peut provenir de l'expérience du domaine, de l'expérience des problèmes de modélisation avec les réseaux de neurones, ou d'un mélange des deux. +**D'après mon expérience, les intuitions sont souvent invalidées via des expériences.**
-D'après mon expérience, les intuitions sont souvent invalidées via des expériences.+
  
 ====Optez pour la profondeur==== ====Optez pour la profondeur====
Ligne 111: Ligne 119:
   * Ajustez les modèles sur un sous-ensemble plus petit de l'ensemble de données d'entraînement pour accélérer la recherche.    * Ajustez les modèles sur un sous-ensemble plus petit de l'ensemble de données d'entraînement pour accélérer la recherche. 
   * Liez de manière agressive la taille de l'espace de recherche.    * Liez de manière agressive la taille de l'espace de recherche. 
-  * Parallélisez la recherche sur plusieurs instances de serveur (par exemple, utilisez le service Amazon EC2 )+  * Parallélisez la recherche sur plusieurs instances de serveur. 
 Je recommande d'être systématique si le temps et les ressources le permettent. Je recommande d'être systématique si le temps et les ressources le permettent.
  
 ====Bonus==== ====Bonus====
 J'ai vu d'innombrables heuristiques sur la façon d'estimer le nombre de couches et soit le nombre total de neurones, soit le nombre de neurones par couche.\\ J'ai vu d'innombrables heuristiques sur la façon d'estimer le nombre de couches et soit le nombre total de neurones, soit le nombre de neurones par couche.\\
-Je ne veux pas les énumérerJe suis sceptique sur le fait qu'ils ajoutent une valeur pratique au-delà des cas particuliers sur lesquels ils sont présentés.\\ +Je ne veux pas les énumérerJe suis sceptique sur le fait qu'ils ajoutent une valeur pratique au-delà des cas particuliers sur lesquels ils sont présentés.
-Si ce domaine vous intéresse, commencez peut-être par la « Section 4.4 Capacité versus taille » dans le livre « Neural Smithing ». Il résume une tonne de découvertes dans ce domaine. Le livre est daté de 1999, il reste donc près de 20 ans d'idées à parcourir dans ce domaine si vous êtes prêt.\\ +
-Voir également certaines des discussions liées dans la section Lectures complémentaires (ci-dessous).\\ +
-Ai-je manqué votre méthode préférée pour configurer un réseau neuronal? Ou connaissez-vous une bonne référence sur le sujet? \\ +
-Faites-moi savoir dans les commentaires ci-dessous.\\+
  
 ====Lectures complémentaires==== ====Lectures complémentaires====
-Cette section fournit plus de ressources sur le sujet si vous souhaitez approfondir. +Cette section fournit plus de ressources sur le sujet si vous souhaitez approfondir. Voir l'article original
-Papiers +
-  * Une introduction à l'informatique avec des réseaux de neurones , 1987.  +
-  * Combien de couches et de nœuds cachés? , 2009.  +
-Livres +
-  * Neural Smithing: Supervised Learning in Feedforward Artificial Neural Networks , 1999.  +
-  * Apprentissage profond , 2016.  +
-Des articles +
-  * Réseau de neurones artificiels sur Wikipedia  +
-  * Théorème d'approximation universelle sur Wikipedia  +
-  * Combien de couches cachées dois-je utiliser ?, FAQ comp.ai.neural-nets  +
-Discussions +
-  * Comment choisir le nombre de couches et de nœuds cachés dans un réseau de neurones à feedforward?  +
-  * Nombre de nœuds dans les couches cachées du réseau neuronal  +
-  * architecture de perceptron multicouche (MLP): critères de choix du nombre de couches cachées et de la taille de la couche cachée?  +
-  * En apprentissage profond, comment sélectionner le nombre optimal de couches et de neurones? +
  
-{{tag>sb ia}}+{{tag>sb ia keras}}
comment_configurer_le_nombre_de_couches_et_de_nœuds_dans_un_reseau_neuronal.1601718500.txt.gz · Dernière modification : 2020/10/03 09:48 de serge