カテゴリー別アーカイブ: リバーシ・チェス・将棋・碁

大人のための将棋再入門 2 シケプリ風まとめと若干の考察

起源:古代インドのチャトランガがその起源といわれている。チャトランガが西洋に渡りチェスとなり、日本に渡って将棋となった。両者は、独自の発展を遂げていたが、ボードゲーム系の AI というくくりでみると、例えば著名なコンピュータ将棋プログラム YaneuraOu が コンピュータチェスプログラム StockFish のコードから多大な影響を受けているなどの例があり、両者の関連性は無視できない。 ゲーム理論上の分類:二人零和有限確定完全情報ゲームに分類される。 理論的性質からのアプローチ:二人零和有限確定完全情報ゲームは、「理論上は完全な先読みが可能であり、双方のプレーヤーが最善手を打てば、必ず先手必勝か後手必勝か引き分けかが決まる」が、将棋の場合、その完全な先読み(完全解析)はいまだなされておらず、仮になされたとしても(特にプレイヤーが人間の場合には)その結果に基づいて指し手を決定する具体的な手段を用意するのは現実的ではない。現実的には、コンピュータ将棋においては、ミニマックス法などの定式化されたアルゴリズムを利用して指し手を決定している。 ミニマックス法などに関しては、こちらに実例を挙げて軽く触れておきました。そこでも触れましたが、実際の差し手決定には、「探索」に負けず劣らず「局面評価」が重要であることを強調しておきました。 人間の対局を振り返ってみると、定跡から外れた局面などは、人間もミニマックスに近い思考方法を取っていることがわかります。つまり、何手か先を読んで、そのときの局面を「駒得しているから良い」とか「駒損はしているが先手を取っているので指せる」などと評価して現実的な指し手を決定しているわけですね。 で、困るのは、人間は、なかなか質の良い評価関数を獲得するのが難しいってことです。  ヘボ将棋 王より飛車を かわいがり なんて川柳はあまりに有名ですね。 特に、大人になると意識的にやらないとなかなか脳内評価関数(?)は更新されないので、ソフトを使った検討などでは、このことを意識しながらおこなうと良いでしょう。 まず、上の格言的川柳が批判するような局面が頻発する早石田の対策から考えましょう。 なお、評価関数の評価に関してはこんなことがいえると思います。 評価関数の評価:完全解析がなされていない以上、これとの比較において各種ソフトの評価関数の優劣を決めることはできない。現実的には、異なる評価関数を持つソフト同士の対戦結果から「レーティング」を求め、評価する。 ソフト同士の対局から新しい定跡を抽出しようという動きにはこういった背景があったわけですね。

カテゴリー: リバーシ・チェス・将棋・碁, 大人のための将棋再入門, 将棋 | コメントをどうぞ

大人のための将棋再入門 1

他サイトで公開した将棋系の書き物の評判がいいようなので、内容整理してこちらでもアップ。 ——————————————————————————————— 昨今の将棋ブームにならって将棋を再開する人は多いようだ。 強い新人の存在、AI との絡み…など興味の方向性は様々だろうが、内容のある将棋を指せると愉しい。 ところで、そのような場合、どういう戦法から入った方がいいだろう? 子供の時と違うのだから、入門書に紹介してあるような棒銀や矢倉棒銀ばかりでは面白くないし、第一勝てない(対矢倉の居角左美濃は優秀。特にウォーズ級位者レベルならほぼほぼ勝てる)。 ノーマル四間飛車を勧める人もいるが、相手が最善手を指し続けた場合、振り飛車が不利になることが明らかになりつつある現在、これをいい大人が採用するのはどうかと思う。なにより、ノーマル四間はノーマル四間で細かい定跡を覚える必要があるので面倒くさい。 変化が多く敬遠される傾向にあるが、ここではあえて先手番・後手番ともに居飛車を採用するのをお勧めしたい。 対振り飛車、相居飛車(角換わり・横歩・相がかり)などバリエーションは多いが、そこは大人になってからやる将棋、アバウトに進行を覚えておけばそれなりに指せる。すべてを網羅しなくても、システマティックに対応できるのが大人の知恵というものだろう。また、プロ棋戦鑑賞時にも手の意味がわかるようになって対局がより深く愉しめるようになると思う。あと、現時点で最強ソフト elmo が振り飛車を指さないというのは、棋理の上でもそれなりの裏付けがあるように思う。 私も、再開当初は、先手番の時は居飛車、後手番の時は四間飛車で指していたのだが、後手番の時に、指し方がわからなくなる場合が多く、結局、先手も後手も居飛車で指すようになった。ただし、相手が見え見えな棒銀・中飛車・早石田の場合は、それ用の対策を立てて指す。角換わりや横歩取りの対策はどうしても後回しになってしまうが、そのときはそのとき。負けても気にしなければ、トータルの勝率はそれなりに維持できるはずだ。  

