Cette page décrit les concepts impliqués dans le réglage des hyperparamètres, qui est l'outil d'amélioration automatique de modèle fourni par AI Platform Training. Les réglages des hyperparamètres utilisent l'infrastructure de traitement de Google Cloud pour tester différentes configurations d'hyperparamètres lors de l'entraînement de votre modèle. Ces réglages peuvent vous fournir des valeurs optimisées pour les hyperparamètres, ce qui permet d'améliorer la précision des prédictions de votre modèle.
Qu'est-ce qu'un hyperparamètre ?
Les hyperparamètres contiennent les données qui régissent le processus d'entraînement lui-même.
Votre application d'entraînement gère trois catégories de données pendant l'entraînement de votre modèle :
Les données d'entrée (également appelées données d'entraînement) sont un ensemble d'enregistrements individuels (instances) contenant les caractéristiques importantes de votre problématique de machine learning. Ces données sont utilisées pendant l'entraînement pour configurer votre modèle afin qu'il puisse réaliser des prédictions précises à partir de nouvelles instances de données similaires. Toutefois, les valeurs de vos données d'entrée ne font jamais directement partie de votre modèle.
Les paramètres de votre modèle sont les variables que la technique de machine learning sélectionnée utilise pour s'adapter à vos données. Par exemple, un réseau de neurones profond (Deep Neural Network ou DNN) est composé de nœuds de traitement (neurones). Chacun d'entre eux effectue une opération spécifique sur les données lors de leur propagation à travers le réseau. Lorsque votre DNN est entraîné, chaque nœud possède une valeur de pondération qui indique à votre modèle l'impact de ce nœud sur la prédiction finale. Ces pondérations sont un exemple de paramètres associés à votre modèle. À bien des égards, les paramètres de votre modèle sont le modèle : ce sont eux qui permettent de distinguer votre modèle des autres modèles du même type travaillant sur des données similaires.
Les hyperparamètres sont les variables qui régissent le processus d'entraînement lui-même. Par exemple, une partie de la configuration d'un réseau de neurones profond consiste à décider combien de couches de nœuds cachées seront utilisées entre la couche d'entrée et la couche de sortie, ainsi que le nombre de nœuds que chaque couche doit utiliser. Ces variables ne sont pas directement liées aux données d'entraînement. Ce sont des variables de configuration. Notez que les paramètres changent au cours d'une tâche d'entraînement, alors que les hyperparamètres sont généralement constants pendant une tâche.
Les paramètres de votre modèle sont optimisés ("réglés" en quelque sorte) par le processus d'entraînement : vous exécutez les opérations du modèle sur les données, comparez la prédiction obtenue avec la valeur réelle pour chaque instance de données, évaluez la justesse et ajustez les paramètres jusqu'à trouver les valeurs les mieux adaptées. Les hyperparamètres sont réglés en exécutant l'ensemble de votre tâche d'entraînement puis en analysant la justesse globale pour ajuster les hyperparamètres. Dans les deux cas, vous modifiez la composition de votre modèle afin de trouver la meilleure association pour gérer votre problème.
Sans une technologie automatisée telle que le réglage des hyperparamètres de AI Platform Training, vous devez ajuster manuellement les hyperparamètres au cours de nombreux entraînements pour obtenir les valeurs optimales. Notre solution automatisée vous aide à déterminer plus facilement les meilleurs réglages d'hyperparamètres et rend le processus nettement moins fastidieux.
Fonctionnement des réglages d'hyperparamètres
Notre solution de réglages d'hyperparamètres exécute plusieurs essais au cours d'une même tâche d'entraînement. Chaque essai correspond à une exécution complète de votre application d'entraînement et utilise pour les hyperparamètres de votre choix des valeurs sélectionnées dans les limites que vous avez définies. Le service AI Platform Training effectue le suivi des résultats de chaque essai et apporte des ajustements pour les essais ultérieurs. Une fois la tâche terminée, vous pouvez obtenir un résumé de tous les essais, ainsi que la configuration de valeurs la plus efficace pour les critères spécifiés.
Le réglage des hyperparamètres nécessite une communication explicite entre AI Platform Training et votre application d'entraînement. Votre application d'entraînement définit toutes les informations dont votre modèle a besoin. Vous devez définir les hyperparamètres (variables) que vous souhaitez ajuster, ainsi qu'une valeur cible pour chacun d'entre eux.
Pour savoir comment AI Platform Training utilise l'optimisation bayésienne pour le réglage des hyperparamètres, consultez l'article de blog Hyperparameter Tuning dans Cloud Machine Learning Engine en utilisant une optimisation bayésienne (en anglais).
En plus de l'optimisation bayésienne, AI Platform Training optimise les tâches de réglage des hyperparamètres. Si vous effectuez des réglages des hyperparamètres sur des modèles similaires en modifiant uniquement la fonction objectif ou en ajoutant une nouvelle colonne d'entrée, AI Platform Training peut s'améliorer avec le temps et optimiser le réglage des hyperparamètres.
Élément optimisé par les réglages d'hyperparamètres
Les réglages d'hyperparamètres optimisent une seule variable cible (également appelée métrique d'hyperparamètres) que vous spécifiez. La justesse du modèle, calculée à partir d'une passe d'évaluation réussie, est une métrique courante. La métrique doit être une valeur numérique. Vous pouvez préciser si vous souhaitez régler votre modèle pour maximiser ou minimiser votre métrique.
Lorsque vous démarrez une tâche avec des réglages d'hyperparamètres, vous devez définir le nom de votre métrique d'hyperparamètres. Il s'agit du nom que vous attribuez à la valeur de synthèse scalaire que vous ajoutez à votre application d'entraînement.
Le nom par défaut de la métrique est training/hptuning/metric
. Nous vous recommandons de lui attribuer un nom personnalisé. La seule différence fonctionnelle est que si vous utilisez un nom personnalisé, vous devez définir la valeur hyperparameterMetricTag
dans l'objet HyperparameterSpec de votre requête de tâche pour qu'elle corresponde au nom choisi.
Comment AI Platform Training obtient-elle votre métrique ?
Pour les modèles Tensorflow, le service AI Platform Training surveille les événements de résumé TensorFlow générés par votre application d'entraînement et récupère la métrique.
Si votre modèle a été créé avec un autre framework ou utilise un conteneur personnalisé, vous devez utiliser le package Python cloudml-hypertune
pour signaler votre métrique d'entraînement à AI Platform Training.
Flux des valeurs d'hyperparamètres
Si vous n'utilisez pas les réglages d'hyperparamètres, vous pouvez définir les hyperparamètres comme vous le souhaitez dans votre application d'entraînement. Par exemple, vous pouvez configurer les hyperparamètres en passant des arguments à votre module applicatif en ligne de commande, ou encore par le biais d'un fichier de configuration.
Lorsque vous utilisez les réglages d'hyperparamètres, pour définir les valeurs des hyperparamètres que vous utilisez pour les réglages, vous devez suivre la procédure ci-dessous :
Définissez un argument de ligne de commande dans votre module d'entraînement principal pour chaque hyperparamètre réglé.
Utilisez la valeur transmise dans ces arguments afin de définir l'hyperparamètre correspondant dans le code TensorFlow de votre application d'entraînement.
Lorsque vous configurez une tâche d'entraînement avec des réglages d'hyperparamètres, vous définissez chaque hyperparamètre à régler, son type et la plage de valeurs à tester. Chaque hyperparamètre doit être identifié par le même nom que celui employé pour l'argument correspondant défini dans votre module principal. Le service d'entraînement inclut des arguments de ligne de commande utilisant ces noms lorsqu'il exécute votre application.
Sélectionner les hyperparamètres à régler
Il n'existe aucune règle absolue quant au choix des hyperparamètres à régler. Si vous avez de l'expérience avec la technique de machine learning que vous utilisez, vous connaissez peut-être le comportement de ses hyperparamètres. Vous pouvez également trouver des conseils auprès des communautés de machine learning.
Toutefois, lorsque vous choisissez des hyperparamètres, il est important d'en comprendre les implications. Chaque hyperparamètre que vous choisissez de régler peut éventuellement augmenter le nombre d'essais requis pour la réussite d'une tâche de réglage. Lorsque vous effectuez un entraînement sur AI Platform Training, vous êtes facturé pendant toute la durée de la tâche. En choisissant judicieusement les hyperparamètres à régler, vous pouvez réduire le temps nécessaire pour l'entraînement de votre modèle et ainsi, les coûts associés.
Types d'hyperparamètres
Les types d'hyperparamètres compatibles sont répertoriés dans la documentation de référence relative aux tâches. Dans l'objet ParameterSpec, vous devez indiquer le type de chaque hyperparamètre et les plages de valeurs associées, comme décrit dans le tableau suivant :
Type | Plages de valeurs | Données de la valeur |
---|---|---|
DOUBLE |
minValue & maxValue |
Valeurs à virgule flottante |
INTEGER |
minValue & maxValue |
Valeurs entières |
CATEGORICAL |
categoricalValues |
Liste de chaînes de catégorie |
DISCRETE |
discreteValues |
Liste de valeurs dans l'ordre alphabétique |
Scaling des hyperparamètres
Vous pouvez spécifier un type de scaling à réaliser sur un hyperparamètre. Le scaling est recommandé pour les types "DOUBLE" et "INTEGER". Les types de scaling disponibles sont les suivants :
UNIT_LINEAR_SCALE
UNIT_LOG_SCALE
UNIT_REVERSE_LOG_SCALE
Algorithmes de recherche
Vous pouvez spécifier un algorithme de recherche dans l'objet HyperparameterSpec. Si vous ne spécifiez pas d'algorithme, votre tâche utilise l'algorithme AI Platform Training par défaut, qui permet d'obtenir la solution optimale et d'effectuer une recherche plus efficace sur l'espace des paramètres.
Les valeurs disponibles sont les suivantes :
ALGORITHM_UNSPECIFIED
: produit le même comportement que lorsque vous ne spécifiez pas d'algorithme de recherche. AI Platform Training utilise un algorithme par défaut, qui applique l'optimisation bayésienne pour rechercher l'espace des valeurs possibles des hyperparamètres. C'est la technique la plus efficace pour votre ensemble d'hyperparamètres.GRID_SEARCH
: recherche par quadrillage simple dans l'espace réalisable. Cette option est particulièrement utile si vous souhaitez indiquer un nombre d'essais supérieur au nombre de points définis dans l'espace réalisable. Dans ce cas, si vous ne spécifiez pas de recherche par quadrillage, l'algorithme AI Platform Training par défaut peut générer des suggestions en double. Si vous utilisez la recherche par quadrillage, tous les paramètres doivent être du typeINTEGER
,CATEGORICAL
ouDISCRETE
.RANDOM_SEARCH
: recherche aléatoire simple dans l'espace réalisable.
Étapes suivantes
- Découvrez comment mettre en place les réglages d'hyperparamètres pour vos tâches d'entraînement.
- Lisez un exemple de réglages d'hyperparamètres bayésiens sur un modèle de boîte noire, avec le code correspondant sur GitHub.
- Lisez un article de blog (en anglais) sur l'optimisation bayésienne et les réglages d'hyperparamètres.
- Consultez un article de blog (en anglais) sur les progrès réalisés dans le réglage des hyperparamètres.