Quelle est la différence entre un réseau de neurones et un réseau de neurones profonds, et pourquoi les réseaux profonds fonctionnent-ils mieux?


114

Je n'ai pas vu la question posée précisément en ces termes, et c'est pourquoi je pose une nouvelle question.

Ce qui m'intéresse, ce n'est pas la définition d'un réseau de neurones, mais la différence réelle avec un réseau de neurones profonds.

Pour plus de contexte: je sais ce qu'est un réseau de neurones et comment fonctionne la rétropropagation. Je sais qu'un DNN doit avoir plusieurs couches cachées. Cependant, il y a 10 ans en classe, j'ai appris qu'avoir plusieurs couches ou une couche (sans compter les couches d'entrée et de sortie) était équivalent en termes de fonctions qu'un réseau de neurones est capable de représenter (voir le théorème d'approximation universelle de Cybenko ). plusieurs couches rendent l'analyse plus complexe sans gain de performances. De toute évidence, ce n'est plus le cas.

Je suppose, peut-être à tort, que les différences concernent l'algorithme d'apprentissage et les propriétés plutôt que la structure. J'apprécierais donc vraiment si la réponse pouvait souligner les raisons qui ont rendu possible le passage à DNN (par exemple, preuve mathématique ou jeu aléatoire avec les réseaux). ?) et souhaitable (par exemple, vitesse de convergence?)



Si la fonction que vous souhaitez approximer est une fonction de composition (courante dans le traitement d'images et dans de nombreux domaines naturels en raison de la loi de la physique). Il peut être prouvé que les réseaux profonds peuvent exploiter cette compositionnalité et atteindre le même niveau d'erreur d'approximation avec un nombre exponentiellement inférieur de neurones (par rapport à un réseau à couche cachée unique). Réf.: Poggio, Tomaso et al. "Pourquoi et quand les réseaux profonds mais non superficiels peuvent-ils éviter la malédiction de la dimensionnalité: un examen." Journal international de l'automatisation et de l'informatique (2017)
DataHungry

Vous voudrez peut-être jeter un oeil sur cet article
agcala

Réponses:


152

Commençons par un détail: le réseau de neurones profonds est simplement un réseau à anticipation avec de nombreuses couches cachées.

C'est à peu près tout ce qu'il y a à dire sur la définition. Les réseaux de neurones peuvent être récurrents ou anticipés; ceux qui en sont prédisposés n’ont pas de boucles dans leur graphique et peuvent être organisés en couches. S'il y a "beaucoup" de couches, on dit alors que le réseau est profond .

Combien de couches un réseau doit-il avoir pour être qualifié de profond? Il n’ya pas de réponse définitive à cette question (c’est un peu comme demander combien de grains font un tas ), mais le fait d’avoir au moins deux couches cachées compte pour une profondeur. En revanche, un réseau avec une seule couche cachée est conventionnellement appelé "peu profond". Je soupçonne qu'il y aura une certaine inflation ici et que dans dix ans, les gens pourraient penser que tout ce qui compte moins de, par exemple, dix couches est superficiel et convient uniquement aux exercices de jardin d'enfants. De manière informelle, "profond" suggère que le réseau est difficile à gérer.

Voici une illustration, adaptée de ici :

Réseau de neurones profonds et non profonds

Mais la vraie question que vous posez est, bien sûr, pourquoi avoir plusieurs couches serait-il bénéfique?

Je pense que la réponse un peu étonnante est que personne ne le sait vraiment. Je vais brièvement passer en revue quelques explications communes ci-dessous, mais aucune d’entre elles n’a été démontrée de manière convaincante, et on ne peut même pas être sûr que le fait d’avoir plusieurs couches est vraiment bénéfique.

Je dis que c'est étonnant, parce que l'apprentissage en profondeur est très populaire, bat tous les records (de la reconnaissance d'image à la lecture en passant par Go, à la traduction automatique, etc.) chaque année, est utilisé par l'industrie, etc. etc. Et nous ne sommes pas encore tout à fait sûr pourquoi cela fonctionne si bien.

Je me base sur le livre Deep Learning de Goodfellow, Bengio et Courville, paru en 2017 et largement considéré comme le livre sur l’apprentissage en profondeur. (Il est disponible gratuitement en ligne.) La section pertinente est 6.4.1 Propriétés et profondeur approximatives universelles .

Tu as écrit ça

Il y a 10 ans en classe, j'ai appris qu'avoir plusieurs couches ou une couche (sans compter les couches d'entrée et de sortie) était équivalent en termes de fonctions qu'un réseau de neurones est capable de représenter [...]

Vous devez faire référence au soi-disant théorème d'approximation universelle , prouvé par Cybenko en 1989 et généralisé par diverses personnes dans les années 1990. En gros, un réseau de neurones peu profond (avec une couche cachée) peut s'approcher de n'importe quelle fonction, c'est-à-dire qu'il peut en principe tout apprendre . Ceci est vrai pour diverses fonctions d'activation non linéaires, y compris les unités linéaires rectifiées que la plupart des réseaux de neurones utilisent aujourd'hui (le manuel cite Leshno et al. 1993 pour ce résultat).

Si oui, alors pourquoi tout le monde utilise-t-il des filets profonds?

Eh bien, une réponse naïve est qu’ils fonctionnent mieux. Voici une figure du livre Deep Learning montrant qu'il est utile d'avoir plus de couches dans une tâche particulière, mais le même phénomène est souvent observé dans plusieurs tâches et domaines:

Plus de couches c'est bien

Nous savons qu'un réseau peu profond peut être aussi performant que les réseaux les plus profonds. Mais ce n'est pas le cas. et ils ne le font généralement pas. La question est --- pourquoi? Des réponses possibles:

  1. Peut-être qu'un réseau peu profond aurait besoin de plus de neurones que le plus profond?
  2. Peut-être qu’un réseau peu profond est plus difficile à maîtriser avec nos algorithmes actuels (par exemple, il a des minima locaux plus vicieux, ou le taux de convergence est plus lent, ou peu importe)?
  3. Peut-être qu'une architecture superficielle ne correspond pas au type de problèmes que nous essayons généralement de résoudre (par exemple, la reconnaissance d'objet est un processus hiérarchique "profond" par excellence)?
  4. Autre chose?

Le livre Deep Learning plaide pour les points n ° 1 et n ° 3. Premièrement, il fait valoir que le nombre d'unités dans un réseau peu profond augmente de manière exponentielle avec la complexité de la tâche. Donc, pour être utile, un réseau peu profond peut avoir besoin d'être très grand; peut-être beaucoup plus grand qu'un réseau profond. Ceci est basé sur un certain nombre de papiers prouvant que les réseaux peu profonds auraient dans certains cas besoin de manière exponentielle de nombreux neurones; mais si par exemple la classification MNIST ou jouer sont de tels cas n'est pas vraiment clair. Deuxièmement, le livre dit ceci:

Le choix d'un modèle profond correspond à une conviction très générale selon laquelle la fonction que nous souhaitons apprendre devrait comporter la composition de plusieurs fonctions plus simples. Cela peut être interprété du point de vue de l’apprentissage par la représentation: cela signifie que nous pensons que le problème de l’apprentissage consiste à découvrir un ensemble de facteurs de variation sous-jacents qui peuvent à leur tour être décrits en termes d’autres facteurs de variation sous-jacents plus simples.

Je pense que le "consensus" actuel est que c'est une combinaison des points n ° 1 et n ° 3: pour des tâches du monde réel, une architecture profonde est souvent bénéfique et une architecture peu profonde serait inefficace et nécessiterait beaucoup plus de neurones pour une même performance.

Mais c'est loin d'être prouvé. Prenons l'exemple de Zagoruyko et Komodakis, 2016, Wide Residual Networks . Des réseaux résiduels de plus de 150 couches sont apparus en 2015 et ont remporté divers concours de reconnaissance d'images. Ce fut un grand succès et ressemblait à un argument convaincant en faveur de la profondeur. Voici un chiffre tiré d' une présentation du premier auteur sur le papier résiduel du réseau (notez que le temps passe ici à confusion):

réseaux résiduels profonds

Mais le document lié ci-dessus montre qu'un réseau "large" résiduel avec "seulement" 16 couches peut surpasser les réseaux "profonds" avec plus de 150 couches. Si cela est vrai, alors le point entier de la figure ci-dessus s'effondre.

Ou considérez Ba et Caruana, 2014, Les filets profonds ont-ils vraiment besoin d'être profonds? :

Dans cet article, nous fournissons des preuves empiriques que les filets peu profonds sont capables d’apprendre la même fonction que les filets profonds et, dans certains cas, avec le même nombre de paramètres que les filets profonds. Pour ce faire, nous formons d’abord un modèle profond de pointe, puis un modèle superficiel pour imiter le modèle profond. Le modèle mimique est entraîné à l'aide du schéma de compression du modèle décrit dans la section suivante. Remarquablement, avec la compression de modèle, nous pouvons entraîner des filets peu profonds pour qu'ils soient aussi précis que certains modèles profonds, même si nous ne sommes pas en mesure de former ces filets peu profonds pour être aussi précis que les filets profonds lorsque les filets peu profonds sont entraînés directement sur le filtre d'origine. données d'entraînement étiquetées. Si un filet peu profond avec le même nombre de paramètres qu'un filet profond peut apprendre à imiter un filet profond avec une haute fidélité,

Si cela est vrai, cela voudrait dire que l'explication correcte est plutôt ma puce n ° 2, et non n ° 1 ou n ° 3.

Comme je l'ai dit - personne ne le sait vraiment pour le moment.


Remarques finales

La quantité de progrès réalisés dans l'apprentissage en profondeur au cours des 10 dernières années est vraiment incroyable, mais la plupart de ces progrès ont été réalisés par essais et erreurs, et nous manquons encore de compréhension de base sur ce qui fait exactement fonctionner les moustiquaires en profondeur. Même la liste des choses que les gens considèrent cruciales pour la mise en place d'un réseau profond efficace semble changer tous les deux ans.

La renaissance d' apprentissage profond a commencé en 2006 , lorsque Geoffrey Hinton (qui travaillait sur les réseaux de neurones depuis plus de 20 ans sans grand intérêt de tout le monde) a publié quelques documents d'avant - garde offrant un moyen efficace de former des réseaux profonds ( article paru dans Science , papier de calcul Neural ) . L'astuce consistait à utiliser un pré-entraînement non supervisé avant de commencer la descente du gradient. Ces documents ont révolutionné le domaine et pendant quelques années, les gens ont pensé que la formation préalable non supervisée était la clé.

Puis en 2010, Martens a montré que les réseaux de neurones profonds peuvent être formés à l'aide de méthodes de second ordre (dites méthodes sans Hessian) et peuvent surperformer les réseaux formés avec une formation préalable: Apprentissage en profondeur via une optimisation sans Hessian . Puis en 2013, Sutskever et al. a montré que la descente de gradient stochastique avec quelques astuces très astucieuses peut surpasser les méthodes sans hesse: sur l’importance de l’initialisation et de l’élan dans l’apprentissage en profondeur . En outre, vers 2010, les gens se sont rendus compte que l'utilisation d'unités linéaires rectifiées au lieu d'unités sigmoïdes avait un impact considérable sur la descente de gradient. Les abandons sont apparus en 2014. Les réseaux résiduels sont apparus en 2015. Les gens continuent à proposer de plus en plus de moyens efficaces pour former des réseauxCe qui semblait être une idée clé il y a 10 ans est souvent considéré comme une nuisance aujourd'hui. Tout cela repose en grande partie sur des essais et des erreurs et on comprend mal ce qui fait que certaines choses fonctionnent si bien et d’autres non. La formation de réseaux profonds est comme un gros sac à malice. Les trucs qui réussissent sont généralement rationalisés post factum.

Nous ne savons même pas pourquoi les réseaux profonds atteignent un plateau de performances; 10 ans seulement, les gens blâmaient les minima locaux, mais l’opinion actuelle est qu’il n’ya pas lieu de le dire (lorsque les plateaux de performance se modifient, les gradients ont tendance à rester importants). C'est une question fondamentale sur les réseaux profonds, et nous ne savons même pas ce .

Mise à jour: C'est plus ou moins le sujet de la conférence NIPS 2017 d'Ali Rahimi sur l'apprentissage machine en alchimie: https://www.youtube.com/watch?v=Qi1Yry33TQE .


[Cette réponse a été entièrement réécrite en avril 2017, de sorte que certains des commentaires ci-dessous ne s'appliquent plus.]


2
Bonne réponse! 1) Comme mentionné également par @Nicolas, il s'avère qu'il existe un théorème ( en.wikipedia.org/wiki/Universal_approximation_theorem ) qui prétend qu'un réseau de neurones à feed-forward avec une seule couche cachée et un nombre fini de neurones peut approcher toute fonction continue (y compris un DNN) sur l'hypercube de l'unité. Ce résultat est considéré comme indépendant du choix de la fonction d'activation. 2) Je ne suis pas sûr que votre dernière remarque (c.-à-d. Que Hinton ait rejoint Google) soit pertinente pour le succès récent des DNN. Hinton a rejoint Google longtemps après l'épidémie de DNN!
Sobi

4
Peut-être que nous utilisons la terminologie différemment. Les perceptrons n'ont pas de couche cachée - leur entrée est des données, leur sortie est la classification. Un réseau multicouche est constitué d’un groupe de perceptrons câblés ensemble de sorte que la sortie de la couche constitue l’entrée de la couche . Un réseau avec une seule couche masquée comporte donc trois couches (entrée, masqué, sortie). Cette couche cachée est la clé de l'approximation universelle: les perceptrons, qui en manquent, ne peuvent pas calculer des choses comme XOR, contrairement aux réseaux multicouches. nn1n
Matt Krause

2
La linéarité semble être une combinaison de deux problèmes. Les perceptrons ne peuvent calculer que les limites de décision linéaires - ils ne peuvent que tracer des lignes droites pour diviser deux classes. Les réseaux multicouches peuvent "tracer" des limites plus complexes. Mais ni les perceptrons ni les réseaux multicouches n’utilisent des fonctions d’activation linéaires, sauf dans la couche de sortie d’un réseau multicouche. La fonction d'activation du perceptron est un heaviside (1 si x> 0, sinon 0); Les réseaux multicouches utilisent souvent sigmoids, mais les contraintes pour l’approximation universelle. sont assez doux: non constants, bornés et en augmentation monotone.
Matt Krause

2
@ amoeba excellente réponse, la photo au début m'a un peu découragée de lire le reste, mais c'était pour le mieux. Le perceptron est la contrepartie de la régression linéaire pour la classification. C'est pourquoi, lorsque les gens utilisent la solution de forme fermée (pseudo-inverse) pour résoudre le problème au lieu des méthodes en ligne (sgd), on l'appelle régression logistique, en raison de la logistique (fonction sigmoïde) = perceptron. Une régression logistique / perceptron ne peut que «tracer» des limites de décision linéaires et c'est pourquoi elle est appelée linéaire.
shuriken x blue

2
Cependant, le perceptron multicouche (ce que vous avez dessiné dans votre première image à gauche) peut combiner plusieurs limites de décision linéaires et peut donc partitionner l'espace pour résoudre le problème (non linéaire) XOR tel que mentionné par @Matt. Ainsi, de nombreuses limites de décision linéaires combinées peuvent former un cercle, par exemple, si vous plissez les yeux. Cela dépend de votre façon de penser - la décision est toujours linéaire dans un espace plus haut, si vous êtes familier avec les noyaux, c'est un peu la même chose.
shuriken x blue

8

Bonne réponse jusqu'à présent, bien que personne ne mentionne personne ici, voici mon 0.02 $

Je vais juste répondre sous la forme d'une histoire, devrait rendre les choses plus amusantes et claires. Pas de tldr ici. Ce faisant, vous devriez pouvoir comprendre quelle est la différence.

Les raisons pour lesquelles les DNN se sont déclenchées sont multiples (les étoiles doivent s’aligner, comme toutes choses similaires, c’est juste la question du bon endroit, du bon moment, etc.).

Une des raisons est la disponibilité des données, beaucoup de données (données étiquetées). Si vous voulez être en mesure de généraliser et d'apprendre quelque chose comme les "a priori génériques" ou les "a priori universels" (autrement dit, les blocs de construction de base pouvant être réutilisés entre tâches / applications), vous avez besoin de beaucoup de données. Et des données sauvages, pourrais-je ajouter, ne sont pas des ensembles de données stériles soigneusement enregistrés dans le laboratoire avec un éclairage contrôlé, etc. Mechanical Turk a rendu cela possible (étiquetage).

Deuxièmement, la possibilité de former plus rapidement des réseaux plus importants à l’aide de processeurs graphiques a accéléré l’expérimentation. Les unités ReLU accéléraient également les calculs et fournissaient leur régularisation, car il fallait utiliser plus d'unités dans une couche pour pouvoir compresser les mêmes informations, car les couches étaient désormais plus clairsemées. En outre, ils ont aidé à résoudre un problème important qui se produit lorsque vous empilez plusieurs couches. Plus à ce sujet plus tard. Diverses astuces multiples qui ont amélioré les performances. Par exemple, l'utilisation de mini-lots (ce qui est en fait préjudiciable à l'erreur finale) ou de convolutions (qui ne captent pas autant de variance que les champs récepteurs locaux) mais sont plus rapides en termes de calcul.

Entre-temps, les gens se demandaient s'ils préféraient des postes plus maigres ou plus potelés, plus petits ou plus grands, avec ou sans taches de rousseur, etc. et la méthode newtons, finalement ils se sont tous rendu compte qu’il n’y avait pas de repas gratuit. Les réseaux ronflaient.

Ce qui a ralenti les choses, c’est le problème du gradient en voie de disparition . Les gens allaient comme: whoa, c'est loin, mec! En un mot, cela signifie qu’il était difficile de régler l’erreur sur les couches les plus proches des entrées. Lorsque vous ajoutez plus de couches sur le gâteau, cela devient trop instable. Vous ne pouvez pas propager en retour une erreur significative vers les premières couches. Plus il y avait de couches, plus c'était pire. Bummer.

Certaines personnes ont compris que l'utilisation de l'entropie croisée en tant que fonction de perte (encore une fois, classification et reconnaissance d'image) fournit une sorte de régularisation et permet d'éviter la saturation du réseau, ce qui empêche le dégradé de se cacher.

Ce qui a également rendu les choses possibles, c’est le pré-entraînement par couche utilisant des méthodes non supervisées. En gros, vous prenez un tas d’encodeurs automatiques et apprenez des représentations de moins en moins abstraites à mesure que vous augmentez le taux de compression. Les poids de ces réseaux ont été utilisés pour initialiser la version supervisée. Cela a résolu le problème du gradient disparaissant d'une autre manière: vous démarrez déjà un entraînement supervisé à partir d'une position de départ bien meilleure. Alors tous les autres réseaux se sont levés et ont commencé à se révolter. Mais les réseaux avaient quand même besoin de supervision, sinon il était impossible de conserver les données massives.

Maintenant, pour la dernière partie, cela conduit finalement à votre réponse, qui est trop complexe pour être résumée: pourquoi plus de calques et pas un seul. Parce que nous pouvons! et parce que les descripteurs de contexte et de caractéristiques invariantes. et des piscines.

Voici un exemple: vous avez un ensemble d’images, comment allez-vous former un plan NN avec ces données? Eh bien, naïvement, vous prenez, disons, chaque ligne et vous le concaténez en un long vecteur et c’est votre contribution. Qu'apprenez-vous? Eh bien, certaines fonctions absurdes floues pourraient ne ressembler à rien, en raison des nombreux types de variances que les objets de l'image contiennent et vous ne pouvez pas faire la distinction entre les choses pertinentes et non pertinentes. Et à un moment donné, le réseau doit oublier de pouvoir réapprendre de nouvelles choses. Donc, il y a le problème de capacité. Il s’agit d’une dynamique plus non linéaire, mais l’intuition est que vous devez augmenter le nombre de neurones pour pouvoir inclure davantage d’informations dans votre réseau.

Le fait est que si vous ne saisissez que l'image en une seule pièce, l'ajout de calques supplémentaires ne fait pas grand chose pour vous, car vous ne pouvez pas apprendre les abstractions , ce qui est très important. Faire des choses de manière globale ne fonctionne donc pas très bien, à moins de faire des choses plus simples avec le réseau, comme se concentrer sur un type d'objet spécifique, vous vous limitez donc à une classe et vous choisissez des propriétés globales comme objectif de classification.

Alors qu'est-ce qu'il y a à faire? Regardez le bord de votre écran et essayez de lire ce texte. Problème? Aussi stupide que cela puisse paraître, vous devez regarder ce que vous lisez. Sinon, c'est trop flou / il n'y a pas assez de résolution / granularité. Appelons la zone ciblée le champ réceptif. Les réseaux doivent également pouvoir se concentrer. Fondamentalement, au lieu d'utiliser toute l'image en tant qu'entrée, vous déplacez une fenêtre glissante le long de l'image, puis vous l'utilisez en tant qu'entrée sur le réseau (un peu moins stochastique que ce que font les humains). Maintenant, vous avez également une chance de capturer des corrélations entre les pixels et donc les objets et vous pouvez également faire la distinction entre un chat endormi assis sur un canapé et un saut à l'élastique pour chat à l'envers. Neat, la foi en l'humanité restaurée. Le réseau peut apprendre des abstractions locales dans une image à plusieurs niveaux. Le réseau apprend les filtres,

Donc, pour résumer, champs / convolutions réceptifs, initialisation non supervisée, unités linéaires redressées, abandon ou autres méthodes de régularisation. Si vous êtes très sérieux à ce sujet, je vous recommande de jeter un coup d'œil à L' approfondissement de l'apprentissage de Schmidhuber dans les réseaux de neurones: vue d'ensemble, voici l'URL de la pré-impression http://arxiv.org/abs/1404.7828

Et rappelez-vous: grand apprentissage, données profondes. Mot.


Bonjour Florin, merci pour cette belle réponse! J'aime le style d'écriture. Lorsque vous parlez de fenêtres glissantes, parlez-vous de la façon dont les couches convolutionnelles de NN convolutionnelles observent différentes parties d’une image et projettent leurs activations sur un espace de dimension inférieure?
Nicolas

à peu près oui, les convolutions ne sont pas nécessaires, mais elles sont plus rapides en calcul, car les poids sont limités. consultez ce papier où ils n'utilisent pas de convolutions et n'utilisent pas de champs de réception locaux. les mots-clés importants sont local / hiérarchique: arxiv.org/pdf/1112.6209.pdf
shuriken x blue

Je pense aussi que la réponse systématique la plus proche est celle du sobi. il a mon vote positif. Je viens d'ajouter quelques petites choses ici et là avec un peu de sel et de poivre.
shuriken x blue

6

En termes simples, la principale différence avec les réseaux de neurones classiques est qu'ils ont beaucoup plus de couches cachées.

L'idée est d'ajouter des étiquettes aux couches pour créer plusieurs couches d'abstraction:

Par exemple, un réseau de neurones profonds pour la reconnaissance d'objets :

  • Couche 1: pixels simples
  • Couche 2: Bords
  • Couche 3: Formes (cercles, carrés)
  • Couche n: objet entier

Vous pouvez trouver une bonne explication à cette question dans Quora .

Et, si vous êtes intéressé par ce sujet, je vous conseillerais de jeter un coup d'œil à ce livre .


1
Merci David, mais je ne vois pas vraiment comment ajouter des étiquettes pour que ce soit différent. Je me souviens également que c’était un problème difficile à comprendre et à décomposer comment une fonction était encodée par le réseau neuronal. Il doit y avoir autre chose que simplement avoir plus de couches. En ce qui concerne l’exemple que vous avez donné, je pense que vous pouvez former individuellement des réseaux de neurones à l’ancienne école pour effectuer chacune de ces tâches.
Nicolas

L'alimentation vient lorsque vous l'utilisez comme un pipeline. Ainsi, les entrées et les sorties des couches se superposent à chaque couche.
David Gasquez

J'ai lu votre premier lien, qui est une bonne ressource, ainsi que d'autres questions connexes sur quora and se, mais l'exemple que vous avez donné ne semble pas correspondre à ce que j'ai lu. Je vais essayer de répondre à ma propre question en résumant ces lectures.
Nicolas

2
Bien que la ressource pointée soit intéressante, la réponse actuelle ne répond pas à la question.
Nicolas

Pouvez-vous citer un exemple où les couches sont étiquetées (autrement que de manière purement descriptive)? Il est certainement vrai que les couches cachées semblent comporter successivement des caractéristiques plus complexes dans chaque couche cachée, mais "ajouter des étiquettes" semble impliquer qu'elles sont spécifiquement formées à cette tâche.
Matt Krause

2

J'ai également été un peu confus au début par la différence entre les réseaux de neurones (NN) et les réseaux de neurones profonds (DNN). Cependant, la "profondeur" ne fait malheureusement référence qu'au nombre de paramètres et de couches. Vous pouvez le prendre comme une sorte de re-marque sous la soi-disant «mafia canadienne».

Il y a plusieurs années, j'avais également intégré les réseaux de neurones à un cours. Nous utilisions NN pour la reconnaissance des chiffres, l'approximation des vagues et autres applications similaires, avec plusieurs couches et sorties cachées et tout le jazz que possède le DNN. Cependant, ce que nous n'avions pas alors était la puissance de calcul.

La progression vers le développement de DNN a été rendue possible et souhaitable par la progression du développement du matériel. En termes simples, nous pouvons maintenant calculer plus, plus rapidement et plus parallèlement (DNN sur les GPU), alors qu'avant, le temps était le goulot d'étranglement pour les NN.

Comme indiqué sur la page de Wikipédia pour Deep Learning , la partie "profonde" fait principalement référence à la possibilité d'interagir de manière non linéaire entre des entités sur plusieurs couches, ce qui permet l'extraction et la transformation des entités. Cela a également été fait dans les réseaux normaux standard, mais à une plus petite échelle.

Sur la même page, vous avez ici la définition "Un réseau de neurones profonds (DNN) est un réseau de neurones artificiel (ANN) avec plusieurs couches cachées d'unités entre les couches d'entrée et de sortie".


Bonjour Mttk, merci pour votre réponse, cela a jeté plus de lumière sur cette question. En ce qui concerne votre dernier point, oui, structuraly est très facile à expliquer la différence (1 vs plusieurs couches), mais la différence dans la façon dont ces couches multiples sont utilisées semble être ce qui compte et qui est beaucoup moins claire. C'est pourquoi j'ai concentré la question non sur la structure.
Nicolas

Honnêtement, je ne suis pas d'accord avec la dernière définition à laquelle j'ai fait référence - ANN / NN avec une couche cachée n'étant pas vraiment efficace, et vous aviez besoin de plusieurs prédictions plus complexes (je dis cela parce que je pense que DNN était un mot à la mode inutile ajouté à un terme déjà bien choisi, NN). Je pense que vous pouvez utiliser NN et DNN de manière interchangeable (car de nos jours, personne n'utilise de NN à couche cachée), alors que l'utilisation des couches diffère selon les types de DNN (CNN, RBM, RNN, LSTM, CW-RNN, ...). et pas l'idée de DNN elle-même.
Mttk

2

Autant que je sache, ce que l'on appelle le réseau de neurones profonds (DNN) n'a aujourd'hui rien de fondamentalement ou philosophiquement différent de l'ancien réseau de neurones (NN) standard. Bien que, en théorie, on puisse approcher un NN arbitraire en utilisant un NN peu profond avec une seule couche cachée, cela ne signifie toutefois pas que les deux réseaux fonctionneront de la même manière s'ils sont formés à l'aide du même algorithme et des mêmes données d'apprentissage. En fait, il existe un intérêt croissant pour la formation de réseaux peu profonds ayant des performances similaires à celles des réseaux profonds. Pour ce faire, il faut d'abord former un réseau approfondi, puis former un réseau peu profond pour imiterla sortie finale (c'est-à-dire la sortie de l'avant-dernière couche) du réseau profond. Vous voyez, ce qui rend les architectures profondes favorables, c’est que les techniques d’entraînement actuelles (propagation arrière) fonctionnent mieux lorsque les neurones sont disposés dans une structure hiérarchique.

Une autre question que l'on peut se poser est la suivante: pourquoi les réseaux de neurones (DNN en particulier) sont-ils soudainement devenus si populaires? À ma connaissance, les ingrédients magiques qui ont récemment rendu les DNN si populaires sont les suivants:

A. Jeux de données et capacités de traitement de données améliorés

1. Des jeux de données à grande échelle avec des millions d'images diverses sont disponibles

2. La mise en œuvre rapide du processeur graphique a été mise à la disposition du public

B. Algorithmes de formation et architectures de réseau améliorés

1. Unités linéaires rectifiées (ReLU) au lieu de sigmoïde ou tanh

2. Les architectures de réseau profondes ont évolué au fil des ans


A-1) Jusqu'à tout récemment, du moins dans Computer Vision, nous ne pouvions pas former de modèles sur des millions d'images étiquetées. tout simplement parce que les jeux de données étiquetés de cette taille n'existaient pas. Il s'avère que, outre le nombre d'images, la granularité du jeu d'étiquettes est également un facteur très important du succès des DNN (voir la figure 8 de cet article , de Azizpour et al.).

A-2) De nombreux efforts d'ingénierie ont été déployés pour permettre de former des DNN qui fonctionnent bien dans la pratique, notamment l'avènement des implémentations de GPU. L'une des premières implémentations réussies de DNN sur GPU, s'exécute sur deux GPU parallèles; Cependant, il faut environ une semaine pour former un DNN sur 1,2 million d'images de 1 000 catégories à l'aide de GPU haut de gamme (voir cet article, de Krizhevsky et al.).

B-1) L'utilisation de simples unités linéaires rectifiées (ReLU) au lieu de fonctions sigmoïdes et tanh est probablement le plus important élément constitutif de la formation possible des DNN. Notez que les fonctions sigmoïde et tanh ont un gradient presque nul presque partout, en fonction de la vitesse à laquelle elles transitent du niveau d'activation faible au plus élevé; dans le cas extrême, lorsque la transition est soudaine, nous obtenons une fonction de pas qui a une pente nulle partout sauf à un point où la transition se produit.

B-2) L'histoire de la façon dont les architectures de réseaux de neurones ont évolué au fil des ans me rappelle comment l'évolution change la nature de la structure d'un organisme. Le partage des paramètres (par exemple dans les couches convolutives), la régularisation des abandons, l’initialisation, la planification du taux d’apprentissage, la mutualisation spatiale, le sous-échantillonnage dans les couches plus profondes et de nombreuses autres astuces désormais considérées comme standard dans la formation des années pour rendre possible la formation des réseaux profonds telle qu’elle est aujourd’hui.


