Optimisation par essaim de particules : inertie, expérience propre et expérience de l’essaim
Boids et nuées, l’algorithme PSO, les trois composantes de la vitesse, une exécution sur la fonction de Rastrigin comparée à une stratégie d’évolution, le rôle de l’inertie, la stabilité d’une particule, la topologie de l’essaim et le théorème « pas de repas gratuit ».
Série Bases de l’IA Partie 30 sur 52
- Carte de l’intelligence artificielle : qu’est-ce qui est quoi et comment tout s’emboîte
- Brève histoire de l’intelligence artificielle : de Turing aux modèles de langage
- Données, modèle, entraînement, inférence : les notions de base sur un seul exemple
- Lire la notation mathématique : symboles, indices, sommes et quantificateurs
- Ensembles et relations : les briques dont sont faites les définitions en IA
- Fonctions et applications : pourquoi tout modèle d’IA est une fonction
- Logique et démonstrations : les règles selon lesquelles on raisonne en IA
- Graphes et arbres : la structure sur laquelle reposent la recherche et les réseaux de neurones
- Algèbre linéaire pour l’apprentissage automatique : vecteurs, matrices et pourquoi l’IA multiplie surtout
- Dérivées, gradient et règle de dérivation en chaîne : comment un modèle sait dans quelle direction apprendre
- Descente de gradient : comment un modèle apprend
- Qu’est-ce que la probabilité : du lancer de dé aux axiomes de Kolmogorov
- Probabilité conditionnelle et théorème de Bayes : comment réviser une estimation quand on apprend du nouveau
- Variable aléatoire et fonction de répartition : une seule fonction qui dit tout de la loi
- Fonction de densité et fonction de masse : pourquoi une variable continue a une probabilité nulle en chaque point
- Espérance, variance et covariance : où se situe une loi, quelle est sa largeur et ce qui varie avec quoi
- Panorama des lois de probabilité : Bernoulli, binomiale, Poisson, uniforme, normale et exponentielle
- Loi des grands nombres et théorème central limite : pourquoi les moyennes sont si prévisibles
- Statistique et estimation de paramètres : maximum de vraisemblance, MAP et intervalles de confiance
- Théorie de l’information : entropie, entropie croisée et divergence KL — d’où viennent les fonctions de perte
- Recherche dans l’espace d’états : BFS, DFS, UCS et A* en animations
- Jeux et adversaires : minimax, élagage alpha-bêta et Monte Carlo tree search
- Satisfaction de contraintes : backtracking, propagation de contraintes et AC-3 sur un sudoku et une carte des régions tchèques
- Logique et systèmes à base de connaissances : chaînage avant et arrière, résolution et systèmes experts
- Planification : STRIPS, monde des blocs, heuristiques par relaxation et planification dans les agents IA
- Recherche locale et recuit simulé : un voyageur de commerce à travers les chefs-lieux de région tchèques
- Algorithmes génétiques : population, croisement, mutation et sélection sur un sac à dos de randonnée
- Stratégies d’évolution et programmation génétique : de la règle du cinquième à la loi de Kepler
- Optimisation par colonies de fourmis : comment une piste de phéromone trouve un chemin court
- Optimisation par essaim de particules : inertie, expérience propre et expérience de l’essaim
- Neuroévolution : faire évoluer les poids et la forme des réseaux de neurones, et l’algorithme NEAT
- Ensembles flous et fonctions d’appartenance : comment écrire « un peu chaud »
- Logique floue et probabilité : pourquoi « un peu chaud » ne veut pas dire « probablement chaud »
- Logique floue : t-normes, implications et règles SI–ALORS
- Commande floue : Mamdani et Sugeno, du ventilateur au pendule inversé sur un chariot
- Clustering flou : l’algorithme fuzzy c-means et les points entre les clusters
- Systèmes neuro-flous (ANFIS) : des règles floues qui apprennent à partir des données
- Chaînes de Markov : matrice de transition, distribution stationnaire et PageRank
- Modèles de Markov cachés : l’algorithme de Viterbi et le casino malhonnête
- Réseaux bayésiens : pourquoi l’herbe est mouillée et ce que cela implique pour l’arroseur
- Le filtre de Kalman : comment estimer, à partir de mesures imprécises, où se trouve une voiture et à quelle vitesse elle roule
- Types d’apprentissage automatique : supervisé, non supervisé, semi-supervisé et plus
- Prompts, contexte et RAG : comment donner au modèle les bonnes informations
- Autoencodeurs variationnels (VAE) : de nouvelles images à partir d’un espace latent continu
- Réseaux antagonistes génératifs (GAN) : le faussaire contre le détective
- Modèles de diffusion : comment une image naît du bruit pur
- Processus de décision markoviens : états, actions, récompenses et équations de Bellman
- Q-learning et DQN : apprendre la valeur des actions, du tableau au réseau de neurones
- Policy gradient et PPO : apprendre directement la politique
- Comment fonctionne un agent IA : un modèle de langage en boucle avec des outils
- Programmer avec des agents IA : consigne, tests et vérification
- Évaluation et sécurité des systèmes d’IA : comment mesurer et comment surveiller
Programme complet de la série 52 sur 83 sujets publiés
- Comment une particule de l’essaim combine l’inertie, son propre meilleur endroit et le meilleur endroit de l’essaim.
- Pourquoi l’inertie et l’équilibre des composantes comptent, et quand l’essaim se stabilise.
- Pourquoi il n’existe pas d’optimiseur meilleur pour tout, et à quoi faire attention avec les algorithmes « inspirés de la nature ».
Utile à connaître avant : Stratégies d’évolution et programmation génétique : de la règle du cinquième à la loi de Kepler
Une nuée d’étourneaux au-dessus de la ville au crépuscule ondule comme un seul être vivant — et pourtant elle n’a pas de chef. Chaque oiseau ne surveille que quelques voisins proches. En 1995, le psychologue social James Kennedy et l’ingénieur électricien Russell Eberhart se sont posé une question : et si les oiseaux se transmettaient, en plus de la position de leurs voisins, l’endroit où ils ont trouvé le plus de nourriture ? De leur simulation est sorti l’un des algorithmes d’optimisation les plus simples et les plus utilisés qui soient — l’optimisation par essaim de particules (particle swarm optimization, PSO).
Elle fait suite aux parties Stratégies d’évolution et programmation génétique et Optimisation par colonies de fourmis. Nous lâcherons l’essaim sur la même fonction de Rastrigin que la stratégie d’évolution, avec le même départ et le même budget.
1. Les nuées dans la nature et dans l’ordinateur
Dès 1987, Craig Reynolds a montré que trois règles locales suffisent pour un mouvement de nuée crédible. Ses « boids » évitent les collisions avec leurs plus proches voisins, alignent leur direction de vol sur la leur et restent près du centre du groupe. Personne ne dirige l’ensemble ; la forme de la nuée émerge des règles locales. Kennedy et Eberhart ont ajouté une quatrième chose — la mémoire des bons endroits — et l’animation est devenue un optimiseur.
Définition — les trois règles des boids (simplifiées)
Reynolds a décrit les règles avec des mots ; aujourd’hui, on les écrit généralement ainsi. Le boid i a une position xi, une vitesse vi et un voisinage Si — les boids plus proches qu’un rayon donné. Il ajoute à sa vitesse une somme pondérée de trois vecteurs :
- séparation −∑j ∈ Si (xj − xi) / ‖xj − xi‖2 — une répulsion d’autant plus forte que le voisin est proche ;
- alignement v̄i − vi, où v̄i est la vitesse moyenne des voisins ;
- cohésion x̄i − xi, où x̄i est la position moyenne des voisins.
Chaque boid n’utilise donc que des informations de son voisinage. Les équations de la PSO ci-dessous ont la même forme « vitesse ← vitesse + attractions vers des cibles », sauf que les cibles ne sont pas les voisins, mais les meilleurs endroits trouvés.
2. L’algorithme
Définition — optimisation par essaim de particules
On minimise f : ℝn → ℝ. L’essaim est formé de N particules ; la particule i a une position xi, une vitesse vi et sa meilleure position jusqu’ici pi. L’essaim connaît la meilleure position de toutes, g. À chaque itération, pour chaque particule :
vi ← w · vi + c1 r1 (pi − xi) + c2 r2 (g − xi),
xi ← xi + vi,
où r1, r2 sont des nombres aléatoires de [0, 1) tirés séparément pour chaque coordonnée. Si f(xi) < f(pi), on met à jour pi, et le cas échéant aussi g.
Valeurs usuelles (Clerc et Kennedy, 2002) : w = 0,7298, c1 = c2 = 1,49618.
Chaque particule est un oiseau qui survole un paysage et se souvient de l’endroit où il s’est le mieux porté. En plus, il entend où toute la nuée s’est le mieux portée. Son pas suivant est un compromis entre trois choses : continuer à voler là où il volait, revenir à son meilleur endroit et se diriger vers le meilleur endroit de la nuée. Les nombres aléatoires r font que chaque oiseau trouve ce compromis un peu différemment.
vi ← w · vi + c1 r1 (pi − xi) + c2 r2 (g − xi)
- vi à gauche
- la nouvelle vitesse — de combien la particule se déplace à ce pas (xi ← xi + vi) ; l’essaim ne commande pas la position directement mais via la vitesse, et c’est ce qui rend le mouvement fluide
- w · vi
- l’inertie — une partie de l’ancienne vitesse demeure ; w < 1 l’amortit en même temps, pour que le mouvement se calme avec le temps
- c1 r1, c2 r2
- la force de l’attraction — c fixe la force moyenne, le r aléatoire de [0, 1) la raccourcit chaque fois différemment, si bien que la particule n’atterrit pas exactement sur la cible et goûte en chemin aussi aux endroits alentour
- pi − xi
- le vecteur de la particule vers son meilleur endroit — plus il est loin, plus il la tire fort en arrière (comme un ressort)
- g − xi
- le vecteur vers le meilleur endroit de l’essaim — le seul canal par lequel l’expérience des autres parvient à la particule
Définition — limitation de la vitesse
Après le calcul, chaque coordonnée de la vitesse est écrêtée à l’intervalle [−vmax, vmax] : vid ← min(vmax, max(−vmax, vid)). Notre implémentation prend vmax = 5,12, soit la moitié de la largeur du carré de recherche [−5,12 ; 5,12]2 — une particule ne franchit pas plus d’une demi-carte en un seul pas.
Exemple — un pas d’une particule
Une particule se trouve en x = (4,2 ; −3,8) avec la vitesse v = (0,5 ; 0,4). Son meilleur endroit est p = (4,0 ; −3,1), le meilleur endroit de l’essaim g = (1,1 ; −2,0). Les nombres aléatoires tirés sont r1 = (0,6 ; 0,3) et r2 = (0,5 ; 0,8). Première coordonnée :
- inertie 0,7298 · 0,5 = 0,365,
- cognitive 1,49618 · 0,6 · (4,0 − 4,2) = −0,180,
- sociale 1,49618 · 0,5 · (1,1 − 4,2) = −2,319,
- nouvelle vitesse 0,365 − 0,180 − 2,319 = −2,134, nouvelle position 4,2 − 2,134 = 2,066.
La deuxième coordonnée de même : 0,292 + 0,314 + 2,154 = 2,761, nouvelle position −3,8 + 2,761 = −1,039. Les deux composantes de la vitesse sont inférieures à vmax, la limitation ne s’applique pas. La valeur de la fonction (celle de Rastrigin, voir plus bas) est passée de 45,90 à 6,51. La composante sociale est ici la plus grande, car g est loin ; la cognitive est petite, car p se trouve tout près de la particule.
import random
def pso(f, n, castic=40, iteraci=200, w=0.7298, c1=1.49618, c2=1.49618):
x = [[random.uniform(-5, 5) for _ in range(n)] for _ in range(castic)]
v = [[0.0] * n for _ in range(castic)]
p = [xi[:] for xi in x] # meilleur endroit de chaque particule
g = min(p, key=f)[:] # meilleur endroit de l’essaim
for _ in range(iteraci):
for i in range(castic):
for d in range(n):
v[i][d] = (w * v[i][d]
+ c1 * random.random() * (p[i][d] - x[i][d])
+ c2 * random.random() * (g[d] - x[i][d]))
x[i][d] += v[i][d]
if f(x[i]) < f(p[i]):
p[i] = x[i][:]
if f(p[i]) < f(g):
g = p[i][:]
return g
Le coût de l’algorithme se mesure en nombre d’évaluations de f — dans les problèmes réels, chacune est chère (une simulation, l’entraînement d’un modèle). Chaque particule est évaluée au départ, puis une fois par itération, soit au total N + N · T = 40 + 40 · 200 = 8 040 pour N = 40 particules et T = 200 itérations. (Le pseudo-code ci-dessus appelle f plusieurs fois par souci de lisibilité ; l’implémentation réelle mémorise les valeurs f(pi).)
3. Trois forces
- Inertie w · v — la particule ne veut pas changer brusquement de direction. Grâce à elle, l’essaim survole les creux peu profonds au lieu de tomber dans chacun d’eux.
- Composante cognitive c1 r1 (p − x) — l’expérience propre : « là-bas, j’étais bien ». Elle entretient la diversité, car chaque particule se souvient de quelque chose de différent.
- Composante sociale c2 r2 (g − x) — l’expérience de l’essaim : « là-bas se trouve le meilleur que quiconque ait trouvé ». Elle rassemble l’essaim.
Contrairement aux algorithmes génétiques, personne ne meurt ici et rien ne se croise. L’information ne se propage que parce que les particules voient le succès des autres. Et contrairement aux stratégies d’évolution, une particule a une vitesse — un élan qui la porte plus loin même quand les choses vont mal.
4. L’essaim sur la fonction de Rastrigin
La fonction de Rastrigin de la partie précédente : une cuvette avec une grille régulière de creux, le minimum global à l’origine. 40 particules partent autour du point (4,2 ; −3,8), où f ≈ 45,9 — là où partait la stratégie d’évolution :
Définition — la fonction de Rastrigin
Pour x = (x1, …, xn) ∈ [−5,12 ; 5,12]n, on a
f(x) = 10n + ∑d=1n (xd2 − 10 cos(2πxd)).
Le minimum global est f(0, …, 0) = 0 ; des minima locaux se trouvent près de chaque point à coordonnées entières, et dans le carré il y en a, en deux dimensions, 11 · 11 = 121.
f(x) = 10n + ∑d (xd2 − 10 cos(2πxd))
- f(x)
- la valeur que l’essaim minimise — un paysage de test dont on connaît le minimum, si bien qu’on sait reconnaître le succès
- 10n
- un décalage — à l’origine le cosinus vaut 1 et chaque coordonnée donne −10 ; ce terme compense pour que le minimum vaille exactement 0
- ∑d
- une somme sur les coordonnées — chacune contribue indépendamment, si bien que le nombre de creux croît exponentiellement avec la dimension (11n)
- xd2
- la cuvette — la pente générale vers l’origine ; sans elle, tous les creux seraient aussi profonds et il n’y aurait pas de minimum global
- − 10 cos(2πxd)
- une ondulation de période 1 — elle creuse un creux à chaque entier et, avec l’amplitude 10, les rend assez profonds pour qu’une méthode locale y reste bloquée
Exemple — la valeur au point de départ
Pour x = (4,2 ; −3,8) : cos(2π · 4,2) = cos(8,4π) = cos(0,4π) ≈ 0,309 et cos(2π · (−3,8)) = cos(7,6π) = cos(1,6π) ≈ 0,309. Donc
f = 20 + (17,64 − 3,090) + (14,44 − 3,090) = 20 + 14,550 + 11,350 ≈ 45,9.
Le départ se trouve sur le flanc du creux en (4 ; −4), où f = 20 + (16 − 10) + (16 − 10) = 32 ; le vrai fond est un cheveu plus près de l’origine, avec une valeur d’environ 31,84. La valeur 31,9 après la première itération (ci-dessous) signifie donc que l’essaim a glissé presque au fond du creux de départ. Il ne peut aller plus loin vers le minimum qu’en franchissant les crêtes entre les creux.
Après la première itération, le meilleur endroit de l’essaim a la valeur 31,9. Puis il se passe quelque chose que la stratégie d’évolution ne faisait pas : l’essaim se disperse. La dispersion des particules passe de 0,7 à 1,3 à la dixième itération — les particules dépassent leurs meilleurs endroits et découvrent en chemin de nouveaux creux. À la 25e itération, le meilleur endroit est à la valeur 1,06, à un creux du minimum, et à la 50e itération l’essaim trouve le minimum global. Ensuite, il se resserre autour de lui.
Définition — dispersion de l’essaim et exécution réussie
La dispersion de l’essaim est la racine carrée de la moyenne du carré de la distance des particules à leur barycentre x̄ = (1/N) ∑i xi :
σ = √( (1/N) ∑i=1N ‖xi − x̄‖2 ).
Une exécution a trouvé le minimum global si, à la fin, f(g) < 0,01. Les minima locaux les plus proches ont des valeurs autour de 1 (c’est pourquoi 1,06 à la 25e itération signifie « le creux voisin »), si bien que ce seuil les distingue nettement.
σ = √( (1/N) ∑i ‖xi − x̄‖2 )
- σ
- un seul nombre pour « à quel point l’essaim est dispersé » — en unités de coordonnées, si bien qu’on peut le comparer à la distance entre creux (1)
- (1/N) ∑i
- une moyenne sur les particules — le résultat ne dépend pas de la taille de l’essaim
- ‖xi − x̄‖2
- le carré de la distance au barycentre — on mesure depuis le centre de l’essaim et non depuis le minimum, car c’est la forme de l’essaim qui nous intéresse, pas l’endroit où il se trouve ; le carré pèse davantage sur les éclaireurs éloignés, et la racine rend ensuite les unités d’origine
Trace de la même exécution, itération par itération :
| Itération | Meilleure valeur f(g) | Dispersion σ |
|---|---|---|
| 1 | 31,927 | 0,70 |
| 2 | 31,927 | 0,74 |
| 3 | 31,927 | 0,53 |
| 5 | 25,625 | 0,75 |
| 10 | 5,904 | 1,29 |
| 25 | 1,064 | 1,01 |
| 50 | 0,007 | 0,96 |
| 100 | < 0,001 | 0,51 |
| 200 | < 0,001 | 0,28 |
Pendant quatre itérations, la meilleure valeur ne bouge pas, et l’essaim se resserre entre-temps dans le creux de départ (à la troisième itération, σ n’est que de 0,53) ; puis l’inertie et les attractions vers g l’étirent à nouveau, et la meilleure valeur descend de creux en creux — 31,9, 25,6, 5,9, 1,06. Le minimum est trouvé à la 50e itération, mais σ vaut alors encore 0,96 : l’essaim ne se resserre autour du minimum qu’ensuite.
Sur cent exécutions avec des graines différentes, l’essaim a trouvé le minimum global dans 97 — avec un budget de 8 040 évaluations. La stratégie d’évolution (15, 100) avec 8 000 évaluations du même problème a réussi dans 32 cas. Quand l’essaim part réparti sur tout le carré au lieu d’un coin, il réussit dans les cent.
5. L’inertie et l’équilibre des forces
Que se passe-t-il si l’on ne change que l’inertie ? Le graphique montre à quelle distance les particules sont les unes des autres (l’axe vertical est logarithmique) :
Avec w = 0,4, l’essaim s’effondre en un seul point avant d’avoir eu le temps de regarder autour de lui — il reste bloqué dans un creux de valeur 24,9. Avec w = 0,9, il reste dispersé tout le temps : il trouve le minimum, mais ne se resserre jamais autour de lui et ne l’affine pas. Sur cent exécutions pour chaque réglage :
| Réglage | Minimum trouvé | Meilleure valeur moyenne |
|---|---|---|
| w = 0,7298, c1 = c2 = 1,49618 | 97 sur 100 | 0,18 |
| w = 0,9 | 93 sur 100 | 0,003 |
| w = 0,4 | 0 sur 100 | 24,2 |
| sociale seule (c1 = 0) | 55 sur 100 | 3,0 |
| cognitive seule (c2 = 0) | 0 sur 100 | 18,6 |
Sans la composante sociale, l’essaim n’est que quarante alpinistes solitaires qui ignorent tout les uns des autres — aucun ne sort du coin. Sans la cognitive, tous courent après un seul chef et, la moitié du temps, restent bloqués avec lui. Seules les deux composantes ensemble donnent l’équilibre entre exploration et exploitation que nous avons déjà rencontré avec le recuit.
6. Pourquoi l’essaim ne s’emballe pas
La vitesse ne cesse de s’additionner. Pourquoi ne croît-elle pas à l’infini ? La réponse vient de l’analyse d’une seule particule, si l’on oublie un instant le hasard.
Théorème — stabilité d’une particule
Considérons une particule unidimensionnelle avec p et g fixes et, au lieu de c1r1, c2r2, des nombres fixes de somme φ. La position suit alors la récurrence linéaire
xt+1 = (1 + w − φ) xt − w xt−1 + const.
et la particule converge (vers une moyenne pondérée de p et g) si et seulement si |w| < 1 et 0 < φ < 2 (1 + w).
Une particule se comporte comme un poids sur un ressort amorti : elle est attirée par un point entre son propre meilleur endroit et celui de l’essaim, l’inertie la porte au-delà puis la ramène. S’il y a assez d’amortissement et que le ressort n’est pas trop raide, les oscillations diminuent et la particule se stabilise. Avec les valeurs w = 0,7298 et c1 + c2 ≈ 2,99, la condition est remplie (2 · 1,7298 ≈ 3,46), si bien que l’essaim se resserre peu à peu — mais assez lentement pour regarder autour de lui en chemin. De plus, la vitesse est généralement bornée par le haut pour que les particules ne s’envolent pas hors de la zone de recherche.
Démonstration — d’où viennent la récurrence et les conditions
Sans hasard, le pas unidimensionnel est vt+1 = wvt + φ1(p − xt) + φ2(g − xt) et xt+1 = xt + vt+1. Notons φ = φ1 + φ2 et P = (φ1p + φ2g)/φ (la moyenne pondérée des deux meilleurs endroits). Alors φ1(p − x) + φ2(g − x) = φ(P − x) et, après substitution de vt = xt − xt−1 :
xt+1 = (1 + w − φ) xt − w xt−1 + φP.
L’écart et = xt − P vérifie la même récurrence sans la constante, donc et = aλ1t + bλ2t, où λ1,2 sont les racines de l’équation caractéristique λ2 − (1 + w − φ)λ + w = 0. La particule se stabilise en P si et seulement si |λ1|, |λ2| < 1. Pour une équation du second degré λ2 + aλ + b = 0, cela se produit exactement lorsque |b| < 1 et 1 ± a + b > 0 (critère de Jury). Ici b = w, a = −(1 + w − φ) :
- |w| < 1,
- 1 − (1 + w − φ) + w = φ > 0,
- 1 + (1 + w − φ) + w = 2(1 + w) − φ > 0. ∎
xt+1 = (1 + w − φ) xt − w xt−1 + φP
- xt+1
- la position suivante — elle dépend des deux précédentes, car la vitesse est la différence de deux positions ; c’est pourquoi la particule se comporte comme un corps qui oscille, et non comme une bille qui roule sur une pente
- (1 + w − φ) xt
- la position actuelle poussée par l’inertie (+w) et retenue par l’attraction (−φ) — le duel « continuer à voler » contre « revenir »
- − w xt−1
- la mémoire du pas précédent — ce terme apporte l’élan ; son coefficient w est le produit des racines, et c’est pourquoi l’amortissement est fixé précisément par l’inertie
- φP
- l’ancre — l’attraction de la moyenne pondérée de p et g ; la particule oscille autour d’elle et s’y stabilise
À quelle vitesse se stabilise-t-elle ? Pour les φ usuels, les deux racines sont complexes (la particule oscille) et ont le même module √w, car leur produit vaut w. L’amplitude de l’écart est donc multipliée à chaque itération par √w et diminue de moitié en ln 2 / (−ln √w) itérations. Avec le φ moyen = (c1 + c2)/2 = 1,49618 (le r aléatoire a pour moyenne ½) :
| Inertie w | Amortissement par itération √w | Demi-vie de l’écart |
|---|---|---|
| 0,4 | 0,632 | 1,5 itérations |
| 0,7298 | 0,854 | 4,4 itérations |
| 0,9 | 0,949 | 13,2 itérations |
Cela correspond exactement au graphique de dispersion ci-dessus : avec w = 0,4, l’essaim se resserre en quelques itérations, avec w = 0,9, les oscillations s’éteignent sur des dizaines d’itérations. C’est une simplification — les vrais r sont tirés à chaque pas et p, g changent —, mais l’ordre de grandeur est le bon. Et attention : avec w = 0,4, la borne 2(1 + w) = 2,8 est inférieure au plus grand φ = c1 + c2 ≈ 2,99 possible, si bien qu’une attraction aléatoire exceptionnellement forte fait osciller la particule pendant un pas (amortissement 1,280 > 1).
7. Qui entend qui : la topologie
Définition — topologie de l’essaim
La topologie est un graphe qui détermine de qui une particule voit les meilleurs endroits. Dans la topologie globale (gbest), chacune voit toutes les autres et g est commun. Dans la topologie en anneau (lbest), les particules sont disposées en anneau et la particule i ne voit que i − 1, i et i + 1 ; au lieu de g, elle utilise le meilleur endroit de son voisinage.
Dans la topologie globale, chacun apprend tout de suite la meilleure trouvaille — l’essaim est rapide, mais se laisse facilement entraîner par un seul chanceux dans un minimum local. Dans l’anneau, la nouvelle se propage de voisin en voisin ; pendant ce temps, différentes parties de l’essaim explorent différents endroits. Plus lent, mais plus prudent.
Formellement, chaque particule i a un voisinage S(i) et, dans la règle de vitesse, elle utilise au lieu du g commun gi = pk, où k = arg minj ∈ S(i) f(pj). La topologie globale a S(i) = {1, …, N}, celle en anneau S(i) = {i − 1, i, i + 1} (indices modulo N). Combien d’itérations faut-il pour que la nouvelle d’une découverte parvienne à tous ? Dans la topologie globale, une seule. Dans l’anneau, elle avance par itération d’au plus un voisin de chaque côté, et la particule la plus éloignée dans un anneau de 40 particules est à 20 places — la nouvelle lui parvient au plus tôt après 20 itérations. Pendant tout ce temps, les parties éloignées de l’essaim peuvent explorer à leur guise.
Sur notre problème à deux dimensions, l’anneau a trouvé le minimum dans les 100 exécutions, la topologie globale dans 97. La différence est plus nette en dix dimensions, où les creux sont astronomiquement nombreux : après 2 000 itérations, la topologie globale a terminé en moyenne à la valeur 5,84, celle en anneau à 4,57. Aucune n’a trouvé le minimum global — la fonction de Rastrigin en dix dimensions est vraiment difficile pour 40 particules.
8. Gare aux métaphores
Théorème — pas de repas gratuit (Wolpert et Macready, 1997)
En moyenne sur toutes les fonctions objectif possibles sur un ensemble fini, tous les algorithmes qui n’évaluent pas deux fois le même point ont la même performance espérée.
Plus précisément : soient X et Y des ensembles finis, f : X → Y une fonction objectif et dmy la suite des valeurs que l’algorithme voit au cours de m évaluations distinctes. Alors, pour deux algorithmes quelconques a1, a2,
∑f P(dmy | f, m, a1) = ∑f P(dmy | f, m, a2),
où la somme porte sur toutes les |Y||X| fonctions. Toute mesure de performance qui ne dépend que des valeurs vues (par exemple la meilleure trouvée) a donc la même moyenne sur toutes les fonctions.
Il n’existe pas d’optimiseur universellement meilleur. Un algorithme qui excelle sur un type de problèmes doit être moins bon ailleurs. L’essaim est excellent sur les fonctions lisses à structure régulière, comme celle de Rastrigin ; sur le voyageur de commerce, il ne tiendrait pas sans adaptations.
Après le succès des fourmis et de l’essaim, ce fut un déferlement d’algorithmes « inspirés de la nature » : lucioles, coucous, chauves-souris, loups gris, harmonie dans un groupe de jazz. En 2015, Kenneth Sörensen a fait remarquer que beaucoup d’entre eux sont de vieilles idées sous un nouveau costume — la métaphore a remplacé la description mathématique et a rendu la comparaison plus difficile. La bonne question face à tout nouvel algorithme n’est donc pas « de quoi s’inspire-t-il », mais « que fait-il autrement que ceux qu’on connaît, et à quoi le voit-on ».
9. Les essaims en pratique
- Réglage de paramètres. La PSO est appréciée là où les paramètres sont peu nombreux, le gradient inconnu et une évaluation est une simulation : réglage de régulateurs, forme d’antennes, pilotage de réseaux électriques ou hyperparamètres de modèles d’apprentissage automatique.
- Robots en essaim. À Harvard, en 2014, 1 024 petits robots Kilobot ont formé des figures imposées en suivant des règles locales — sans commande centrale, uniquement en communiquant avec leurs voisins.
- Et les drones des spectacles pyrotechniques ? Les spectacles lumineux avec des milliers de drones ne relèvent pas de l’intelligence en essaim : chaque drone suit une trajectoire calculée à l’avance à partir d’un plan central. Un essaim au vrai sens du terme décide lui-même, en fonction de ses voisins.
10. Résumé
- Une particule de la PSO modifie sa vitesse en fonction de l’inertie, de son propre meilleur endroit et du meilleur endroit de l’essaim.
- Sur la fonction de Rastrigin, l’essaim a trouvé le minimum dans 97 exécutions sur 100 — la stratégie d’évolution avec le même départ et le même budget dans 32.
- L’inertie détermine combien de temps l’essaim explore : trop faible, elle le fait s’effondrer prématurément ; trop forte, elle l’empêche d’affiner le résultat. Sans la composante sociale comme sans la cognitive, l’essaim échoue.
- Une particule est comme un ressort amorti ; pour |w| < 1 et 0 < φ < 2(1 + w), elle se stabilise.
- La topologie en anneau propage l’information plus lentement et se montre souvent plus robuste sur les problèmes difficiles ; et d’après le théorème « pas de repas gratuit », il n’existe pas d’optimiseur qui soit le meilleur pour tout.
Envie de mettre la main à la pâte ? Demandez à un agent d’IA d’écrire une PSO avec une visualisation de l’essaim, donnez-lui votre propre paysage — par exemple une fonction avec deux vallées éloignées — et regardez si l’essaim se divise.
Vous voyez les choses autrement ? Écrivez à support@coden-app.com.