Bonanzaを代表格とするbitboard型の将棋ソフトと、GPS将棋やなのはを代表格とする非bitboard型の将棋ソフトとで、一般的には前者のほうが全体的に見て速いと私は思うのですが、利きを活かした評価関数にするなら、話は違ってきます。今回は、どんな評価関数が考えられるか考えてみます。
続きを読む
「コンピューター将棋全般」カテゴリーアーカイブ
羽生善治4冠、将棋とチェスの違いを語る
羽生先生がTata Steel Chess Tournamentのインタビューに答える形で将棋とチェスの違いを語っています。
Tata Steel Chess 2015 – En passant – Yoshiharu Habu
棋譜のコンバーターはどこにありますか?
棋譜からの学習なり何なりで入力棋譜がCSA形式やKIF形式ということはよくあります。しかし、いまや将棋ソフトの思考エンジンはUSIプロトコルでやりとりするのが標準的であり、USIプロトコルでの局面形式(sfen)の入出力部しか書いていない & 書きたくないという開発者の方も多数おられることでしょう。
トップコーダーはいまこそ将棋ソフトの開発に参加すべき
最強最速アルゴリズマー養成講座 プログラミングコンテストTopCoder攻略ガイドの著者として名高い高橋 直大さんがコンピューター将棋の開発に興味を持っておられるようです。
それ本当に過学習?
prediction(棋譜との指し手一致率)が上がっている限り棋力は上がっていくと言う話をpredictionと棋力との関係に書きました。
ボナメソで学習させるとしてもiterationが50を超えた辺りからpredictionの伸びは非常にゆるやかになっていきます。ついでに言うと、条件によっては、このあと学習させればさせるほど弱くなっていきます。
人はこれを過学習と呼ぶかも知れません。
しかし本当にこれは過学習でしょうか?
MultiPVと手加減モードとの関係
コンピューター将棋が強くなりすぎた結果、相手が人間(アマチュア)の場合は、手加減しないと勝負にならなくなってきました。
従来、探索深さを浅くしたり(depth limit)、探索ノード数を制限したり(nodes limit)、思考時間を制限したり(time limit)することによって弱さを実現してきましたが、それだと自然な弱さにはなりませんでした。(序盤がすごく弱いのに終盤だけが相対的に強いというような…)
定跡の生成に使った評価関数を用いるべき?
定跡の生成のため探索をして評価値が一定以上悪くなる指し手は定跡DBには登録しないだとか、探索して棋譜の指し手の評価値を定跡DBに記録しておき、ベストの評価値とかけ離れた評価値の指し手は採用しないだとかして定跡DBを作っていたのですが、少し興味深い現象があったので書いておきます。
AWAKEのKPEの実装に向けて その1
KPPでは左右の対称性を考慮すると弱くなる!?
KPPというのは玉と玉以外の2駒(合計3駒)の位置関係のことを言います。
将棋の初期局面は角と飛車がいるために左右非対称となっています。
このため、序盤では角側の桂はなるべく跳ねないほうがいいだとか、そういう暗黙のルール(?)があるわけですが、これを評価関数のパラメーターの調整として棋譜から学習させるときに左右対称性を考慮しているとうまく学習できないのではという議論があります。
続 将棋とチェスの違い
昨日の記事に対してこんな意見をいただきました。
持ち駒を盤上に投入するときの移動距離はワープに近いのでは。あと、将棋には「どの手を選んでも引き分け」という局面は少なく、狭い選択肢でも勝ちになる手を選ばないといけないのが難しいと思う。> 将棋はチェスに比べてどこが難しいのですか? http://t.co/1vyvTH6eft
— takodori (@takodori) December 21, 2014
「持ち駒を盤上に投入するときの移動距離はワープに近い」ので、持ち駒のある局面(終盤)は、位置評価が相対的に重要ではなくなってくるのでそういう局面はもともとコンピューターが得意とする局面です。昔からコンピューター将棋の終盤は強いですよね…。
このことをもう少し専門的な角度から書いてみます。