3
+1 La première réponse dans ce fil qui fournit une réponse adéquate aux questions du PO. Beaucoup de bons points ici. Mon seul commentaire majeur serait qu’en plus de vos A et B, il ya aussi C: Augmentation massive de la taille des jeux de données d’entraînement disponibles. Cela semble être au moins aussi important que A et B.
amibe

1
Je ne pense pas que la confiance soit si importante: le journal Alex krizhevsky affirmait que cela permettait d’apprendre à apprendre 6 fois plus vite. La plupart des autres changements de structure de réseau que vous avez mentionnés concernent les réseaux de points d'accès convolutionnels, qui copient simplement les pipelines de traitement d'images standard (bonne chose, mais pas de nouvelles idées)
seanv507

1
@ amoeba: la taille de l'ensemble de données est sous A. J'ai mis à jour le texte pour le mettre en surbrillance.
Sobi

@ seanv507: en effet, j'avais à l'esprit les réseaux de convolution (ConvNets) lors de la rédaction de la réponse. S'il y a d'autres facteurs importants (non liés à ConvNets) que j'ai manqués, je vous en serais reconnaissant. Je serais heureux de mettre à jour ma réponse en conséquence. En ce qui concerne les ReLU, les entraînements avec bronzage et sigmoïde sont considérablement plus difficiles que pour les ReLU en raison du problème des gradients évanescents: les unités sont facilement saturées et, une fois que cela se produit, il faut longtemps pour qu'elles redeviennent non saturées (les gradients sont très faibles est saturé)
Sobi

