久々のバージョン1.5に比べて直後のマイナーチェンジでしたので記事起こしまでしておりませんでしたが,ボチボチメモしていきます。
1.6の変更点は2つです。
ひとつはOpenCLデバイス選択の変更。具体的には前々回報告したインテルGPUと所謂ディスクリートGPUの両方を搭載したマシンでインテルGPUが優先される問題を修正したものです。
AobaZero 1.6だそうな。ブログで報告した何故かIntel GPUで走る件が修正されたようだ。 https://t.co/EgHmFMrs9B
— 48 (@bleu48) 2020年10月25日
もうひとつは自己対戦時の早期投了です。これは棋譜生成時に無駄に手数が長い終盤をカットする意味ですね。学習局面に向かないために除外するのと棋譜生成の速度を上げる効果があります。終局まで指してから最終版局面だけ除外するのでは後者の効果を得られないとのことでした。投了ミスもわずかながらあるそうです。
劇的な高速化を遂げた直後ですが計算コストを極限まで削るのは更に何か進化を考えている風に見えます。
AobaZeroの1.6は2080Tiにて420棋譜/時近く出てる。1.5で340強程度だったから優位に速い。
— 48 (@bleu48) 2020年10月27日
ところで(ここから雑感なのですが),AobaZeroは現在超手数の将棋が得意で宣言勝ちが多いことが特徴です。今後の学習で変化してくる可能性はありますが現状そういう将棋を指します。
とすると,入玉形の将棋が上手なのかと誤解されます。具体的に挙げませんが棋譜を見ると分かりますが宣言勝ちに対して点数がシビアな局面でミスが多いようです。例えば手持ちの駒と盤上の駒で点数が足りそうに見えるのに盤上の駒を敵陣に入れることをしないために宣言勝ちに至らず引き分けることは多いようです。点数計算できる人間なら確実に勝てる局面です。また,勝ち局面で安易に駒を捨てるケースも多々見られ,最悪の場合引き分けや逆転に繋がることもあります。これはMCTSのアルゴリズム上勝率のみが考慮され駒の点数差が無視されることによります。
ここから推測です。AobaZeroは512手制限という比較的ゆるい手数制限で自己対戦による強化学習をしています。勝勢の場合は詰めようが宣言勝ちしようが同じ評価になります。また手数を短くするインセンティブがありません。詰める行為は駒を使うためリスクを伴います。このリスクが探索上勝率を落とすため,非情にも多くの手数をかけてゆるやかに持ち駒の差を広げるという非人道的な将棋になるものと思われます。加えてこの強化学習のプロセスでは対局の勝敗のみが評価され中途プロセスは一切顧みられません。
また,自己対局では自然に差が広がるために400手程度で敵陣に駒を入れ始めます。これはNNへの入力パラメータになっています。実はこのときに盤面がシビアな状況になっていても同様の行為を行うため非情にレアなケースといってもいいかもしれませんが,この手数で大差がついていない場合宣言を目指した直後逆転を生むこともありました。
で,恐らくですが手数をかけると自然に差が広がるものと学習しており,そうでない場合の学習ケースがほとんどないのではないかと思われます。
修正方法は簡単に二つあり,ひとつは他の将棋エンジンと同じく中途局面の評価値を学習パラメータに入れること。これで中間局面でもぬるい手が減ります。
もうひとつは手数に対してインセンティブを持たせること。短手数で詰める行為に報酬を盛り込むことです。もっとも雑な方法は512手の手数制限を減らす行為かもしれません。
加えて強化学習において非常に効果的なのは自己対局の考慮時間の増加でしょう。p800程度で読み抜けた部分は強化学習でも得られませんが深く読んで学習すれば高いレベルの教師データを得ることで強くなります。恐らく高速化の目標はこれだと予測しています。
(つらつらと休日の朝@珈琲を飲みながら)