Les fondamentaux du Deep learning avec R
Objectifs pédagogiques
- Comprendre et savoir mettre en œuvre les réseaux de neurones denses (DNN), à l’aide de l’algorithme de rétro-propagation (backpropagation)
- Comprendre et savoir mettre en œuvre les réseaux de neurones convolutifs (CNN) et le transfer learning
- Comprendre et savoir mettre en œuvre les réseaux de neurones récurrents (RNN)
- Comprendre et savoir mettre en œuvre les autoencoders (AE)
Programme détaillé
Réseaux de neurones denses – DNN 4h
- Neurone formel
- Perceptron multicouches (MLP)
- Fonctions d’activation
- Algorithme de retro-propagation
- Applications sur cas pratiques
Considérations informatiques 2h
- Frameworks TensorFlow, Keras et PyTorch
- GPU & cloud computing
Réseaux de neurones convolutifs – CNN 4h
- Convolution
- Architectures classiques de CNN
- Transfer learning
- Applications sur cas pratiques
Réseaux de neurones récurrents – RNN 4h
- Neurone récurrent
- Cellule récurrente
- LSTM
- Applications sur cas pratiques
Autoencoders – AE 3h
- Architecture
- Applications sur cas pratiques
Introduction aux modèles GAN 1h
Public visé
Data scientists
Prérequis
- Connaissances avancées en Machine learning (formation Machine learning : bagging, gradient boosting, SVM avec R).
- Connaissances intermédiaires du logiciel R (formation R intermédiaire)
Approche pédagogique
Deep learning en R : keras3 ou torch ?
Aucun des grands frameworks de deep learning n’est écrit en R : les calculs reposent sur des bibliothèques C++ et CUDA développées d’abord pour Python. R y accède par deux voies, qui calculent la même chose mais ne demandent pas la même installation.
keras3 : R pilote Keras installé en Python
Le package keras, publié par RStudio en 2017, puis keras3, sur le CRAN depuis février 2024 pour suivre Keras 3, sont des interfaces : par l’intermédiaire du package reticulate, le code R pilote une installation Python de Keras. Sur les chiffres manuscrits MNIST (images de 28 × 28 pixels aplaties en vecteurs de 784 valeurs, étiquettes codées par to_categorical()), un perceptron multicouche s’écrit ainsi :
library(keras3)
modele <- keras_model_sequential(input_shape = c(784)) |>
layer_dense(units = 128, activation = "relu") |>
layer_dropout(rate = 0.3) |>
layer_dense(units = 10, activation = "softmax")
modele |> compile(loss = "categorical_crossentropy", optimizer = "adam", metrics = "accuracy")
historique <- modele |> fit(x_train, y_train, epochs = 10, batch_size = 128, validation_split = 0.2)
La syntaxe est celle de Keras en Python, traduite avec le pipe de R. Comme Keras 3, keras3 peut s’appuyer sur plusieurs moteurs de calcul : TensorFlow par défaut, mais aussi JAX ou PyTorch (use_backend()). install_keras() crée l’environnement Python nécessaire, avec prise en charge du GPU s’il en détecte un.
torch : du deep learning sans Python
Le package torch, présenté le 29 septembre 2020, a fait un autre choix : il s’appuie directement sur libtorch, la bibliothèque C++ qui fait tourner PyTorch, sans passer par Python. Les couches, les fonctions d’activation et les optimiseurs sont réécrits en R ; install.packages("torch") télécharge ensuite libtorch, en version CPU ou GPU. Le code est plus proche de PyTorch : plus verbeux pour un réseau standard, plus souple pour une architecture sur mesure, et il n’y a qu’un seul langage à installer et maintenir en production.
Pourquoi le GPU
Entraîner un réseau revient pour l’essentiel à enchaîner des produits de matrices, que les milliers de cœurs d’une carte graphique exécutent en parallèle. En pratique, l’installation des pilotes CUDA est l’écueil le plus fréquent ; les GPU loués à l’heure dans le cloud permettent de s’en dispenser.
La référence pour la voie keras3 est Deep Learning with R (2e édition, Manning, 2022), de François Chollet, Tomasz Kalinowski et J.J. Allaire. L’histoire des architectures au programme, du perceptron aux réseaux convolutifs et récurrents, est retracée dans le bloc de la formation Les fondamentaux du Deep learning avec Python.