ニューラルネットワーク その3
いやあ難しいですね。私はまだまだ理解が足りていません。
どうもコメント欄では引用しにくいので、七誌さんへの回答をこちらに書きます。
強さは評価関数を複数用意して、それぞれの内部階層の深さなど構造そのもので差別化するものではいでしょうか? 構造が違うものを複数用意しておくと、同じものを学習させても違う結果になって、個性を表現できます。 たとえば階層が浅ければ賢くないので弱いとかそういう感じです。
評価関数にばかり目が向いていて、てっきり強さも評価関数が変わるものだと思っていました。
確かにご指摘のとおり、評価関数は強さの関数なのだから、最適解をはじき出さなければ弱いということになるんですね。
階層を深くするとより賢くなるということが理解できていませんでした。
サンプルコードとか読んでもっと頭を使わないといけないですね。
実際にどう使うかが今の時点では全然見えていません。
一人の人間に複数の人格を演じさせるようなモデルより複数の人間で個性を出す方がNN的と言えば分かりやすいでしょうか。
ここでおっしゃる「人間」とは評価関数のことですよね。
もっともDQ4はNNではなく、行動と結果だけを見ていて因果関係をきちんと把握していないのでかなりアホですが。 たとえば炎系の的にメラゾーマとか使って効果がないのに別のキャラが打撃やマヒャドで倒したりすると、 メラゾーマを使ったターンで敵を倒したと因果関係を無視して単純化されたデータが評価されて、 次から効きもしないのにその敵にメラゾーマを使うようになったりしてました。
そこまで観察されるとは凄いですw
そう言われれば「AI 搭載!!」とかなんとか宣伝されていたような気がします。
DQ4 をやってた頃はガキだったのでそこまで観察していませんでした。
AI っていうのはそういうことだったんですか。なんか感動しました。
もちろん評価関数の内部構造だけでなく、与えるデータでも学習効果は違いますが、 レベル1〜5を渡して強さを変えるというイメージではなく、周辺情報をどこまで渡すかというイメージになるでしょう。 具体的には、DQ4の例で考えると「そのターンの行動」と「そのターンの結果」だけが渡っていますが、 「そのターンの行動の結果」まで渡すと、炎系の敵にメラゾーマが効かないということを認識させることができて、 当然強さが変わってきます。もうちょっと突き詰めると、呪文が効かないのは実は敵がマホカンタを使っていたからだ というケースも考えられて、この場合は「敵の状態」も係数として渡さないと評価対象になりません。 係数で強さを変えるというのはこういうイメージが近いでしょう。必要な情報を渡さなければ適切な評価が できないというごく当たり前のことですね。
あーなるほど。評価に必要な情報を渡せば渡すだけ判断基準が増えて賢くなるということは分かっていたんですが、
それが係数になるんですね。
自分で「係数」とか書いておいて実はその本質がよく分かっていませんでしたw
もっと言うと、そのターンの情報だけを渡すのは一種のマルコフ過程とみなせるので、 マルコフ連鎖の自動作文のような構造上の限界が出てしまうので、どこまでも自動的に強くなったりはしないですね。
そうですねぇ。理想的には、そのターンでの行動がその後のターンでどういう影響を与えたかを考えたいところですが
それを考えるのは難しそうです。先読みっていう行動は実は凄い計算量なのではないかと思いました。
もっとも将棋ソフトのような外に対戦相手がいて客観的に強さが比較できるものでないと、 そこまで突き詰めても検証の仕様もないしあまり意味がないですが。
確かに強さの評価っていうのは難しいですね。やるとしたら
プレイヤーの操作を最適解として考えちゃうとかでしょうか。
しかしながら操作の数値化にしても客観性が必要なんでしょうが…。