Cours
Le machine learning n’est plus un terme obscur grâce à des plateformes comme DataCamp, Coursera, Udacity, et bien d’autres qui œuvrent pour rendre l’apprentissage du machine learning accessible, flexible et efficace. Grâce à ces environnements, il est aujourd’hui facile de se lancer dans ce domaine avec très peu de prérequis. En revanche, l’expression Automated Machine Learning (AutoML) fait particulièrement parler d’elle sur les forums et sites de référence en science des données. De nombreux acteurs comme Google ou H2O.ai y investissent fortement. Ce sujet reste moins courant que le machine learning au sens large. Après tout, le machine learning traite déjà d’automatisation : la première question qui vient naturellement à l’esprit est donc — « Peut-on aussi automatiser le machine learning lui‑même ? »
Vous trouverez dans ce tutoriel des réponses claires à ce type de questions.
Commençons.
Comprendre un pipeline standard de machine learning
Quand vous abordez un problème en tant que data scientist, votre flux de travail ressemble généralement à ceci :
- Collecte des données
- Prétraitement des données
- Initialisation d’un modèle de machine learning adapté au problème
- Entraînement du modèle
- Test du modèle
- Ajustement des hyperparamètres du modèle
- Nouveau test du modèle
- Communication des résultats
La deuxième étape, le prétraitement des données, est vaste : c’est l’une des phases les plus chronophages du pipeline, et elle englobe de nombreuses sous‑tâches comme le nettoyage, la transformation, la sélection de variables, etc. Les étapes 3 à 7 concernent un seul modèle. Un bon praticien ne s’arrêtera pas là : il testera plusieurs modèles pour comparer les résultats, puis retiendra le plus pertinent. D’où une autre série d’actions très consommatrices de temps : quel modèle choisir ?
La citation suivante sur le débogage en machine learning ne pourrait pas être plus juste, et il est crucial de la garder à l’esprit :
Vous avez maintenant une idée concrète d’une tâche type en ingénierie de machine learning. Au final, vous devrez décider quel modèle est le meilleur pour le problème traité et expliquer pourquoi. Parfois, le nombre de pistes à explorer est énorme alors que l’échéance approche. Vous voyez le tableau ? Poursuivons.
Comment automatiser le pipeline de machine learning ?
Prenons le cas où vous devez identifier le meilleur modèle pour un problème donné, avec beaucoup de possibilités à tester et une date limite serrée.
Dès le début, nous posions la question : « Peut‑on aussi automatiser le machine learning ? » Elle est loin d’être naïve. Sebastian Raschka a même décrit l’AutoML comme « l’automatisation de l’automatisation de l’automatisation ».
Revenez à l’étape n°5 du flux de travail vu plus haut : l’ajustement des hyperparamètres. Imaginons que vos données soient prêtes et que vous initialisiez un classifieur $X$ avec 5 hyperparamètres. Il vous faudra essayer ce même classifieur $X$ avec plusieurs combinaisons d’hyperparamètres — une tâche loin d’être triviale. Pire encore, après de nombreux essais, les résultats ne sont pas au niveau attendu. Vous décidez alors de tester quatre autres classifieurs (chacun avec 6 hyperparamètres). Imaginez le temps nécessaire ! Et si, malgré tout, les performances restent insuffisantes ? L’enquête pour comprendre pourquoi sera, elle aussi, très gourmande en temps.
C’est précisément de ce constat qu’est née l’idée de l’AutoML.
"Si de nombreux modèles de machine learning doivent être construits, en utilisant divers algorithmes et de multiples configurations d’hyperparamètres, alors la construction de ces modèles peut être automatisée, tout comme la comparaison de leurs performances et de leur précision." - KDNuggets
Voilà pourquoi le terme Automated Machine Learning est autant mis en avant aujourd’hui. Passons à une présentation plus détaillée.
Introduction à l’Automated Machine Learning
Le réglage des hyperparamètres pour différents modèles est, par nature, très chronophage. En termes d’informatique, il s’agit d’un processus de recherche qui peut devenir extrêmement exhaustif. Et si ce processus était automatisé ? C’est exactement ce que propose l’AutoML. « L’AutoML répond directement à la pénurie de data scientists en améliorant drastiquement leur performance et leur productivité : cycles de travail accélérés, modèles plus précis et, in fine, remplacement partiel possible de certains besoins. » - Automated Machine Learning for Internet of Things
Vous disposez désormais du contexte nécessaire pour voir l’AutoML à l’œuvre. Avant cela, un tour d’horizon des bibliothèques Python les plus utilisées.
Bibliothèques Python pour l’AutoML
De nombreuses bibliothèques Python permettent de pratiquer l’AutoML. Elles poursuivent toutes un objectif similaire : automatiser le processus de machine learning. Voici quelques‑unes des plus répandues :
Chacune adopte sa propre approche pour « l’automatisation de l’automatisation ». Dans ce tutoriel, vous allez utiliser Auto-Keras. Allons‑y.
Introduction à Auto-Keras
« Auto-Keras est une bibliothèque open source dédiée au machine learning automatisé. »(Source) Elle est développée par le DATA Lab de Texas A&M University et des contributeurs de la communauté. Selon le site officiel d’auto-keras : « L’objectif ultime de cet AutoML est d’offrir des outils de deep learning facilement accessibles aux experts métiers ayant peu de bagage en data science ou en machine learning. Auto-Keras fournit des fonctions pour rechercher automatiquement l’architecture et les hyperparamètres de modèles de deep learning. »

