Quelle est la différence entre les réseaux de neurones convolutifs et l'apprentissage profond?

25

Je souhaite utiliser le deep learning dans mon projet. J'ai parcouru quelques articles et une question m'est venue: y a-t-il une différence entre le réseau neuronal à convolution et l'apprentissage en profondeur? Ces choses sont-elles les mêmes ou ont-elles des différences majeures, et quelle est la meilleure?

Aadnan Farooq A
la source
Dites-moi quelle est la différence exacte entre l'apprentissage en profondeur et le réseau de neurones convolutionnels Je suis quelque peu confus sur ces 2 sujets
Yamini

Réponses:

33

Le Deep Learning est la branche du Machine Learning basée sur les Deep Neural Networks (DNN), c'est-à-dire les réseaux de neurones avec au moins 3 ou 4 couches (y compris les couches d'entrée et de sortie). Mais pour certaines personnes (en particulier non techniques), tout réseau neuronal est qualifié de Deep Learning, quelle que soit sa profondeur. Et d'autres considèrent un réseau neuronal à 10 couches comme peu profond.

Les réseaux de neurones convolutifs (CNN) sont l'une des architectures de réseaux de neurones les plus populaires. Ils sont extrêmement efficaces dans le traitement d'images, mais aussi pour de nombreuses autres tâches (telles que la reconnaissance vocale, le traitement du langage naturel, etc.). Les CNN de pointe sont assez profonds (des dizaines de couches au moins), ils font donc partie du Deep Learning. Mais vous pouvez créer un CNN peu profond pour une tâche simple, auquel cas il ne s'agit pas (vraiment) de Deep Learning.

Mais les CNN ne sont pas seuls, il existe de nombreuses autres architectures de réseaux de neurones, y compris les réseaux de neurones récurrents (RNN), les encodeurs automatiques, les transformateurs, les réseaux de croyances profondes (DBN = une pile de machines Boltzmann restreintes, RBM), et plus encore. Ils peuvent être peu profonds ou profonds. Remarque: même les RNN peu profonds peuvent être considérés comme faisant partie du Deep Learning, car leur formation nécessite de les dérouler dans le temps, ce qui crée un filet profond.

MiniQuark
la source
@MiniQurak. Veuillez me corriger, je me trompe. ce que je comprends, c'est que CNN n'est qu'une des architectures des réseaux profonds, tout comme les encodeurs automatiques, les réseaux de croyances profondes, les réseaux de neurones récurrents (RNN). Est-ce correct?
Aadnan Farooq A
Oui c'est correct.
MiniQuark
pouvons-nous alors dire quelle architecture est la meilleure en fonction de l'ensemble de données? ou quels sont les facteurs clés?
Aadnan Farooq A
1
Les CNN sont parfaits pour les tâches de reconnaissance d'image. Ils brillent également chaque fois que les données ont une certaine forme de structure hiérarchique, avec des motifs locaux (par exemple, des segments de ligne) assemblés en grands motifs (par exemple, des carrés, des triangles), assemblés en de plus grands modèles (par exemple, maison, avion). Cela fonctionne bien pour les tâches de reconnaissance vocale. Les RNN sont parfaits pour les séries chronologiques (par exemple, la prévision du temps), et généralement pour gérer des séquences de données (par exemple, des phrases). Ils sont beaucoup utilisés pour la PNL (traitement du langage naturel). Les AutoEncoders ne sont pas supervisés, ils apprennent des modèles dans les données.
MiniQuark
1
Bon alors :)
Firebug
21

Dans les domaines du traitement adaptatif du signal / apprentissage automatique, le deep learning (DL) est une méthodologie particulière dans laquelle nous pouvons former des machines à des représentations complexes.

Généralement, ils auront une formulation qui peut mapper votre entrée , jusqu'à l'objectif cible, , via une série d'opérations empilées hiérarchiquement (c'est de là que vient le `` profond ''). . Ces opérations sont généralement des opérations / projections linéaires ( ), suivies de non-linéarités ( ), comme ceci:XyWjeFje

y=FN(...F2(F1(XTW1)W2)...WN)

Maintenant, au sein de DL, il existe de nombreuses architectures différentes : une de ces architectures est connue sous le nom de réseau neuronal convolutif (CNN). Une autre architecture est connue sous le nom de perceptron multicouche (MLP), etc. Différentes architectures se prêtent à la résolution de différents types de problèmes.

Un MLP est peut-être l'un des types d'architectures DL les plus traditionnels que l'on puisse trouver, et c'est à ce moment-là que chaque élément d'une couche précédente est connecté à chaque élément de la couche suivante. Cela ressemble à ceci:

entrez la description de l'image ici

Dans les MLP, les matricies codent la transformation d'une couche à l'autre. (Via une matrice multiplier). Par exemple, si vous avez 10 neurones dans une couche connectés à 20 neurones de la suivante, alors vous aurez une matrice , qui mappera une entrée to an output , via: . Chaque colonne dans , code tous les bords allant de tous les éléments d'un calque à l' un des éléments du calque suivant.WjeWRdixX20vRdixX1uR1X20u=vTWW