カテゴリー: 大人のための将棋再入門, 将棋 | コメントをどうぞ

nkif と DB と検索

今日は、JSKifuForWP のコードをいじる。 コメント出力も可能になった。 JSKifuForWP は読み込むことのできるデータ形式は、nkif 形式のみである。nkif というのは、私が勝手に名付けた名称で、その出自が某放送局のためこの名前となっている (笑)。 今日の作業でそのデータ構造はほぼ理解した。 nkif は一局面を例えば p=1b191716101617191b0014000000000012001d1d1d1d1d1d1d1d1d0000000000 00000000000000000000000000000e000000000000000e000e0e0e0e0e0e 0e0003000000000005000c0a08070207080a0c26; h1=; h2=; という形で表す。p は盤面の駒配置、h1 は先手の持ち駒、h2 は後手の持ち駒、である。 p はここでも調べていた。1一が 1b で香、2一が 19 で桂、‥‥というのはわかっていたのだが、これだと 81 * 2 = 162 文字で盤面の駒配置はすべて決定されるはずだが、実際には、164 文字ある。最後の 26 が余計だ。 今までこれがわからなかったのだが、わかってみればなんことはない、これは着手位置を表すマーカー画像の位置そのものだった。初手▲2六歩と飛車先を突いたので、こうなっている次第。余計な情報なので落としてもいいのかもしれない。 そこまでわかったので、テスト的にデータベースも作ってみた。とりあえず三局ほどデータを挿入。 この状態で SELECT * … 続きを読む

カテゴリー: PostgreSQL, リバーシ・チェス・将棋・碁, 将棋 | コメントをどうぞ

将棋 NHK 杯サイトのデータ形式

ちょっと解析してみました。 初手が p=1b191716101617191b00140000000000120……. ; となっていて最初何のことかわからなかったが、これは局面表示のようです。 1. 最初の2文字を切り出し、16進数として解釈。 ( ’1b’→27 ) 2. 次の2文字も同様に。( ’19′→25) 以下同様 で、27 は後手香車、25 は後手桂馬と別の場所で定義されているので、これは「1一, 2一, … のマスに置かれている駒の種類を 9×9 まで書き出したもの」ということになります。 sfen に似てますが、駒記号の解釈がわかりやすく、ブラウザ(JavaScript)を用いたクライアント・サーバシステムには相性の良い形式といえるのではないでしょうか。    

カテゴリー: JavaScript, リバーシ・チェス・将棋・碁, 将棋 | コメントをどうぞ

JSKifuForWP (JavaScriptKifu For WordPress) テスト公開中

某放送局サイトで使われていた JavaScript を改変して、WordPress で動くかやってみました。 私の環境(chrome)では動いてますが。。。  駒音再生 (adsbygoogle = window.adsbygoogle || []).push({});

カテゴリー: CSS, JavaScript, WordPress, プログラミング環境, リバーシ・チェス・将棋・碁, 将棋 | コメントをどうぞ

JavaScript 関係

・ウェブ上での開発環境はいくつかあるようだが、 Thimble が使いやすい。 ・Ajax。「エージャックス」と読むのね。今まで「アヤックス」と認識していた。欧州の名門サッカークラブとは何の関係もなし。  

カテゴリー: JavaScript, リバーシ・チェス・将棋・碁, 将棋 | コメントをどうぞ

JavaScript テストしてます

このブログって JavaScript 使える? ってことでテスト。 **************************************************************** あなたが先手(黒)です あなたが後手(白)です 最初から待った ***************************************************************** 貧弱な評価関数(石の数と隅高めの位置情報で評価)、ほとんど手を読まない探索部。 かなり弱い AI 搭載のリバーシプログラム(笑)。 でも HTML5(canvas) + JavaScript っていう。 動いてる?

カテゴリー: リバーシ, リバーシ・チェス・将棋・碁 | コメントをどうぞ

級位者の不愉快な対局 振り穴くん

