Swarm Intelligence
群知能とは、多数の単純なエージェントが局所的なルールに従うことで生まれる集団的な問題解決能力です。アリのコロニー、PSO、ロボット群などが例です。
群知能(SI)とは、分散して自己組織化するシステムの集団的な振る舞いです。リーダーを持たず、それぞれが局所的なルールに従う多数の単純なエージェントが、単独では解決できない問題を協力して解決します。アリの群れは餌への短い経路を見つけ、鳥の群れは一斉に向きを変え、シロアリは換気できる塚を作りますが、個々が計画を持っているわけではありません。Gerardo BeniとJing Wangは、細胞型ロボットシステムを説明するため、1989年にこの用語を導入しました。人工知能(AI)における群知能には、集団行動をソフトウェアで模倣する最適化アルゴリズムと、多数の物理的なロボットを同じように協調させる群ロボティクスという2つの主な分野があります。
基本原則#
群システムには、いくつかの共通する特性があります。
- 局所的な相互作用: 各エージェントは、近隣のエージェントと周囲の環境だけを感知して反応します。
- 自己組織化: 群れの形やコロニーの経路網などの全体的なパターンは、中央の計画ではなく、局所的な相互作用の繰り返しから生まれます。
- ロバスト性: どのエージェントも不可欠ではないため、個々のエージェントが機能しなくなっても群れは動作を続けます。
- スケーラビリティ: 制御ロジックを再設計しなくても、エージェントを追加することで処理能力を高められます。
協調には直接的な方法と間接的な方法があります。Craig Reynoldsが1986年に提案したboidsモデルは、3つの直接的なルール、つまり分離(近隣との過度な接近を避ける)、整列(平均的な進行方向に向かう)、結合(平均的な位置に向かう)によって、現実的な群れの動きを生み出します。アリはスティグマジーによって間接的に協調します。個々のアリがフェロモンを付けて環境を変化させ、他のアリが変化後の環境に反応します。
群最適化アルゴリズム#
群知能に着想を得た最適化アルゴリズムは、情報を共有する候補解の集団を使って、広大な解空間を探索します。候補の勾配ではなくスコアを評価できればよいため、ノイズの多い問題、微分不可能な問題、組み合わせ最適化問題に適しています。
1992年の博士論文でMarco Dorigoが提唱したアリコロニー最適化(ACO)は、巡回セールスマン問題などの経路探索やスケジューリング問題を解きます。人工アリは辺ごとに経路を構築し、フェロモンが多い辺を選びやすくなります。短い経路にはフェロモンが多く付与され、蒸発によって強化されなくなった軌跡は徐々に消えるため、コロニーが初期の平凡な経路に固執するのを防ぎます。
James KennedyとRussell Eberhartが1995年に提案した粒子群最適化(PSO)は、連続空間で機能します。各粒子は位置と速度を持ち、これまでに見つけた最良の位置と、群れ全体で見つかった最良の位置を記憶します。各ステップで粒子の速度は、現在のモメンタムと2つの最良位置へのランダムな引力を組み合わせて更新されます。以下のNumPyの例では、局所最小値のグリッドが単純な局所探索を妨げるRastrigin関数を、30個の粒子で最小化します。
import numpy as np
rng = np.random.default_rng(0)
def rastrigin(x):
"""Bumpy test function with many local minima and a global minimum of 0 at the origin."""
return 10 * x.shape[-1] + (x**2 - 10 * np.cos(2 * np.pi * x)).sum(axis=-1)
pos = rng.uniform(-5, 5, (30, 2)) # 30 particles in a 2-D search space
vel = np.zeros_like(pos)
best_pos, best_val = pos.copy(), rastrigin(pos) # each particle's personal best
start = best_val.min()
for _ in range(100):
swarm_best = best_pos[best_val.argmin()] # best position any particle has found
r1, r2 = rng.random((2, 30, 1))
# Inertia + pull toward the particle's own best + pull toward the swarm's best
vel = 0.7 * vel + 1.5 * r1 * (best_pos - pos) + 1.5 * r2 * (swarm_best - pos)
pos = pos + vel
val = rastrigin(pos)
improved = val < best_val
best_pos[improved], best_val[improved] = pos[improved], val[improved]
print(f"Best value: {start:.3f} at the start, {best_val.min():.6f} after 100 iterations")群れが見つけた最良値は、ランダムな初期位置の9.633から、原点にある大域的最小値の0.000000まで下がります。別の乱数シードでは、群れが隣接する局所最小値0.995に落ち着くことがあります。PSOの派生手法では、より大きな群れ、再スタート、または大域的最良値の伝播を遅らせる近傍トポロジーによって、この早期収束を抑えます。機械学習では、勾配を利用できない場合のハイパーパラメーター調整、特徴選択、ニューラルアーキテクチャ探索にPSOが使われます。
群知能と関連概念の比較#
- 進化的アルゴリズム: 選択、交叉、突然変異によって集団を改善し、世代ごとに個体を置き換えます。PSOの粒子は存続し、優れた位置に関する情報を共有して改善します。
- アンサンブル学習: 学習済みの複数のモデルによる予測を、推論時に1つの出力へ統合します。群知能のエージェントは探索中を通じて情報を交換し、それに応じて行動を変えます。
- マルチエージェントシステム: 相互作用するエージェントを扱う、より広範な分野です。高度なエージェント、中央集権的に協調するエージェント、競合するエージェントなどが含まれます。群知能は、局所的な情報だけを持つ多数の単純で協調的なエージェントを扱います。
群ロボティクスとビジョン#
群ロボティクスは、同じ原則を、それぞれが単純で低コストな物理マシンに適用します。捜索、マッピング、農業に用いるドローン群は、分散型の協調によって、個々のドローンが故障したり通信が途絶えたりしてもグループ全体が動作を続けられるようにします。各エージェントはUltralytics YOLO26などの小型検出器を機体上で実行し、映像を基地局にストリーミングする代わりに、物体のクラスや位置などの短い検出メッセージだけを近隣と共有できます。ドローンによるライトショーは群れのように見えますが、中央のプランナーが事前計算した軌道を飛行しており、ドローンが近隣に反応することはありません。自己組織化は大規模にも機能します。2014年、Harvardの研究者は振動する脚で移動する小型ロボット、Kilobot 1,024台をプログラムし、近隣同士で交換する赤外線メッセージだけを使って、星やレンチ、Kの文字などの形を作らせました。










