ほな評価でもやりまひょうか~
まタイトルが寒いのは気にしないで。
評価関数のところを全面作り直し中です。前回verilogに手を入れたのは6月だったので、半年ぶり。囲碁、Stratix立ち上げ、ASIC化検討、GPW準備、と設計以外のところにいろいろ時間をかけてきましたが、ようやく設計に戻ってきました。
GPWでしゃべったとおり、今までのAリーグの評価関数は駒割り以外はほとんど最小限のことしかやっていない「駒割り君」でした。今やってるのは、学習派の人たちを見習って、まず評価の要素を増やす。ただしハードでやるので、ハードでは実現難しいこともあるし、また物量が入るかという話もあるので、物量やディレイとの兼ね合いで、できる範囲でなるべく要素を増やす、というまあ何というか微妙に苦しいとこなんですが。それから次にパラメタをチューン、ということになるんですが、ここは当面は(少なくとも09年5月は)いわゆる学習は使わず、手調整で行くことになりそうです。時間的に間に合わなさそうというのもあるんですが、それよりもハードの評価関数は精度が粗いのでhill climbingなんてレベルじゃなさそう、というのがあって。3bitで表してる変数を微分してどうする、みたいな。
評価要素を決めるにあたっては、GPS将棋(OSL)のソース、奈良さんの自戦記、Bonanzaの論文、Deep Blueの論文等を参考にしたうえで、例によってハードだからというので適当に妥協に妥協を重ねて決めています。
パラメタ調整のしやすさを考慮して、いきなりverilogを作るのでなく、まずC++でソフトウェアモデルを作るところから始めてます。評価の部分はハードの作りを忠実にコピーする。その他はできるだけ簡単にして、全幅1手+静止、くらいをやらせるつもり。このCモデルはほぼコーディング終わっていてそこそこ動いてるんですが、100npsくらい。効率も最適化も全然考慮してません。元々速くする気も全然なかったんですが、100npsはさすがに遅いので、ちょっとは速くせんといかんかな、と思いだしたところ。
私はある程度まとまった作業をするときは、大体まず「企画書」を作ります。何をどういう目的でどういうコンセプトで、どういうふうに作っていくか。工数は、コストは、リソースは。仕事じゃないので自分向けの簡単なものですが、自分の頭を整理という意味で大抵作ります。これにスケジュールも書いてあるんですが、以下のようになってます。
item wks date
start 11/19
仕様作成 2 12/ 5
Cモデル 2 12/20
妥当性確認 1 12/31
veri作成 3 1/20
siml、合成 2 2/ 5
パラメタ調整 5 3/10
GPWの動画投稿した後あたりから始めて、今Cモデルの妥当性確認中。ここまでのところほぼ予定通りの進捗です。「妥当性」というのは、チューンまではしてないけど、全幅1手探索でそう変な手を指さない程度、というくらいです。この後にチューン前にいったんverilogを作るのは、合成かけて物量やディレイが入ることを見極めたいから。それがOKなら、順調に行けば2月末くらいにはまたfloodgateに参戦できるかもしれません。ただし、合成かけてみたら物量入んなかったとかディレイ全然遅かったとか、あるいは対戦させたら全然弱かった(評価要素のとり方がまずそう)、とかいうことになると大幅見直しになって、最悪09年5月の参加も危ういという状況になる可能性も十分あるんですが。まあこの辺はとりあえずやってみて、出たとこ勝負だよねー、というとこです。
« 視聴者からのおたよりコーナー | トップページ | 1ねんのがくしゅう 4がつごう »
「将棋プロセサ」カテゴリの記事
- ボンクラーズの開発過程について書いた記事が掲載されました(2019.03.07)
- 「浅い評価値を深い評価値に近づける学習法」誕生の背景(2016.10.06)
- 塚田九段の対ボンクラーズ練習棋譜を公開します(2013.09.07)
- Puella α ソース公開(2013.08.28)
- クラスタ並列の解説記事を公開します(2013.08.22)
コメント