コンピュータ将棋開発失敗メモ(1)終盤でKKPT(KPPを含まない)を試してみたがダメだった話

注意事項

KPPTからKKPT型評価関数へではKKPTという用語はKKPT+KPPと定義されていますが本稿ではKKPTのみの評価関数を指すものとします。

概要

将棋の終盤において、既存のKPPT型の評価関数より軽量な評価関数であるKKPT型の評価関数を用いて深く読んだ方が強い可能性があると考えて実験してみたがKPPTが優れているとの結論を得た。

本実験の動機

ゲームAIの探索において評価関数による評価はよく行われているが囲碁の死活、将棋の詰不詰など結局深く探索しないと結論が出せないケースはよくある。
将棋の終盤において評価関数の良さよりも読みの深さの方が重要な可能性があると考えた

実験概要

KPPT型評価関数と表現力は弱いが高速なKKPT型評価関数を搭載したソフトを対戦させる。できる限りオープンソースで手に入るものを利用し、必要に応じて改変した。

KKPT型探索エンジンの作成

やねうら王1のKKPT+KPP型評価関数のコードを流用してKKPTのみ計算するように書き換えた

KKPT評価関数の作成

上記で作ったエンジンのlearnコマンドと110億局面教師データ2を用いて評価関数ファイルを作成した

対戦概要

KPPT KKPT
探索エンジン やねうら王 やねうら王を改変
評価関数 elmo_sdt53 110億局面で学習したKKPT型評価関数
対戦条件
対戦数 100
対戦開始局面 floodgate2017互角局面集(100手目、評価値±100以内)4
思考時間 秒読み1秒(btime=1000)
CPU Ryzen 7 1700
スレッド 1スレッド

(やねうら王のソースコード内のengine_invoker1.pyを利用して対戦した。各種パラメータはこちらのソースコード参照。)

結果

97勝3敗でKPPT型評価関数の勝利であった。

感想

本当はもうちょっと条件を変えてやってみるつもりだったがあまりの差にやる気を失った。
「攻め駒への利き」「挟撃形」「攻め駒と受け駒の関係」などをより正確に評価できるKPPの利点がKKPTの深さの利点をはるかに上回るのだろう。

ちょっと気になってる点

やねうら王の探索パラメータ(改変せずにそのまま使用)がKKPTにマッチしていない可能性
(でもこの差が埋まることはないだろう....)

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.