2

La différence entre un NN "Deep" et un NN standard est purement qualitative: il n’existe pas de définition de ce que "Deep" signifie. "Profondeur" peut signifier n'importe quoi des architectures extrêmement sophistiquées utilisées par Google, Facebook et compagnie qui ont 50-80 couches ou plus, jusqu'à 2 architectures cachées (total de 4 couches). Je ne serais pas surpris si vous pouviez même trouver des articles prétendant apprendre en profondeur avec une seule couche cachée, car «profond» ne veut pas dire grand chose.

"Réseau de neurones" est également un mot qui n'a pas de signification précise. Il couvre un ensemble extrêmement vaste de modèles, des machines boltzman aléatoires (qui sont des graphes non orientés) aux architectures à anticipation avec diverses fonctions d'activation. La plupart des NN seront formés à l'aide de backprop, mais ce n'est pas nécessairement le cas, même les algorithmes d'apprentissage ne sont pas très homogènes.

Dans l’ensemble, l’apprentissage en profondeur, les NN profonds et les NN profonds sont tous devenus des mots géniaux qui capturent une multitude d’approches.

Pour de bonnes références introductives à «Ce qui a changé»: Apprendre en profondeur des représentations: regarder de l'avant , Bengio, 2013 est un bon bilan + une perspective pour l'avenir. Voir également Est-ce que les filets profonds ont vraiment besoin d'être profonds? Ba & Caruana, 2013, qui illustrent qu'être très profond peut ne pas être utile pour la représentation mais pour l'apprentissage.


