Le correctif qui a changé le taux de succès bien plus que le coût
Autoriser les déplacements latéraux fait passer l’escalade sur les 8 reines de 14,75 % de parties résolues à 94,55 %, ce qui se lit comme une amélioration d’un facteur six et n’en est pas une : avec redémarrages aléatoires, le coût attendu d’une solution passe de 21,9 à 23,1 pas, et, compté en coups évalués, il baisse de 16 %, de 1 547 à 1 298. Le recuit simulé résout 98,8 % et coûte 1 622 évaluations. Ce qui a changé, c’est surtout la statistique, pas le travail.
Prérequis : La recherche classique : de la largeur d’abord à A*
Huit reines, une par colonne, et un état est la liste des huit lignes qu’elles occupent. Le coût d’un état est le nombre de paires qui s’attaquent. L’escalade par plus forte pente examine les déplacements d’une seule reine, prend le meilleur (l’un des meilleurs au hasard en cas d’égalité), et s’arrête quand rien ne fait mieux.
Sur 2 000 départs aléatoires, elle en résout 14,75 %, soit 295, en 4,1 pas quand elle gagne et 3,1 pas avant de se bloquer.
A. Le correctif habituel
Elle se bloque parce que le paysage comporte des plateaux : des régions entières où tout déplacement disponible laisse le coût exactement où il est. Le remède habituel consiste à autoriser des déplacements latéraux, jusqu’à une certaine limite, en pariant qu’un plateau est peut-être un épaulement avec de la descente de l’autre côté.
Autorisez cent déplacements latéraux consécutifs et les mêmes 2 000 départs donnent
Un taux de succès qui passe de 14,75 % à 94,55 % est le genre de chiffre qui fait adopter un changement.
B. Ce que coûte l’obtention effective d’une réponse
L’escalade est bon marché et redémarrable : personne ne l’exécute une seule fois. La quantité qui compte est le travail attendu jusqu’à l’apparition d’une solution :
| Variante | résolus | pas en cas de succès | en cas d’échec | total attendu |
|---|---|---|---|---|
| sans déplacements latéraux | 14,75 % | 4,07 | 3,08 | 21,9 |
| jusqu’à 100 latéraux | 94,55 % | 19,46 | 63,56 | 23,1 |
| recuit simulé | 98,8 % | 1780,18 | 6000,00 | 1853,1 |
Les entrées sont données à deux décimales parce que la formule en a besoin : à partir de ces colonnes, elle redonne chaque total au chiffre près, alors qu’avec les mêmes entrées arrondies à une décimale la deuxième ligne donnerait 23,2.
La version simple échoue environ six fois sur sept, mais elle échoue en 3,1 pas et coûte 21,9 pas au total. La version améliorée réussit presque toujours, met 19,5 pas pour le faire, et coûte 23,1 au total. Comptée en pas, la multiplication par six du taux de succès vaut, sur ce problème, un peu moins que rien.
Ce n’est pas que les déplacements latéraux ne marchent pas. Ils font exactement ce qu’ils annoncent : ils font traverser les plateaux. C’est que les échecs qu’ils suppriment étaient bon marché, que les succès qu’ils créent sont chers, et que ces deux faits s’annulent presque. À quel point dépend de ce qu’est un pas, et c’est l’objet de la section suivante.
Interactif : le taux de réussite face au coût d’une solution
Huit reines, plus forte pente, relancée jusqu’à la solution.
- Parcours résolus
- 14.75%
- Pas quand il résout
- 4.1
- Pas quand il se bloque
- 3.1
- Pas attendus, avec relances
- 21.9
- Échecs par solution
- 5.78
- Coups évalués par solution
- 1,547
La plus forte pente simple résout 14.75% des 2000 départs, en 4.1 pas quand elle gagne et 3.1 avant de se bloquer. Elle échoue 5.78 fois par solution, mais chaque échec coûte peu : une solution coûte 21.9 pas en tout. Autorisez maintenant les mouvements latéraux. Chaque parcours part de son propre plateau aléatoire, tiré d’une copie du générateur de Python initialisée comme dans le script de l’article ; avec les 2 000 départs par défaut, ce sont les parcours mêmes de l’article, et un nombre plus petit en prend les 2000 premiers.
C. Comparer des pas de natures différentes
Le recuit simulé paraît bien pire dans ce tableau, et la comparaison n’est pas équitable telle quelle. Un pas d’escalade évalue les 56 successeurs avant de bouger ; un pas de recuit en évalue au plus un. Comptons donc le travail, les coûts de successeurs réellement calculés, plutôt que les itérations. Deux choses que le décompte des pas omet comptent ici. Chaque exécution d’escalade qui échoue examine une dernière fois les 56 déplacements, pour constater qu’aucun ne convient, sans faire de pas. Et un tirage de recuit sur huit tombe sur la ligne de la reine elle-même et n’évalue rien. En comptant les deux, le travail attendu par solution est :
- escalade sans latéraux : évaluations
- escalade avec latéraux :
- recuit :
Multiplier les totaux en pas par 56 donnerait et et oublierait ces derniers examens. Ils coûtent à la version simple évaluations par solution, puisqu’elle échoue 5,78 fois par succès, et environ 3 à la version avec latéraux. Cet examen non compté renverse l’ordre : mesurés en évaluations, les déplacements latéraux rendent une solution 16 % moins chère, là où le décompte des pas la disait 6 % plus chère.
Les trois se tiennent désormais à moins d’un facteur 1,25 les uns des autres. Le recuit achète le meilleur taux de succès par exécution, 98,8 %, au coût le plus élevé des trois, mais de peu dès lors qu’on compte la même chose des deux côtés.
C’est la seconde moitié de la leçon. Le tableau de la section B compte des pas, qui ne sont pas la même unité d’une ligne à l’autre ; cette liste compte des évaluations, qui le sont. Ils soutiennent des conclusions différentes : un correctif qui vaut un peu moins que rien, ou un correctif qui vaut 16 %. Aucun des deux n’est l’amélioration d’un facteur six que suggère le taux de succès.
D. Ce qu’il faut en retenir
- Un taux de succès par exécution n’est pas un coût. Pour toute procédure redémarrable, le critère est le travail attendu jusqu’à une solution, et une méthode qui échoue six fois sur sept peut ne coûter que 19 % de plus qu’une méthode qui échoue une fois sur dix-huit.
- Mesurez les échecs, pas seulement les succès, et chaque échec en entier. La différence est ici dans ce que coûte de découvrir que cette exécution ne va pas aboutir : 3,1 pas contre 63,6, plus l’examen final qui ne trouve rien, soit un quart du coût d’un échec de la version simple.
- Comptez des opérations, pas des itérations, quand les itérations diffèrent. Un pas est ce que l’implémentation décide qu’il est, et comparer des pas entre deux algorithmes aux pas de tailles différentes ne compare rien. Compter les opérations attrape aussi le travail qui n’est pas un pas du tout.
- Rapportez la référence que vous améliorez, avec la même comptabilité. Un changement qui multiplie par six le chiffre affiché et améliore le total de 16 % mérite d’être connu avant son adoption, non après.
Références et lectures complémentaires
- Stuart Russell, Peter Norvig, Artificial Intelligence: A Modern Approach, Pearson (3rd edition), 2010· Bibliothèque de référence Kudos AI
Les œuvres protégées par le droit d’auteur sont citées à titre de référence uniquement et ne sont pas hébergées ici ; veuillez consulter l’éditeur pour y accéder.