Optimización por enjambre de partículas: inercia, experiencia propia y experiencia del enjambre
Boids y bandadas, el algoritmo PSO, las tres componentes de la velocidad, una ejecución sobre la función de Rastrigin comparada con una estrategia evolutiva, el papel de la inercia, la estabilidad de una partícula, la topología del enjambre y el teorema de no hay almuerzo gratis.
Serie Fundamentos de IA Parte 30 de 52
- Mapa de la inteligencia artificial: qué es cada cosa y cómo encaja todo
- Breve historia de la inteligencia artificial: de Turing a los modelos de lenguaje
- Datos, modelo, entrenamiento, inferencia: los conceptos básicos en un solo ejemplo
- Cómo leer la notación matemática: símbolos, subíndices, sumatorios y cuantificadores
- Conjuntos y relaciones: las piezas con las que se construyen las definiciones en IA
- Funciones y aplicaciones: por qué todo modelo de IA es una función
- Lógica y demostraciones: las reglas con las que se razona en IA
- Grafos y árboles: la estructura sobre la que se apoyan la búsqueda y las redes neuronales
- Álgebra lineal para aprendizaje automático: vectores, matrices y por qué la IA sobre todo multiplica
- Derivadas, gradiente y regla de la cadena: cómo sabe un modelo en qué dirección aprender
- Descenso de gradiente: cómo aprende un modelo
- Qué es la probabilidad: del lanzamiento de un dado a los axiomas de Kolmogórov
- Probabilidad condicionada y teorema de Bayes: cómo cambiar una estimación cuando te enteras de algo nuevo
- Variable aleatoria y función de distribución: una sola función que lo dice todo sobre la distribución
- Función de densidad y función de probabilidad: por qué una variable continua tiene probabilidad cero en cada punto
- Esperanza, varianza y covarianza: dónde está una distribución, qué anchura tiene y qué se relaciona con qué
- Resumen de las distribuciones de probabilidad: Bernoulli, binomial, Poisson, uniforme, normal y exponencial
- Ley de los grandes números y teorema central del límite: por qué las medias se comportan de forma tan predecible
- Estadística y estimación de parámetros: máxima verosimilitud, MAP e intervalos de confianza
- Teoría de la información: entropía, entropía cruzada y divergencia KL, el origen de las funciones de pérdida
- Búsqueda en el espacio de estados: BFS, DFS, UCS y A* con animaciones
- Juegos y adversarios: minimax, poda alfa-beta y Monte Carlo tree search
- Satisfacción de restricciones: backtracking, propagación de restricciones y AC-3 con un sudoku y un mapa de regiones checas
- Lógica y sistemas basados en conocimiento: encadenamiento hacia delante y hacia atrás, resolución y sistemas expertos
- Planificación: STRIPS, el mundo de bloques, heurísticas a partir de la relajación y la planificación en los agentes de IA
- Búsqueda local y recocido simulado: un viajante por las capitales regionales checas
- Algoritmos genéticos: población, cruce, mutación y selección en una mochila para la excursión
- Estrategias evolutivas y programación genética: de la regla de un quinto a la ley de Kepler
- Optimización por colonia de hormigas: cómo un rastro de feromona encuentra un camino corto
- Optimización por enjambre de partículas: inercia, experiencia propia y experiencia del enjambre
- Neuroevolución: evolución de los pesos y la forma de las redes neuronales, y el algoritmo NEAT
- Conjuntos difusos y funciones de pertenencia: cómo escribir «algo cálido»
- Lógica difusa y probabilidad: por qué «algo cálido» no significa «probablemente cálido»
- Lógica difusa: t-normas, implicaciones y reglas SI–ENTONCES
- Control difuso: Mamdani y Sugeno, del ventilador al péndulo invertido sobre un carro
- Agrupamiento difuso: el algoritmo fuzzy c-means y los puntos entre clusters
- Sistemas neuro-difusos (ANFIS): reglas difusas que aprenden de los datos
- Cadenas de Markov: matriz de transición, distribución estacionaria y PageRank
- Modelos ocultos de Márkov: el algoritmo de Viterbi y el casino deshonesto
- Redes bayesianas: por qué está mojada la hierba y qué significa eso para el aspersor
- El filtro de Kalman: cómo estimar a partir de mediciones imprecisas dónde está un coche y a qué velocidad va
- Tipos de aprendizaje automático: supervisado, no supervisado, semisupervisado y más
- Prompts, contexto y RAG: cómo darle a un modelo la información correcta
- Autocodificadores variacionales (VAE): imágenes nuevas a partir de un espacio latente continuo
- Redes generativas adversarias (GAN): el falsificador contra el detective
- Modelos de difusión: cómo el ruido puro se convierte en una imagen
- Procesos de decisión de Markov: estados, acciones, recompensas y ecuaciones de Bellman
- Q-learning y DQN: aprender el valor de las acciones, de la tabla a la red neuronal
- Gradiente de la política y PPO: aprender directamente la política
- Cómo funciona un agente de IA: un modelo de lenguaje en un bucle con herramientas
- Programación con agentes de IA: encargo, pruebas y revisión
- Evaluación y seguridad de los sistemas de IA: cómo medir y cómo vigilar
Temario completo de la serie 52 de 83 temas publicados
- Cómo una partícula del enjambre combina la inercia, su propio mejor lugar y el mejor lugar del enjambre.
- Por qué importan la inercia y el equilibrio entre componentes, y cuándo se asienta el enjambre.
- Por qué no existe un optimizador que sea el mejor para todo y qué vigilar en los algoritmos «inspirados en la naturaleza».
Conviene conocer antes: Estrategias evolutivas y programación genética: de la regla de un quinto a la ley de Kepler
Una bandada de estorninos sobre la ciudad al atardecer fluye como un único ser vivo — y, sin embargo, no tiene líder. Cada pájaro solo observa a unos pocos vecinos cercanos. En 1995 el psicólogo social James Kennedy y el ingeniero eléctrico Russell Eberhart se hicieron una pregunta: ¿y si los pájaros, además de la posición de sus vecinos, se transmitieran también dónde han encontrado más comida? De su simulación salió uno de los algoritmos de optimización más sencillos y más usados que existen: la optimización por enjambre de partículas (particle swarm optimization, PSO).
Continúa las partes Estrategias evolutivas y programación genética y Optimización por colonia de hormigas. Soltaremos el enjambre sobre la misma función de Rastrigin que la estrategia evolutiva, con el mismo punto de partida y el mismo presupuesto.
1. Bandadas en la naturaleza y en el ordenador
Ya en 1987 Craig Reynolds mostró que para un movimiento de bandada creíble bastan tres reglas locales. Sus «boids» evitan chocar con los vecinos más cercanos, alinean con ellos la dirección de vuelo y se mantienen cerca del centro del grupo. Nadie dirige el conjunto; la forma de la bandada emerge de las reglas locales. Kennedy y Eberhart añadieron una cuarta cosa — la memoria de los buenos lugares — y la animación se convirtió en un optimizador.
Definición — las tres reglas de los boids (simplificadas)
Reynolds describió las reglas con palabras; hoy suelen escribirse así. El boid i tiene una posición xi, una velocidad vi y un vecindario Si — los boids más cercanos que un radio dado. A su velocidad le suma una suma ponderada de tres vectores:
- separación −∑j ∈ Si (xj − xi) / ‖xj − xi‖2 — repulsión, tanto más fuerte cuanto más cerca está el vecino;
- alineación v̄i − vi, donde v̄i es la velocidad media de los vecinos;
- cohesión x̄i − xi, donde x̄i es la posición media de los vecinos.
Cada boid usa, por tanto, solo información de su vecindario. Las ecuaciones de PSO de abajo tienen la misma forma «velocidad ← velocidad + atracciones hacia objetivos», solo que los objetivos no son los vecinos, sino los mejores lugares encontrados.
2. El algoritmo
Definición — optimización por enjambre de partículas
Minimizamos f : ℝn → ℝ. El enjambre está formado por N partículas; la partícula i tiene una posición xi, una velocidad vi y su mejor posición hasta el momento pi. El enjambre conoce la mejor posición de todas, g. En cada iteración, para cada partícula:
vi ← w · vi + c1 r1 (pi − xi) + c2 r2 (g − xi),
xi ← xi + vi,
donde r1, r2 son números aleatorios de [0, 1) sorteados por separado para cada coordenada. Si f(xi) < f(pi), se actualiza pi y, en su caso, también g.
Valores habituales (Clerc y Kennedy, 2002): w = 0,7298, c1 = c2 = 1,49618.
Cada partícula es un pájaro que vuela sobre un paisaje y recuerda dónde le fue mejor. Además oye dónde le fue mejor a toda la bandada. Su siguiente paso es un compromiso entre tres cosas: seguir volando hacia donde volaba, volver a su mejor lugar y dirigirse al mejor lugar de la bandada. Los números aleatorios r hacen que cada pájaro alcance ese compromiso de forma un poco distinta.
vi ← w · vi + c1 r1 (pi − xi) + c2 r2 (g − xi)
- vi a la izquierda
- la velocidad nueva — lo que se desplaza la partícula en este paso (xi ← xi + vi); el enjambre no controla la posición directamente, sino a través de la velocidad, y gracias a eso el movimiento es fluido
- w · vi
- inercia — parte de la velocidad anterior se conserva; w < 1 la amortigua a la vez, para que el movimiento se calme con el tiempo
- c1 r1, c2 r2
- fuerza de la atracción — c fija la fuerza media, el r aleatorio de [0, 1) la acorta cada vez de forma distinta, de modo que la partícula no aterriza justo en el objetivo y por el camino prueba también los lugares de alrededor
- pi − xi
- el vector de la partícula a su mejor lugar — cuanto más lejos está, más fuerte tira de ella hacia atrás (como un muelle)
- g − xi
- el vector al mejor lugar del enjambre — el único canal por el que llega a la partícula la experiencia ajena
Definición — limitación de la velocidad
Tras el cálculo, cada coordenada de la velocidad se recorta al intervalo [−vmax, vmax]: vid ← min(vmax, max(−vmax, vid)). Nuestra implementación toma vmax = 5,12, es decir, la mitad del ancho del cuadrado de búsqueda [−5,12; 5,12]2 — una partícula no cruza en un solo paso más de medio mapa.
Ejemplo — un paso de una partícula
Una partícula está en x = (4,2; −3,8) con velocidad v = (0,5; 0,4). Su mejor lugar es p = (4,0; −3,1), el mejor lugar del enjambre g = (1,1; −2,0). Han salido los números aleatorios r1 = (0,6; 0,3) y r2 = (0,5; 0,8). Primera coordenada:
- inercia 0,7298 · 0,5 = 0,365,
- cognitiva 1,49618 · 0,6 · (4,0 − 4,2) = −0,180,
- social 1,49618 · 0,5 · (1,1 − 4,2) = −2,319,
- velocidad nueva 0,365 − 0,180 − 2,319 = −2,134, posición nueva 4,2 − 2,134 = 2,066.
La segunda coordenada igual: 0,292 + 0,314 + 2,154 = 2,761, posición nueva −3,8 + 2,761 = −1,039. Ambas componentes de la velocidad están por debajo de vmax, así que la limitación no actúa. El valor de la función (la de Rastrigin, ver más abajo) bajó de 45,90 a 6,51. La componente social es aquí la mayor, porque g está lejos; la cognitiva es pequeña, porque p está muy cerca de la partícula.
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] # mejor lugar de cada partícula
g = min(p, key=f)[:] # mejor lugar del enjambre
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
El coste del algoritmo se mide en número de evaluaciones de f — en problemas reales cada una es cara (una simulación, el entrenamiento de un modelo). Cada partícula se evalúa al principio y luego una vez por iteración, en total N + N · T = 40 + 40 · 200 = 8 040 para N = 40 partículas y T = 200 iteraciones. (El pseudocódigo de arriba llama a f varias veces por claridad; la implementación real recuerda los valores f(pi).)
3. Tres fuerzas
- Inercia w · v — la partícula no quiere cambiar de dirección bruscamente. Gracias a ella el enjambre sobrevuela los hoyos poco profundos en lugar de caer en cada uno.
- Componente cognitiva c1 r1 (p − x) — experiencia propia: «allí me fue bien». Mantiene la diversidad, porque cada partícula recuerda algo distinto.
- Componente social c2 r2 (g − x) — experiencia del enjambre: «allí está lo mejor que alguien ha encontrado». Mantiene unido al enjambre.
A diferencia de los algoritmos genéticos, aquí nadie muere y nada se cruza. La información se propaga solo porque las partículas ven el éxito ajeno. Y a diferencia de las estrategias evolutivas, la partícula tiene velocidad — un impulso que la lleva más allá aunque en ese momento las cosas no vayan bien.
4. El enjambre sobre la función de Rastrigin
La función de Rastrigin de la parte anterior: un cuenco con una rejilla regular de hoyos, el mínimo global en el origen. 40 partículas parten alrededor del punto (4,2; −3,8), donde f ≈ 45,9 — allí donde partía la estrategia evolutiva:
Definición — la función de Rastrigin
Para x = (x1, …, xn) ∈ [−5,12; 5,12]n es
f(x) = 10n + ∑d=1n (xd2 − 10 cos(2πxd)).
El mínimo global es f(0, …, 0) = 0; los mínimos locales están cerca de cada punto de coordenadas enteras, y dentro del cuadrado hay en dos dimensiones 11 · 11 = 121.
f(x) = 10n + ∑d (xd2 − 10 cos(2πxd))
- f(x)
- el valor que minimiza el enjambre — un paisaje de prueba cuyo mínimo conocemos, así que sabemos reconocer el éxito
- 10n
- un desplazamiento — en el origen el coseno vale 1 y cada coordenada aporta −10; este término lo compensa para que el mínimo valga exactamente 0
- ∑d
- una suma sobre las coordenadas — cada una contribuye de forma independiente, así que el número de hoyos crece exponencialmente con la dimensión (11n)
- xd2
- el cuenco — la pendiente general hacia el origen; sin ella todos los hoyos serían igual de profundos y no habría mínimo global
- − 10 cos(2πxd)
- una ondulación de periodo 1 — excava un hoyo en cada número entero y, con amplitud 10, los hace lo bastante profundos para que un método local se quede atascado en ellos
Ejemplo — el valor en el punto de partida
Para x = (4,2; −3,8): cos(2π · 4,2) = cos(8,4π) = cos(0,4π) ≈ 0,309 y cos(2π · (−3,8)) = cos(7,6π) = cos(1,6π) ≈ 0,309. Por tanto
f = 20 + (17,64 − 3,090) + (14,44 − 3,090) = 20 + 14,550 + 11,350 ≈ 45,9.
El punto de partida está en la ladera del hoyo de (4; −4), donde f = 20 + (16 − 10) + (16 − 10) = 32; el fondo real está un pelo más cerca del origen, con un valor de unos 31,84. El valor 31,9 tras la primera iteración (abajo) significa, pues, que el enjambre se ha deslizado casi hasta el fondo del hoyo de partida. Más cerca del mínimo solo llegará cruzando las crestas entre hoyos.
Tras la primera iteración el mejor lugar del enjambre tiene un valor de 31,9. Luego ocurre algo que la estrategia evolutiva no hacía: el enjambre se dispersa. La dispersión de las partículas sube de 0,7 a 1,3 en la décima iteración — las partículas se pasan de sus mejores lugares y por el camino descubren hoyos nuevos. En la iteración 25 el mejor lugar tiene un valor de 1,06, un hoyo al lado del mínimo, y en la iteración 50 el enjambre encuentra el mínimo global. Después se contrae a su alrededor.
Definición — dispersión del enjambre y ejecución con éxito
La dispersión del enjambre es la raíz cuadrada de la media del cuadrado de la distancia de las partículas a su centroide x̄ = (1/N) ∑i xi:
σ = √( (1/N) ∑i=1N ‖xi − x̄‖2 ).
Una ejecución ha encontrado el mínimo global si al final f(g) < 0,01. Los mínimos locales más cercanos tienen valores en torno a 1 (por eso 1,06 en la iteración 25 significa «el hoyo de al lado»), así que este umbral los distingue con claridad.
σ = √( (1/N) ∑i ‖xi − x̄‖2 )
- σ
- un solo número para «cuán disperso está el enjambre» — en unidades de coordenadas, así que se puede comparar con la distancia entre hoyos (1)
- (1/N) ∑i
- una media sobre las partículas — el resultado no depende del tamaño del enjambre
- ‖xi − x̄‖2
- el cuadrado de la distancia al centroide — medimos desde el centro del enjambre, no desde el mínimo, porque nos interesa la forma del enjambre, no dónde está; el cuadrado da más peso a los exploradores alejados y la raíz devuelve después las unidades originales
Traza de la misma ejecución por iteraciones:
| Iteración | Mejor valor f(g) | Dispersión σ |
|---|---|---|
| 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 |
Durante cuatro iteraciones el mejor valor no se mueve y el enjambre, mientras tanto, se contrae dentro del hoyo de partida (en la tercera iteración σ es solo 0,53); luego la inercia y las atracciones hacia g lo vuelven a estirar y el mejor valor baja de hoyo en hoyo — 31,9, 25,6, 5,9, 1,06. El mínimo se encuentra en la iteración 50, pero σ sigue siendo entonces 0,96: el enjambre solo se recoge alrededor del mínimo después.
De cien ejecuciones con distintas semillas el enjambre encontró el mínimo global en 97 — con un presupuesto de 8 040 evaluaciones. La estrategia evolutiva (15, 100) con 8 000 evaluaciones del mismo problema tuvo éxito en 32 casos. Cuando el enjambre parte repartido por todo el cuadrado en lugar de desde una esquina, tiene éxito en las cien.
5. Inercia y equilibrio de fuerzas
¿Qué pasa si cambiamos solo la inercia? La gráfica muestra lo lejos que están unas partículas de otras (el eje vertical es logarítmico):
Con w = 0,4 el enjambre colapsa en un único punto antes de tener tiempo de mirar a su alrededor — se queda atascado en un hoyo de valor 24,9. Con w = 0,9 permanece disperso todo el tiempo: encuentra el mínimo, pero nunca se recoge a su alrededor ni lo afina. De cien ejecuciones para cada configuración:
| Configuración | Encontró el mínimo | Mejor valor medio |
|---|---|---|
| w = 0,7298, c1 = c2 = 1,49618 | 97 de 100 | 0,18 |
| w = 0,9 | 93 de 100 | 0,003 |
| w = 0,4 | 0 de 100 | 24,2 |
| solo social (c1 = 0) | 55 de 100 | 3,0 |
| solo cognitiva (c2 = 0) | 0 de 100 | 18,6 |
Sin la componente social, el enjambre no es más que cuarenta escaladores solitarios que no saben nada unos de otros — ninguno sale de la esquina. Sin la cognitiva, todos persiguen a un único líder y la mitad de las veces se quedan atascados con él. Solo las dos componentes juntas dan el equilibrio entre exploración y explotación que ya encontramos en el recocido.
6. Por qué el enjambre no se desboca
La velocidad se va sumando sin parar. ¿Por qué no crece hasta el infinito? La respuesta la da el análisis de una sola partícula si nos olvidamos un momento del azar.
Teorema — estabilidad de una partícula
Consideremos una partícula unidimensional con p y g fijos y, en lugar de c1r1, c2r2, números fijos de suma φ. La posición sigue entonces la recurrencia lineal
xt+1 = (1 + w − φ) xt − w xt−1 + const.
y la partícula converge (a una media ponderada de p y g) si y solo si |w| < 1 y 0 < φ < 2 (1 + w).
La partícula se comporta como un peso colgado de un muelle amortiguado: la atrae un punto entre su propio mejor lugar y el del enjambre, la inercia la lleva más allá de él y luego de vuelta. Si hay amortiguación suficiente y el muelle no es demasiado rígido, las oscilaciones se reducen y la partícula se asienta. Con los valores w = 0,7298 y c1 + c2 ≈ 2,99 la condición se cumple (2 · 1,7298 ≈ 3,46), así que el enjambre se va recogiendo poco a poco — pero con la lentitud suficiente para mirar a su alrededor por el camino. Además, la velocidad suele limitarse por arriba para que las partículas no salgan volando de la zona de búsqueda.
Demostración — de dónde salen la recurrencia y las condiciones
Sin azar, el paso unidimensional es vt+1 = wvt + φ1(p − xt) + φ2(g − xt) y xt+1 = xt + vt+1. Sean φ = φ1 + φ2 y P = (φ1p + φ2g)/φ (la media ponderada de los dos mejores lugares). Entonces φ1(p − x) + φ2(g − x) = φ(P − x) y, tras sustituir vt = xt − xt−1:
xt+1 = (1 + w − φ) xt − w xt−1 + φP.
La desviación et = xt − P cumple la misma recurrencia sin la constante, así que et = aλ1t + bλ2t, donde λ1,2 son las raíces de la ecuación característica λ2 − (1 + w − φ)λ + w = 0. La partícula se asienta en P si y solo si |λ1|, |λ2| < 1. Para una ecuación cuadrática λ2 + aλ + b = 0 esto ocurre exactamente cuando |b| < 1 y 1 ± a + b > 0 (criterio de Jury). Aquí 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 posición siguiente — depende de las dos anteriores, porque la velocidad es la diferencia de dos posiciones; por eso la partícula se comporta como un cuerpo que oscila, no como una bola que rueda por una pendiente
- (1 + w − φ) xt
- la posición actual empujada por la inercia (+w) y retenida por la atracción (−φ) — el duelo entre «seguir volando» y «volver»
- − w xt−1
- la memoria del paso anterior — este término aporta el impulso; su coeficiente w es el producto de las raíces, y por eso la amortiguación la determina precisamente la inercia
- φP
- el ancla — la atracción de la media ponderada de p y g; la partícula oscila a su alrededor y se asienta en ella
¿Con qué rapidez se asienta? Para los φ habituales ambas raíces salen complejas (la partícula oscila) y tienen el mismo módulo √w, porque su producto es w. La amplitud de la desviación se multiplica, pues, en cada iteración por √w y se reduce a la mitad en ln 2 / (−ln √w) iteraciones. Con el φ medio = (c1 + c2)/2 = 1,49618 (el r aleatorio tiene media ½):
| Inercia w | Amortiguación por iteración √w | Semivida de la desviación |
|---|---|---|
| 0,4 | 0,632 | 1,5 iteraciones |
| 0,7298 | 0,854 | 4,4 iteraciones |
| 0,9 | 0,949 | 13,2 iteraciones |
Esto encaja exactamente con la gráfica de dispersión de arriba: con w = 0,4 el enjambre se recoge en unas pocas iteraciones, con w = 0,9 las oscilaciones se apagan a lo largo de decenas de iteraciones. Es una simplificación — los r reales se sortean en cada paso y p, g cambian —, pero el orden de magnitud cuadra. Y cuidado: con w = 0,4 el límite 2(1 + w) = 2,8 es menor que el mayor φ = c1 + c2 ≈ 2,99 posible, así que una atracción aleatoria excepcionalmente fuerte hace oscilar a la partícula durante un paso (amortiguación 1,280 > 1).
7. Quién oye a quién: la topología
Definición — topología del enjambre
La topología es un grafo que determina de quién ve una partícula los mejores lugares. En la topología global (gbest) cada una ve a todas y g es común. En la topología en anillo (lbest) las partículas están dispuestas en un anillo y la partícula i solo ve a i − 1, i e i + 1; en lugar de g usa el mejor lugar de su vecindario.
En la topología global todos se enteran enseguida del mejor hallazgo — el enjambre es rápido, pero un único afortunado puede arrastrarlo con facilidad a un mínimo local. En el anillo la noticia se propaga de vecino en vecino; mientras tanto, distintas partes del enjambre exploran lugares distintos. Más lento, pero más prudente.
Formalmente, cada partícula i tiene un vecindario S(i) y en la regla de la velocidad usa, en lugar del g común, gi = pk, donde k = arg minj ∈ S(i) f(pj). La topología global tiene S(i) = {1, …, N}, la de anillo S(i) = {i − 1, i, i + 1} (índices módulo N). ¿Cuántas iteraciones tarda la noticia de un nuevo hallazgo en llegar a todos? En la topología global, una. En el anillo avanza por iteración como mucho un vecino hacia cada lado, y la partícula más lejana en un anillo de 40 partículas está a 20 puestos — la noticia le llega como pronto al cabo de 20 iteraciones. Durante ese tiempo las partes lejanas del enjambre pueden explorar por su cuenta.
En nuestro problema bidimensional el anillo encontró el mínimo en las 100 ejecuciones, la topología global en 97. La diferencia es más clara en diez dimensiones, donde hay una cantidad astronómica de hoyos: tras 2 000 iteraciones la topología global terminó de media en un valor de 5,84, la de anillo en 4,57. Ninguna encontró el mínimo global — la función de Rastrigin en diez dimensiones es de verdad difícil para 40 partículas.
8. Cuidado con las metáforas
Teorema — no hay almuerzo gratis (Wolpert y Macready, 1997)
Promediados sobre todas las funciones objetivo posibles en un conjunto finito, todos los algoritmos que no evalúan dos veces el mismo punto tienen el mismo rendimiento esperado.
Con más precisión: sean X e Y conjuntos finitos, f : X → Y una función objetivo y dmy la secuencia de valores que el algoritmo ve durante m evaluaciones distintas. Entonces, para dos algoritmos cualesquiera a1, a2
∑f P(dmy | f, m, a1) = ∑f P(dmy | f, m, a2),
donde se suma sobre las |Y||X| funciones. Toda medida de rendimiento que dependa solo de los valores vistos (por ejemplo, el mejor encontrado) tiene, por tanto, la misma media sobre todas las funciones.
No existe un optimizador universalmente mejor. Un algoritmo que destaca en un tipo de problemas tiene que ser peor en otros. El enjambre es excelente en funciones suaves con una estructura regular, como la de Rastrigin; en el problema del viajante no aguantaría sin modificaciones.
Tras el éxito de las hormigas y del enjambre llegó una avalancha de algoritmos «inspirados en la naturaleza»: luciérnagas, cucos, murciélagos, lobos grises, la armonía de un grupo de jazz. Kenneth Sörensen señaló en 2015 que muchos de ellos son ideas viejas con un disfraz nuevo — la metáfora sustituyó a la descripción matemática y dificultó la comparación. La buena pregunta ante cada algoritmo nuevo no es, por tanto, «en qué se inspira», sino «qué hace distinto de los conocidos y dónde se nota».
9. Enjambres en la práctica
- Ajuste de parámetros. PSO es popular allí donde hay pocos parámetros, el gradiente es desconocido y una evaluación es una simulación: ajuste de controladores, forma de antenas, gestión de redes eléctricas o hiperparámetros de modelos de aprendizaje automático.
- Robots en enjambre. En Harvard, en 2014, 1 024 pequeños robots Kilobot formaron figuras dadas siguiendo reglas locales — sin control central, solo comunicándose con sus vecinos.
- ¿Y los drones de los espectáculos de fuegos artificiales? Los espectáculos de luz con miles de drones no son inteligencia de enjambre: cada dron sigue una trayectoria precalculada a partir de un plan central. Un enjambre en sentido estricto decide por sí mismo, según sus vecinos.
10. Resumen
- Una partícula de PSO cambia su velocidad según la inercia, su propio mejor lugar y el mejor lugar del enjambre.
- En la función de Rastrigin el enjambre encontró el mínimo en 97 de 100 ejecuciones — la estrategia evolutiva con el mismo punto de partida y presupuesto, en 32.
- La inercia controla cuánto tiempo explora el enjambre: una pequeña lo hace colapsar antes de tiempo, una grande no le deja afinar el resultado. Sin la componente social, igual que sin la cognitiva, el enjambre fracasa.
- Una partícula es como un muelle amortiguado; para |w| < 1 y 0 < φ < 2(1 + w) se asienta.
- La topología en anillo propaga la información más despacio y en problemas difíciles suele ser más robusta; y según el teorema de no hay almuerzo gratis, no existe un optimizador que sea el mejor para todo.
¿Quieres probarlo tú? Pide a un agente de IA que escriba un PSO con una visualización del enjambre, dale tu propio paisaje — por ejemplo, una función con dos valles alejados — y observa si el enjambre se divide.
¿Lo ves de otra manera? Escribe a support@coden-app.com.