Configuration de l’arrêt anticipé
Le réglage des hyperparamètres vous aide à ajuster votre modèle et à sélectionner les valeurs d’hyperparamètres permettant à votre modèle d’atteindre des performances optimales.
Toutefois, la recherche du meilleur modèle peut devenir une quête sans fin. Vous devez toujours déterminer si cela vaut la peine de dépenser du temps et de l’argent pour tester de nouvelles valeurs d’hyperparamètres en vue de trouver un modèle potentiellement plus performant.
À chaque essai d’un travail de balayage, l’apprentissage d’un nouveau modèle est effectué avec une nouvelle combinaison de valeurs d’hyperparamètres. Si l’apprentissage d’un nouveau modèle n’aboutit pas à un modèle nettement meilleur, vous pouvez arrêter le travail de balayage et utiliser le modèle offrant les meilleures performances jusqu’à présent.
Quand 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 consiste à arrêter un travail de balayage quand les modèles plus récents ne produisent pas de résultats significativement 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é
Une stratégie d’arrêt anticipé peut être intéressante en fonction de l’espace de recherche et de la méthode d’échantillonnage que vous utilisez.
Vous pouvez par exemple opter pour une méthode d’échantillonnage par grille sur un espace de recherche discret qui entraîne un maximum de six essais. Avec six essais, l’apprentissage de six modèles maximum est effectué et une stratégie d’arrêt anticipé peut s’avérer inutile.
Une stratégie d’arrêt anticipé peut s’avérer particulièrement utile quand vous utilisez des hyperparamètres continus dans votre espace de recherche. Les hyperparamètres continus présentent un nombre illimité de valeurs possibles. Vous souhaitez probablement utiliser une stratégie d’arrêt anticipé quand vous utilisez des hyperparamètres continus et une méthode d’échantillonnage aléatoire ou bayésien.
Configurer une stratégie d’arrêt anticipé
Voici les deux paramètres principaux quand vous optez pour une stratégie d’arrêt anticipé :
evaluation_interval
: spécifie l’intervalle d’évaluation de la stratégie. Chaque fois que la métrique principale est consignée lors d’un essai, cela est comptabilisé comme un intervalle.delay_evaluation
: spécifie le moment où démarrer l’évaluation de la stratégie. Ce paramètre permet d’effectuer au moins un nombre minimum d’essais sans être affecté par une stratégie d’arrêt anticipé.
Les nouveaux modèles peuvent fonctionner légèrement mieux que les modèles précédents. Il existe trois options d’arrêt anticipé pour déterminer dans quelle mesure un modèle doit être plus performant que les essais précédents :
- Stratégie Bandit : utilise un
slack_factor
(relatif) ouslack_amount
(absolu). Tout nouveau modèle doit présenter des performances comprises dans la plage du modèle le plus performant. - Stratégie d’arrêt médian : utilise la valeur médiane des moyennes de la métrique primaire. Tout nouveau modèle doit présenter de meilleures performances que la valeur médiane.
- Stratégie de sélection de troncation : utilise un
truncation_percentage
, qui correspond au pourcentage des essais les moins performants. Tout nouveau modèle doit présenter de meilleures performances que les essais les moins performants.
Stratégie Bandit
Vous pouvez utiliser une stratégie Bandit pour arrêter un essai si la métrique de performance cible obtient des performances inférieures au meilleur essai jusqu’à présent selon une marge spécifiée.
Le code suivant applique par exemple une stratégie Bandit avec un retard 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
)
Imaginons que la métrique principale est l’exactitude du modèle. Après les cinq premiers essais, si le modèle le plus performant présente une exactitude de 0,9, tout nouveau modèle doit obtenir des performances supérieures à (0,9-0,2) ou 0,7. Si l’exactitude du nouveau modèle est supérieure à 0,7, le travail de balayage continue. Si le nouveau modèle présente un score d’exactitude inférieur à 0,7, la stratégie termine le travail de balayage.
Vous pouvez également appliquer une stratégie Bandit en utilisant un facteur de marge, qui compare la métrique de performance sous forme de ratio plutôt que sous forme de valeur absolue.
Stratégie d’arrêt médiane
Une stratégie d’arrêt médian abandonne les essais si la métrique de performance cible est inférieure à la valeur médiane des moyennes en cours pour tous les essais.
Le code suivant applique par exemple une stratégie d’arrêt médian avec un retard 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
)
Imaginons que la métrique principale est l’exactitude du modèle. Quand l’exactitude est consignée lors du sixième essai, la métrique doit être supérieure à la valeur médiane des scores d’exactitude obtenus jusqu’à présent. Imaginons que la valeur médiane des scores d’exactitude s’élève actuellement à 0,82. Si l’exactitude du nouveau modèle est supérieure à 0,82, le travail de balayage continue. Si le nouveau modèle présente un score d’exactitude inférieur à 0,82, la stratégie arrête le travail de balayage. L’apprentissage n’est effectué pour aucun nouveau modèle.
Stratégie de sélection de troncation
Une stratégie de sélection de troncation annule les x % des essais les moins performants à chaque intervalle d’évaluation en fonction de la valeur de truncation_percentage que vous spécifiez pour X.
Le code suivant applique par exemple une stratégie de sélection de troncation avec un retard 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
)
Imaginons que la métrique principale est l’exactitude du modèle. Quand l’exactitude est consignée lors du cinquième essai, la métrique ne doit pas se situer dans les 20 % d’essais présentant les performances les plus médiocres jusqu’à présent. Dans ce cas, 20 % se traduit par un essai. En d’autres termes, si le cinquième essai n’est pas le modèle le moins performant jusqu’à présent, le travail de balayage se poursuit. Si le cinquième essai présente le score d’exactitude le plus bas de tous les essais jusqu’à présent, le travail de balayage s’arrête.