Configurer l’arrêt anticipé

Effectué

Le réglage des hyperparamètres vous permet d’affiner votre modèle et de sélectionner les valeurs d’hyperparamètres qui rendent votre modèle optimal.

Trouver pour vous le meilleur modèle peut cependant être une conquête sans fin. Vous devez toujours déterminer s’il vaut la peine de tester de nouvelles valeurs d’hyperparamètres pour trouver un modèle qui peut s’améliorer.

Lors de chaque essai dans un travail de balayage, un nouveau modèle est entraîné avec une nouvelle combinaison de valeurs d'hyperparamètres. Si l’entraînement d’un nouveau modèle ne produit pas un modèle nettement meilleur, vous pouvez arrêter la tâche de balayage et utiliser le modèle qui a eu les meilleures performances jusqu’à présent.

Lorsque vous configurez un travail de balayage dans Azure Machine Learning, vous pouvez également définir un nombre maximal d’essais. Une approche plus sophistiquée peut être d’arrêter un travail de balayage lorsque les modèles plus récents ne produisent pas de résultats nettement meilleurs. Pour arrêter un travail de balayage en fonction des performances des modèles, vous pouvez utiliser une stratégie d’arrêt anticipé .

Quand utiliser une stratégie d’arrêt anticipé

Que vous décidiez d'utiliser une stratégie d'arrêt anticipé peut dépendre de l'espace de recherche et de la méthode d'échantillonnage avec laquelle vous travaillez.

Par exemple, vous pouvez choisir d'utiliser une méthode d'échantillonnage en grille sur un espace de recherche discret qui entraîne au maximum six essais. Avec six essais, un maximum de six modèles seront formés et une politique de résiliation anticipée peut être inutile.

Une stratégie d’arrêt anticipé peut être particulièrement utile lors de l’utilisation d’hyperparamètres continus dans votre espace de recherche. Les hyperparamètres continus présentent un nombre illimité de valeurs possibles à choisir. Vous souhaiterez probablement utiliser une stratégie d’arrêt anticipé lors de l’utilisation d’hyperparamètres continus et d’une méthode d’échantillonnage bayésienne ou aléatoire.

Configurer une stratégie d’arrêt anticipé

Il existe deux paramètres principaux lorsque vous choisissez d’utiliser une stratégie d’arrêt anticipé :

  • evaluation_interval: spécifie à quel intervalle vous souhaitez que la stratégie soit évaluée. Chaque fois que la métrique principale est enregistrée pour un essai, cela compte comme un intervalle.
  • delay_evaluation: spécifie quand commencer à évaluer la stratégie. Ce paramètre permet d’effectuer au moins un minimum d’essais sans qu’une stratégie d’arrêt anticipée ne les affecte.

Les nouveaux modèles peuvent continuer à fonctionner légèrement mieux que les modèles précédents. Pour déterminer la mesure dans laquelle un modèle doit s’exécuter mieux que les essais précédents, il existe trois options d’arrêt anticipé :

  • de stratégie Bandit : utilise un slack_factor (relatif) ou slack_amount(absolu). Tout nouveau modèle doit se situer dans la marge de tolérance du modèle le plus performant.
  • Politique d’arrêt médiane: utilise la médiane des moyennes de la métrique principale. Tout nouveau modèle doit fonctionner mieux que la médiane.
  • stratégie de sélection de troncature: utilise un truncation_percentage, c'est-à-dire le pourcentage des essais les plus faibles. Tout nouveau modèle doit fonctionner mieux que les essais les moins performants.

Stratégie de banditisme

Vous pouvez utiliser une stratégie de bandit pour arrêter un essai si la métrique de performance cible est inférieure à celle du meilleur essai jusqu'à présent par une marge spécifiée.

Par exemple, le code suivant applique une stratégie de bandit avec un délai de cinq essais, évalue la stratégie à chaque intervalle et autorise une marge absolue de 0,2.

from azure.ai.ml.sweep import BanditPolicy

sweep_job.early_termination = BanditPolicy(
    slack_amount = 0.2, 
    delay_evaluation = 5, 
    evaluation_interval = 1
)

Imaginez que la métrique principale est la précision du modèle. Quand après les cinq premiers essais, le modèle le plus performant a une précision de 0,9, tout nouveau modèle doit s’exécuter mieux que (0,9-0.2) ou 0.7. Si la précision du nouveau modèle est supérieure à 0,7, la tâche de balayage continue. Si le nouveau modèle a un score de précision inférieur à 0,7, la stratégie met fin au travail de balayage.

Diagramme de deux exemples lors de l’utilisation d’une stratégie de bandit : un modèle fonctionne suffisamment bien, les autres sous-performances.

Vous pouvez également appliquer une stratégie de bandit à l’aide d’un facteur de slack, qui compare la métrique de performance en tant que ratio plutôt qu'une valeur absolue.

Stratégie d’arrêt médiane

Une stratégie d’arrêt médiane abandonne les essais où la métrique de performance cible est pire que la médiane des moyennes en cours d’exécution pour tous les essais.

Par exemple, le code suivant applique une stratégie d’arrêt médiane avec un délai de cinq essais et évalue la stratégie à chaque intervalle.

from azure.ai.ml.sweep import MedianStoppingPolicy

sweep_job.early_termination = MedianStoppingPolicy(
    delay_evaluation = 5, 
    evaluation_interval = 1
)

Imaginez que la métrique principale est la précision du modèle. Lorsque la précision est enregistrée pour le sixième essai, la métrique doit être supérieure à la médiane des scores de précision jusqu’à présent. Supposons que la médiane des scores de précision jusqu’à présent soit de 0,82. Si la précision du nouveau modèle est supérieure à 0,82, la tâche de balayage continue. Si le nouveau modèle a un score de précision inférieur à 0,82, la stratégie arrête le travail de balayage et aucun nouveau modèle n’est formé.

Diagramme de deux exemples lors de l’utilisation d’une stratégie d’arrêt médiane : un modèle fonctionne suffisamment bien, l'autre sous-performe.

Stratégie de sélection de troncation

Une politique de sélection par troncation annule les essais les moins performants X% à chaque intervalle d'évaluation, en fonction de la valeur de troncation spécifiée par le pourcentage que vous définissez pour X.

Par exemple, le code suivant applique une stratégie de sélection de troncation avec un délai de quatre essais, évalue la stratégie à chaque intervalle et utilise un pourcentage de troncation de 20%.

from azure.ai.ml.sweep import TruncationSelectionPolicy

sweep_job.early_termination = TruncationSelectionPolicy(
    evaluation_interval=1, 
    truncation_percentage=20, 
    delay_evaluation=4 
)

Imaginez que la métrique principale est la précision du modèle. Lorsque la précision est enregistrée pour le cinquième essai, la métrique doit pas être dans les 20 pires% des essais jusqu’à présent. Dans ce cas, 20% se traduit par un essai. En d'autres termes, si le cinquième essai est pas le modèle le moins performant jusqu'à présent, le travail de balayage continuera. Si le cinquième essai a le score de précision le plus bas de tous les essais jusqu’à présent, le travail de balayage s’arrête.

Diagramme de deux exemples lors de l’utilisation d’une stratégie de sélection de troncation : un modèle fonctionne suffisamment bien, l’autre sous-forme.