由来
W@ndre は wander で wonder な将棋を指してもらう意図で命名したプログラムです。
実績
- SDT5:19 位
- WCSC28:16 位
- 振り飛車評価関数 KPPT の作成:
本大会での特徴
- 人間の棋譜を用いない振り飛車評価関数(3駒型)の利用
- ネットワーク構造を変更した振り飛車 NNUE 型評価関数の使用
- 定跡に向飛車を採用
人間の棋譜を用いない振り飛車評価関数(3駒型)の利用
ここ数年で将棋ソフトの棋力は著しく向上しましたが、その一方で学習過程で居飛車を過大に評価するようになった可能性も示唆されています(1-4)。
これまで振り飛車を評価する様々な評価関数作成の試みが行われており ・定跡などで振り飛車局面を多く含んだ教師を生成する(5-7)・振り飛車局面を過大に評価させた教師を生成する(8)・振り飛車が負けた局面を取り除いた教師を用意する(9)・学習時に振り飛車局面で出現しうる形を評価する(10, 11) などの手法で既存の評価関数に対する追加学習、ゼロベクトルからの学習において成果が確認されています。
今回のW@ndreでは、通常の初期局面が飛車先を突きやすく居飛車を過大評価しやすい状況だと仮定し(*)、十数種類の特定初期局面 (Fig. 1) から教師局面を生成し、強化学習を行うことで居飛車を過学習しない評価関数の作成を行います。
本学習はやねうら王(12)・習甦 (WCSC27,28)(13) より着想を得ました。
*なお、初期局面において飛車先を突きやすいと仮定しましたが、入門者に将棋を教えている際に閃いたものであり、実際に平手初期局面で強化学習を行った際に初期段階で居飛車の局面がどの程度出現するかは調べたほうがいいのかもしれません。
例えば、評価関数を読み込まない時のエンジンの指し手が飛車先の歩を突くかどうかは探索部に依存し、やねうら王(v4.83)や技巧2では16歩など端歩を突く、shogi686(SDT4)、Apery(WCSC28)では飛車先を突く、nozomi(WCSC28)は角道を開けるなどの指し手の差を確認しています。
ネットワーク構造を変更した振り飛車NNUE型評価関数の使用
ネットワーク構造を変更した振り飛車NNUE型評価関数を使用します。少ない教師で実験したところよさげなネットワークを見つけた(本当か?)ので、そろそろ教師を増やして学習を行う予定です。
学習に際しては・上記で作成した評価関数より教師を用意する・定跡で振り飛車局面を増やした教師を用意する・やねうら王ライブラリで配布された教師(14)を利用する などを予定しています。
定跡に向飛車を採用
去年の採用定跡は角頭歩、阪田流向飛車、都成流、ダイレクト向飛車だったのですが、振り返ってみると向飛車ばかりでした。
それならば角不換型の向飛車も指せた方がいいだろう、ということで今年は向飛車のレパートリーを増やします。
参考
- 以前のW@ndreのアピール文書
- QRLリンク
- 定跡のレパートリー増やしに以下の棋書を参考にしました。
- 加藤治郎 「新・将棋の公式」
- 島朗 「島ノート」
- 勝俣清和 「消えた戦法の謎」
- 以前から参考にしている棋書は以下のとおりです。
- 米長邦雄 「角頭歩戦法」
- 西川和宏 「角頭歩戦法」
- 飯塚祐紀 「奇襲振り飛車戦法」
- 豊川孝弘 「パワーアップ戦法塾」
- 木屋太二 「超阪田流角命戦法」
- 湯川博士 「奇襲大全」
- 週刊将棋 「痛快!ワンダー戦法」
使用ライブラリ
以下のライブラリを使う予定です。
- やねうら王
最初に開発を始めた頃、定跡DBが編集しやすいということで選択しました。それ以降もソースを読み慣れて改良がしやすいので使い続けています。
- tanuki-
NNUE型の評価関数を利用するため申請しました。
dlshogi
前回お世話になりました、今回もお世話になる予定です。
今回は振り飛車評価関数に注力する関係で使いません。
- python-shogi
現状では具体的な利用方法は煮詰まってないです。エンジン呼び出し等に使うかもしれません。
ライブラリを提供していただける、やねうら王のやねうらお様、tanuki-のtanuki-製作委員会様、dlshogiの山岡様、python-shogiのグニャラくん様に感謝いたします。
Contact: Twitter Account