忍者ブログ

Memeplexes

プログラミング、3DCGとその他いろいろについて

わかりやすい刺激を求めるシミュレーション

人間はしばしば難解なものよりわかりやすい刺激を求めます。薄味の精進料理より塩と油のフライドポテトの方が美味しいものです。というわけで、わかりやすい刺激を求めるように学習していくシミュレーションを書いてみました。


「わかりやすい刺激」とはどういうことか?

プログラムを書くにあたっては厳密さが必要です。「わかりやすい刺激」の定義をしておきましょう。わかりやすい刺激とは「そうなる未来を予測しやすい」ということだということにしておきます。具体例としては、こんな感じです:

わかりやすい:80%の確率でそうなるもの
わかりにくい:50%の確率でそうなるもの

映画なら最後に主人公が勝つことがわかっている予定調和なストーリーがわかりやすい刺激と言えるでしょう。「安定してそうなることが期待できる」ということです。一方、わかりにくい刺激は結末が予測不可能な勧善懲悪ではない映画です。そういうものを好む人もいますが、今回のシミュレーションでは扱いません。

実のところ、安定した状態を求めるシステムというのは生物だけでなく社会の随所に見られるので、このようなシミュレーションを高度にしていけば、社会システムを自動的に作り出すプログラムだって作れるはずなのです。今回のデモプログラムはその最も単純なバージョンです。

デモ

操作方法

4つの数字入力欄:この数字を使って刺激が「わかりやすい」か「わかりにくい」かを設定します。灰色の円からのびる矢印の数字が0.8なら「わかりやすい刺激」で、0.5なら「わかりにくい刺激」です(もちろん0.9なら「もっとわかりやすい刺激」です)。

学習ボタン:学習します。

学習をリセット:学習した内容を最初の状態に戻します。

解説

これはわかりやすい刺激を求めるシミュレーションです。シミュレーションには環境、体、脳があり、脳は体に、体は環境に影響を与えます。学習をすると、環境が安定するように体を動かすようになります。といっても環境も体も脳も2つのノードからなり左か右が発火するだけというシンプルなものです。ノードの発火が脳から体、環境と連鎖していくのです。

学習ボタンを何度か押してみて下さい。矢印の太さ(これは確率を表します)が変わり、「黒い丸→青い丸→灰色の丸(右)→青い丸」という流れができるのがわかるでしょう。これはわかりやすい刺激を求める流れです。ゴールが青い丸なのは、シミュレーションの初期設定では、そこへたどり着ける確率が0.8の「わかりやすい刺激」だからです。

学習方法

この学習方法はとてもシンプルです。ランダムにこのネットワークを動かし、発火した脳のノードの色と環境のノードの色が同じだった場合にのみ、その経路を強化します(次回からその経路をたどる確率が少し上がります)。これだけです。

シンプルですが、これだけで勝手に環境を安定させるようになります。というのも、脳と環境の情報を一致させるには、環境が安定していたほうがいいからです。

拍手[0回]

PR