実は重大なミスが発覚して、実験結果は全く無意味なものである。
モデル1
仮定
- アクションがターンの最後の方であるほど、そのターン中に獲得したアドバンテージに寄与する。
- 報酬はその行動が良いか悪いかの指標であり、悪い行動はそぎ落とし、良い行動は伸ばす
- アドバンテージを獲得すれば勝利に繋がる
更新式
: ターン中に行ったアクションのケツからの順番
:(自分が得たアド - 相手が得たアド) in the 2 turns
実行したアクションに対して、重み付けした報酬を加えて補正する
結果
- 700episodeでルールベースに対してそこそこの勝率(~60%)が得られる。
- 攻撃すれば勝てる場面でも攻撃せずに、デッキ切れで敗北を重ねている。
考察
アドバンテージを取れば勝てるという人間的な仮定は成り立たない この結論を出すには実験がまだ不十分である。
現在の値に報酬を加算するという数学的根拠のないアルゴリズムにも関わらず、そこそこ学習する。
更新式から予想される問題点
ターン始めの行動の学習が進みにくい。
良アクション→悪アクション→良アクションで最終的にアドを獲得してしまった場合、途中の悪アクションが過大評価されてしまい、いつまで経っても悪アクションが抜けなくなってしまう。
得たアドバンテージのうち、何(ライフ、ハンド、ボード)を重視するかは設計者に委ねられる。
モデル2
仮定
モデル1に同じ
更新式
: ターン中に行ったアクションのケツからの順番
:(自分が得たアド - 相手が得たアド) in the 2 turns
:現在のターン数
報酬をターン経過で割引して、速く倒せばより多い報酬を得られることを教える
結果
- 1000episodeでルールベースに対して勝率40%程度
- 成長は続けているが、少々効率が悪い
考察
ターンが経過すればするほど報酬の絶対値が小さくなって、学習が進みにくくなっているのと考えられる。
報酬が負である場合はターンによる割引を行う必要がない。
モデル3
仮定
- 勝敗に対して報酬を与えれば、それ以前の行動も最適化される
更新式
最後のアクションは勝敗によって学習
それ以外は割引した次状態の価値で学習
備考
- DDQN
- Experience Replay
結果
実験中
- 成長が異常に遅い
- 学習しない
コードに問題が発覚して、再実験の必要あり。
考察
1episodeあたりアクションはおおよそ100個に対して、報酬を得て更新できるアクションはただ一つ。その報酬が初期行動に反映されるまで何episodeかかるのやら。
成長が遅すぎて成長しているのかすらわからない。成長しなかった。
計算式はQ学習の理論に則ったものであるが、それがTCG問題に適しているかは別の話。
TCGにおけるアクションは「タイミング等価」ではない。
ブロック崩しであればフレーム毎にアクションでき、将棋であれば自分の手番に1手指せるが、アクションはタイミング的に"等価"である。対称的、時間並進で不変、的な意味合いである。
ところがTCG、いや遊戯王において、メインフェイズに行うアクションとチェーンを行うというアクションはタイミングが異なるため交換不可能である。(ルール的にはスペルスピードが関係している)
アクションのタイミングが等価でないにも関わらず、それらを行動順に並べて”次状態”としても良いだろうか。
優先権が渡されるタイミングを”状態”と定義することは可能だが、優先権が”渡される”のは相手が何か発動やフェイズの移行を行うからで、相手が何も行動しなかった場合、渡した優先権は。。。
メインフェイズで行うスペルスピード1の行動をアイドルコマンドと呼ぶことにする。アイドルコマンドを実行して、相手が何も発動しなかった場合、次状態は次のアイドルコマンドを選択する時となる。発動した場合は、スペルスピード2or3の状態が次状態となる。
さて、これをそのまま学習に使って良いのだろうか。Q値を更新したいアクションは同じなのに、次状態のタイミングが一意に定まらないのはまずいのではなかろうか。
というのも既存の強化学習アルゴリズムは状態観測のタイミングが等価であることを前提としているからだ。
既存の強化学習問題は状態観測のタイミングは環境が支配しているが、TCG問題では状態観測のタイミングは他方のエージェントの行動に依存している。
他方のエージェントの行動によって次状態が変化してしまう。
次状態は定義できない?
モデル1やモデル2はそこそこ学習したが、はっきり言って知的な行動とは言えなかったし、学習を進めれば知的になるという数学的な裏付けはない。
コードの欠陥が発覚した今評価すると、モデル1とモデル2は偶然が重なって学習することができたと考えられる。
#ToDo
#ToDo
#ToDo