どう考えるか

別の視点からだらだらと書いてみる。


以下メモ。


行動について。
パラメータは取り敢えず "知性(頭の良さ)", "性格", "状況", "忠誠度" とする。
"知性" はいかに自軍にマイナスがないように行動できるかを判断するパラメータ。
絶対尺度は私、もしくはプレイヤーの行動によって学習した脳。
"性格" は知性により判断した手段を少し振らせるためのパラメータ。性格をねじ曲げることはできない。
"状況" は行動目的そのもの。戦うには様々な目的が必要だ。
"忠誠度" はいかに自軍のために行動できるかを判断するパラメータ。
例えば頭が良くても忠誠度が低いと、逃げたり裏切ったりしやすくする。
逆に頭が悪くて忠誠度が高いと行動が一辺倒になりやすくなる。


Level 1
他のことは何も考えずに対象へ移動、攻撃する
 →経路探索(近い順)
 →対象選定(距離と体力により選定)


Level 2
知性, 性格, 状況, 忠誠度により行動パターンを変化させるような回路にする
 →実際に動かなくてもよい
 →コードに余裕を持たせる


Level 3
回復魔法を使えるユニットを設置
回復魔法の範囲が届くように移動する(移動の度合いは知性による)
 →攻撃担当(前衛)のユニットは離れすぎないように(知性, 性格による)
 →回復担当も離れすぎないように(知性, 性格による)


Level 4
弓などの間接攻撃ができるユニットを設置
間接攻撃担当は敵の攻撃を受けづらく、矢の届く位置へ移動する(知性, 性格による)
 →矢から攻撃のコンボ(行動順番を計算する)"連携度"というパラメータが必要か?
 →→"連携度"により、コンボの繋がり具合を決定する


Level 5
攻撃魔法を使えるユニットを設置
攻撃魔法担当は敵の攻撃を受けづらく、魔法の届く位置へ移動する(知性, 性格による)
 →考え方は間接攻撃と同じだが魔法使いタイプであることを考慮する
 →また攻撃魔法には範囲がある。


Level 6
間接魔法を使えるユニットを設置
 →基本的には魔法使いユニットと同じだが、自分の持つ間接魔法の効果が
 →最も効果的に影響する対象を選択する


とりあえずここまでできたら本格的に学習できるようにする。
だがその前に必要なのは以下。

  • 行動種類の判断
  • 対象の選定
  • 経路探索


経路探索は A* という仕組みを使えば良さそうだ。何も分からんけど。
A* 用にニューラルネットワーク (NN) が一つ必要だろう。
経路の決定に知性などのパラメータが影響するため、パラメータにより判断を行う必要がある。


行動、対象の判断にもそれぞれ NN が必要だろう。性格毎に NN を持たせて行動種類を判断するよりも
行動種類毎に NN を用意させて判断したほうが、分割できて後々使い回しも効くだろう。


NN による行動の判断方法は後で考えるとして、学習をどうやって行うかが問題だな。
いっそのこと学習を行わないというのもありか。
最高のパラメータを与えれば意図通りの行動を行うようにして、これを最適解とする。
パラメータの値を減らすことで頭の悪さを表現する。


んー最高のパラメータを与えれば意図通りの出力を行う NN を作るということは、
その作り方を変えれば異なる最適解を出せるようになる =学習に使えるということではないのだろうか。


しかしこの本を読む限り

マッチ箱の脳(AI)―使える人工知能のお話

マッチ箱の脳(AI)―使える人工知能のお話

(この本はマジで参考になりました)
基本的に NN は学習できないとあり、この辺がまだまだ理解できていない。


うーん机上の空論だけじゃなんとも分からんなあ。
実際にものを作ってからじゃないとなんとも想像しにくい。


ちなみにメモ書きなので結果はありません。