Q agentについて - aharalabMeiji/fireplaceAharaLab GitHub Wiki

Q学習を利用したエージェントをつくることは、基本的な問題を認識する上で面白い課題だと思います。

Q学習のためにはQテーブルを作る必要がありますが、Qテーブルとは「場面の状況」を入力に「アクション」を出力にするような確率行列を考えるということです。プレーを繰り返しながら、その確率行列の成分を書き換えることにより「賢く」なるのがQ学習です。

とはいえ、無数にあるカードを使ったTCGでカードの種類ごとに場合分けをするような「場面の状況のセッティング」はほぼ無意味でしょう。何らかの意味で「ぼんやりとみる」必要があります。Qテーブルの入力の次元の上限にはいろいろ考え方があるかもしれませんが、シンプルに考えるとすれば、「何らかの条件を満たしているかいないか」というような要件を20件くらい考えたとして、そのそれぞれがyesであるかnoであるかの2^20通りを「場面の状況」と考えるならば、Qテーブルの入力の次元は2^20~1000000になります。このくらいだったら、今のパソコンだったら何とかなるでしょうか。

もし、自分のデッキを固定しているとして、小さなゲーム(デッキを10枚くらい、ヒーローの初期体力を10くらいのような)で考えるとしても、相手のカードの可能性が膨大であるならば、すべての場合を場合分けするような「場面の状況」は無意味であると言えます。(さらに状況を小さくして、プールカードセットを10枚、両プレーヤーがそのすべてをデッキとして用いる、という状況であれば、あるいはすべての場合を書き出すことができるかもしれません。しかし、それは発展性のない設計であると言えます。)

同じように、Qテーブルの出力である「アクション」のとらえ方にも何らかの工夫が必要です。自分のデッキを固定するような場面であれば、自分の取りうる行動のすべてを書き出すことはあるいはできるかもしれません。しかし拡張性を考えるとこれは不合理です。アクションの捉え方は「優先されるべき方針」というカタチで表現するのが良いように思われます。呪文を優先するのか、攻撃的なミニオンを場に出すことを優先するのか、場に出すミニオンの数が多いのがよいのか、こういった「方針の観点」は無数にあると思われますが、その中のいくつかを列挙してみることは考えられます。

こうやって考えてみるとQ学習といっても、「場面の状況」や「アクション」のセッティングに「人為的なチョイス」が入ってしまうことになります。人工知能を考える上では「ルールだけからAIが学習可能であるかどうか」を議論したいところです。それが可能であるかどうかは、まずは人為的な枠組みのものを作ってみてからその門戸を広げていくのが良いように思います。DQNを考えるとしても、同じトラブルが発生しているものと思います。