56将棋開発ブログ

5×6マスのミニ将棋、「56将棋」で遊べるものをいろいろ開発してます。

進捗いろいろ

せめて数ヶ月に1回くらいは開発状況を書いておくかな、という気分になったので更新してみます。

最近取り組んでいるのは大きくわけて2つ、

ごーろく将棋 56shogi ブラウザ版への機能追加
プチボナ 56shogi機械学習

です。


ごーろく将棋 56shogi ブラウザ版には、これからいろいろな機能を追加していく予定です。

とりあえず現時点で形になっているのは以下の2つです。


・局面編集
駒を好きなところに動かして局面をつくることができる機能をつくりました。

ごーろく将棋 56shogi 局面編集


f:id:tetsuzuki1115:20160226162536p:plain


デバッグなどでつかう局面をつくるのが捗るので、正直に言うと自分用の意味が強いです。

こういうものはコンピュータ将棋におけるインフラみたいなものだと思うのですが、

56shogi の解に近づくという目標を達成するため、

あるいは、もう少しごーろく将棋が普及するといいな、というささやかな希望が実現するためには、

そういったインフラを少しずつでも整えていく必要があるのだな、と実感しています。

(どうでもいいことですが、コンピュータ将棋に関係する文脈では "56shogi"、
本将棋への導入、普及、教育といった文脈では"ごーろく将棋"あるいは"ごーろく将棋 56shogi"というふうに、わたしは勝手に呼び分けています)


・練習問題

COMとの対局だけでなく、ごーろく将棋や本将棋の棋力が向上するような練習問題が毎日アップされるページをつくっています。

開発言語はphpMySQLで、ドットインストールをみて勉強しました。

練習問題の内容としては、ある局面において、浮き駒(味方の駒に支えられていない駒)をすべてクリックすると正解、というものです。

f:id:tetsuzuki1115:20160226162218p:plain

f:id:tetsuzuki1115:20160226162227p:plain

毎日数問ずつアップされるようにするのと、解くまでにかかった時間を最後に表示するようにしたら公開しようかなと思っています。


ほかにも、ある局面での駒割りを計算する問題や、あるマスで駒交換したときの駒割りを答える問題を出題するページもつくる予定です。


プチボナ 56shogi の開発の方も、ゆっくりではありますが進めています。

機械学習
去年公開したプチボナ 56shogi は、指し手生成と探索部分はほぼBonanzaそのままで、56shogiで動くようにしたというものだったのですが、
評価関数はわたしが手調整で値を決めたものでした。(というほど調整もしていないのですが)

より棋力を向上するため、機械学習による評価関数のパラメータ調整に挑戦してみよう、ということでBonanzaのコードを読んでいます。

「コンピュータ将棋の進歩6 プロ棋士に並ぶ」という本にある解説が非常に参考になっています。
(というか解説文がないと、それぞれの関数のざっくりとした役割すら全くわからないレベルです…)

とりあえず学習部分のコードすべてに目を通したら、駒得のみの評価関数同士で自己対戦させた棋譜から学習させてみる予定でいます。

学習について勉強しはじめる前は、56shogiは本将棋に比べて駒の組み合わせの数が少ないので、学習にかかる時間が少なくて済むんじゃないかと思っていました。

しかし、パラメータを調節するステップよりも、探索してPV(最善応手系列≒読み筋)を求める処理のほうが時間がかかるらしいので、
うーん考えが甘かったかな、と思い直しています。
(本将棋より早く学習が進むのは間違いないと思うのですが)

まあやってみないとわからないので早く動かしてみたいですね。

それでは。