ヴァーチャルニート発生学
太鼓・敢然……じゃなかった。人工知能でニートを作ってみるネタです。
部屋に引きこもってこんなのをチマチマ組んでたりすると、「人工無能が人工無能を作る実験」とか「ニートがニートを作る実験」とかそんな言葉が脳裏に浮かんできて危ないです。
さておき。
使うのは普通の三層パーセプトロンです。入力層は4つ、出力層は7つです。中間層は5にしました。中間層の数に根拠はありません。
実験場
3*3、9つの部屋からなる家を想定します。広いですね。左から上から123とつけてます。隣り合った部屋は相互に行き来が可能です。ヴァーチャルニート君の生活範囲はこれだけです。ニートらしいですね。実は外もあるんですが彼には認識できないんです。ブラックですね。
時間の経過とともにニート君は腹も減れば眠くもなります。ただし、眠くなったらベッドで寝なければなりません。ニートの癖に律儀です。もしかしたら、他の部屋で寝ると家族に邪険にされるのかも知れません。ベッドは1-1の部屋にあって、それ以外の場所では眠ることができません。同様に、腹が減ると3-3の台所に行って食事をしなければなりません。
ニート君
ニート君の入力層は、このように使われています。
- 0番目
- X座標
- 1番目
- Y座標
- 2番目
- 眠気
- 3番目
- 空腹
ニート君の出力層は、このように使われています。
- 0番目
- 北に行きたい気分
- 1番目
- 東に行きたい気分
- 2番目
- 南に行きたい気分
- 3番目
- 西に行きたい気分
- 4番目
- 惰眠を貪りたい気分
- 5番目
- 暴飲暴食したい気分
- 6番目
- 無為な気分
動作
単位時間あたり、ニート君のパラメータを入力層にぶっこみ、行動を決めます。
出力層のうち、最も高い出力を出した行動を行動します。
その行動が成功するか失敗するかを判定します。
成功すれば、その行動の出力が1になる(近付く)ように学習させます(ただし、移動の成功については特に強化はしない)
失敗すれば、その行動の出力が0になる(近付く)ように学習させます。
※許容誤差は0.01、η値は0.01、時間短縮のため、学習回数は一度に1000回に制限。
睡眠をしたければ場所が1-1でなければ成功しませんし、食事をしたければ3-3でなければ成功しません。
壁に向かって移動もできません。
ぼうっとすることの強化はしません。空腹や眠気などが強い場合には、逆にアクティブになるように学習させます。
結果
以下、次号!