Le machine learning automatisé ou AutoML expliqué

Les deux plus grands obstacles à l'utilisation de l'apprentissage automatique (à la fois l'apprentissage automatique classique et l'apprentissage profond) sont les compétences et les ressources informatiques. Vous pouvez résoudre le deuxième problème en y investissant de l'argent, que ce soit pour l'achat de matériel accéléré (comme des ordinateurs avec des GPU haut de gamme) ou pour la location de ressources de calcul dans le cloud (comme des instances avec des GPU connectés, des TPU et FPGA).

D'un autre côté, résoudre le problème des compétences est plus difficile. Les data scientists ont souvent des salaires élevés et peuvent encore être difficiles à recruter. Google a pu former nombre de ses employés sur son propre framework TensorFlow, mais la plupart des entreprises ont à peine des personnes suffisamment qualifiées pour créer elles-mêmes des modèles d'apprentissage automatique et d'apprentissage en profondeur, et encore moins d'enseigner aux autres comment.

Qu'est-ce qu'AutoML?

L'apprentissage automatique automatisé, ou AutoML, vise à réduire ou éliminer le besoin de spécialistes des données qualifiés pour créer des modèles d'apprentissage automatique et d'apprentissage en profondeur. Au lieu de cela, un système AutoML vous permet de fournir les données d'apprentissage étiquetées en entrée et de recevoir un modèle optimisé en sortie.

Il existe plusieurs façons de procéder. Une approche consiste pour le logiciel à simplement former chaque type de modèle sur les données et à choisir celui qui fonctionne le mieux. Un raffinement serait qu'il construise un ou plusieurs modèles d'ensemble qui combinent les autres modèles, ce qui donne parfois (mais pas toujours) de meilleurs résultats.

Une deuxième technique consiste à optimiser les hyperparamètres (expliqués ci-dessous) du ou des meilleurs modèles pour former un modèle encore meilleur. L'ingénierie des fonctionnalités (également expliquée ci-dessous) est un ajout précieux à toute formation de modèle. Une façon de déprécier l'apprentissage en profondeur consiste à utiliser l'apprentissage par transfert, en personnalisant essentiellement un modèle général bien formé pour des données spécifiques.

Qu'est-ce que l'optimisation des hyperparamètres?

Tous les modèles d'apprentissage automatique ont des paramètres, c'est-à-dire les pondérations pour chaque variable ou caractéristique du modèle. Celles-ci sont généralement déterminées par la rétro-propagation des erreurs, plus une itération sous le contrôle d'un optimiseur tel que la descente de gradient stochastique.

La plupart des modèles d'apprentissage automatique ont également des hyperparamètres définis en dehors de la boucle d'apprentissage. Ceux-ci incluent souvent le taux d'apprentissage, le taux d'abandon et des paramètres spécifiques au modèle tels que le nombre d'arbres dans une forêt aléatoire.

Le réglage des hyperparamètres ou l'optimisation des hyperparamètres (HPO) est un moyen automatique de balayer ou de rechercher dans un ou plusieurs hyperparamètres d'un modèle pour trouver l'ensemble qui aboutit au modèle le mieux formé. Cela peut prendre du temps, car vous devez entraîner à nouveau le modèle (la boucle interne) pour chaque ensemble de valeurs d'hyperparamètres dans le balayage (la boucle externe). Si vous entraînez de nombreux modèles en parallèle, vous pouvez réduire le temps nécessaire au détriment de l'utilisation de plus de matériel.

Qu'est-ce que l'ingénierie des fonctionnalités?

Une caractéristique est une propriété individuelle mesurable ou une caractéristique d'un phénomène observé. Le concept de «caractéristique» est lié à celui de variable explicative, qui est utilisée dans des techniques statistiques telles que la régression linéaire. Un vecteur d'entités combine toutes les entités d'une seule ligne en un vecteur numérique. L'ingénierie des fonctionnalités est le processus de recherche du meilleur ensemble de variables et du meilleur encodage et normalisation des données pour l'entrée dans le processus d'apprentissage du modèle.

Une partie de l'art de choisir des fonctionnalités consiste à choisir un ensemble minimum de variables indépendantes qui expliquent le problème. Si deux variables sont fortement corrélées, soit elles doivent être combinées en une seule entité, soit l'une doit être supprimée. Parfois, les gens effectuent une analyse en composantes principales (ACP) pour convertir des variables corrélées en un ensemble de variables linéairement non corrélées.

Pour utiliser des données catégorielles pour la classification des machines, vous devez encoder les étiquettes de texte dans un autre formulaire. Il existe deux encodages courants.

