根岸の部屋

管理人の備忘録がてらに将棋について書き殴ってます。棋力は絶賛伸び悩み中\(^0^)/

【コンピュータ将棋】評価関数合成について

  今更ながら評価関数の合成に手を出してみようと思う。これを使ってブリードしたところ、elmoなどの既存のものを超える、いわば「強化版elmo」とでもいうべき評価関数ができたという報告が多数なされている。これらの強化版elmoだが、公式にどこかで配布されているわけではないので、ほしいのであれば自分で合成して入手する必要がある。(一応一部の評価関数はどこかのアップローダにあげられていることもあるが・・・)

 この合成では、任意の評価関数を任意の割合で混ぜ合わせることで新しい評価関数バイナリを吐き出させることができる。現在、巷には多くの種類の有力な評価関数があふれておりその組み合わせは多岐にわたる。そのうち何種類を材料とし、何を何パーセント組み合わせるか、と考えるとレシピは無数に想定される。現状どのレシピにどんな可能性が秘められているかは全くの未知数で、しかもその時点での”最強”の評価関数はしばしば入れ替わっている。評価関数ブリードという分野は理論が全く確立されていないのだ(そもそも何故ブリードすると強化されるかの理論的根拠すらよくわかっていない)。

 

 これらを踏まえて、将棋ソフトを用いて検討、研究などをしたい人たちが取るべき態度は3つである。ひとつはこの評価関数合成の流れに乗らず、既にあるもののみで黙々と勉強すること。はっきり言って、無駄にコンピュータソフトに時間を取られることもないのでよほどコアな人でない限りこちらのほうがいいと思うが。

 もうひとつは、誰かが強い評価関数をどっかにアップしてくれるのを待ってそれを入手すること。ただそれはアップロード者にとってもまあまあ手間だし、評価関数自体圧縮してもファイルサイズが数百MBとなるためストレージ的にも負担となりそう。どこかから有るかどうかもわからないアップローダのリンクを探して回るというのも非効率な気がする。あるいは、どこの誰がアップしたのかも分からないファイルが本当に信用できるのか、というところもある。

 3つ目は、どの素材をどんな割合で加えるかというレシピさえあれば、いつでも手元で合成ができるような環境を整えておくこと。レシピ自体はそこらへんにそこそこ出回っているので、これができるならば常にその時点で最強の評価関数を用いた研究ができそうだ。本稿ではこの環境作りの方法を自分なりに述べたい。

 

 本家やねうら氏の解説記事はこちら。

評価関数のキメラ化コマンド公開しました | やねうら王 公式サイト

 

 

 

※筆者はこの記事の内容の正しさを保証しません。評価関数合成は自己責任で行なってください。

 

 

1.材料の評価関数を手に入れる。

 elmo、Qhqpaqなど、既存の評価関数が素材として必要なので入手する。入手先のリンクは以下を参照。

 

negishiroom.hatenablog.com

 

 この中ではelmo、rezero8あたりは優秀な素材と思う。特にrezeroはほかのどんな評価関数と足しても高確率で強くなる傾向があり、さながら万能調味料のような存在となっているので要チェック。

 

2.最新版やねうら王を入手する。

 以下のURLから最新のやねうら王のエンジンをダウンロードする。このエンジンがないと合成ができない。

https://github.com/yaneurao/YaneuraOu/releases

 

3.PC上に合成につかう適当な場所(ディレクトリ)を見繕う。

 適当な場所にディレクトリ(フォルダ)を作りそのなかにさっきDLしたやねうら王の実行ファイル(YaneuraOu-2017-early.exeなど)をおく。ただしYaneuraOu-2017-early-tournament.exeは評価関数キメラ化コマンドが含まれていないため使えないのでそれ以外を用いる。

 おなじディレクトリ内に「EVAL_DIR1」と「EVAL_DIR2」、「eval」というフォルダを作成する。evalの中には

KK_synthesized.bin

KKP_synthesized.bin

KPP_synthesized.bin

