tokoharuの落書き帳スマートフォン用の表示で見るtokoharuの落書き帳らくがきですよこの広告は、90日以上更新していないブログに表示しています。:この記事の続編です。Adventar12/16分の記事です。コンピュータ将棋界隈の人ではないのですが、枠が余っていたので登録してみました。お話の内容は「将棋AIを使って序盤の研究っぽいことできないかなぁ」というものです。いっても私自身は将棋AIを強くするという目的でやっていたわけではないので、通常開発者がやるべきこと(勝率を測るなど)は行っていないことに注意してください。鑑賞用の定跡か研究だと思うのがよいかと思います。個人的にはこれらの結果に対して棋力の高い人からのフィードバックがあれば大変嬉しいですが、それ以外のツッコミも募集中です結果を早く知りたい人は「結果」の項目へジャンプしてください。最近は随所で将棋AIを使って研究するという話が見られるのですが、おそらく評価値を見るだけではAIが良いと言っている方向に数手進めてみると評価値に簡単に裏切られる(そして疲弊する)ので自分なら自動化したいなぁということで、自分が序盤を研究する人という体で、そのあたりの自動化・可視化の意味で作ってみました。後述するように探索部には手を加えておらず、サブルーチンとしてやねうら王を使い、その時点で知っている評価値だけを見て次に考える局面を決めます。これが意味するのは・通常の探索で深いものとは異なった結果を出す。・特に中盤の難しい局面において深さを深くすれば現れるような指し手は、浅い探索では悪い評価である可能性があるため、そういう手を見過ごす可能性は十分にあるので中盤の手は信用し過ぎないほうがよい・似た理由だが、難しく評価値が探索中に大きく上下する局面はその後再び採用されずらいので、有力な手順を見逃している可能性がある。序盤の合流がおきやすい局面では特に無駄に重複した局面を読んでいる可能性がある。いったことになるかと思います。最後のポイントは局面によっては致命的であり、実際角換わりで同じことをしようとすると手の順序に関して自由度が高すぎるために似た評価値を持つ局面が大量に生成されるため現状うまくいかないのですが、今回の横歩取りではこのタイプの自由度は大きくないためそれっぽく動いているのだと思われます。この点を根本的に避けようと思うと探索パート内部を変更する必要があって大変そうに思います。・自動でたくさんの局面を調べるので、自分で局面を入力しなくても勝手に評価してくれることがある・単純にどんな局面を探してるのかを鑑賞できるので面白いくらいの長所があると思います。アルゴリズム(大雑把)あまり深くは立ち入りませんが・やねうら王Lateをサブルーチンとして使って・ノードを少しずつ展開していく。Wideningの亜種。・亜種というのは本来勝率を使うところを評価値に変えた点が異なるという方針です。1局面あたり5000万ノード以上読ませて、数万局面あるかと思います。プロがいうところの定跡はできていないと思いますが、指している手について感想があれば教えていただきたいです。https://www.dropbox.com/sh/oinx05vwu9fme5i/AADOIRV53deEopb3x8hiu0u5a?dl=0見た目は大体こんなのです(ただしバージョンが異なるため中身の内容は異なります)ファイルの開き方や使い方のヒントは後述します。dbとtreeの二種類のファイルがあります。treeはdbから可視化のために生成されたものなのでdbが元データになります。smallとあるものは端折ったものでファイルサイズも小さいのでまずはそちらを開くのが良いかと思います。dbはほとんどやねうら王フォーマットで自分用に修正したものですが、修正分は使わなくてもよさそうなのでそのうちやねうら王フォーマットに戻すかもしれません。あれば「前の局面からの指し手、新しい局面での評価値、ズレの総和、sfen(その局面を表現した文字列)」を表します。指し手の表現はおよそ将棋所であるような形式だと思います。「ズレの総和」というのは、例えば次善手を選んだ時に最善手からの評価値の差を知りたくなるので、そういう量の総和を表すことにしています。・複数行の意味ある局面の直下に一手進んだ先の局面があるとき、先の局面に進むのが最適な手順であることを表すため、これを繰り返せば想定手順ということになります。評価値はその局面からやねうら王を使って読ませたものではなく、先ほどの手順で辿った終端の局面で読ませたものになります。・重複(同一手数)重複している局面(sfen)は(duplicated)と表記されています。どれかひとつにそれ以後の局面の情報があります。・重複(非同一手数)非同一手数で重複している局面は実は扱いが雑で手が浅い局面に合わせただけです。tree上では行き止まりになっています。このあたりはいずれ修正します。ファイルがバカでかいので困る。メモ帳から開こうものなら大変なことになるので他のエディタを使うことを推奨します。Studioからでも見れますが、それ以外なら自分は次のTeraPadで動作することを確認しましたので紹介します。sfenから局面の再現,さらにsfenへの再変換をしたい局面識別のためにsfenを使用していますが、sfenを将棋版で表現される形に直そうと思ったときは将棋盤局面図を作成が便利です。「任意のsfenを入力」をクリックしてコピペすれば局面を表示してくれます。dbでの検索が可能になります。ある局面に対する指し手リストを見たいある局面に対して指し手のリストが気になることがあると思いますが、treeから辿って確認しようとすると労力がかかることが想定されます。これはdbファイルを開いてそのsfenで検索すればわかるのでこれを使うと便利です。"2b3c"のような形で、前2文字が移動前の位置、後2文字が移動後の位置を表す。:・飛車ぶつけは採用したがらない?・6二玉と早上がりする手も推奨したときあって驚きましたが、結果では先手側に少し振れました。・当初、コンピュータ将棋が発達したからプロが言うような定跡も割といい感じに作れたりしないかという淡い期待を持っていましたが、相当難しそうだなぁという感じました。将棋は弱いプレイヤーがプレイした結果の積み重ねよりも強いプレイヤーの考えのほうが有用だと思うから強いプレイヤーの評価値を使うほうがましかなぁと考えたため。そもそもこの考え方が正しいのかは怪しい気がする。数十くらい評価値がブレ得るのに、100くらいの範囲の評価値に収まる局面は数千単位でありそう。こんな候補から最善を探し出せる気がしない。実際、少し走らせればtreeもダイナミックに変化します。棋力がないのでわかりません。次のようなことは起きました:「ぐぐって出てくる定跡を調べていないようなのでその局面を入力してしばらく考えさせると評価値を当初のものから100くらい変えて有力な変化だと考えを改めた。」とはいえ、こうなることを期待して調べさせたことは何度もあったが、こういう事例はほとんどなかった。tceで遊んでいたとき、生成される局面がせいぜい20手先-30手先くらいのもので、これでは先まで読んでいるとは言いがたいので、進んだ局面ほど重みを増やした。Wideningの思想であれば調べてない局面に重きをおくべきだが、いつまで経ってもはじめのほうの局面しか展開してくれなかったのでこうした。短所はあって、頑張ってたくさん調べた局面以下がよさげな一手で無意味になるという可能性がある。するのがいいんでしょうね。評価値のみを使って探索するということは、一度使われた評価値はずっと使われる可能性があり、そうすると展開したい局面が似たようなものばかりになることが多くつまらなくなりがちだった。実際の評価値から正規分布のノイズを加えることで多様な局面を調べることができるようにした。ノイズは大きすぎても調べたい局面が膨大になるだけなので加減が難しい。手動でノイズの幅は調整している。魔女の評価値と見比べつつ決着が付きそうなところまで掘り進めるのがゲームっぽくて楽しかったです。くじらちゃんじゃないですけど、ゲーム要素を付け加えて勝手に探索してもらってどんどん序盤ファイルを作れたら面白かったりしないかな、と妄想していました。それから、dbを検索すると妙に深い局面があると思いますがそれはそういうことです。実は某所将棋部の方に前のバージョンを見せたことがあるのですが、そのときの反応は「互角のままで終わってもどうもいえない」というもので、こちらが「やっぱり最低40手先まで読まないと厳しいですか」と尋ねるとそれに肯定的でしたのでこれが目標になりました。いくつか修正を加えましたがそれでもなかなか厳しかったです。調査用に一冊序盤の本を買いました。読んでみて少しハッとなったのですが、人間の定跡では「難解」という評価があるのですね。プログラムでそれをうまく表現するにはどうするのがいいのだろうなぁ。問題になりそうなのは評価値が大きくブレる局面をどうするかなので、これをどうにか扱いたいです。ブレていればさらに深く調べるルーチンを加えるのがいいんでしょうか。これも調整をしないとどこまでも深く調べようとするかもしれませんし難しいですね。探索の技術をもう少し学んだほうがいいのかもしれません。何かコメントがあればぜひお願いします。(おまけ)qhapaqさんの記事の感想qhapaq.hatenablog.comこれを読みました。まふ定跡は全く知らなかったので参考になりました。定跡作るのにも色々アプローチがあるのかなぁということを思ったりしました。最後にやねうら王を開発・公開して下さっているやねうらおさんに感謝いたします。うら王でなければここまで遊べていなかったかもしれません。00:00やねうら王で遊んだ話(横歩取り編)Tweet広告を非表示にする関連記事2017-05-03藤井四段レーティング予測にベイズ推定を使ってみた早速ですが、某まとめサイト記事で次のような記述を見つけまし...2017-02-09やねうら王での半自動検討(先手中飛車編)一回くらいこういう解説記事っぽい何か、書いてみたかったんで...2017-02-03やねうら王で遊んでみた(横歩取り編3)前回、結局8八角成からがよくわからないとのことだった。読者になる検索リンクはてなブログブログをはじめる週刊はてなブログはてなブログPro最新記事100Tショック定跡を少しだけ見やすくする藤井四段レーティング予測にベイズ推定を使ってみたやねうら王での半自動検討(先手中飛車編)やねうら王で遊んでみた(横歩取り編3)やねうら王で遊んだ話(横歩取り編2)月別アーカイブはてなブログをはじめよう!tokoharu-sakuraさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。