空き時間などで将棋ウォーズを楽しんではいるが、対局していて不愉快な戦法の筆頭格は『振り飛車穴熊』ではないだろうか? 棒銀くん、中飛車くん、早石田くんのバ○の一つ覚えみたいに一つの戦法に固執する指し方も食傷気味だが、これらの戦法を採用する級位者は、それでも ・こちらの出方に反応して指し方を微妙に変えてくる ・ネット将棋は短期決戦という前提を守ってくれている(勝っても負けても短手数で終わる場合が多い) という尊重すべき基本理念に沿った指し方をしてくれている。なので、「あー、またか」とは思っても悪い気はしない。少なくとも人として間違ってはいない(笑)。 これに対し、振り穴はどうだろう? まず、きちんと指そうとすると「穴熊には穴熊」の格言(?)通り、こちらも穴熊に組まなてはならない。が、そうすると手数が延びて居飛車側の時間切れ負けになりやすい。まあ、ウォーズなどでこの囲いを採用する人は基本これを狙っているわけですね。性格悪いというか。。。 それに加え、振り穴くんにはコミュニケーション回避の傾向があるように思う。駒組みしやすい振り穴を選ぶ時点で、下地はあるんだろうが、エスカレートすると、正直、気持ち悪い。 参考棋譜を上げときます。この指し方、相当、気持ち悪いと思いません?

カテゴリー: リバーシ・チェス・将棋・碁, 将棋, 級位者の愉快な対局 | コメントをどうぞ

お手軽に将棋AIをさわりたいっ!

タイトル通り。YaneuraOu や 技巧がオープンソースになってるからそれを使えばいいという説もあるが、私のC++力では読解するのに大変そうだ。もっと簡単にあつかえる将棋エンジンはないか物色していたら‥‥、ありましたよ! not さんが開発した、CNNShougi 。パイソンで書かれているから、実行は楽ちん。 ソースもわずか4ファイルながら、学習機能やUSI インターフェイスも備えている。上手い人が書くと、こうなるものなのかと感心。 そして注目すべきは、いわゆるミニマックス戦略式の探索機能はまったくなしで、ニューラルネットのみで指し手を決定している点。ニューラルネットも勉強したかったのでちょうどよい。なお、ニューラルネットは Chainer の CNN (畳込みニューラルネット)というヤツらしいのが、現時点でここらへんのモデルの差異はよくわかってない。 とりあえず、落として実行させてみたが、若干の修正でしっかり動く。将棋ブラウザQにエンジン登録して対戦したら、なかなか将棋っぽくなった。探索なしでこれはなかなか。 ・解説記事は、こことか。 ・(おそらく)Chainer のバージョンアップにともないソースは若干の修正の必要あり。構文的なものと型のキャスト。(→ Chainer 2 用に修正したものを github にあげておきました) ・学習を 20 エポック(デフォールトの倍)にしてみたら、指した感覚としてはけっこう将棋っぽくなった。 ・将棋ブラウザQへの登録は、エンジンとしてパイソンそれ自体を、引数として usi.py を与えるというかなり乱暴なやり方。でも、しっかり動いている。  

カテゴリー: リバーシ・チェス・将棋・碁, 将棋 | コメントをどうぞ

藤井猛の持ち駒バラマキ伝説

棋士伝説ネタをもう一つ。 今でこそ、藤井といえば藤井-人間エルモ-聡太四段だが、ちょっと前までは藤井猛九段のことを指していた。藤井システムのインパクトがあまりに強かったため、旧来からの将棋ファンには依然支持されているように思う。 ところで、藤井伝説の一つに逆転負けがあまりにも悔しく「投了時、駒台の持ち駒を盤上にぶちまけた」というのがある。 ネット上にもそのときの写真が流通されているので、事実関係は調べやすかった。ここで出しても問題ないと思うので、掲げておくと、これだ。 リアルですね。。。 棋譜を調べてみると、このいきさつがすごくよくわかる。 藤井九段、得意の四間飛車+序盤戦略で初手から着実にリードを広げていく。ちなみに95手目の局面はこうなっていた。 先手の囲いは4枚穴熊で固いものの、後手は馬が二つできていて攻守のバランスが良い。すぐに決め手がある局面ではないと思うが、素人目にみても堅実に指していけば、勝ちきれる将棋という印象はある。 この次の手が▲2三金打。さすがにこれでは間に合わないと思われるが、こういう一種の手渡しに藤井センセは弱い。いわゆるファンタな応手が増えていく。 評価値的(エルモで10秒検討)には こんな風に推移していき、最終的には こうなってしまった。8二になにを合駒してもそれぞれ詰みがあります。 確かに感情の矛先をどこにぶつけていいかわからなくなるような進行ですね。なんか納得。  

カテゴリー: リバーシ・チェス・将棋・碁, 将棋 | コメントをどうぞ