という名前の空のファイルを作成して置いておく(これが無いとやねうら王の実行ファイルが動かない模様)。よくわからないという方は下のリンクからダウンロードしたアイテムをそこに置くとよい。

eval - Google ドライブ

 ここが、料理で言う台所のようなものに相当する。

 

4.材料を決め、ディレクトリに入れる。

 一度の合成では2種類だけ選んで、任意の割合で混ぜることができる。合成したい評価関数2種類を、それぞれEVAL_DIR1、EVAL_DIR2のディレクトリに入れる。評価関数バイナリは違う種類のものでもファイル名やファイルサイズがどれも同じで紛らわしいため、どちらに何を入れたかがこんがらがったりしないよう、よく覚えるかメモするかしておくとよい。

 

5.実行ファイルにコマンドを打ち込み、合成を実行する。

 実行ファイル(YaneuraOu-2017-early.exeなど)をクリックして開く。「Windows によって PC が保護されました」などと表示されることがあるが、実行する。黒い窓のようなものが出てくるので、以下のコマンドを打ち込みEnterキーを押す。

test evalmerge EVAL_DIR1 EVAL_DIR2 OUTPUT_DIR [パーセント]

 OUTPUT_DIRというディレクトリを作成し、さらにEVAL_DIR1にある評価関数を○%、EVAL_DIR2のを(100-○)%の割合で合成した評価関数を生成しそれをOUTPUT_DIRに置く、という動作がこれで行なわれる。上の構文をメモ帳かなにかにコピペし、[パーセント]を任意の数に書き換えてそれを黒い窓にさらにペーストするとよい。

 EVAL_DIR1、EVAL_DIR2、OUTPUT_DIRの名前が気に喰わないならば任意の名前に変えられる、はず。その場合はそれに応じて手順3で作成するディレクトリの名前も変えること。

 

 さて、これで評価関数合成の手順の解説はひとまず終わりである。こうして出来た評価関数をさらに合成の材料にすれば、3種類以上の素材を組み合わせた評価関数を作ることもできよう。この記事が参考になれば幸いである。

【コンピュータ将棋】最新フリーソフトのリンクまとめ

 主なトップクラス将棋フリーソフトのリンクとそれぞれの簡単な特徴まとめ。情報は基本的にすべて7/9時点。そのうち書き足すかも。

 探索部、評価関数、定跡ごとに分けて並べてみた。

 

 

探索部

やねうら王

https://github.com/yaneurao/YaneuraOu/releases (7/15リンク先改変)

【同時に公開されているもの】評価関数:有 定跡:有

【評価関数の互換性】有

【使用可能な定跡の形式】やねうら形式・Apery形式

 

 SILENT_MAJORITY 1.25 

https://github.com/jangja/silent_majority/tree/1.2 (7/21リンク先修正)

http://garnet-alice.net/shogiengine/silent_majority/ (mingwでビルドして最適化したらしい。こちらのほうがNPSが増える?)

【同時に公開されているもの】評価関数:無 定跡:無

【評価関数の互換性】有

【使用可能な定跡の形式】Apery形式

 

たぬき(WCSC27出場名:蒼天幻想ナイツ・オブ・タヌキ)

https://github.com/nodchip/hakubishin-

【同時に公開されているもの】評価関数:有 定跡:有

【評価関数の互換性】有

【使用可能な定跡の形式】やねうら形式・Apery形式

 

読み太

https://github.com/TukamotoRyuzo/Yomita

【同時に公開されているもの】評価関数:有 定跡:有

【評価関数の互換性】有

【使用可能な定跡の形式】独自定跡のみ、編集不可

 

技巧2

https://github.com/gikou-official/Gikou

【同時に公開されているもの】評価関数:有 定跡:有(まふ定跡ver.11)

【評価関数の互換性】無

【使用可能な定跡の形式】技巧形式

 

nozomi

https://github.com/saihyou/nozomi

【同時に公開されているもの】評価関数:有 定跡:有(まふ定跡ver.11)

