Choisir la taille du filtre, les foulées, etc. dans un CNN?


12

J'ai regardé les conférences CS231N de Stanford et j'essaie de comprendre quelques problèmes dans les architectures CNN. Ce que j'essaie de comprendre, c'est s'il existe des directives générales pour choisir la taille du filtre de convolution et des choses comme les enjambées ou est-ce plus un art qu'une science?

Je pense que la mise en commun existe principalement pour induire une certaine forme d'invariance de traduction dans un modèle. D'un autre côté, je n'ai pas une bonne intuition sur la façon dont la taille de foulée est choisie. Y a-t-il d'autres lignes directrices à ce sujet, sauf en essayant de compresser la taille de couche actuelle ou en essayant d'obtenir un champ récepteur plus grand pour un neurone? Quelqu'un connaît-il de bons articles ou similaires qui en parlent?

Réponses:


9

En guise de texte d'introduction à toutes les questions que vous nommez, je recommanderais le livre d'apprentissage approfondi . Il donne un large aperçu du domaine. Il explique le rôle de chacun de ces paramètres.

À mon avis, il est très utile de lire sur certaines des architectures les plus populaires (resnet, création, alex-net) et d'extraire les idées clés menant aux décisions de conception. Après avoir lu le livre susmentionné.

Dans le programme des cours auxquels vous vous référez, il est expliqué en détail comment la couche de convolution ajoute un grand nombre de paramètres (poids, biais) et de neurones. Cette couche, une fois formée, est capable d'extraire des motifs de sens de l'image. Pour les couches inférieures, ces filtres ressemblent à des extracteurs de bord. Pour les couches supérieures, ces formes primitives sont combinées pour décrire des formes plus complexes. Ces filtres impliquent un nombre élevé de paramètres et un gros problème de conception de réseaux profonds pour savoir comment décrire des formes complexes tout en réduisant le nombre de paramètres.

Étant donné que les pixels voisins sont fortement corrélés (spécialement dans les couches les plus basses), il est logique de réduire la taille de la sortie en sous-échantillonnant (regroupant) la réponse du filtre. Plus les deux pixels sont éloignés l'un de l'autre, moins ils sont corrélés. Par conséquent, un grand pas dans la couche de mise en commun entraîne une perte d'informations élevée. Parlant librement. Une foulée de 2 et une taille de noyau 2x2 pour la couche de mise en commun est un choix courant.

Une approche plus sophistiquée est le réseau Inception ( Aller plus loin avec les convolutions ) où l'idée est d'augmenter la rareté tout en étant capable d'atteindre une plus grande précision, en échangeant le nombre de paramètres dans une couche convolutionnelle contre un module de démarrage pour les réseaux plus profonds.

Un papier agréable qui fournit des conseils sur les architectures actuelles et le rôle de certaines dimensions de conception d'une structure, de manière systématique est SqueezeNet: précision AlexNet niveau avec 50x moins de paramètres et <0.5MB taille du modèle . Il s'appuie sur les idées introduites dans les modèles mentionnés précédemment.


1
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.