【Warsenal Zeroアピール文書】 2014.2.28初版 2014.3.6 第2版 2014.3.19第3版 2014.3.26第4版 2014.4.07第5版 2014.5.06最終追記 (開発進捗により追記予定) 【1.作者はどんな人ですか?】 早稲田大学政治経済学部経済学科出身の個人プログラマ。サッカーとクラシック音楽が 好きな、(多分)かなり変わった人です。人からはよく「コミュニケーション能力が ない」と言われます。ゼミ生ではないですが、瀧澤先生の授業は幾つか取って いました。1977年生まれ、身長やや高め、埼玉県出身。指し将棋は一応アマ五段に 認定されていますが、最近まったく実戦を指していないので、実際の棋力はもっと 低いです。人間的総合力は低い残念な感じの人です。好きな棋士は羽生善治三冠、 佐藤康光九段、郷田真隆九段、木村一基八段、中村太地六段。(2014.3.6追記) 【2.プログラム名称の由来は?】 「ワーセナル ゼロ」と読みます。"Warsenal"は作者の出身大学「早稲田」と イングランドのサッカー名門アーセナルFCから作った造語です。早稲田の出身者が 作ったコンピュータ将棋プログラムが選手権に(おそらく)出ていないようなので、 「出てみようか?」と思ってつけた名前。アーセナルFCについては、アーセナルFCが 繰り広げるポゼッションサッカーのような攻撃をするように、との思いを込めて 名付けました。"Zero"はウイングガンダムゼロのゼロシステムから名付けました。 将棋による完全な未来予測をして勝利するのが目標です(無理だろ?)。 【3.全般的な開発状況は?】 元々は完全にオリジナルで作ったプログラムでの参加を予定していましたが、1カ月 ほど前に致命的なバグが見つかり(この時点で既にダメ)、急遽Bonanzaライブラリを 使って再開発している最中です。開発部については、評価関数や手の生成部分など、 速度に関わる部分をマクロ化している状況です。今のところの成果としては、8コア 16スレッドで平均240万手読めていたのが平均260万手程度になったくらいです。 今回のプログラムに関しては、Bonanza v6にどのくらい肉付けできるか、という 程度になってしまいそうです(→あまりオリジナリティがない感じ…)。 →少しずつテスト対局しながらマクロ化して行っている状態です。バグを作り 込まないように慎重に作業しているので、作業スピードは遅いです…(2014.3.19追記) 【4.評価関数は?】 Bonanza v6の評価関数を変更しないで出る予定です。なので、評価項目は (1)先手玉と後手玉とその他の駒1つ(いわゆるKKP) (2)玉1つとその他の駒2つ(いわゆるKPP) (3)駒割り (3)については、Bonanza v6(1スレッド)とのテスト対局で、時々無理攻めを する傾向が見られたので、銀以上の駒について若干高めに点数を付けています。 (1)と(2)については今のところオリジナルのfv.binを使っています。本番までに 間に合うようであれば、Bonanza v6リリース後の棋譜を追加学習させる予定で います。 →Bonanza v6リリース後の棋譜を追加学習させようとしたところ、どうもうまく 行かず、fv.binの更新ができていません。Visual Studioのコマンドラインから コマンドを実行するところまではできているようですが…(2014.3.6追記) →オリジナルのBonanza v6を少し改変して、Visual Studioから学習できるところ まで確認しましたが、学習中はテスト対局ができなくなってしまうので、今現在 学習はできていません。(2014.3.19追記) →そろそろ本体に手を入れるのが微妙な時期になってきたのですが、中途半端に 時間が余ったので、学習にチャレンジしています。棋譜数は46000弱を使っています。 探索深さ2でiterationが5回まわったところです。辛うじて本番に間に合うくらいの レベルだと思います。(2014.4.7追記) 【5.探索は?】 基本的に、オリジナルのBonanza v6から変更を加えていません。なので、 全幅ベースの探索になっているはずです。前述しましたが、8コア16スレッドの 実機で、NPSの平均260万手を計測しています。Max値は467万手くらい、Min値は 180万手くらい。前述したように、マクロ化による高速化を試みています。序盤の 探索深さは19〜21、中盤は15〜17、終盤は11〜13くらいです。NPSは序盤よりも 中盤の方が高い数値が出る傾向にあるようです。何とか平均値を300万手くらいまで 持って行きたいです(→願望)。 →マクロ化による探索スピードの増加は微弱なものにとどまっている感じです。 局面への依存が大きい感じです。中盤のNPSが高い傾向にあるのは変わって いません。(2014.3.19追記) →相変わらず探索スピードは伸びていません。選手権後に、マクロ化以外の対策を しないといけないかと思っています。(2014.3.26追記) 【6.定跡は?】 Bonanza v6の定跡が若干古いようなので(四間飛車に振った時に角道を止める、 ゴキゲン中飛車に組まない、横歩取りで後手が△4一玉または中住まいに組むなど)、 現在新しい棋譜から再構成を試みているところです。序盤から乱戦になるような棋譜は なるべく定跡から外すようにしています。ただ、問題点としては、Bonanza v6が 搭載している定跡数よりは大幅に減ってしまいそうな点が挙げられます。残り 2カ月でどのくらい上積みできるか、といった状況です(→ダメじゃん)。おそらく 選手権後にもかなり精査が必要な部分です。 →将棋年鑑3年分の棋譜から、序盤で失敗した例や激しく変化した例を抜かして、 book.binを作り直してみましたが、10手くらいで長考に入ってしまってダメな感じ です。棋譜数が根本的に足りないのかもしれません。(2014.3.6追記) →棋譜数を37000以上に増やしてやってみましたが、book.binのファイルサイズが 若干増えた程度で効果が出ていない感じです。(2014.3.19追記) →3.19に追記した結果のbook.binを組み込んでテスト対局してみたところ、 オリジナルのものほどではありませんが、必要十分なくらいの定跡はできて いることが分かりました。今のところですが、新しく作った定跡を使おうかと 思っています。(2014.3.26追記) →3.26に作った定跡に若干棋譜を追加して作り直しました。(2014.4.7) 【7.詰めエンジンは?】 本当はここの部分で凄い詰めエンジンを作って「ゼロシステム」と名付けるつもり だったのですが…(やっぱりダメか?)…開発の時間が取れていないので、 Bonanza v6の詰めエンジンをそのまま使用予定です(確か3手詰めと1手詰め)。 DF-PNのところも少しだけ見てみましたが、本番までに実用化するのは無理な感じ です(やっぱりダメだ…)。 【8.棋風は?】 駒割り以外の評価関数を変えていないので、基本的にはBonanzaと似ていると思い ます。銀以上の駒価値をアップしましたが、あまり駒得重視という感じにはなって いません。元々のBonanza v6の評価関数が非常に優れているので、本筋の手を選び やすいとは思いますが、前述したように、時々無理筋の攻めをしてしまうようです。 本当はそういうところを修正できないとまずいのですが…(なんだ、結局できて いないんじゃん)。サッカーで例えると、攻撃に関してはアーセナルというよりも、 マンチェスター・ユナイテッドやバイエルン・ミュンヘンに近い感じがします。 パスをつなぐというよりも、直線的でスピードのある攻めといいますか… →マンチェスター・ユナイテッドやバイエルン・ミュンヘンほどの実力はないので、 フラムくらいでお願いします…_| ̄|○(2014.3.6追記) 【9.総括(というか反省会)】 元々作っていたプログラムに致命的なバグがあった関係で、急遽Bonanzaライブラリを 使用させていただいて出場することになりました。開発期間が少ないという制約は あったものの、「もう少し開発部での工夫ができなかったものか?」と自分でも思い ます。今のところ、選手権前に組み込めそうな部分が探索と評価のマクロ化だけ なので、「ちょっとというか、かなり情けないな…」というのが本音です。自分の 創造性のなさ、C/C++におけるプログラミング能力の低さを痛切に感じました。ただ、 そういった部分で自分の「弱さ」を知って、それを来年以降にどうつなげて行けるか。 そういったことを常に考えながら開発に取り組んで行きたいと思っています。最も やってみたいのは、精度の高い詰め検索エンジンを作って「ゼロシステム」と 名付けることです。あとは評価関数ですね。もっと色々と突き詰めていかないとダメ だと思います。引き続き、微々たる努力ではありますが、続けて行きたいと思います。 【10.謝辞】 Bonanzaライブラリを使わせていただいている保木様、学習用棋譜の入手方法を 教えてくださったSeleneの西海枝様、Twitterで有用な情報を教えてくださった GA将!!!!!!!!の森岡様・Aperyチームの平岡様・メカ女子将棋部の木村様に厚く 御礼申し上げます。 -以上- 岩崎 高宗 【以下、選手権後に追記】 -------------------------------------------------------------------------------- 結局、評価関数の学習には失敗し、Bonanza V6同梱のfv.binを評価関数としました。 結果は2次予選敗退。工夫の度合いの少なさを考えると、妥当な結果だと思います。 選手権後のアンケート結果を見たところ、8コアマシンを使っているわりには、 探索スピードが今ひとつ出ていないことが分かりました。もっと高速化の余地が あるのかもしれないですし、あるいはMagic Bitboardなどを使った方が良いのかも しれません。 あと、負けた対局の評価値の経過を見ていて、幾つか読み抜けが敗因になったと 思われるものがありました。具体的には、急に評価値が1000程度下がった場面が 2度ありました。学習結果が不十分である局面であった可能性が高いのではないかと 思っています。対策としては、特徴を追加する、あるいはテスト対局を行って ログを取り、評価値が急に変動している局面のパラメータを手動で調整する、などの 対策が必要かと思っています(簡単ではないですが)。 上記を踏まえて、不十分な点をきっちり修正できるようにしたいと思います。 選手権初参加の感想を少し。1次予選から参加し、色々なチームの方々と お話をさせていただく機会がありましたが、上位進出できなかったソフトも、 それぞれ独自の工夫をたくさん組み込まれているのが実感できました。自分も 今の何倍も努力して、質の高いソフトを作らないといけないと思いました。 最後になりましたが、Aperyチームの皆様、優勝おめでとうございます。普段 かつ不断の努力の賜物だと思います。 --------------------------------------------------------------------------------