【評価関数の互換性】無

【使用可能な定跡の形式】Apery形式

 

Nanoha

http://vivio.blog.shinobi.jp/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E5%B0%86%E6%A3%8B/%E3%81%AA%E3%81%AE%E3%81%AF-%E3%81%BB%E3%81%BCwcsc27%E7%89%88-%E5%85%AC%E9%96%8B

【同時に公開されているもの】評価関数:無 定跡:無

【評価関数の互換性】有

【使用可能な定跡の形式】独自形式のみ・編集不可。ただしそのうちApery形式にも対応するかもとのこと。

 

 

評価関数(互換性のあるもののみ)

elmo

https://drive.google.com/file/d/0B0XpI3oPiCmFalVGclpIZjBmdGs

【同時に公開されているもの】探索部:無 定跡:付属

 

Qhapaq

https://github.com/qhapaq-49/qhapaq-bin/releases

【同時に公開されているもの】探索部:無 定跡:付属

 

eloqhappa1.0

https://github.com/qhapaq-49/qhapaq-bin/releases (Qhapaqと同じ)

【同時に公開されているもの】探索部:無

 

eloqhappa1.1

https://github.com/qhapaq-49/qhapaq-bin/releases (Qhapaqと同じ)

【同時に公開されているもの】探索部:無

 

たぬき

https://github.com/nodchip/hakubishin-/releases

【同時に公開されているもの】探索部:有 定跡:付属

 

読み太

https://github.com/TukamotoRyuzo/Yomita/releases (7/21リンク先修正)

【同時に公開されているもの】探索部:有 定跡:付属(独自の形式で編集不可)

 

rezero8

https://drive.google.com/open?id=0Bzbi5rbfN85NMHd0OEUxcUVJQW8

【同時に公開されているもの】探索部:有(上記のやねうら王。そちらのURLから入手できる)

 

野生の読み太

http://ii.ttlv.jp/learn_yomita.html

【同時に公開されているもの】探索部:無

 

まふ系評価関数

https://github.com/mafu-opening-theory/Shogi_opening_theory/releases

(mafu系統のさまざまな評価関数が公開されている。詳しくはリンク先へ)

【同時に公開されているもの】探索部:無 定跡:有

 

yaselmo

http://ii.ttlv.jp/yaselmo.html (8/5リンク先追加)

【同時に公開されているもの】探索部:無

 

KPP_KKPT型rezero epoch4

https://github.com/yaneurao/YaneuraOu (9/4リンク先追加)

【同時に公開されているもの】探索部:有(上記のやねうら王。そちらのURLから入手できる)

 

 

定跡

まふ定跡

https://github.com/mafu-opening-theory/Shogi_opening_theory

【形式】技巧形式、Apery形式

【同時に公開されているもの】評価関数

 

河童全力定跡

http://qhapaq.hatenablog.com/entry/2017/05/04/223322

【形式】やねうら形式

【同時に公開されているもの】評価関数(Qhapaq)

 

シンデレラ定跡

https://github.com/qhapaq-49/qhapaq-bin/releases(Qhapaqその他と同じ)

【形式】やねうら形式

 

HandicapedRook振り飛車定跡

https://github.com/tibigame/HandicappedRook

【形式】やねうら形式

【同時に公開されているもの】振り飛車評価関数

 

elmo定跡

https://drive.google.com/file/d/0B0XpI3oPiCmFalVGclpIZjBmdGs

【形式】やねうら形式、Apery形式、sbk形式(ShogiGUI用)

【同時に公開されているもの】評価関数

 

真やねうら定跡

https://github.com/yaneurao/YaneuraOu/releases (7/15リンク先追加)

https://drive.google.com/open?id=0ByIGrGAuSfHHcXRrc2FmdHVmRzA

【形式】やねうら形式

【同時に公開されているもの】探索部、評価関数(上記のやねうら王のURLから入手できる)

 

千田振り飛車定跡

