Mise à jour des poids des filtres dans un CNN

13

J'essaie actuellement de comprendre l'architecture d'un CNN. Je comprends la convolution, la couche ReLU, la couche de mise en commun et la couche entièrement connectée. Cependant, je suis toujours confus au sujet des poids.

Dans un réseau neuronal normal, chaque neurone a son propre poids. Dans la couche entièrement connectée, chaque neurone aurait également son propre poids. Mais ce que je ne sais pas, c'est si chaque filtre a son propre poids. Dois-je simplement mettre à jour les poids dans la couche entièrement connectée pendant la propagation arrière? Ou les filtres ont-ils tous un poids distinct que je dois mettre à jour?

Felix
la source

Réponses:

12

Dans un réseau neuronal normal, chaque neurone a son propre poids.

Ce n'est pas correct. Chaque connexion entre les neurones a son propre poids. Dans un réseau entièrement connecté, chaque neurone sera associé à de nombreux poids différents. S'il y a des n0entrées (c'est-à-dire des n0neurones dans la couche précédente) dans une couche avec des n1neurones dans un réseau entièrement connecté, cette couche aura des n0*n1poids, sans compter aucun terme de biais.

Vous devriez pouvoir le voir clairement dans ce diagramme d'un réseau entièrement connecté à partir du CS231n . Chaque bord que vous voyez représente un poids d'entraînement différent:

entrez la description de l'image ici

Les couches convolutives sont différentes en ce qu'elles ont un nombre fixe de poids régi par le choix de la taille du filtre et du nombre de filtres, mais indépendamment de la taille d'entrée.

Chaque filtre a un poids distinct dans chaque position de sa forme. Donc, si vous utilisez deux filtres 3x3x3, vous aurez 54 poids, sans compter le biais. Ceci est illustré dans un deuxième diagramme de CS231n :

entrez la description de l'image ici

Les pondérations du filtre doivent absolument être mises à jour en rétropropagation, car c'est ainsi qu'elles apprennent à reconnaître les caractéristiques de l'entrée. Si vous lisez la section intitulée "Visualisation des réseaux de neurones" ici, vous verrez comment les couches d'un CNN apprennent des caractéristiques de plus en plus complexes de l'image d'entrée à mesure que vous vous enfoncez dans le réseau. Tout cela est appris en ajustant les poids du filtre par rétropropagation.

Imran
la source
mmm le nombre de poids dans chaque couche dépend également du nombre de pas que les filtres prennent ... non?
Arnav Das
2

Lors de la propagation arrière, les couches denses et les couches de convolution sont mises à jour, mais les couches de regroupement maximal n'ont aucun poids à mettre à jour. Les couches denses sont mises à jour pour aider le réseau à se classer. Les couches de convolution sont mises à jour pour permettre au réseau d'apprendre les fonctionnalités lui-même. Parce que vous n'avez pas posé de question, j'ajoute juste un lien pour vous si vous voulez en savoir plus. Il y a une très bonne explication pour la propagation de retour ici qui peut vous être utile.

Médias
la source