Toutes les ressources pour comprendre le Deep Learning en 6 minutes

Rédigé par David Roman, Consultant informatique et web marketing.



Le Deep Learning est un domaine en pleine croissance à l’intersection des mathématiques et de l’informatique. Ce vaste domaine est relativement nouveau et s’incorpore dans ce qu’on appelle le Machine Learning. Ce dernier étant plus vaste. Le but du Machine Learning est d’apprendre à un système à effectuer des tâches en fonction de données fournies. On va essayer de voir l’ensemble des ressources nécessaires pour se lancer et comprendre le Deep Learning. Ces dernières années, on a vu tout ce domaine grossir à une vitesse hallucinante ! Cette énorme guide a pour but de vous aider à TOUT savoir par les MEILLEURS du domaine. Il y a des vidéos, des exemples visuels, du code, des Frameworks, des explications complètes, des livres et cas concrets. L’ensemble de ces ressources ont fait mon éducation sur ce sujet bien vaste. Bien sûr, il y a encore énormément de choses, mais je dois me limiter à certaines ressources cruciales !


digital-ressources-learning


Pré-requis



Avant de vous plonger tête baissée dans le sujet, vous devez avoir un niveau universitaire en mathématique. Je vous conseille ce livre sur le Deep Learning. Pour la partie programmation, je vous conseille d’apprendre ou de bien connaître Python. Voici 2 gros tutoriels pour vous aider à introduire la majorité des concepts (ces deux ressources sont assez “classiques”, cela ne m’étonnerait pas que vous puissiez les revoir souvent) :

Récemment, Amazon Web Service a décidé d’adopter MXNet comme base de Framework pour les accompagner dans la structuration d’infrastructures dédiées au Deep Learning & Machine Learning. Allez jeter un coup d’oeil ici une fois que vous aurez compris un peu tout !

Prenez le temps de vous familiariser avec l’ensemble des concepts et Frameworks qui peuvent exister. Ces Frameworks vous fourniront les fonctions nécessaires, classes et modules pour du Machine Learning et du Deep Learning. Pour en apprendre plus sur les réseaux neuraux et la base en maths, Hugo Larochelle peut vous aider à en apprendre plus. Son cours en ligne, uploadé sur YouTube est accessible si vous connaissez la base ! Regardez la vidéo.



Si cela vous dit d’en apprendre plus sur la reconnaissance visuelle, l’université de Standford a mis un cours en ligne centré sur le traitement de l’image, mais couvre l’ensemble des concepts clés du Deep Learning.

Enfin, pour faciliter l’apprentissage du Deep Learning et des réseaux neuraux, je vous conseille de fabuleux livres en ligne de Michael Nielsen qui, je l’espère, vous aidera à parfaire votre compréhension du sujet.

Les bases des Réseaux Neuraux



Les réseaux neuraux (NN) sont la base des algorithmes du ML et la forme la plus simple du Deep Learning (DP). Pour commencer, je vous conseille de voir cette interaction visuelle qui montre comment un simple NN peut traiter de la régression linéaire.

L’apprentissage d’un NN peut s’avérer complexe si on n’est pas préparé. Le nourrir avec plein de données s’avère fastidieux. Continuez avec les vidéos d’Hugo pour aller un peu plus loin. Enfin pour continuer, revenez sur la 4ème et 5ième vidéo afin de bien assimiler le concept de rétropropagation.



Le sujet étant vaste, la rétropropagation est expliquée “simplement” sur cet article Medium de Andrej Karpathy, avec un peu de code Python pour améliorer votre pratique !

Les calculs en plus et un peu théoriques, sur le blog de Colah qui explique ici le comment du pourquoi.

Enfin, pour pouvoir un peu jouer avec un outil visuel. Tensorflow a sorti un petit outil de représentation d’un NN pour montrer la classification de celui-ci. Have fun here !


Améliorer l’apprentissage d’un NN



Ce n’est vraiment pas facile d’entraîner des NN, soit ils n’apprennent pas du tout soit ils apprennent uniquement ce qu’on leur donne et leur connaissance ne se généralise pas à de nouvelles données … Heureusement, il existe des manières de régler ce problème ! On fait un retour sur les vidéos de Hugo Larochelle (décidément, il est partout) qui vous explique le concept de régularisation.



Ainsi qu’un lien vers le Deep Learning pour le concept du Dropout.



Comme nos données ne sont généralement pas ce qu’il faut pour notre NN, voici une vidéo explicative pour paramétrer vos données et vos pertes.



Pour s’amuser avec une démo en ligne avec un peu de code, Stanford vous a préparé une démo sur un benchmark.

Il y a plein de Frameworks qui fournissent des algorithmes standards ou optimisés. La plupart sont en Python, à l’exception de Torch qui nécessite Lua. Le tout est de comprendre comment ces algorithmes d’apprentissage sont implémentés sous le capot, ensuite il est temps de sortir du cadre et de commencer à construire !