https://t.co/msUOkk1Uvj

【形式】やねうら形式、Apery形式、sbk形式(ShogiGUI用)

 

 

詰探索エンジン

(7/15リンク先追加)

脊尾詰

http://panashogi.web.fc2.com/seotsume.html

 

なのは詰め

http://vivio.blog.shinobi.jp/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E5%B0%86%E6%A3%8B/%E3%81%AA%E3%81%AE%E3%81%AF%E8%A9%B0%E3%82%8164bit%E7%89%88

 

 

【floodgate】KKS_Nbook名局選番外編① WCSC27の前哨戦?

 先の第27回世界コンピュータ将棋選手権で決勝進出を果たした“振り飛車党”HoneyWaffle。決勝リーグのなかの4局が後手番となり、そのうち初手に▲3八銀とされた蒼天幻想ナイツ・オブ・タヌキ戦以外の3局は角交換四間飛車を採用した。うち技巧戦、elmo戦は早々に定跡が切れソフト同士の捻りあいがはやい段階から繰り広げられることになった。

 しかし、残りの1局の大合神クジラちゃん(以下クジラちゃん)戦は違った。後手HoneyWaffleは22手目、クジラちゃんは28手目と比較的長い定跡がヒットした。どうしてこの将棋だけこんなに長く定跡どおりの手が続いたのだろうか。

 

 調べてみると、この将棋にはfloodgate上でKKS_Nbook6.0による前例があった。

「Ukamuse_KabyLake-7700K」vs「KKS_Nbook6.0_i5_6200U」

http:// http://wdoor.c.u-tokyo.ac.jp/shogi/view/2017/04/26/wdoor+floodgate-300-10F+Ukamuse_KabyLake-7700K+KKS_Nbook6.0_i5_6200U+20170426150002.csa

 クジラちゃんはまふ定跡を搭載していたが、これの作者のまふ氏は

(Honeywaffleは・引用者注)角交換四間飛車してくるんじゃないかと予想し、floodgateで角交換四間飛車(=KKS)ばかりやるKKSなんちゃらって名前の棋譜を引っ張ってきて調整しました。 

 (まふ定跡githubから引用)

といっていたことから、この将棋をベースに定跡手の登録をしたのだろう。

f:id:Negishi_Shinya:20170708033253p:plain

実際、上図の次の23手目、前例局で先手Ukamuse_KabyLake-7700Kは▲4七銀としていたところクジラちゃんの定跡手は▲2六飛という独自の手に「調整」されている。

 ハニワ定跡のほうは、このまふ定跡の改良手を指されたところで定跡が切れた。この棋譜を材料としてこの定跡が加工されたのは間違いないだろう。

 この前例局が指されたのは4月26日で、WCSC27決勝のクジラちゃん対ハニーワッフル戦は5月5日。この期間の間に両者の定跡作成が行われていたことになる。

 

 さて、これらの将棋はいずれも振り飛車側が敗れている。いずれも実力的に厳しいオッズの勝負ではあったが、作戦や局面自体はどうだったのかを調べてみる。

 floodgate上の前例局では以下、23手目から

▲4七銀 △7六角▲7七銀 △3二角 ▲9六歩 △9四歩 ▲2六飛 △5二金左 ▲7九金 △8四歩▲6六銀 △8三銀 ▲6八金寄 △4三金(下図)

と進行する。

f:id:Negishi_Shinya:20170708033650p:plain

 この図を見て後手を持ちたい人は少ないだろう。歩得こそしているが角が抑え込まれ働きが非常に悪く、金銀が分裂しバランスが良いともいえない。先手陣は隙も少なく、手持ちの角も含め駒の働きが優れ伸び伸びとしている。実際の形勢、または評価値以上に振り飛車勝ちにくいと思う。

 図以下、先手の攻めに後手も反撃するが、大駒の働きの差のせいで攻めに腰が入っておらず、うまく受け止められてそのまま負けている。

 

 一方のクジラちゃん対ハニワ戦。22手目以下、

