結論
現状の学習方法で得たパラメータは対抗形が苦手であり、学習局面として対抗形ほとんど出現していない。
背景
自己対局による強化学習だと学習局面が偏ってしまうのではないかという指摘は多々ある。Miacisについてはどうも対抗形で上手く指せていないように感じていた。今回はそれを検証する実験を行った。
実験1
対抗形の局面から技巧2(深さ10・定跡オフ)との対局を先手後手それぞれ250局行い、勝率を計測した。採用した初期局面は人気抜群の四間飛車を知る。まずは美濃囲いを作ってみよう!【はじめての戦法入門-第2回】|将棋コラム|日本将棋連盟 第2図である(下図)。
sfen
position startpos moves 7g7f 3c3d 6g6f 8c8d 2h6h 8d8e 8h7g 7a6b 7i7h 5c5d 5i4h 5a4b 4h3h 4b3b 3h2h 6a5b 3i3h 6b5c 6i5h 7c7d 1g1f
参考値として初期局面から対局させた場合の勝率も含め、Miacis側から見た勝率は次のようになった。
条件 | Miacis側から見た勝率 | 技巧2(深さ10)に対するレート |
---|---|---|
平手初期局面(Miacis先手) | 39.8% | -71.9 |
対抗形(Miacis先手・振飛車側) | 13.2% | -327.2 |
平手初期局面(Miacis後手) | 46.8% | -22.3 |
対抗形(Miacis後手・居飛車側) | 12.2% | -342.9 |
局面を対抗形に固定するだけでレートが300近く下がり、居飛車・振飛車のどちらを持つのも苦手ということがわかった。対局を眺めて感じた印象としては
- Miacisが居飛車を持つ場合…全て急戦。囲いは△3一金のelmo囲いや、△4二金直、△4二銀などバリエーションはいくらかあったが、戦いが始まる前に1,2筋まで玉を囲っていく対局は見た限り一回もなかった。
- Miacisが振飛車を持つ場合…自分から美濃囲いを崩して片矢倉にしたがる。囲いの金銀の連結が悪い。下段飛車を好み、▲6九飛〜▲2九飛のような活用をすることも(右玉風?)。とにかくまったく振飛車らしい指し方ではない。
実験2
実際に学習データに対抗形が現れているかを(かなり荒っぽく)確認してみた。具体的には平手初期局面から10手までの間に▲6八飛車または△4二飛車という符号が出現している棋譜を抽出した。
学習中に適当な間隔で保存した全19,961局中、条件に合うものは32局だった。そのうち30局は最初の300局の中に集中しており、つまり学習があまり進んでおらず方策にランダム性が高いうちに生成された棋譜であった。いくらか内容を見てみたが、まともな対局内容ではなかった。
残りの2局もそれぞれIDが2143、6608と両方とも前半1/3に入るものであり、内容は
- 棋譜2134(下図)…ややそれっぽい駒組にはなったが結局ただの下段飛車でしかない。左図の▲5八玉も、序盤に一度▲4八玉と行ったところをわざわざ戻してきたものであり、玉を囲うという構想がなさそう。
惨憺たる結果である。
所感
注目すべきは振飛車側を持つことも苦手だということだと思われる。もし振飛車側を持つことが苦手でなければ、自己対局中に低い確率でも対抗形が出現すればその局面の振飛車側の評価が高くなり、その後選ばれやすくなる。しかし振飛車が苦手だと根本的に悪い局面だと判断してそこへ到達しなくなってしまう。その結果まったく対抗形が出現しなくなる。
個人的な印象としては、「囲い」そのもの、あるいは「固く囲って攻め駒をさばいて勝つ」という作戦・方針が学習できていないと感じる。これを学習する難しさは、ある対局中で方針を一貫させなければならないところにあるのではないか。つまり指し手のランダム性によりたまたま囲いができても、囲いを維持しようという方針がないとすぐに囲いを崩して(そのとき局所解的に)良いと思っている形に戻してしまうのではないかと考えている。もちろんランダム性によってたまたま囲いを維持してたまたま攻め駒をさばけて勝つという体験に辿りつくことができればそこを起点に学習していけるのかもしれないが……。
いずれにせよ、強化学習的文脈で扱うならば(強化学習の意味での)探索が不十分だという問題として捉えるべきだろう。AlphaZeroの膨大な学習時間も結局は十分な探索を行うためにかかる時間なのではないかと思う部分もあり、湯水のように計算資源を使えるわけでもない一介の学生としては探索の改善によって学習高速化ができないかと夢想するところであるが、それを解決する手段はありやなしや。