Les MLP sont alors tombés en disgrâce, en partie parce qu'ils étaient difficiles à former. Bien qu'il existe de nombreuses raisons à ces difficultés, l'une d'entre elles était également due au fait que leurs connexions denses ne leur permettaient pas de s'adapter facilement à divers problèmes de vision par ordinateur. En d'autres termes, ils n'avaient pas d'équivalence de traduction intégrée. Cela signifiait que s'il y avait un signal dans une partie de l'image auquel ils devaient être sensibles, ils auraient besoin de réapprendre à y être sensibles si ce signal s'est déplacé. Cela a gaspillé la capacité du filet et la formation est donc devenue difficile.

C'est là que les CNN sont intervenus! Voici à quoi on ressemble:

entrez la description de l'image ici

Les CNN ont résolu le problème de traduction du signal, car ils convolueraient chaque signal d'entrée avec un détecteur (noyau) et seraient donc sensibles à la même caractéristique, mais cette fois partout. Dans ce cas, notre équation a toujours la même apparence, mais les matricies de poids sont en fait des matricules de toeplitz convolutionnelles . Le calcul est le même cependant. Wje

Il est courant de voir «CNN» faire référence à des réseaux où nous avons des couches convolutionnelles à travers le réseau, et des MLP à la toute fin, c'est donc une mise en garde à prendre en compte.

Tarin Ziyaee
la source
1
+1 Excellente réponse, je viens d'apprendre les matricules de toeplitz. ;-)
MiniQuark
@MiniQuark Merci! Oui - vous pouvez écrire une convolution sous forme de multiplication par une matrice de plis supérieurs. :)
Tarin Ziyaee
@TarinZiyaee et MiniQurak Pouvez-vous me suggérer un bon livre / article / tutoriel pour que le débutant puisse en savoir plus sur le Deep learning.
Aadnan Farooq A
Les CNN ne sont pas nécessairement profonds (-1)
Firebug
7

Deep learning = réseaux neuronaux artificiels profonds + autres types de modèles profonds .

Réseaux de neurones artificiels profonds = réseaux de neurones artificiels avec plus d'une couche. (voir le nombre minimum de couches dans un réseau de neurones profond ou Wikipedia pour plus de débat…)

Réseau de neurones à convolution = Un type de réseaux de neurones artificiels

Franck Dernoncourt
la source
Assez juste, le Deep Learning comprend également des "machines à noyaux multicouches" et les CNN peuvent être superficiels. :)
MiniQuark
@MiniQuark yep.
Franck Dernoncourt
réseaux de neurones artificiels avec plus d'une couche ..... Je ne suis pas sûr qu'un réseau avec seulement 2 couches s'appelle un réseau profond.
SmallChess
1
@StudentT Peut-être que je ne travaille pas dans le marketing;) en.wikipedia.org/w/…
Franck Dernoncourt
1
Cela devrait être la meilleure réponse, car les CNN ne sont pas nécessairement profonds, et le Deep Learning ne concerne pas seulement les ANN (au sens ordinaire).
Firebug
6

Cette diapositive de Yann LeCun montre que seuls les modèles avec une hiérarchie d'entités (les entités de niveau inférieur sont apprises à une couche d'un modèle, puis ces entités sont combinées au niveau suivant) sont profonds .

Un CNN peut être profond ou peu profond; ce qui est le cas dépend si elle suit cette construction de "hiérarchie d'entités" car certains réseaux de neurones, dont les modèles à 2 couches , ne sont pas profonds.

Définition de Yann LeCun

Sycorax dit de réintégrer Monica
la source
3

Deep learningest un terme général pour désigner un réseau neuronal complexe à plusieurs couches. Il n'y a pas de définition standard de ce qui est exactement deep. En général, vous pouvez penser qu'un réseau profond est quelque chose de trop grand pour que votre ordinateur portable et votre PC puissent s'entraîner. L'ensemble de données serait si énorme que vous ne pouvez pas l'intégrer dans votre mémoire. Vous pourriez avoir besoin d'un GPU pour accélérer votre entraînement.

Deep ressemble plus à un terme marketing pour rendre quelque chose de plus professionnel qu'autrement.

CNNest un type de réseau neuronal profond, et il existe de nombreux autres types. Les CNN sont populaires car ils ont des applications très utiles pour la reconnaissance d'images.

SmallChess
la source
Je voudrais m'opposer à quelques-unes de ces affirmations: un réseau est généralement considéré comme profond lorsqu'il a plus d'une couche cachée, et la plupart des gens conviendraient qu'avoir plus de 10 couches cachées est définitivement profond. Il est tout à fait possible de former des réseaux profonds sur votre ordinateur portable, je le fais tout le temps. L'ensemble de données ne dispose être énorme, en particulier si vous utilisez l' apprentissage transfert (ie. Couches de réutilisation d'un réseau pré - entraîné), et / ou augmentation des données. Il y a certainement beaucoup de battage médiatique autour du mot «profond», mais il existe des techniques dédiées pour l'apprentissage en profondeur, donc ce n'est pas seulement du battage médiatique. :)
MiniQuark
@MiniQuark Avec l'augmentation des données, votre ensemble de données sera toujours volumineux, juste que vous commencez avec quelque chose de petit ...
SmallChess
Bon point, vous avez raison. Ce que je voulais dire, c'est que l'ensemble de données tiendrait en mémoire puisque vous généreriez la plupart des données à la volée.
MiniQuark