Voici une petite liste des Frameworks :

Les bases du Machine Learning



Le Machine Learning est l’art de l’apprentissage par les données. C’est un domaine clé entre l’informatique et les mathématiques, alors que le Deep Learning n’est qu’un sous-domaine de celui-ci. Les concepts et outils du Machine Learning sont ultra nécessaire et important pour la compréhension du Deep Learning. Certains algorithmes de Machine Learning sont implémentés dans une librairie nommé Scikit-learn, en Python. Refaire from scratch aide énormément à comprendre le fonctionnement du ML.

Pour améliorer votre compréhension, je vous conseille de lire et d’admirer cette introduction au ML. C’est beau, c’est simple et ça vous aidera à vraiment comprendre les concepts clé juste en scrollant !

Pour continuer, voici une petite playlist à regarder avec attention. On y voit des modèles l’entraînement ou l’apprentissage, de la classification linéaire, ainsi que de l’optimisation.



Si vous êtes en thèse et que vous devez aller bien plus loin dans le sujet, voici un gros livre qui peut vous éclairer sur les bases COMPLÈTES. Il y a tout, mais vraiment tout ! Cela peut aider à finir à remplir les trous dans votre thèse ou à comprendre en profondeur le Machine Learning et ses bases.

Réseaux de neurones convolutionnels (CNN)



Les réseaux convolutionnels («CNN») sont un type spécial de réseaux neuronaux qui utilisent plusieurs astuces pour apprendre plus vite. Les ConvNets ont essentiellement révolutionné la vision par ordinateur et sont fortement utilisés dans la reconnaissance de la parole et la classification des textes. Cette partie commence à être vraiment plus dur que les précédentes.

Vidéo explicative, du maintenant familier Hugo LaRochelle qui explique le “Computer Vision” par rapport à du CNN.



Suivi d’une introduction au CNN vous permettant de mieux comprendre les bases. Regardez les vidéos : 6, 7, 8, 9 et 13.



Pour clamer les esprits, et montrer à ceux qui veulent juste comprendre de manière générale, voici une version visuelle de ces algorithmes.

Suivi d’une version un peu plus technique de Stanford sur le reconnaissance d’image.

Pour améliorer votre implémentation et compréhension, il faut parfois voir les choses d’une autre perspective. Colah explique assez simplement comment sont organisées les CNN ou encore ici.

La même chose adaptée au NLP (Natural Language Processing).

Il est évident de comprendre maintenant qu’il est compliqué de tout ré-implémenter tout seul. Je vous conseille très très fortement d’utiliser des librairies. Concernant le CNN, voici par Framework des liens qui peuvent vous aider à l’implémenter :

Theano



Tensorflow



Torch



Réseaux de neurones récurrents (RNN)


De loin mes préférés, ils sont utilisés pour des séquences sur de la classification de phrases, de parole, mais aussi pour de la génération de texte ou d’images. L’efficience des RNN dans le cadre de la génération de texte expliqué par Andrej Karpthy. Leur puissance semble déraisonnable et donne des résultats très impressionnants !

À ce moment-là, je vous conseille de retourner sur les vidéo de Hugo Larochelle qui reste de loin ma référence !

Puis, sautez sur la vidéo de Richard Socher sur les RNN.


Colah a fait un article sur les RNN, très visuel et toujours aussi simple d’accès !

Enfin, pour les plus curieux d’entre vous, un chapitre complet sur les RNN dans le DeepLearningBook.

Leur implémentation dans les Frameworks est déjà faite, vous pouvez déjà les utiliser sans problèmes !

Theano



Tensorflow



Torch


Le sujet est vaste et mériterait encore de nombreux liens à parcourir ! Oui, il existe d’autres algorithmes, d’autres techniques, mais ici on a vu les principaux et les plus importants !

Le Deep Learning est un domaine ultra actif. Il faut lire plein d’articles, de conférences et de vidéos. Je vais vous partager une astuce pour être tenu au courant avant tout le monde des nouvelles techniques dans pleins de domaines y compris le Deep Learning, ML et NN. Allez fréquemment sur arxiv.org pour voir les abstracts des chercheurs. Parfois, les plus courageux d’entre nous tentent de reproduire ces papiers sur des dépôts GitHub parce que nos chercheurs ne publient généralement pas de code …

Il faut parfois 2 ou 3 ans avant qu’on voit apparaître un article de blog sur le sujet et encore un peu plus pour des formations et tutoriaux de bonne qualité ! Le mieux est de s’auto-former, en apprendre le plus possible, bien connaître la théorie et la pratique. Après quoi, seuls le temps et votre ingéniosité feront la différence !




Rédigé par David Roman
Follow me on Medium