0. 前置き
皆さんは群知能をご存じでしょうか.
群知能と言われてもわからない人も結構いるのではないでしょうか.
ということで今回は群知能がどういうものか知ってもらおう,という趣旨です.
群知能のアイデアはとても身近なもので面白いのでぜひ最後まで読んでいただけたら幸いです.
1. 群知能(swarm intelligence)とは
群知能(swarm intelligence)というのは,簡単に説明するとエージェントやボイド(鳥もどき)といった一つの小さな個体が集合し,群をなしたときの知性を模したものになります.
この小さな個体自体には複雑な処理等は行われておらず,単純なアルゴリズムで動いています.
よって,単純なアルゴリズムが特定の要素などをもとに巨大なアルゴリズムになるとも考えられ,とても面白いと自分的には思います.
2. 群知能の具体例
先ほど群知能の概要について説明しましたが,具体的にはどのようなものがあるでしょうか.
2.1 蟻コロニー最適化 (ACO)
蟻コロニー最適化とは1992年に Marco Dorigo が提唱したもので,現実に似た人工蟻を問題となるフィールド上で移動させることによって解を求めるアルゴリズムです.
このアルゴリズムはその名の通り,蟻がコロニー(群れ)から食物までの経路を見つける際の挙動からヒントを得たものです.
このアルゴリズムは巡回セールスマン問題(TSP)において,近似最適解を生成するために使用されました.
また,グラフが動的に変化する場合において,焼きなまし法や遺伝的アルゴリズムよりも有効であることが知られています.
アルゴリズムの流れとしては以下の通りです.
1.エージェント(蟻)と蟻が分泌するフェロモンの初期化
2.終了条件を満たすまで以下の処理を繰り返す
2.1 各エージェントに対し,フェロモンとヒューリスティックな情報に基づき,確率的な解の選択を行う
2.2 各エージェントが分泌するフェロモンを計算する
2.3 フェロモン情報の更新
3.最も良い成績のエージェントの解を出力する
また,ここにおけるフェロモンとはフィードバックを得るための値であり,現実での蟻のフェロモンと同じ様な働きを行うものです.
(論文:Ant system: optimization by a colony of cooperating agents )
(参考文献:wikipedia_蟻コロニー最適化)
2.2 粒子群最適化 (PSO)
粒子群最適化とは, James Kennedy, Russell C. Eberhart, Yuhui Shi の三名の学者によって提唱されたもので,粒子群最適化が最初に提唱されたのは1995年に Kennedy, Eberhart によるParticle swarm optimizationと,同年に名古屋で発表された論文A new optimizer using particle swarm theoryです. (名古屋で発表された論文の方が早く発表されています)
そして Yuhui Shi が加わり完成形となったものが1998年に発表された論文であるA modified particle swarm optimizerです.
この三人は面白いことに Kennedy が心理学者で他二人が(Yuhui Shi は Kennedy, Eberhart よりも後に加わった)電気工学者という組み合わせになっています.
粒子群最適化は,魚群や鳥の群れなどの動きを数理モデル化したものになります.
具体的には,多次元空間において位置と速度を持つ粒子群でモデル化されており,これらの粒子はハイパー空間 (多次元の探索空間) を飛び回り最善な位置を探します.
位置の評価は適応度関数で行われます.
また,群れのメンバーは良い位置について情報交換し,それに基づいて自身の位置と速度を2種類の情報を通して調整しています.
その情報は以下になります.
1.グローバルベスト(社会的情報):群れ全体の中で一番良い粒子の位置
2.パーソナルベスト(個人の経験):粒子ごとでの一番良い位置
位置と速度の更新は以下の式で行われています.
- $x \leftarrow x + v$
- $v \leftarrow wv + c_1r_1(\hat x - x)+c_2r_2(\hat x_g - x)$
- $w$は慣性定数であり,多くの場合1より若干小さい数が最適
- $c_1$は各粒子自身の良い位置に対する重み
- $c_2$は群全体の良い位置に対する重み
- $r_1,r_2$は$[0,1]$の乱数
- $\hat x$は,その粒子がこれまで発見したベストな位置
- $\hat x_g$は群全体としてこれまで発見したベストな位置
粒子群最適化の全体の流れとしては以下の通りです.
1. 各粒子において$x,v$をランダムに初期化.値の範囲は問題の設定に依存する
2. $\hat x$を現在位置に初期化
3. $\hat x_g$を群全体で最も良い適応度を持つ粒子の位置に初期化
4. $\hat x_g$での適応度がしきい値より大きく,かつループ回数が規定に達していない場合以下を行う
4.1 上記の更新の式に沿って$v$を更新
4.2 上記の更新の式に沿って$x$を更新
4.3 新たな位置での適応度を計算する
4.4 $\hat x$での適応度よりも良い値であるならば値を更新
4.5 $\hat x_g$での適応度よりも良い値であるならば値を更新
(論文:Particle swarm optimization, A new optimizer using particle swarm theory, A modified particle swarm optimizer)
(参考文献:wikipedia_粒子群最適化)
2.3 人工蜂コロニー最適化 (ABC)
人工蜂コロニー最適化とは2005年に Derviş Karaboğa によって提唱されたアルゴリズムであり,ミツバチの群れの知的な採餌行動に基づいて作成されています.
蜂コロニー最適化におけるコロニーは雇用蜂,追従蜂,偵察蜂の三つのミツバチのグループから構成されており,各食料源に対し人工的に雇用された蜂は一匹だけ存在すると仮定されます.
この仮定より,コロニー内の雇用蜂の数は巣箱周辺の食料源の個数と同じになることがわかります.
雇用蜂は食料源に行き,巣箱に戻ってそのエリアで踊り,食料源を放棄された雇用蜂は偵察蜂となり新たな食料源を探し始めます.
また,追従蜂は雇用蜂の踊りを観察し,踊りに応じて食料源を選択します.
アルゴリズムの流れとしては以下の通りです.
1. 食料源と雇用蜂が同数で初期化,生成される
2. 終了条件を満たすまで以下のことを繰り返す
2.1 それぞれのミツバチは記憶の中の食料源に行く
2.2 近傍に新しい食料源候補を見つけ、元の場所より良ければ記憶を更新したのち、巣に戻って踊る
2.3 追従蜂はそれぞれ雇用蜂の踊りを観察し,踊りに応じて蜜源を一つ選ぶ
2.4 選んだ場所付近で新しい食料源候補を見つけ、元の場所より良ければ記憶を更新する
2.5 改善されない状態が一定回数続いた食料源を放棄する
2.6 放棄する食料源と偵察隊によって発見された新しい食料源と置き換えられる
2.7 これまで発見された最良の食料源が登録される
(参考文献:wikipedia_Artificial_bee_colony_algorithm)
(論文:A powerful and efficient algorithm for numerical function optimization: artificial bee colony (ABC) algorithm)
3. 群知能の使用用途
今まで群知能の具体的な内容と,大まかな説明を記述してきましたが,実際のソフトウェアなどではどのように活用されているのでしょうか.
主な使用用途や使用検討案としては以下の通りです.
- 無人機の制御技術
- 惑星の地図作成 (NASA)
- 軌道上の群による自己組み立てと干渉測定
- 人体内の癌腫瘍を殺すためにナノボットを群知能技術で制御
- データマイニングでの応用
- 蟻に基づく経路制御 (Ant Based Routing)
- ルート最適化 (TSPなど)
このように,群知能は現実世界の群と個体を模倣しているため,個体が群をなしているもの全般には応用が利くとも考えられます.
4. まとめ
群知能は自然界に存在する個体と群をアルゴリズムとして表している,その面白さを理解していただけたら幸いです.
自分のやる気が出たら,次回の記事では実際にACOを用いてTSPを解けたらな,と思っています.
5. 参考文献
wikipedia_群知能
https://ja.wikipedia.org/wiki/%E7%BE%A4%E7%9F%A5%E8%83%BD
鳥もどき
https://ja.wikipedia.org/wiki/%E3%83%9C%E3%82%A4%E3%83%89_(%E4%BA%BA%E5%B7%A5%E7%94%9F%E5%91%BD)
Marco Dorigo
https://en.wikipedia.org/wiki/Marco_Dorigo
wikipedia_蟻コロニー最適化
https://ja.wikipedia.org/wiki/%E8%9F%BB%E3%82%B3%E3%83%AD%E3%83%8B%E3%83%BC%E6%9C%80%E9%81%A9%E5%8C%96
James Kennedy
https://en.wikipedia.org/wiki/James_Kennedy_(social_psychologist)
Russell C. Eberhart
https://en.wikipedia.org/wiki/Russell_C._Eberhart
Yuhui Shi
https://en.wikipedia.org/wiki/Yuhui_Shi
wikipedia_粒子群最適化
https://ja.wikipedia.org/wiki/%E7%B2%92%E5%AD%90%E7%BE%A4%E6%9C%80%E9%81%A9%E5%8C%96
wikipedia_Artificial_bee_colony_algorithm
https://en.wikipedia.org/wiki/Artificial_bee_colony_algorithm
蟻コロニー最適化関係
Ant system: optimization by a colony of cooperating agents
https://ieeexplore.ieee.org/document/484436
粒子群最適化関係
Particle swarm optimization
https://ieeexplore.ieee.org/document/488968
A new optimizer using particle swarm theory
https://ieeexplore.ieee.org/document/494215
A modified particle swarm optimizer
https://ieeexplore.ieee.org/document/699146
人工蜂コロニー最適化関連
A powerful and efficient algorithm for numerical function optimization: artificial bee colony (ABC) algorithm
https://www.researchgate.net/publication/225392029_A_powerful_and_efficient_algorithm_for_numerical_function_optimization_Artificial_bee_colony_ABC_algorithm