▲2六飛 △7六角▲7七銀 △3二角 ▲4七銀 △9四歩 ▲9六歩 △6四歩▲8八玉 △5二金左 ▲7九金 △7四歩 ▲5六銀 △6三金▲4五歩(下図)

f:id:Negishi_Shinya:20170708035237p:plain

 居飛車に気分よく先攻される展開である。つくづく後手は筋違い角が働かない。また、得した歩の用途もあまりない。

以下、△5四角 ▲4四歩 △7三桂 ▲6八金寄 △4四飛▲4五歩 △4一飛 ▲3五歩 △同 歩 ▲5五銀(下図)

f:id:Negishi_Shinya:20170708035518p:plain

 後手は△5四角と出て対抗するが、銀と角の対抗では頭の丸いほうの分が悪い。7六歩の屋根がないため角の利きが8七に直射しているのが生きる展開にしたいが、その目途はとても立ちそうもない。その実現のためにはなにか駒を交換しなければならないし、そもそも87は▲7八金寄などで一手で補強できる。何をどうやっても角が負担だ。実戦もそのまま居飛車勝ち。

 

 実のところ、前例局でKKS_Nbookが指した△5四角は定跡手ではなく、ソフトが自力で思考した末に選択した手なのである。浮かむ瀬系は時折、特に浅い読みだとこのような角を推奨しやすい気がするが、そこから手を進めてみると上二局のように指しにくい局面になりがちで、浮かむ瀬自身も反省して評価値をさげていく。elmoなどの新しい評価関数だとこの癖は直っている感じだ。

 

 結論。このような筋違い角を放っても打った角の働きが弱いので有力になりにくい。すでに飛車が向かい飛車に振りなおされていて直ちに4三角~3五歩~2四歩のような反撃を狙える場合、またはいつぞの藤井ー羽生の王位戦王座戦だったか?忘れた)のように、6七(4三)と両取りになるように角を打ち3六(7四)のほうの歩を払い、2筋(8筋)方面を角の利きを絡めてちょっかいをかけていく展開でもない限りは有効手になる可能性は低そうだ。

 

※7/22追記

HoneyWaffleさんにTwitterにてこの記事について言及していただきました。この件に関する真相がわかりました。ありがとうございます。

 

 

 

評価関数を自作してみる⑦ー2

⑦-1の続き)

 さらに最終試験として、eval5+やねうら王4.72で大樹の枝(探索部・評価関数ともオリジナル)と戦わせてみる。ほとんどの人間にとって勝ち越すのも難しいレベルの強さを持つ大樹の枝だが、対戦成績はどうだろう。一手一秒、4スレッドでやってみた。

eval5 71-1-28 Apery_Twig

 どうやらeval5のほうがはっきり強いといえそうだ。レート差にすると160ほどだろうか。無事に相当なレベルまで育てることに成長したので、この試みはここで一区切りとさせていただきたい。(ひょっとしたら後でほんの少しだけ手を加えることはあるかもだが)

 この評価関数は公開しておく。全然たいした強さではないのでブレンド等には使えないと思うが、一応少しは自力で飛車を振るようにはなったし、私自身もコンピュータ将棋や振り飛車という戦法に関して多少の知見を得られたのでよしとしておく。

 

new_eval5.7z - Google ドライブ

 

 

 

評価関数を自作してみる⑦ー1

 ここ数日の間、学習の条件はこれまで同じにしたままeval3~eval5を生成していた。

 以下はテスト対局の結果。探索部はすべてやねうら王4.72。

eval3 106-4-90 eval2 (1t0.1s)

eval3 97-0-3 epoch0 (1t0.1s)

eval3 83-0-17 eval1 (1t0.1s)

第3世代のeval3だが、ちゃんと強くなっていることがみてとれる。が、一世代前のeval2に勝率54%(引き分けは0.5勝0.5敗扱いとする)は低い。有意に強いといえるかも怪しく、早くもサチり気味である。大丈夫なのか。ちなみみeval3の気風は・・・普通。振り飛車要素のかけらもない相掛かり(横歩取り系含む)、角換わりばかりで、企画倒れの危機である。こっちの意味でも大丈夫なのかこれ。

 次はeval4。

