Si nous avons 10 vecteurs propres alors nous pouvons avoir 10 nœuds neuraux dans la couche d’entrée. Si nous avons 5 classes de sortie, alors nous pouvons avoir 5 nœuds dans la couche de sortie. Mais quels sont les critères pour choisir le nombre de noeuds dans 1 couche cachée?
combien de couches cachées ?
un modèle avec zéro calque caché résoudra les données linéairement séparables . Donc, à moins que vous ne sachiez déjà que vos données ne sont pas linéairement séparables, cela ne fait pas de mal de vérifier cela – pourquoi utiliser un modèle plus complexe que ce que la tâche requirejs? Si elle est linéairement séparable, une technique plus simple fonctionnera, mais un Perceptron fera également le travail.
En supposant que vos données nécessitent une séparation par une technique non linéaire, commencez toujours par une couche masquée . C’est presque tout ce dont vous aurez besoin. Si vos données sont séparables à l’aide d’une MLP, cette MLP n’a probablement besoin que d’une seule couche masquée. Il existe une justification théorique à cela, mais ma raison est purement empirique: de nombreux problèmes de classification / régression difficiles sont résolus en utilisant des MLP à couche cachée unique, mais je ne me souviens pas avoir rencontré de MLP à couches cachées multiples pour modéliser avec succès des données. -Que ce soit sur les tableaux d’affichage ML, les manuels ML, les articles académiques, etc. Ils existent, certes, mais les circonstances qui justifient leur utilisation sont empiriquement assez rares.
Combien de nœuds dans la couche cachée?
De la littérature académique MLP. ma propre expérience, etc., je me suis réuni et je m’appuie souvent sur plusieurs règles de base ( RoT ), et je les ai également trouvées être des guides fiables (c.-à-d. était généralement clair que faire ensuite:
RoT basée sur l’amélioration de la convergence:
Lorsque vous commencez la construction du modèle, errez du côté des autres nœuds de la couche masquée.
Pourquoi? Premièrement, quelques nœuds supplémentaires dans la couche cachée ne risquent pas de nuire – votre MLP continuera à converger. D’autre part, trop peu de nœuds dans la couche cachée peuvent empêcher la convergence. Pensez-y de cette manière, des nœuds supplémentaires offrent une capacité excédentaire – des poids supplémentaires pour stocker / libérer le signal sur le réseau pendant l’itération (formation ou création de modèles). Deuxièmement, si vous commencez avec des nœuds supplémentaires dans votre couche masquée, il est alors facile de les élaguer plus tard (pendant la progression de l’itération). Cela est courant et il existe des techniques de diagnostic pour vous aider (par exemple, le diagramme de Hinton, qui est simplement une représentation visuelle des masortingces de poids, une «carte thermique» des valeurs de poids,).
RoTs basés sur la taille de la couche d’entrée et la taille de la couche de sortie:
En règle générale, la taille de cette couche [cachée] doit se situer quelque part entre la taille de la couche en entrée… et la taille de la couche en sortie.
Pour calculer le nombre de nœuds cachés, nous utilisons une règle générale de: (Nombre d’entrées + sorties) x 2/3
RoT basé sur les composants principaux:
Généralement, nous spécifions autant de nœuds cachés que de dimensions [composants principaux] nécessaires pour capturer 70 à 90% de la variance de l’dataset d’entrée .
Et pourtant, l’auteur de la FAQ NN appelle ces règles “non-sens” (littéralement), car elles: ignorent le nombre d’instances d’apprentissage, le bruit dans les cibles (valeurs des variables de réponse) et la complexité de l’espace object.
À son avis (et il m’a toujours semblé savoir de quoi il parlait), choisissez le nombre de neurones dans la couche cachée selon que votre MLP inclut une forme de régularisation ou un arrêt précoce .
La seule technique valide pour optimiser le nombre de neurones dans la couche cachée:
Lors de la construction de votre modèle, testez de manière obsessionnelle; testing révélera les signatures de l’architecture réseau “incorrecte”. Par exemple, si vous commencez avec un MLP ayant une couche cachée composée d’un petit nombre de noeuds (que vous augmenterez progressivement en fonction des résultats des tests), votre erreur de formation et de généralisation sera élevée en raison du biais et du sous-ajustement.
Augmentez ensuite le nombre de nœuds dans la couche masquée, un à la fois, jusqu’à ce que l’erreur de généralisation commence à augmenter, cette fois en raison du sur-ajustement et de la grande variance.
En pratique, je le fais de cette façon:
Couche d’entrée : la taille de mon vecteur de données (le nombre d’entités de mon modèle) + 1 pour le nœud de biais et non la variable de réponse, bien sûr
Couche de sortie : uniquement déterminée par mon modèle: régression (un nœud) versus classification (nombre de nœuds équivalent au nombre de classes, en supposant que softmax)
Couche cachée : pour démarrer , un calque masqué avec un nombre de nœuds égal à la taille de la couche d’entrée. La taille «idéale» est plus susceptible d’être plus petite (c.-à-d. Un certain nombre de nœuds entre le nombre dans la couche d’entrée et le nombre dans la couche de sortie) que plus grande – là encore, il ne s’agit que d’une observation empirique. de cette observation est ma propre expérience. Si le projet justifiait le temps supplémentaire requirejs, alors je commence par une seule couche cachée composée d’un petit nombre de nœuds, puis (comme je l’ai expliqué ci-dessus) j’ajoute des nœuds à la couche cachée, un par un, tout en calculant la généralisation erreur, erreur de formation, biais et variance. Lorsque l’erreur de généralisation a plongé et juste avant de recommencer à augmenter, le nombre de nœuds à ce moment-là est mon choix. Voir la figure ci-dessous.
Il est très difficile de choisir le nombre de neurones dans une couche cachée et de choisir le nombre de couches cachées dans votre réseau neuronal.
Habituellement, pour la plupart des applications, une couche cachée suffit. En outre, le nombre de neurones dans cette couche cachée doit être compris entre le nombre d’entrées (10 dans votre exemple) et le nombre de sorties (5 dans votre exemple).
Mais le meilleur moyen de choisir le nombre de neurones et de couches cachées est l’expérimentation. Former plusieurs réseaux neuronaux avec différents nombres de couches cachées et de neurones cachés, et mesurer la performance de ces réseaux en utilisant la validation croisée . Vous pouvez vous en tenir au nombre qui donne le meilleur réseau.
Pour automatiser la sélection du meilleur nombre de couches et du meilleur nombre de neurones pour chacune des couches, vous pouvez utiliser l’optimisation génétique .
Les pièces maîtresses seraient:
Vous pouvez également considérer: