.. image:: pystat.png :height: 20 :alt: Statistique :target: http://www.xavierdupre.fr/app/ensae_teaching_cs/helpsphinx/td_2a_notions.html#pour-un-profil-plutot-data-scientist .. _l-deep-learning01: Réseaux de neurones et Deep Learning ++++++++++++++++++++++++++++++++++++ Les premiers modèles de *deep learning* sont des réseaux de neurones. Il n'est pas inutile de coder le sien au moins une fois même s'il n'utilise pas de GPU, même s'il sera probablement beaucoup plus lent. :epkg:`TensorFlow` est sans doute le framework le plus utilisé, :epkg:`pytorch` est le plus didactique. Il n'est pas facile de passer de l'un à l'autre ou de convertir ses modèles d'un à l'autre même s'il y a quelques avancées sur le sujet : `Deep Learning Model Convertors `_. * `Introduction au Deep Learning `_ *Notebooks* * :ref:`100LogisticIRISrst` * :ref:`110PerceptronIrisrst` * :ref:`200PerceptronMNISTrst` * :ref:`210ConvolutionMNISTrst` * :ref:`300ConvolutionCIFAR10rst` *Tutorials et anti-sèches* * `Companion Jupyter notebooks for the book "Deep Learning with Python" `_ (avec :epkg:`keras`) * `Keras Tutorial `_ * `Keras Cheat Sheet `_ * `pytorch tutorials `_ (officiel) * `pytorch tutorials `_ (tout en moins de 30 lignes), l'exemple `pytorch basics `_ * `PyTorch Cheat Sheet `_ *Code* * `Implementing a Neural Network from Scratch in Python - An Introduction `_, `notebook `_ * `A Neural Network in 11 lines of Python (Part 1) `_, `A Neural Network in 13 lines of Python (Part 2 - Gradient Descent) `_ * `nimblenet `_ : implémentation de différents algorithmes de back propagation avec `numpy `_) * :ref:`Comparaison de librairies de deep learning ` *Descente de gradient* * `Optimization Methods for Large-Scale Machine Learning `_ * `Diagonal Rescaling For Neural Networks `_ *Lectures* * `Réseau de neurones en maths `_ * `Artificial Intelligence, Revealed (1) `_ : article de blog et vidéos expliquant les différents concepts du deep learning * `Artificial Intelligence, Revealed (2) `_ : quelques reprises de l'article précédent et une idée du future (en 2016) * `DeepMind Publications `_ * `Sequential Neural Models with Stochastic Layers `_ * `Interaction Networks for Learning about Objects, Relations and Physics `_ * `Scaling Memory-Augmented Neural Networks with Sparse Reads and Writes `_ * `Tutoriel pour CNTK `_ * `Adversarially Learned Inference `_ et l'implémentation de la méthode présentée dans l'article avec :epkg:`pytorch` : `ali-pytorch `_. * `The Keras Blog `_ * `Deep Learning Scaling is Predictable, empirically `_ * `Teaching Compositionality to CNNs∗ `_ *Livres* * `Deep Learning `_ de entre autres Yoshua Bengio *Vidéos* * `PyTorch in 5 Minutes `_ * `PyTorch Demystified, Why Did I Switch `_ *Vocabulaire* * `deep learning glossary `_ : termes employés pour le deep learning * `Core Layers `__ : différents traitement pour compenser les défauts des réseaux de neurones lors de l'apprentissage. *MNIST* * La base `MNIST `_ est le premier sujet pour lequel un réseau de neurones profond a été appris. C'est souvent le premier exemple utilisé lors des tutoriels. * `MNIST benchmark `_ * `Handwriten Digits Recognition Using Deep Learning `_ .. image:: mnist_illustration.png :width: 600 *Architectures* * `Tutorial: Learning Deep Architectures `_ * `Convolution (CNN) `_ * `Recurrent (RNN) `_ : séquence labelling, fenêtre glissante dans les images, la sortie du réseau pour l'observations *n-1* est utilisé par le réseau pour l'observation *n* si ces deux observations font partie de la même séquence. * `Auto-Encoder `_ : débruiter, ACP non linéaire * `Long short-term memory (LSTM) `_, voir aussi `Understanding LSTM Networks `_, le modèle est construit afin qu'il puisse prendre en compte un passé de longueur variable. Voir aussi `LSTM `_. *Modules - deep learning* * `Torch `_ et surtout :epkg:`pytorch` dont le design est plus simple que celui des autres. * `Caffee `_ (Berkeley) * :epkg:`CNTK` (Microsoft) * `deeplearning4j `_ * `fastText `_ * `mxnet `_ * `PaddlePaddle `_ (Baidu) * :epkg:`TensorFlow` (Google) *Modules - GPU* * `cupy `_ * `pycuda `_ A noter que `Theano `_ n'est plus maintenu. *Modules - Wrappers* * `Keras `_ ou `chainer `_ implémentent des interfaces communes pour plusieurs librairies de machine learning. * `DeepRosetta `_ : convertisseur (pas vraiment maintenu)