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?)
la source
Réponses:
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 :
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
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:
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:
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:
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):
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? :
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.]
la source
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.
la source
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 :
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 .
la source
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".
la source
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.
la source
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.
la source
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.
la source
NN:
DNN:
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:
la source
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).
la source
Source: Arno Candel
la source