Q学習で三目並べの評価値テーブルを作らせてみた
- 作者: 小高知宏
- 出版社/メーカー: オーム社
- 発売日: 2018/05/12
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
この本で Q 学習のコードまで書いた後、「あー静的な評価値生成に使えるなー」という事で、やってみたのが下記。
StudyDocs/tic_tac_toe.py at master · Sunao-Yoshii/StudyDocs · GitHub
なんで三目並べなのかというと
- 手数が少なく、試行回数を増やしやすい(というか手数が少ないので、その学習内容が正しいのかどうか評価しやすい)
- 目が少ないのでランダムでもそれなりに結果が出しやすい
- 覚えたてのアルゴリズムを試したい
というだけのもの。
現実に対人を想定した評価値となると、相手の手に対して評価をしなければならない事もあるので、単純な Q 学習(静的評価値学習)だけでは判断ができないと思う。
が、三目並べなら参考値位出てきそうかなと思ったのが成り立ち。
そもそも評価値って単純な学習じゃねーよという事に後から気付いて、作り直し。
盤面の状態と、それに対する手、相手の手を踏まえて、Q値の伝播を行った。
やってみたら分かるのだが、正直 5000 回位はランダムとそんな変わらない。
8000 回位強化学習させると、有意差が少しづつ出てくるような感じ。
大体 20,000 回強化学習させれば、ランダムさんに 7 割かた勝てるようになる…ってそんなアホみたいに戦う位なら、人の方がもっと強いわと www
とはいえ、すべての状況に対して次の手、評価…って計算してるから、かなりの無駄は当然あり得るわけで…もう少し考えたいところ。