Les références que vous donnez sont très utiles, mais le reste de la réponse dans le formulaire actuel ("NN ne veut rien dire, DNN ne veut rien dire, NN et DNN peuvent faire beaucoup de choses") vous envisagez de le réviser?
Nicolas

1

Pour approfondir la réponse de David Gasquez, l'une des principales différences entre les réseaux de neurones profonds et les réseaux de neurones traditionnels est que nous n'utilisons pas uniquement la rétropropagation pour les réseaux neuronaux profonds.

Pourquoi? Parce que la rétropropagation entraîne plus efficacement les couches ultérieures que les couches précédentes - au fur et à mesure que vous avancez dans le réseau, les erreurs deviennent plus petites et plus diffuses. Ainsi, un réseau à dix couches sera constitué de sept couches de poids aléatoires, suivies de trois couches de poids ajustés, et fera aussi bien qu'un réseau à trois couches. Voir ici pour plus.

La percée conceptuelle consiste donc à traiter les problèmes distincts (les couches étiquetées) comme des problèmes distincts - si nous essayons d'abord de résoudre le problème de la construction d'une première couche génériquement bonne, puis de résoudre le problème de la construction d'une deuxième couche génériquement bonne, nous aurons éventuellement un espace de fonctionnalités approfondi que nous pourrons intégrer à notre problème actuel.


