Comment les Data Scientist de demain construiront leurs algorithmes de Deep Learning ? Comment réaliseront-ils le preprocessing dans un futur proche ? Une réponse simple : AutoKeras.
Dans cet article je vous propose d’explorer la librairie AutoKeras qui permet de faire du Deep Learning avec seulement 3 lignes de codes. Mais surtout d’obtenir des résultats remarquable en peu de temps !
Un peu de biblio avant tout… AutoKeras a été développé en 2018 par DATA Lab à la Texas A&M University.
Et maintenant, voyons comment utiliser cette merveille !
Comprendre AutoKeras
AutoKeras c’est quoi ?
AutoKeras est une librairie pour automatiser le Deep Learning.
En fait, AutoKeras fait partie de ce qu’on appelle l’AutoML, l’Automatisation du Machine Learning. Cette librairie permet de construire des modèles de Deep Learning sans avoir besoin d’implémenter soi-même l’architecture.
AutoKeras se charge seul de choisir la structure des couches, le nombre de neurones et même les autres hyperparamètres tel que les fonctions d’optimisation et de perte.
Pour les initiés du Machine Learning classique (avec scikit-learn par exemple), AutoKeras est assez similaire au GridSearch mais en beaucoup plus puissant.
Effectivement, AutoKeras cherche la meilleure configuration d’hyperparamètres, mais aussi la meilleure structure pour réaliser sa tâche (prédiction, détection, etc).
Il va alors tester plusieurs types de modèle pour au final ne garder que le meilleur, celui qui réalise la tâche le plus efficacement.
Ce n’est pas tout ! En plus de choisir un modèle à votre place, AutoKeras s’occupe aussi du preprocessing des données.
Vous avez bien entendu ! Que ça soit des données chiffres, texte ou images AutoKeras fait tout, tout seul !
Il suffit juste de choisir le type de problème à résoudre et d’entraîner ses données : 2 lignes de codes.
Et ce même si vous avez des tableaux avec des données de différents types. Un tableau avec du texte et des chiffres par exemple (classique pour un format excel). Il suffit d’indiquer les données d’entraînement et AutoKeras s’occupe du reste !
Une fois que vous avez fait réaliser votre tâche, vous pouvez de récupérer les résultats du Deep Learning vous pouvez même récupérer le meilleur modèle pour l’utiliser dans un autre programme comme un modèle TensorFlow / Keras classique.
Les possibilités
J’ai parlé, plus haut, de choisir le type de problème à résoudre. Les initiés du Deep Learning savent déjà que la structure d’un modèle de Deep Learning ne sera pas la même selon si l’on doit prédire la météo de la semaine prochaine ou bien si l’on doit détecter un object sur une image.
Eh bien, cette tâche à résoudre est l’une des seules choses à spécifier à AutoKeras.
Vous avez le choix entre :
- Classification d’images – ak.ImageClassifier()
- Régression d’images- ak.ImageRegressor()
- Classification de texte- ak.TextClassifier()
- Régression de textes- ak.TextRegressor()
- Classification des données structurées- ak.StructuredDataClassifier()
- Régression de données structurées- ak.StructuredDataRegressor()
- Multi-modal (différent type de donnée : texte, chiffre, images, …) et multi-tâche – ak.AutoModel()
Les limites
AutoKeras réalise toutes ces tâches et en plus de cela, le fait avec de hautes performances. J’ai ainsi pu me placer à la 188ème place de la compétition Natural Language Processing with Disaster Tweets Kaggle en seulement quelques lignes de codes. Je vous détaille ce code dans la partie suivante !
Avant cela, il faut néanmoins préciser certains inconvénients.
Bien qu’AutoKeras soit très performant cela ne veut pas dire que c’est une panacée.
J’ai pu tester cette librairie sur différents problèmes et pour certains comme la regression linéaire (par exemple : prédire les futurs prix de biens immobiliers) un Random Forest classique a été plus efficace que la solution proposée par AutoKeras.
AutoKeras n’est donc pas une solution miracle, nous devons ainsi garder en tête la règle de base du Machine Learning : expérimenter !
Mon conseil si vous êtes débutant dans le Machine Learning est de ne pas utiliser cette librairie. AutoKeras permet effectivement d’avoir des résultats rapides et efficaces mais lorsqu’on étudie le Machine Learning l’important n’est pas d’avoir un bon résultat mais d’avoir une bonne compréhension de ce qui se passe.
AutoKeras a tendance a cacher les rouages du Deep Learning alors qu’un débutant a besoin de savoir comment fonctionne un modèle et comprendre ses mécanismes.
Au fait, si ton objectif est d'apprendre le Deep Learning - j’ai préparé pour toi le Plan d’action pour Maîtriser les Réseaux de neurones.
7 jours de conseils gratuits d’un ingénieur spécialisé en Intelligence Artificielle pour apprendre à maîtriser les réseaux de neurones à partir de zéro :
- Planifie ton apprentissage
- Structure tes projets
- Développe tes algorithmes d’Intelligence Artificielle
J’ai basé ce programme sur des faits scientifiques, des approches éprouvées par des chercheurs mais également mes propres techniques que j'ai conçues au fil de mes expériences dans le domaine du Deep Learning.
Pour y accéder, clique ici :
À présent, on peut revenir à ce que je mentionnais précédemment.
Si vous ne connaissez pas encore bien le Deep Learning je vous recommande vivement de l’étudier pour tirer pleinement partie des possibilités qui s’offre à vous, par exemple dans cet article où l’on vous présente les bases pour faire de la classification binaire en NLP !
Utiliser AutoKeras
Charger les données
Dans ce programme, on va se servir d’AutoKeras pour faire de la Classification de Texte. Pour cela, on utilise les données de la compétition Kaggle Natural Language Processing with Disaster Tweets.
L’objectif est de classifier des tweets : parlent-ils de catastrophes entrain de se passer ou bien de la vie de tous les jours ?
Notre algorithmes de Deep Learning devra en décider par lui-même !
Ici on a donc des données textes à classifier en 1 (catastrophe) ou en 0 (vie quotidienne).
On commence par importer les librairies de base pour faire du Machine Learning :
- numpy
- pandas
import numpy as np
import pandas as pd
On importe les tweets qui se trouvent au format CSV sur Github à cette adresse.
!git clone https://github.com/tkeldenich/AutoKeras_BinaryClassification_DisasterTweet.git
Ensuite on charge les données de train et de test.
Ici, une différence par rapport à d’habitude, pour utiliser AutoKeras nous devons transformer notre liste de tweet en array numpy, pour cela on utilise la fonction to_numpy().
train_data = pd.read_csv('/content/train.csv', index_col = 'id')
train_data = train_data.reset_index(drop = True)
X_train = train_data[['text']].to_numpy()
y_train = train_data[['target']].to_numpy()
test_data = pd.read_csv('/content/test.csv')
test_id = test_data[['id']]
X_test = test_data[['text']].to_numpy()
On peut vérifier que nos données sont bien sous forme d’array numpy :
X_train
Modèle AutoKeras
Pour utiliser AutoKeras la première chose à faire est d’installer la librairie sur notre serveur, soit directement dans notre Notebook Google Colab :
!pip install autokeras
Soit sur notre terminal :
pip install autokeras
On importe ensuite la librairie.
import autokeras as ak
La partie intéressante commence ! On veut faire de la classification de texte, on utilise donc la fonction TextClassifier() de AutoKeras.
Cette fonction possède un paramètre principale : max_trials.
max_trials permet de déterminer le nombre de modèle que AutoKeras va tester avant de choisir le meilleur d’entre eux.
D’autres paramètres existe que vous pouvez consulter sur la documentation.
clf = ak.TextClassifier(max_trials=1)
Puis, on entraîne notre modèle !
clf.fit(X_train, y_train, validation_split = 0.2, epochs=4)
Simple, rapide, efficace… que demande le peuple ?
On réalise ensuite notre prédiction.
prediction = clf.predict(X_test)
Trois lignes de code pour réaliser le preprocessing, l’entraînement et la prédiction. On peut difficilement faire mieux !
Et pour exporter le modèle et le réutiliser ailleurs, voilà la marche à suivre :
model = clf.export_model()
try:
model.save("model_autokeras", save_format="tf")
except Exception:
model.save("model_autokeras.h5")
Ainsi que les étapes pour réutiliser ce modèle exporter :
loaded_model = load_model("model_autokeras", custom_objects=ak.CUSTOM_OBJECTS)
prediction = loaded_model.predict(X_test)
Et voilà, nous avons vu la base d’AutoKeras et il ne vous reste plus qu’à l’utiliser à votre guise.
N’hésitez pas à faire un tour sur la documentation d’AutoKeras pour en apprendre plus.
Cette librairie est un petit bijoux et n’annonce que du bon pour le futur du Machine Learning ! 😉
Photo by Joshua Sortino on Unsplash
Un dernier mot, si tu veux aller plus loin et apprendre le Deep Learning - j’ai préparé pour toi le Plan d’action pour Maîtriser les Réseaux de neurones.
7 jours de conseils gratuits d’un ingénieur spécialisé en Intelligence Artificielle pour apprendre à maîtriser les réseaux de neurones à partir de zéro :
- Planifie ton apprentissage
- Structure tes projets
- Développe tes algorithmes d’Intelligence Artificielle
J’ai basé ce programme sur des faits scientifiques, des approches éprouvées par des chercheurs mais également mes propres techniques que j'ai conçues au fil de mes expériences dans le domaine du Deep Learning.
Pour y accéder, clique ici :