eval4 23-0-26 eval3(1t0.1s)

 なんと、非常に少ない対局数とはいえ前世代に負け越している。どうしてこうなった。ほぼ同じ条件だった(はず)のuuunuuun氏のものはこのころでもまだまだ大幅に勝ちこしていたはずだが・・・。あまりにもおかしいので一手一秒と条件を変えて100局追加してみる。

eval4 56-3-41 eval3 (1t1s)

 上とあわせる(条件=時間が違うのに合わせていいのかはアレだが)と79-3-67。さすがに帳尻を合わせてきたが、それでもかなり物足りない感じ。

 ただ、このテストで見えてきたものがあった。時間を一手0.1秒から1秒にするとeval3、eval4ともに指し手が変わる。もっとはっきりいうと、

たまに飛車を振る。

 間違えてShogiGUIの内部定跡を導入してしまったのかと思ったが、調べると間違いなく自力の探索で飛車を振る手を選んでいる。epoch0以降しばらくは全く見られなかった傾向である。ついに定跡を用いた調教が表出し始めたのか。

 もうすこし詳しく書くと、振る頻度はeval4のがやや高い。先手番では全くと言っていいほど振らず(▲2六歩△3四歩▲7六歩△4四歩▲7八飛という変則的な相振りが一局のみ、先手eval3)後手のときのみたまーに振る。内訳はノーマル四間飛車10局、ノーマル向かい飛車、ゴキゲン中飛車、後手石田流、ダイレクトが1局ずつ。定跡のもととなった棋譜がノーマル四間飛車の割合が多かったためこのような比率となったのだろうか。

 ほかには早めに端歩を突くのをわりと好む、ほとんど美濃囲いにしないという特徴もみられるあたりがこちらの方↓

https://github.com/tibigame/HandicappedRook

と似ている気がする。特に美濃囲いを好まないというのは興味深い。既存の評価関数に無理やり振り飛車をやらせて定跡が切れた場合、ほとんどのケースが美濃囲い、たまに振り穴を採用していた。この自作評価関数も、上の評価関数(あまり確かめてないが)も美濃や振り穴は好まない。もしかすると至高の振り飛車に美濃囲いは不要なのか、それともいずれ美濃に収束していくのかは少し気になる。

 ここで、試しに浮かむ瀬評価関数(+やねうら探索)と手合わせしてみる。

浮かむ瀬 86-1-13 eval4 (1t1s)

 勝率86.5%はR340差相当。これを健闘したとみるかまだまだ未熟とみるか。コンピュータ将棋 レーティングを参考にすれば、最新やね+eval4は大樹の枝(の探索、評価関数)よりほんのりと強そうといったところか(未検証)。ただ棋譜や評価値グラフを見るに浮かむ瀬のほうが圧倒的に本筋だし、指し手の完成度も高く映った。肝心の振り飛車戦でも、たまたまダイレクト向かい飛車を浮かむ瀬が採用した(無論定跡不使用で)ときのほうがずっと振り飛車らしい振り飛車に見えた。

 さらにeval5を生成し、eval4と対局させる。

eval5 84-6-68 eval eval4 (4t1s)

 勝率55%は有意に強いとは言えなさそうだが、これ以上のテストは面倒なので省略。まあ多少は強くなっているはずだ。相変わらずレートはまもなく収束していくっぽい傾向だが、収束するには早すぎやしないかとも感じる。

 棋風だが、先手はほ居飛車オンリーなのは相変わらず。後手番で振るときも、振り飛車版elmo囲いをするなどの相変わらずの自由っぷりを発動させている。また角道オープン系の振り飛車が非常に少ないのは気になる。

 

<もうすこしだけ⑦-2につづく>

 

 

 

