2017年6月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

tweet

  • tweets

« 2008年12月 | トップページ | 2009年2月 »

2009年1月

1ねんのがくしゅう 4がつごう

たしか3年くらいまでとってような気が。あぁでも記憶が定かでない…

評価部全面作り直し中。評価項目を検討しなおして、各項目を一つずつCモデルで実装。半分強できたところで、まあメジャーな項目は大体できたはずと思ったので、物量も心配だしまずはここでいったん合成かけて最後まで動かそう、ということでverilog修正開始。ここまでだとまだ全面作り直しというほどでもないので、順調にコーディングも完了。SIMLも多少のデバッグ後まあ動いてるよう。

合成かけると、StratixIIIで65K ALUT (110K中)、17MHz。前回25MHzだったので2/3程度に。まあここはチューンすればもう少しよくなるでしょう。物量もまだ若干余裕あり。ただCycloneIIIの方でやると、120K LE中 95K LE。コンパイル時間も7時間とはねあがります。こちらは限界に近そう。

KShogi初級とも対戦させました。まだほんとにざっと手で調整しただけなので2連敗でしたが、目先の駒損を避けるくらいはしてたので、まあよしとする。これが1/17のこと。

当初の予定では、このあと評価パラメタを手で調整、のはずでした。学習もいずれは、とは思ってたものの、時間かかるようなのでここから始めたんじゃ5月には間に合わないだろうな、と。ところが、ここに来てさあ手調整、と思うと…

超マジうぜーよ!

としとやかな女子高生のようなセリフが口をついて出ます。もうこんなんやる気力残ってへんがな…で考えた挙句、

しかたねぇ…学習でもやるしかないか

というわけで、遅まきながら学習を始めることになりました。
問題は5月に間に合うか?ですが、まあ間に合わなけりゃあっさり大会見送る予定。もともと3年にいっぺんしか出てねーし。floodgateもあるし。

以前から学習には興味はもちろんあったんですが、他で手いっぱいで、自分でやろうと思ったことはありませんでした。そういう軽い気持ちで以前にあの保木さんGPWスライドを見たら、さっぱり理解できなかった、というトラウマはあったんですが。がまあ今度はそうも言ってられないのでもう一度気合入れて見直したところ、何とか主旨はわかったような。細かいところで疑問点はいくつかありますが、まあそれはおいおい。あと、棋譜データベースを探して、とってきてCSAに変換、とかやってました。

とにかく学習に関してはほとんど何も知らないところから一から始めてます。一応目標としては5月に間に合わせたいので、スケジュールかなりタイト。ほんとはブログなんて書いてる暇もあまりないはずなんですが。まあ一から学習始めて、どんなところでどうつまずくのか?というのも一部の人には興味あるんじゃないかと思いますんで、おいおいレポートしてこうかと思っております。まだ始めて一週間なんで大したことやってませんが、これからいろいろと壁に当たって落ち込むんでしょう(他人事モード)。

ほな評価でもやりまひょうか~

まタイトルが寒いのは気にしないで。

評価関数のところを全面作り直し中です。前回verilogに手を入れたのは6月だったので、半年ぶり。囲碁、Stratix立ち上げ、ASIC化検討、GPW準備、と設計以外のところにいろいろ時間をかけてきましたが、ようやく設計に戻ってきました。

GPWでしゃべったとおり、今までのAリーグの評価関数は駒割り以外はほとんど最小限のことしかやっていない「駒割り君」でした。今やってるのは、学習派の人たちを見習って、まず評価の要素を増やす。ただしハードでやるので、ハードでは実現難しいこともあるし、また物量が入るかという話もあるので、物量やディレイとの兼ね合いで、できる範囲でなるべく要素を増やす、というまあ何というか微妙に苦しいとこなんですが。それから次にパラメタをチューン、ということになるんですが、ここは当面は(少なくとも09年5月は)いわゆる学習は使わず、手調整で行くことになりそうです。時間的に間に合わなさそうというのもあるんですが、それよりもハードの評価関数は精度が粗いのでhill climbingなんてレベルじゃなさそう、というのがあって。3bitで表してる変数を微分してどうする、みたいな。

<イメージ映像>
Komawari




評価要素を決めるにあたっては、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月の参加も危ういという状況になる可能性も十分あるんですが。まあこの辺はとりあえずやってみて、出たとこ勝負だよねー、というとこです。

« 2008年12月 | トップページ | 2009年2月 »