Модуль III·Статья III·~3 мин чтения
Коллективный интеллект: рои, стаи и консенсус
Агентное моделирование и имитация
Превратить статью в подкаст
Выберите голоса, формат и длину — AI запишет аудио
Коллективный интеллект: рои, стаи и консенсус
Коллективный интеллект — способность группы решать задачи лучше, чем её индивидуальные члены. Муравьи, пчёлы, рыбы используют децентрализованные алгоритмы без центрального управления. Эти алгоритмы вдохновляют AI, робототехнику и теорию принятия решений.
Интеллект роя (Swarm Intelligence)
Ant Colony Optimization (ACO, Дориго, 1992):
Реальные муравьи ищут пищу случайно. Найдя её, возвращаются, оставляя феромоновый след. Другие муравьи следуют следу с вероятностью, пропорциональной его интенсивности. Короткие пути → быстрее traversed → больше феромона → больше муравьёв → ещё больше феромона. Испарение феромона предотвращает застревание в субоптимальных путях.
Математически: вероятность муравья i выбрать ребро (u,v):
P_{i}(u,v) = [τ(u,v)]^α · [η(u,v)]^β / Σ_{w∈N_i(u)} [τ(u,w)]^α · [η(u,w)]^β
Здесь: τ(u,v) — феромон на ребре, η(u,v) = 1/d(u,v) — «привлекательность» (обратное расстояние), α, β — балансировка феромона и эвристики.
Применение: оптимизация маршрутов (логистика, TSP), маршрутизация в сетях (интернет-протоколы), расписание задач.
Particle Swarm Optimization (PSO, Kennedy & Eberhart, 1995):
Рой частиц в пространстве решений движется к лучшим известным позициям:
v_i^{t+1} = w·v_i^t + c₁r₁(p_best_i − x_i^t) + c₂r₂(g_best − x_i^t) x_i^{t+1} = x_i^t + v_i^{t+1}
Расшифровка:
- v_i — «скорость» частицы (направление и темп движения)
- w — инерция (сохранение текущего направления)
- c₁r₁(p_best_i − x_i) — «память»: притяжение к лучшей позиции данной частицы
- c₂r₂(g_best − x_i) — «социальное влияние»: притяжение к лучшей глобальной позиции
Применения: нейросетевая оптимизация, настройка гиперпараметров, задачи управления.
Алгоритм пчёл: разведчики исследуют пространство случайно. Нашли хороший источник → «виляющий танец» (waggle dance), кодирующий направление и расстояние. Другие пчёлы летят к источнику пропорционально интенсивности танца. Оптимальное распределение ресурсов без центрального управления.
Модели стайного движения
Boids (Reynolds, 1987): три правила:
- Разделение: если сосед ближе r₁ — отклонись от него: Δv_sep = −Σ_{j: d(i,j)<r₁} (x_j − x_i)/||x_j − x_i||
- Выравнивание: лети в среднем направлении соседей (r₁ < d < r₂): Δv_ali = ⟨v_j⟩_{r₁<d<r₂} − v_i
- Сплочение: лети к центру масс соседей (d < r₃): Δv_coh = (⟨x_j⟩_{d<r₃} − x_i)
Результат: реалистичные стаи без лидера. Применение: спецэффекты в кино (Batman, Lord of the Rings), видеоигры, автономные дроны-рои.
Коллективное принятие решений
Пчёлы выбирают улей (Seeley, 2010):
Разведчики посещают несколько мест. Возвращаются и «рекламируют» виляющим танцем. Качество места → длительность и интенсивность танца. «Рекрутированные» пчёлы летят к лучшему месту, возвращаются, тоже танцуют. Консенсус: когда достаточно пчёл «голосует» за один вариант — рой вылетает.
Математическая модель: система ОДУ для популяций сторонников каждого варианта:
dXᵢ/dt = Σⱼ≠ᵢ rⱼ Xⱼ Xᵢ / N − rᵢ Xᵢ (1 − Xᵢ/N) + σ(N/k − Xᵢ)
При высоком «качестве» одного варианта → бифуркация → рой консенсусно выбирает его.
Мудрость толпы и её границы
Гальтон (1907): 800 людей угадывали вес быка на ярмарке. Среднее: 1207 фунтов. Истинный вес: 1198 фунтов. Ошибка 0.8% — лучше любого эксперта. Мудрость толпы!
Условия для «мудрости толпы»: (1) независимость суждений (агенты не копируют друг друга), (2) разнообразие агентов (разные методы оценки), (3) децентрализованность (нет «вождя»). При нарушении условий: информационные каскады, «безумие толпы».
Информационный каскад (Bikhchandani, 1992): если первые несколько агентов делают одинаковый выбор, остальные игнорируют частную информацию и копируют — коллективная ошибка. Пример: фейковые новости (100K репостов) → информационный каскад.
Прогностические рынки: Wisdom of Crowds в действии. Iowa Electronic Markets: предсказания выборов точнее опросов. Futarchy (Hanson): управление государством через прогностические рынки.
Численный пример: PSO для функции Розенброка
f(x₁,x₂) = (1−x₁)² + 100(x₂−x₁²)² — известная «банановая» функция с минимумом в (1,1). n=30 частиц, w=0.7, c₁=c₂=1.5, max 200 итераций. После 50 итераций: g_best ≈ (0.998, 0.996), f ≈ 0.0001. После 200: g_best ≈ (1.0000, 1.0000), f < 10⁻⁸. Сравнение: градиентный спуск (L-BFGS) за 50 итераций даёт похожий результат, но чувствителен к начальной точке.
Задание: Реализуйте PSO и ACO. PSO: оптимизируйте 20-мерную функцию Раstrigin f(x) = 10n + Σᵢ(xᵢ²−10cos(2πxᵢ)). Сравните с CMA-ES. ACO: решите TSP из 20 городов (случайные координаты). Сравните: random, nearest neighbour, ACO, optimal (brute-force для 20 городов сложно, используйте OR-tools). Постройте convergence curves для обоих алгоритмов.
§ Акт · что дальше