自作評価関数に関する自分用メモ

 ほっとくと忘れるので書き置きしておく。ど素人の超低レベルな内容を大いに含む。

 

 

・教師局面の探索深さが及ぼす影響

・教師局面数の量が及ぼす影響

・定跡の戦型が及ぼす影響

・定跡の手数の長さ(深さ?)が及ぼす影響

・定跡の分岐(ツリー?)の数が及ぼす影響

・定跡の指し手のレベルが及ぼす影響

・bookdepthlimitを0にしないと定跡が読み込まれない、なんてことがないか不安になってきた。大丈夫だろうか。

・教師局面のファイルの内容は可視化できないのか(定跡がちゃんと読み込まれているかの確認に使いたい)

・既存の評価関数(エロ河童など)で教師局面をつくりそれをepoch0などに喰わせるとどうなるのか。

・複数の既存評価関数から一つの教師局面を作る方法(elmo3分の1、エロ河童3分の1、カパック3分の1など)。単純に継ぎ足しすれば良いのか?

・教師局面を使い回すとどうなるのか。また、使い回し方は何が適切なのか(教師局面の品質(探索深さ・局面数・評価関数)、学習させる順番など)

振り飛車定跡を与えて学習させても自力で振り飛車を指すようになるわけではないのか。その定跡を搭載しているという条件下限定での強さを獲得するに過ぎないのか。

・レート測定の方法は現状のままでいいのか。

・そのうち既存ソフト(過去のAperyなど)とのレートを測りたい。

・レート測定時の棋譜の内容をチェック。それなりの探索深さで対局させ棋力・棋風を調べる。

・できた評価関数において、振り飛車定跡搭載ver.と非搭載.verでのレートの差を調べたい。それぞれターゲットとなる何らかの他のソフトと対局させる、という方法で合っているのか。このときターゲットの対象にも定跡(まふ定跡その他)を搭載させるべきか。

評価関数を自作してみる⑥

 振り飛車定跡から評価関数を作るという試みだが、既に十分の強さを持った振り飛車専用評価関数を作った方がいるようだ。私が定跡作成やバイナリのコピペなどでくだらないミスをしまくりながら学習を回している間に先を行かれてしまった。まあ、いかんせん低スペ(2コア4スレッド)のノートパソコンなので、のんびりマイペースでやるしかない、と言い訳してみる。

 上の振り飛車評価関数が具体的にどれくらいの強さなのか分からないが、技巧2と十分に渡り合っているらしい旨が述べられていたので、まあ相当な強さなのだろう。私の環境でこれくらい強くするにはどれくらいの時間と電気代がかかるのだろう…。

 ともかく。

 このまま普通に学習させるだけだと、上記の評価関数のただの劣化版と化しそうだ。スペックが違うので、同じ量の学習でもあちらのほうが圧倒的に早く終わるからだ。そこで、何か相違点を見いだして独自色を出してみたい。違いと言えば学習に用いる定跡があげられる。あちらは手入力した定跡を用いているそうだが、こちらは既存の棋譜集を用いて定跡を生成している。この点で違いが生まれるのかもしれないが、もう一押しオリジナリティーがほしいところだが…。

 さて、epoch0から振り飛車定跡で2回目まで学習してみた。自己対戦成績は以下の通り。条件は全て1スレッド0.1秒。

epoch0 8-0-92 eval1

eval1  50-0-150 eval2

epoch0  10-0-90 eval2

 となった。順調に強くなっている。

 さらに、eval1と、振り飛車定跡の読み込みに失敗した状態で2回学習したeval1(旧)も対戦させてみた。

eval1 140-6-154 eval1(旧)

 若干負け越しているが、まだ有意差は付いていないので、一応互角ということになるのだろうか。定跡の有無、種類が及ぼす影響を調べてみたかったが、これではよく分からない。体感的に、振り飛車定跡を使った方は若干右美濃囲いが増えたような気がするようなしないような。

 

 もうすこし続けてみる、かもしれない。