1

NN:

  • une couche cachée est suffisante mais peut néanmoins avoir plusieurs couches, ordre de gauche à droite (modèle: feed forward NN)
  • formé seulement de manière supervisée (backpropagation)
  • lorsque plusieurs couches sont utilisées, entraînent toutes les couches en même temps (même algorithme: rétropropagation), plus le nombre de couches est difficile à utiliser, les erreurs deviennent trop petites
  • difficile de comprendre ce qui est appris à chaque couche

DNN:

  • plusieurs couches sont requises, bords non orientés (modèle: machine boltzman restreinte)
  • d'abord formés de manière non supervisée, où les réseaux apprennent les caractéristiques pertinentes en apprenant à reproduire ses entrées, puis formés de manière supervisée, qui les affine afin de les classer
  • former les couches une par une de la couche d'entrée à la couche de sortie (algorithme: divergence contrastive)
  • chaque couche contient clairement des caractéristiques d'abstraction croissante

Le passage à DNN est dû à trois avancées indépendantes survenues en 2006.

En ce qui concerne les théorèmes sur NN, celui auquel la question fait allusion est:

  • théorème d'approximation universel ou théorème de Cybenko: un réseau neuronal à feed-forward avec une seule couche cachée peut approcher toute fonction continue. Cependant, dans la pratique, l'utilisation d'une seule couche cachée peut nécessiter beaucoup plus de neurones.

