Programmation d'un perceptron multicouche
Frameworks pour le deep learning
1. Historique et panorama
Avec l’essor du deep learning dans les années 2000, plusieurs outils spécialisés ont été développés par le monde académique. Parmi les plus connus on peut citer Theano (2007), développé au MILA (Montreal Institute for Learning Algorithms), PyBrain (2008) de l’université de Munich, ou encore Caffe (2013) créé par l’UC Berkeley en Californie.
Par la suite, plusieurs entreprises de la tech ont proposé leur propre logiciel. En 2015, Microsoft a introduit CNTK (CogNitive ToolKit). Amazon a soutenu activement MXNet, développé par des chercheurs des universités de Washington et de Carnegie Mellon.
Cependant, toutes ces solutions n’ont pas survécu à la concurrence des deux frameworks majeurs actuels : TensorFlow, dévoilé en novembre 2015 par Google, et PyTorch, présenté en 2016 par Facebook (devenu maintenant Meta). Ces ateliers logiciels ont en commun de fonctionner avec le langage Python et d’être disponibles dans les environnements Windows, macOS et Linux. Ils sont disponibles gratuitement (open source), avec des mises à jour régulières qui prennent en compte les dernières découvertes sur l’apprentissage profond.

Page d’accueil de PyTorch (https://pytorch.org)

Page...
Environnement de développement
1. Solution locale ou sur le cloud
Même si TensorFlow/Keras fait partie d’un écosystème, c’est avant tout une bibliothèque de modules écrits en Python. Il faut donc disposer d’un environnement de développement, pour écrire et mettre au point des programmes. Deux approches sont possibles : soit travailler en local sur son ordinateur, soit utiliser les ressources du cloud.
Dans le premier cas, de nombreux ateliers logiciels (IDE - Integrated Development Environment) sont disponibles, parmi lesquels :
-
PyCharm (JetBrains) : https://www.jetbrains.com/fr-fr/pycharm/
-
Visual Studio Code (Microsoft) : https://visualstudio.microsoft.com/fr/
-
Spyder (inclus dans la distribution Anaconda) : https://www.spyder-ide.org/ et https://www.anaconda.com/
Tous ces outils sont disponibles sous Windows, macOS ou Linux. Certaines versions sont payantes, mais il existe également des versions gratuites pour les étudiants/enseignants ou pour évaluation avec des fonctionnalités réduites.
Plusieurs plateformes proposent des services pour travailler sur le cloud, comme :
-
SageMaker AI (Amazon) : https://aws.amazon.com/fr/sagemaker-ai/
-
Azure Machine Learning (Microsoft) : https://azure.microsoft.com/fr-fr/products/machine-learning/
-
Vertex AI (Google) : https://cloud.google.com/vertex-ai
Ces solutions payantes (avec parfois des offres d’essai gratuites) sont destinées à gérer des modèles en production à grande échelle.
Dans son écosystème (cf. chapitre Découverte des réseaux de neurones - Ecosystème associé à TensorFlow), Google propose une plateforme en ligne appelée Colab (abréviation de Google Colaboratory). Elle est destinée aux petits projets et à la formation, pour expérimenter facilement des modèles de deep learning.
Nous avons choisi cet environnement (qui existe en version gratuite) pour développer les exemples traités dans cet ouvrage. Ce choix se justifie car il évite toutes les difficultés liées à la configuration de sa machine : version de Python, liste et versions des modules installés, taille mémoire, type de GPU, etc. Avec Colab, tous les utilisateurs ont accès à la même...
Bibliothèques TensorFlow/Keras
1. Introduction
TensorFlow est un framework complet pour le développement et le déploiement d’applications en machine learning. Le cœur de cet écosystème est une API (Application Programming Interface) avec des bibliothèques de modules spécialisés. Bien qu’également disponible pour d’autres langages comme JavaScript ou C++, la version en Python est la plus complète, et largement la plus utilisée.
Une documentation détaillée est disponible en ligne via le menu API du site www.tensorflow.org :

Accès à la documentation des API de TensorFlow
TensorFlow.js est une API pour les développements web (JavaScript). Elle permet d’exécuter des modèles de machine learning directement dans un navigateur, offrant des avantages en termes de vitesse, de confidentialité et d’accès hors ligne.
TensorFlow Lite est une version allégée de TensorFlow. Elle est spécialement conçue pour fonctionner sur des appareils mobiles, embarqués et IoT (Internet des objets), qui ont des ressources limitées. TensorFlow Lite propose des outils pour optimiser les modèles TensorFlow existants, afin de les rendre plus petits et plus rapides à exécuter sur ces matériels.
TFX (TensorFlow Extended) est une chaîne outillée pour le déploiement en production d’une application de machine learning : gestion et analyse des données, évaluation et déploiement des modèles, etc. TFX est particulièrement utile pour les projets où la reproductibilité et la maintenance sont importantes.
La suite de cet ouvrage est consacrée à la version que nous appellerons « standard », c’est-à-dire l’API Python de TensorFlow, destiné aux ordinateurs personnels et aux serveurs.
2. API TensorFlow
a. Évolution des versions
Depuis son lancement le 9 novembre 2015, TensorFlow est mis à jour plusieurs fois par an. Les évolutions de versions apportent des corrections de bugs, des améliorations de performances mais surtout des enrichissements fonctionnels pour suivre les avancées en machine learning.
Les développeurs ont l’habitude de désigner...
Reconnaissance de chiffres manuscrits
Cet exemple est souvent considéré comme le "Hello world !" du deep learning. C’est le cas d’école que toute personne, qui a été initié aux réseaux de neurones, a nécessairement traité au début de sa formation.
Ce succès est justifié, car c’est une très bonne entrée en matière. Le problème est facile à comprendre, et le niveau de performances élevé des résultats montrent la puissance de la technique. Il sert de point de départ pour aborder ensuite d’autres problématiques plus complexes.
Aussi nous ne dérogerons pas à la règle !
1. Classification d’images de la base MNIST
Le but est d’écrire un programme capable d’identifier sur des images, des chiffres de 0 à 9 représentés en écriture manuscrite.
Le jeu de données à utiliser est une base appelée MNIST (Modified National Institute of Standards and Technology database) constituée de 70 000 images de 28 x 28 pixels en niveaux de gris :

Exemple d’image avec le chiffre 5
Cette base est divisée en deux ensembles : 60 000 images pour l’entraînement et 10 000 pour le test de généralisation. Toutes sont étiquetées, ce qui signifie que les chiffres représentés sont connus. Dans chacun des deux groupes, les dix chiffres sont globalement équitablement répartis.

Organisation de la base MNIST
Pour fixer les idées, voici une reproduction des 1000 premières images de la base d’apprentissage. On peut y constater la forte variabilité dans la calligraphie des écritures manuscrites, ce qui constitue une difficulté majeure pour la reconnaissance.

1000 premières images de la base MNIST
Cette base a été créée dans les années 1990 par Yann Le Cun, Corinna Cortes et Christopher J.C. Burges à partir de la numérisation de formulaires de recensement des États-Unis et de documents de lycées américains. L’objectif était de disposer d’un ensemble de données de référence pour l’entraînement et l’évaluation d’algorithmes...
Conclusion
Ça y est !
À la fin de ce chapitre nous avons écrit notre premier programme de deep learning avec la bibliothèque TensorFlow/Keras. Les premiers résultats sont très prometteurs puisqu’il a suffi à peine d’une quinzaine d’instructions, pour apprendre à reconnaître des chiffres manuscrits… et d’un nombre de lignes de code tout aussi réduit pour exploiter cette capacité de reconnaissance !
Pour en arriver là, nous nous sommes familiarisés tout au long ce chapitre avec les outils de l’apprentissage profond. Après une présentation rapide du framework TensorFlow et de ses concurrents, le choix de l’environnement Colab a été expliqué. Comparé à des outils de développement installés en local sur un ordinateur, son fonctionnement sur le cloud offre plusieurs avantages : besoin de disposer uniquement d’un navigateur internet, administration des versions logicielles par Google, et accès à des puissances de calcul importantes.
L’utilisation de Colab a ensuite été détaillée, depuis la création d’un compte Google jusqu’aux synergies avec Gemini, l’assistant personnel de Google. L’écriture d’un premier notebook a montré la simplicité d’utilisation...