Source : Auto-Keras
Pour installer auto‑keras, exécutez simplement la commande suivante.
Remarque : Auto-Keras est actuellement compatible uniquement avec : Python 3.6.
!pip install autokeras
Une fois l’installation terminée, passons à une mise en pratique rapide.
Étude de cas AutoML avec Auto-Keras
Pour cette étude de cas, vous utiliserez le célèbre jeu de données MNIST. Ce dataset est intégré à keras ; pas besoin de le télécharger séparément. Commencez par charger le module ImageClassifier d’auto-keras et le jeu de données MNIST depuis keras.
from keras.datasets import mnist
from autokeras import ImageClassifier
Vous avez importé MNIST depuis le module keras.datasets et ImageClassifier depuis auto-keras. Séparons maintenant le dataset en jeux d’entraînement et de test.
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(x_train.shape + (1,)) # (1,) indique le canal, qui vaut 1 ici
x_test = x_test.reshape(x_test.shape + (1,)) # (1,) indique le canal, qui vaut 1 ici
Downloading data from https://s3.amazonaws.com/img-datasets/mnist.npz
11493376/11490434 [==============================] - 1s 0us/step
Après séparation des jeux d’entraînement et de test, ajustez l’ImageClassifier avec x_train et y_train, puis mesurez ses performances sur x_test et y_test.
# Instancier la classe ImageClassifier
clf = ImageClassifier(verbose=True, augment=False)
# Entraîner le classifieur sur l'ensemble d'entraînement
clf.fit(x_train, y_train, time_limit=12 * 60 * 60)
clf.final_fit(x_train, y_train, x_test, y_test, retrain=True)
# Résumer les résultats
y = clf.evaluate(x_test, y_test)
print(y * 100)
C’est aussi simple que cela. En 4 à 5 lignes, vous avez un premier essai fonctionnel. En pratique, ce n’est pas si « rapide » : l’exécution prend un temps conséquent. Une configuration matérielle décente pour le deep learning vous aidera nettement. Google Colab est également un excellent point de départ.
Voyons à présent les paramètres utilisés dans le code ci‑dessus, d’après la documentation d’auto-keras :
- Dans ImageClassifier() :
- verbose : booléen indiquant si le processus de recherche doit être affiché en sortie.
- augment : booléen précisant si les données nécessitent une augmentation. Si non défini, la valeur par défaut est Constant.DATA_AUGMENTATION (True).
- Dans la méthode fit() :
- time_limit : limite de temps (en secondes) allouée à la recherche.
- final_fit() : entraînement final après identification de la meilleure architecture.
- retrain : booléen indiquant s’il faut réinitialiser les poids du modèle.
Auto‑Keras est une bibliothèque en évolution, encore en pré‑version. D’après le site officiel, elle prend en charge les modules majeurs suivants :
- supervised : classe de base pour toutes les tâches supervisées.
- bayesian : un GaussianProcessRegressor pour l’optimisation bayésienne.
- search : classe de base de tous les moteurs de recherche de modèles. Chaque moteur peut surcharger sa fonction de recherche pour implémenter sa stratégie.
- graph : classe représentant le graphe d’architecture neuronale d’un modèle Keras. Chaque nœud du graphe est un tenseur intermédiaire entre des couches. Chaque couche est une arête du graphe. Plusieurs arêtes peuvent référer à la même couche (par ex. : une couche Add combine deux tenseurs en un seul et est donc liée à deux arêtes).
- preprocessor : classe de formatage des données, notamment pour transformer des labels de classification en vecteurs.
- model_trainer : classe dédiée à l’entraînement du modèle. Elle peut entraîner un modèle Pytorch à partir de data loaders. La métrique, la fonction de perte et le modèle doivent être compatibles. Voir les détails dans les attributs.
Pour conclure
Bravo d’être allé jusqu’au bout. Vous avez passé en revue le processus général du machine learning et vu comment l’automatiser. Vous avez survolé les bibliothèques disponibles pour faire de l’AutoML. Avec auto-keras, vous avez découvert le niveau d’abstraction proposé et la simplicité d’usage.
Vous pourriez craindre que l’AutoML remplace des data scientists une fois pleinement abouti. Vraiment ? Réfléchissez‑y à deux fois. L’AutoML libère surtout les data scientists de la lourdeur itérative liée au choix du « meilleur modèle ». Ils peuvent ainsi se concentrer davantage sur la donnée elle‑même, ce qui est essentiel. Cette interview de Randy Olson offre d’excellents éclairages à ce sujet. Prenez le temps de la lire : vous retrouverez la motivation. Et si vous doutez du travail réel d’un praticien du machine learning, jetez un œil à cet article.
Le domaine de l’AutoML progresse vite. Par exemple, NAS (Neural Architecture Search) désigne des algorithmes qui recherchent automatiquement la meilleure architecture de réseau de neurones. Voici quelques ressources illustrant des cas d’usage à l’état de l’art :
- Design by Evolution: How to evolve your neural network with AutoML
- AutoML Challenge: A leap forward for machine learning competitions
- Google’s AI can create better machine-learning code than the researchers who made it
- Auto-Keras, or How You can Create a Deep Learning Model in 4 Lines of Code
Références :
- Auto-Keras, or How You can Create a Deep Learning Model in 4 Lines of Code
- AutoKeras: The Killer of Google’s AutoML
Pour aller plus loin en deep learning, suivez le cours « Deep Learning in Python » de DataCamp et consultez notre cours Introduction to Deep Learning in Python.