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
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:
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:
- Peut-être qu'un réseau peu profond aurait besoin de plus de neurones que le plus profond?
- 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)?
- 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)?
- 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):
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.]