2
-1? Vraiment? J'ai lu tout cela dans la littérature et fait une comparaison point par point des deux approches! Veuillez au moins préciser ce qui n’est pas correct ...
Nicolas

3
Je n'ai pas voté par voix basse (peut-être qu'un votant n'aimait pas que vous répondiez à votre propre question? Mais c'est parfaitement parfait ici), mais voici une chose qui n'est pas tout à fait correcte. Ce que vous nommez comme propriétés de DNN: les contours ne sont pas orientés, ils sont d'abord formés de manière non supervisée, les couches sont formées une à une - tout cela ne fait référence qu'aux réseaux de croyances profonds suggérés par Hinton en 2006. Ce n'est pas nécessairement vrai pour les réseaux de neurones profonds en général et en fait, il existe maintenant de nombreuses façons de former un réseau profond sans tout cela. Voir ma réponse.
amibe

1

O(n)

Je pense que vous devriez prendre du recul et voir que cela a créé une recrudescence de l'IA peu profonde - par exemple, un sac de mots pour l'analyse des sentiments et d'autres applications langagières. Personne ne dit que le mot de mots est un véritable modèle de langage, mais c'est une solution technique efficace. Donc, je dirais que DNN est un meilleur "sac visuel de mots" - voir par exemple Szegedy et al. 2013 Propriétés intrigantes des réseaux de neurones et Nguyen et al. Les réseaux neuronaux profonds sont facilement trompés: prédictions de confiance élevée pour des images non reconnaissables lorsqu'il est clair qu'il n'y a pas de structures d'ordre supérieur, etc. en cours d'apprentissage (ou tout ce qui est revendiqué pour DNN).


@ amoeba, cet autre papier est presque un document de compagnon pour le premier (encore une fois avec beaucoup d'images!)
seanv507

0

Deep Learning est un ensemble d'algorithmes d'apprentissage automatique visant à modéliser des abstractions de haut niveau dans des données à l'aide d'architectures composées de multiples transformations non linéaires .

Source: Arno Candel

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.