L'un est le codage d'étiquette , ce qui signifie que chaque valeur d'étiquette de texte est remplacée par un nombre. L'autre est un codage à chaud , ce qui signifie que chaque valeur d'étiquette de texte est transformée en une colonne avec une valeur binaire (1 ou 0). La plupart des frameworks d'apprentissage automatique ont des fonctions qui effectuent la conversion pour vous. En général, le codage à chaud est préféré, car le codage d'étiquettes peut parfois confondre l'algorithme d'apprentissage automatique en pensant que la colonne codée est ordonnée.

Pour utiliser des données numériques pour la régression de la machine, vous devez généralement normaliser les données. Sinon, les nombres avec des gammes plus grandes pourraient avoir tendance à dominer la distance euclidienne entre les vecteurs de caractéristiques, leurs effets pourraient être amplifiés aux dépens des autres champs, et l'optimisation de la descente la plus raide pourrait avoir des difficultés à converger. Il existe un certain nombre de façons de normaliser et de standardiser les données pour l'apprentissage automatique, y compris la normalisation min-max, la normalisation moyenne, la normalisation et la mise à l'échelle à la longueur unitaire. Ce processus est souvent appelé mise à l'échelle des fonctionnalités .

Certaines des transformations que les gens utilisent pour construire de nouvelles entités ou réduire la dimensionnalité des vecteurs d'entités sont simples. Par exemple, soustrayez Year of Birthde Year of Deathet vous construisez Age at Death, qui est une variable indépendante principale pour l'analyse de la durée de vie et de la mortalité. Dans d'autres cas, la construction de caractéristiques peut ne pas être si évidente.

Qu'est-ce que l'apprentissage par transfert?

L'apprentissage par transfert est parfois appelé apprentissage automatique personnalisé, et parfois appelé AutoML (principalement par Google). Plutôt que de partir de zéro lors de la formation de modèles à partir de vos données, Google Cloud AutoML met en œuvre un apprentissage automatique par transfert profond (ce qui signifie qu'il commence à partir d'un réseau neuronal profond existant formé sur d'autres données) et une recherche d'architecture neuronale (ce qui signifie qu'il trouve la bonne combinaison couches réseau) pour la traduction des paires de langues, la classification des langues naturelles et la classification des images.

C'est un processus différent de ce que signifie habituellement AutoML, et il ne couvre pas autant de cas d'utilisation. D'un autre côté, si vous avez besoin d'un modèle d'apprentissage en profondeur personnalisé dans un domaine pris en charge, l'apprentissage par transfert produira souvent un modèle supérieur.

Implémentations AutoML

Il existe de nombreuses implémentations d'AutoML que vous pouvez essayer. Certains sont des services payants et d'autres sont du code source gratuit. Les listes ci-dessous ne sont en aucun cas complètes ou définitives.

Services AutoML

Tous les trois grands services cloud ont une sorte d'AutoML. Amazon SageMaker effectue le réglage des hyperparamètres, mais n'essaye pas automatiquement plusieurs modèles ni n'effectue l'ingénierie des fonctionnalités. Azure Machine Learning a à la fois AutoML, qui balaie les fonctionnalités et les algorithmes, et le réglage d'hyperparamètres, que vous exécutez généralement sur le meilleur algorithme choisi par AutoML. Google Cloud AutoML, comme je l'ai mentionné précédemment, est un apprentissage par transfert profond pour la traduction de paires de langues, la classification des langues naturelles et la classification des images.

Un certain nombre de petites entreprises proposent également des services AutoML. Par exemple, DataRobot, qui prétend avoir inventé AutoML, a une solide réputation sur le marché. Et bien que dotData ait une part de marché minime et une interface utilisateur médiocre, il possède de solides capacités d'ingénierie des fonctionnalités et couvre de nombreux cas d'utilisation en entreprise. L'IA sans pilote H2O.ai, que j'ai examinée en 2017, peut aider un scientifique des données à produire des modèles comme un maître Kaggle, à faire de l'ingénierie des fonctionnalités, des balayages d'algorithmes et de l'optimisation des hyperparamètres de manière unifiée.

Framework AutoML

AdaNet est un framework léger basé sur TensorFlow pour l'apprentissage automatique de modèles de haute qualité avec une intervention minimale d'experts. Auto-Keras est une bibliothèque de logiciels open source pour l'apprentissage automatique automatisé, développée chez Texas A&M, qui fournit des fonctions pour rechercher automatiquement l'architecture et les hyperparamètres des modèles d'apprentissage profond. NNI (Neural Network Intelligence) est une boîte à outils de Microsoft pour aider les utilisateurs à concevoir et à régler des modèles d'apprentissage automatique (par exemple, des hyperparamètres), des architectures de réseaux neuronaux ou des paramètres système complexes de manière efficace et automatique.

Vous pouvez trouver des projets AutoML supplémentaires et une liste assez complète et actuelle d'articles sur AutoML sur GitHub.