Il est dit dans Wikipedia et deeplearning4j que les NN d'apprentissage en profondeur (DLNN) sont des NN qui ont> 1 couche cachée.
Ce type de NN était standard à l'université pour moi, alors que DLNN est très excité en ce moment. Été là, fait ça - quel est le problème?
J'ai également entendu dire que le NN empilé est considéré comme un apprentissage en profondeur. Comment le deep-learning est-il vraiment défini?
Mon expérience en NN est principalement universitaire, pas professionnelle:
- a étudié les applications du NN dans l'industrie
- avait environ 5 cours sur artif. intel. & mach. apprendre. - mais peut-être 2 d'entre eux sur NN
- NN utilisé pour un petit projet simple sur la reconnaissance d'image - NN à 3 couches à action directe
- n'a pas fait de véritable recherche (comme dans la thèse de doctorat) sur eux
neural-network
deep-learning
Make42
la source
la source
Réponses:
Vous avez raison en ce que le concept de base d'un NN profond n'a pas changé depuis 2012. Mais il y a eu une variété d'améliorations dans la façon dont les NN profonds sont formés qui les ont rendus qualitativement plus puissants. Il existe également une plus grande variété d'architectures disponibles aujourd'hui. J'ai énuméré quelques développements depuis 2012, regroupés par améliorations de formation et améliorations d'architecture:
Améliorations de la formation des NN profonds
Matériel : Le changement le plus évident n'est que la progression inexorable de la loi de Moore. Il y a plus de puissance de calcul disponible aujourd'hui. Le cloud computing permet également aux gens de former facilement de grands NN sans avoir besoin d'acheter une énorme plate-forme.
Logiciel : Le logiciel open source pour l'apprentissage en profondeur est vraiment énormément amélioré depuis 2012. En 2012, il y avait Theano, peut-être Caffe aussi. Je suis sûr qu'il y en a d'autres aussi. Mais aujourd'hui, nous avons également TensorFlow, Torch, Paddle et CNTK, qui sont tous pris en charge par de grandes entreprises technologiques. Ceci est étroitement lié à la puce matérielle, car bon nombre de ces plates-formes facilitent la formation sur les GPU, ce qui accélère considérablement le temps de formation.
Fonctions d'activation : L'utilisation des fonctions d'activation ReLU est probablement plus répandue de nos jours, ce qui facilite la formation de réseaux très profonds. Du côté de la recherche, il y a une plus grande variété de fonctions d'activation à l'étude, y compris Relu qui fuit , Relu paramétrique et unités MaxOut .
Algorithmes d'optimisation : il existe aujourd'hui plus d'algorithmes d'optimisation. Adagrad et Adadelta viennent d'être introduits respectivement en 2011 et 2012. Mais nous avons maintenant également l' optimiseur Adam et c'est devenu un choix très populaire.
Abandon : au cours des dernières années, l' abandon est devenu un outil standard de régularisation lors de la formation de réseaux de neurones. Le décrochage est une forme d'assemblage peu coûteuse en calcul pour les NN. En général, un ensemble de modèles formés sur des échantillons aléatoires de l'ensemble de données surclassera un modèle unique formé sur l'ensemble de données. Ceci est difficile à faire explicitement pour les NN car ils sont si chers à former. Mais un effet similaire peut être approximé simplement en «éteignant» au hasard les neurones à chaque étape. Différents sous-graphiques dans le NN finissent par être formés sur différents ensembles de données et apprennent ainsi différentes choses. Comme l'assemblage, cela tend à rendre le NN global plus robuste au sur-ajustement. Le décrochage est une technique simple qui semble améliorer les performances dans presque tous les cas.
Normalisation des lots : On sait depuis un certain temps que les NN s'entraînent mieux sur les données normalisées --- c'est-à-dire qu'il n'y a pas de moyenne et de variance unitaire. Dans un réseau très profond, au fur et à mesure que les données traversent chaque couche, les entrées seront transformées et dériveront généralement vers une distribution qui n'a pas cette belle propriété normalisée. Cela rend l'apprentissage dans ces couches plus profondes plus difficile car, de son point de vue, ses entrées n'ont pas de moyenne et de variance unitaire nulle. La moyenne pourrait être très grande et la variance pourrait être très petite. La normalisation par lots résout ce problème en transformant les entrées en une couche pour avoir une variance moyenne et unitaire nulle. Cela semble être extrêmement efficace pour entraîner des NN très profonds.
Théorie : Jusqu'à très récemment, on pensait que la raison pour laquelle les NN profonds sont difficiles à former est que les algorithmes d'optimisation sont coincés dans les minima locaux et ont du mal à sortir et à trouver des minima globaux. Au cours des quatre dernières années, un certain nombre d'études semblent indiquer que cette intuition était erronée (par exemple, Goodfellow et al. 2014). Dans l'espace de paramètres dimensionnels très élevé d'un NN profond, les minima locaux ont tendance à ne pas être bien pires que les minima globaux. Le problème est en fait que lors de l'entraînement, le NN peut se retrouver sur un plateau long et large. De plus, ces plateaux peuvent se terminer brutalement dans une falaise abrupte. Si le NN fait de petits pas, cela prend beaucoup de temps pour apprendre. Mais si les marches sont trop grandes, elle rencontre un énorme gradient lorsqu'elle se heurte à la falaise, ce qui annule tous les travaux antérieurs. (Cela peut être évité avec l'écrêtage en dégradé, une autre innovation post-2012.)
De nouvelles architectures
Réseaux résiduels : les chercheurs ont pu former des réseaux incroyablement profonds (plus de 1000 couches!) En utilisant des réseaux résiduels . L'idée ici est que chaque couche reçoit non seulement la sortie de la couche précédente, mais également l'entrée d'origine. S'il est correctement formé, cela encourage chaque couche à apprendre quelque chose de différent des couches précédentes, de sorte que chaque couche supplémentaire ajoute des informations.
Réseaux larges et profonds : les réseaux larges et peu profonds ont tendance à simplement mémoriser la correspondance entre leurs entrées et leurs sorties. Les réseaux profonds se généralisent beaucoup mieux. Habituellement, vous voulez une bonne généralisation, mais il existe certaines situations, comme les systèmes de recommandation, dans lesquelles une simple mémorisation sans généralisation est également importante. Dans ces cas, vous souhaitez fournir de bonnes solutions de fond lorsqu'un utilisateur effectue une requête générale, mais des solutions très précises lorsque l'utilisateur effectue une requête très spécifique. Des réseaux étendus et profonds sont en mesure de remplir cette tâche de manière satisfaisante.
Machine de turing neurale : Une lacune des NN récurrents traditionnels (qu'ils soient le RNN standard ou quelque chose de plus sophistiqué comme un LSTM) est que leur mémoire est quelque peu "intuitive". Ils parviennent à se souvenir des entrées passées en enregistrant les activations de couche cachées qu'ils produisent dans le futur. Cependant, il est parfois plus judicieux de stocker explicitement certaines données. (Cela pourrait être la différence entre écrire un numéro de téléphone sur un morceau de papier et se souvenir que le numéro avait environ 7 chiffres et qu'il y avait quelques 3 dedans et peut-être un tiret quelque part au milieu.) La machine neurale de Turingest un moyen d'essayer de résoudre ce problème. L'idée est que le réseau peut apprendre à valider explicitement certains faits dans une banque de mémoire. Ce n'est pas simple à faire car les algorithmes backprop nécessitent des fonctions différenciables, mais la validation d'une donnée dans une adresse mémoire est une opération intrinsèquement discrète. Par conséquent, les machines neurales de Turing contournent cela en engageant un peu de données dans une distribution d'adresses mémoire différentes. Ces architectures ne semblent pas encore très bien fonctionner, mais l'idée est très importante. Une variante de ceux-ci deviendra probablement répandue à l'avenir.
Réseaux contradictoires génératifs : les GAN sont une idée très excitante qui semble déjà avoir beaucoup d'utilité pratique. L'idée ici est de former deux NN simultanément: celui qui essaie de générer des échantillons à partir de la distribution de probabilité sous-jacente (un générateur), et celui qui essaie de faire la distinction entre les points de données réels et les faux points de données générés par le générateur (un discriminateur). Ainsi, par exemple, si votre jeu de données est une collection d' images de chambres, le générateur tentera de créer ses propres photos de chambres et le discriminateur tentera de déterminer s'il regarde de vraies photos de chambres ou de fausses photos de chambres. En fin de compte, vous avez deux NN très utiles: un qui est vraiment bon pour classer les images comme étant des chambres ou non des chambres, et un qui est vraiment bon pour générer des images réalistes des chambres.
la source
L'apprentissage en profondeur (et en particulier les réseaux de neurones alambiqués profonds) est très populaire en ce moment en raison d'améliorations récentes et substantielles dans divers défis de vision industrielle / détection d'objets. Les couvents profonds en particulier ont été utilisés pour réduire les erreurs de classification d'ImageNet de 28% en 2010 à 7% en 2014. L'apprentissage profond est certainement sur-typé mais cela ne devrait pas nuire au fait qu'il y a eu des améliorations significatives dans le domaine de la vision industrielle.
la source
Une question similaire a été posée sur CV: différence entre réseau neuronal et apprentissage en profondeur :
FYI: Dans quelle mesure cette diapositive sur l'apprentissage profond est-elle vraie, affirmant que toutes les améliorations des années 1980 ne sont dues qu'à beaucoup plus de données et à des ordinateurs beaucoup plus rapides?
la source