平田智剛のブログ

立法、行政、司法、報道、そして科学

F.ism.does_harm_to(!F);

蟻コロニーに興味を持ちました

0.参考アプリ(!?)

apps.apple.com play.google.com

1. 動機

0章に示した蟻コロニー育成ゲームで遊んでた。 基本は見て和むだけ。勝手に卵が増えるし、勝手にコロニーを掘り進めてくれる。 操作は「遠征」と「出陣」と「タップして卵を返す」くらい。 「遠征」は遠くに餌を探しに行かせ、 「出陣」は外敵を返り討ちにして餌にさせる。 どちらも「何匹出動させるか」を指定でき、それによって結果も変わってくる。 ゲームでは人間が遠征や出陣やコロニー拡張を指揮するが、自然界は誰がどうやって行動を決めるんだろうかと興味を持った。 調べてみると、いくつかの参考になるサイトを見つけた

www.itmedia.co.jp

www.sankei.com

www.antroom.jp

二言でいえば、

  • フェロモンによって自主的かつランダムに行動を決定する
  • 個々の蟻の行動はコロニー全体の利益を最大化する傾向にある

であろうか。 働きアリの出産を妨害したりする行為については「ランダム」な行動の結果低確率でフェロモンに逆らう行動をとった働きアリが、その他大勢から高確率で妨害を受けることで、全体の利益を最大化しようとするものと説明ができるだろう。

この2つをアルゴリズムに組み込んで機械学習をやらせたら、蟻の社会のように複雑に分担作業を行えるになるのだろうか。 そんな興味を持って、考え始めたのが「蟻ゴリズム」である。

2. 仕様

蟻ゴリズムは次のような仕組みを持っている。

  • 人工知能を持つ蟻を無数に設置し、その全体をコロニーと呼ぶ。
  • 蟻の人工知能における入力はコロニーの「フェロモンベクトル」であり、これは各蟻の出力するフェロモンの(重み付き)総和である。
  • 蟻の学習目的は「フェロモンベクトルの絶対値の最大化」である。

フェロモンベクトルを最大化する操作は、考えられる操作をランダムに試すことで発見される。 また、次回以降、(同様のフェロモンが入力された際に)今回選んだ操作が再び選ばれやすいよう、確率分布を調整する。 「同様の」は、内積/(絶対値積)で評価できると思う