将棋プログラム

今日は先週から期待していた,将棋プログラム制作者の方がいらっしゃる。ひょっとすると朝まで台風がいて,遅刻してしまうかもしれない,ということでもないような気がするが,前日泊まってしまったわけだが,結局ぎりぎりまでリフレッシュルームで寝てしまった。しかし,奇跡的に10:18に突然起きて,大して遅刻せずにすんだみたいだ。
講義内容は大変共感するところも多く,おもしろかった。プロファイラで解析して一番処理時間のかかっているところを最適化。ふむ,2%高速化したぞとか。最終的には,どの処理も均等になってしまって,速度向上が望めなくなったりとか。うーん,8月を思い出す。
将棋といえば,だいたいオセロやチェスに比べてその手数の多さが指摘されるわけだが,それに加えて盤面の複雑。100knpsくらいしかでないようだ。大きく違うのは評価関数。係数は完全ハンドチューニングですか。。。かなりの量あるみたいだが,こりゃ強い人じゃないと作れませんね。Logistello以前のオセロと大変にかよっている。意外と統計手法は使われてないらしく,強くなったか調べるのに検定を使う程度のよう。それに加えて,あまり統計手法が成果をあげていることもないらしい。
このあたり,オセロでは石差という扱いやすい要素があるのに対して,将棋にはそれがないのが要因かな。もっとも,勝率を評価値としてもいいと思ったが。それから序盤とか終盤とかの判定。今思うと,オセロの評価関数は序盤と終盤に分かれているというよりは,あるパターンと現在の手数の2つの要素から評価値への写像だと。手数という大域的なパターンと盤面の局所的なパターンの掛け合わせ。それはおいといて,将棋だと序盤終盤の扱いも大変ですな。でも,これなんかは評価モデルを簡単に作れるから統計手法でパラメタ調整してもいいような気がする。やはり探索深度よりも評価関数の精度がネックのような気もする。
まぁ,そんな今日も地下室ではothellodが必死に棋譜を生成しているわけだ。すでに80万くらいか? すべて終わるのはいつのことやら。