Pourquoi les nœuds de polarisation sont-ils utilisés dans les réseaux de neurones?

29
  1. Pourquoi les nœuds de polarisation sont-ils utilisés dans les réseaux de neurones?
  2. Combien devez-vous utiliser?
  3. Dans quels calques devez-vous les utiliser: tous les calques masqués et le calque de sortie?
grmmhp
la source
1
Cette question est un peu large pour ce forum. Je pense qu'il serait préférable de consulter un manuel traitant des réseaux de neurones, comme Bishop Neural Networks for Pattern Recognition ou Hagan Neural Network Design .
Sycorax dit Réintégrer Monica
2
FTR, je ne pense pas que ce soit trop large.
gung - Rétablir Monica

Réponses:

24

Le nœud de polarisation dans un réseau neuronal est un nœud qui est toujours «activé». Autrement dit, sa valeur est définie sur sans tenir compte des données dans un modèle donné. Elle est analogue à l'ordonnée à l'origine dans un modèle de régression et remplit la même fonction. Si un réseau de neurones n'a pas de nœud de polarisation dans une couche donnée, il ne pourra pas produire de sortie dans la couche suivante qui diffère de 0 (sur l'échelle linéaire ou la valeur qui correspond à la transformation de 0 lors de son passage) la fonction d'activation) lorsque les valeurs de fonction sont 0 .1000

entrez la description de l'image ici

Prenons un exemple simple: vous avez un perceptron à action directe avec 2 nœuds d'entrée et x 2 et 1 nœud de sortie y . x 1 et x 2 sont des entités binaires et définies à leur niveau de référence, x 1 = x 2 = 0 . Multipliez ces 2 0 par les poids que vous aimez, w 1 et w 2 , additionnez les produits et passez-les par la fonction d'activation que vous préférez. Sans nœud de biais, un seulx1x2yx1x2x1=x2=00w1w2la valeur de sortie est possible, ce qui peut donner un très mauvais ajustement. Par exemple, en utilisant une fonction d'activation logistique, doit être 0,5 , ce qui serait horrible pour classer les événements rares.y.5

Un nœud de polarisation offre une flexibilité considérable à un modèle de réseau neuronal. Dans l'exemple donné ci-dessus, la seule proportion prédite possible sans nœud de biais était de , mais avec un nœud de biais, toute proportion en ( 0 , 1 ) peut être adaptée aux modèles où x 1 = x 2 = 0 . Pour chaque couche, j , dans laquelle un nœud de polarisation est ajouté, le nœud de polarisation ajoutera N j + 1 paramètres / poids supplémentaires à estimer (où N j + 1 est le nombre de nœuds dans la couche j50%(0,1)x1=x2=0jNj+1Nj+1 ). Plus de paramètres à ajuster signifient qu'il faudra proportionnellement plus de temps pour que le réseau neuronal soit formé. Cela augmente également les chances de surapprentissage, si vous n'avez pas beaucoup plus de données que de poids à apprendre. j+1

Dans cette optique, nous pouvons répondre à vos questions explicites:

  1. Des nœuds de biais sont ajoutés pour augmenter la flexibilité du modèle pour ajuster les données. Plus précisément, il permet au réseau d'ajuster les données lorsque toutes les entités en entrée sont égales à , et diminue très probablement le biais des valeurs ajustées ailleurs dans l'espace de données. 0
  2. En règle générale, un nœud de polarisation unique est ajouté pour la couche d'entrée et chaque couche cachée dans un réseau à action directe. Vous n'en ajouteriez jamais deux ou plus à un calque donné, mais vous pourriez ajouter zéro. Le nombre total est donc largement déterminé par la structure de votre réseau, bien que d'autres considérations puissent s'appliquer. (Je suis moins clair sur la façon dont les nœuds de biais sont ajoutés aux structures de réseau neuronal autres que feedforward.)
  3. Généralement, cela a été couvert, mais pour être explicite: vous n'ajouteriez jamais un nœud de biais à la couche de sortie; cela n'aurait aucun sens.
gung - Réintégrer Monica
la source
CNN est-il différent à cet égard? car lorsque j'ajoute un biais à mes couches conv, les performances (précision) se dégradent! et quand je les supprime, ça monte plus haut!
Rika
@Hossein, pas que je sache, mais vous pourriez poser une nouvelle question. Je ne suis pas vraiment un expert là-bas.
gung - Rétablir Monica
Aurais-je encore besoin de nœuds de polarisation si mes entrées n'allaient jamais à 0?
alec_djinn
1
@alec_djinn, oui. Il est presque certain que le modèle serait biaisé sans eux, même si vous n'avez jamais 0 pour une valeur d'entrée. Par analogie, il peut être utile de lire: Quand est-il possible de supprimer l'ordonnée à l'origine dans un modèle de régression linéaire?
gung - Réintégrer Monica
1
1
2

Réponses simples et courtes:

  1. Pour déplacer la fonction d'entrée / être plus flexible sur la fonction apprise.
  2. Un nœud de polarisation unique par couche.
  3. Ajoutez-les à tous les calques masqués et au calque d'entrée - avec quelques notes de bas de page

Dans quelques expériences de ma thèse de maîtrise (par exemple, page 59), j'ai trouvé que le biais pouvait être important pour la ou les premières couches, mais surtout au niveau des couches entièrement connectées à la fin, il ne semble pas jouer un grand rôle. On peut donc les avoir dans les premières couches et non dans les dernières. Entraînez simplement un réseau, tracez la distribution des poids des nœuds de biais et élaguez-les si les poids semblent trop proches de zéro.

Cela peut dépendre fortement de l'architecture / du jeu de données du réseau.

Martin Thoma
la source
le nœud de polarisation aurait-il des flèches qui s'y connectent à partir de la couche précédente? ou il contribue simplement à la couche suivante en multipliant sa valeur "1" par le poids de la somme pondérée passée à l'activation. Répondre à cela permettra d'économiser des heures, veuillez aider
krupesh Anadkat
1
Le biais n'est qu'un nombre ajouté à l'activation des couches suivantes. Une façon de le visualiser est d'avoir une 1valeur constante dans la couche précédente et un poids (une valeur de biais) pour chacun des neurones des couches suivantes.
Martin Thoma
2

Dans le contexte des réseaux de neurones, la normalisation par lots est actuellement la référence en matière de fabrication de «nœuds de polarisation» intelligents. Au lieu de bloquer la valeur de biais d'un neurone, vous ajustez plutôt la covariance de l'entrée du neurone. Donc, dans un CNN, vous appliqueriez une normalisation par lots juste entre la couche convolutionnelle et la prochaine couche entièrement connectée (par exemple, ReLus). En théorie, toutes les couches entièrement connectées pourraient bénéficier de la normalisation par lots, mais cela devient très coûteux à mettre en œuvre car chaque normalisation par lots comporte ses propres paramètres.

Concernant pourquoi, la plupart des réponses ont déjà expliqué que, en particulier, les neurones sont sensibles aux gradients saturés lorsque l'entrée pousse l'extrême à l'activation. Dans le cas de ReLu, cela serait poussé vers la gauche, donnant un gradient de 0. En général, lorsque vous entraînez un modèle, vous normalisez d'abord les entrées du réseau neuronal. La normalisation par lots est un moyen de normaliser les entrées à l' intérieur du réseau neuronal, entre les couches.

Alex R.
la source