Présentation des réglages d'hyperparamètres

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 conception d'un DNN consiste à décider du nombre de couches de nœuds masquées à utiliser entre les couches d'entrée et de sortie, ainsi que du nombre de nœuds que chaque couche cachée 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 Vertex AI, vous devez ajuster manuellement les hyperparamètres au cours de nombreux entraînements pour obtenir des 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

Les réglages d'hyperparamètres fonctionnent en exécutant plusieurs essais de votre application d'entraînement, avec des valeurs correspondant aux hyperparamètres de votre choix et en respectant les limites que vous avez définies. L'IA Vertex 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.

Les réglages d'hyperparamètres nécessitent une communication explicite entre l'IA Vertex et votre application d'entraînement. Votre application d'entraînement définit toutes les informations dont votre modèle a besoin. Définissez les hyperparamètres (variables) que vous souhaitez ajuster ainsi que les variables cibles utilisées pour évaluer chaque essai.

En savoir plus sur l'optimisation bayésienne pour les réglages d'hyperparamètres

En plus de l'optimisation bayésienne, Vertex AI optimise les tâches de réglage d'hyperparamètres. Si vous effectuez des réglages d'hyperparamètres sur des modèles similaires, en changeant uniquement la fonction objectif ou en ajoutant une nouvelle colonne d'entrée, Vertex AI est capable de s'améliorer avec le temps et de rendre les réglages d'hyperparamètres plus efficaces.

Élément optimisé par les réglages d'hyperparamètres

Les réglages d'hyperparamètres optimisent les variables cibles que vous spécifiez, appelées métriques d'hyperparamètres. La justesse du modèle, calculée à partir d'une passe d'évaluation, est une métrique courante. Les métriques doivent être numériques.

Lorsque vous configurez une tâche de réglage d'hyperparamètres, vous définissez le nom et l'objectif de chaque métrique. L'objectif indique si vous souhaitez régler votre modèle pour maximiser ou minimiser la valeur de cette métrique.

Comment l'IA Vertex obtient vos métriques

Utilisez le package Python cloudml-hypertune pour transmettre des métriques à l'IA Vertex. Cette bibliothèque fournit des fonctions d'assistance pour la génération de rapports de métriques à Vertex AI.

En savoir plus sur la création de rapports sur les métriques d'hyperparamètres

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 de votre application d'entraînement.

Lorsque vous configurez une tâche de réglage d'hyperparamètres, vous définissez chaque hyperparamètre à régler, son type de données 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.

En savoir plus sur les exigences applicables à l'analyse des arguments de ligne de commande

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 exécutez une tâche de réglage d'hyperparamètres sur Vertex AI, le montant facturé est basé sur la durée des essais initiés par votre tâche de réglage d'hyperparamètres. Un choix judicieux des hyperparamètres à régler peut réduire la durée et le coût de votre tâche de réglage d'hyperparamètres.

Types de données d'hyperparamètres

Dans un objet ParameterSpec, spécifiez le type de données d'hyperparamètres en tant qu'instance d'une spécification de valeur de paramètre. Le tableau suivant répertorie les spécifications de valeur de paramètre acceptées.

Type Type de données Plages de valeurs Données de la valeur
DoubleValueSpec DOUBLE minValue & maxValue Valeurs à virgule flottante
IntegerValueSpec INTEGER minValue & maxValue Valeurs entières
CategoricalValueSpec CATEGORICAL categoricalValues Liste de chaînes de catégorie
DiscreteValueSpec DISCRETE discreteValues Liste de valeurs dans l'ordre alphabétique

Scaling des hyperparamètres

Dans un objet ParameterSpec, vous pouvez spécifier que le scaling doit être effectué sur cet hyperparamètre. Le scaling est recommandé pour les types de données DOUBLE et INTEGER. Les types de scaling disponibles sont les suivants :

  • SCALE_TYPE_UNSPECIFIED : aucun scaling n'est appliqué à cet hyperparamètre.
  • UNIT_LINEAR_SCALE : met à l'échelle l'espace réalisable de manière linéaire, de 0 à 1.
  • UNIT_LOG_SCALE : met à l'échelle l'espace réalisable de manière logarithmique, de 0 à 1. Tout l'espace réalisable doit être strictement positif.
  • UNIT_REVERSE_LOG_SCALE : met à l'échelle l'espace réalisable "inversé", de 0 à 1. Par conséquent, les valeurs proches du haut de l'espace réalisable sont réparties sur davantage de points que celles du bas. Tout l'espace réalisable doit être strictement positif.

Hyperparamètres conditionnels

L'objet ConditionalParameterSpec vous permet d'ajouter des hyperparamètres à un essai lorsque la valeur de son hyperparamètre parent correspond à une condition que vous spécifiez.

Par exemple, vous pouvez définir une tâche de réglage d'hyperparamètres pour trouver un modèle optimal en utilisant la régression linéaire ou un réseau de neurones profond (DNN, Deep Neural Network). Pour que votre tâche de réglage spécifie la méthode d'entraînement, vous définissez un hyperparamètre catégorique nommé training_method avec les options suivantes : LINEAR_REGRESSION et DNN. Lorsque training_method correspond à LINEAR_REGRESSION, votre tâche de réglage doit spécifier un hyperparamètre pour le taux d'apprentissage. Lorsque le paramètre training_method est défini sur DNN, votre tâche de réglage doit spécifier des paramètres pour le taux d'apprentissage et le nombre de couches cachées.

Étant donné que le nombre de couches cachées n'est applicable que lorsque la valeur training_method d'un essai est DNN, vous définissez un paramètre conditionnel qui ajoute un hyperparamètre nommé num_hidden_layers lorsque la valeur de training_method est DNN.

Comme le taux d'apprentissage est utilisé par les deux options training_method, vous devez décider si cet hyperparamètre conditionnel doit être partagé. Si l'hyperparamètre est partagé, la tâche de réglage s'appuie sur les enseignements tirés des essais LINEAR_REGRESSION et DNN pour ajuster le taux d'apprentissage. Dans ce cas, il est plus logique d'avoir des taux d'apprentissage distincts pour chaque training_method car le taux d'apprentissage pour l'entraînement d'un modèle à l'aide de LINEAR_REGRESSION ne devrait pas affecter le taux d'apprentissage pour l'entraînement d'un modèle à l'aide de DNN. Vous définissez donc les hyperparamètres conditionnels suivants :

  • Un hyperparamètre nommé learning_rate, qui est ajouté lorsque la valeur de l'attribut training_method est LINEAR_REGRESSION.
  • Un hyperparamètre nommé learning_rate, qui est ajouté lorsque la valeur de l'attribut training_method est DNN.

Les hyperparamètres conditionnels vous permettent de définir les hyperparamètres pour votre tâche de réglage sous forme de graphique. Vous pouvez ainsi ajuster votre processus d'entraînement à l'aide de différentes techniques d'entraînement, chacune avec ses propres dépendances d'hyperparamètres.

Algorithmes de recherche

Vous pouvez spécifier un algorithme de recherche dans l'objet StudySpec. Si vous ne spécifiez pas d'algorithme, votre tâche utilise l'algorithme de Vertex AI par défaut. L'algorithme par défaut applique l'optimisation bayésienne pour obtenir la solution optimale avec une recherche plus efficace dans 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. Vertex AI 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 une quantité d'essais supérieure 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 par défaut de Vertex AI peut générer des suggestions en double. Si vous utilisez la recherche par quadrillage, tous les paramètres doivent être du type INTEGER, CATEGORICAL ou DISCRETE.

  • RANDOM_SEARCH : recherche aléatoire simple dans l'espace réalisable.

Étape suivante