Hatena::ブログ(Diary)

やねうらお−ノーゲーム・ノーライフ このページをアンテナに追加 RSSフィード

GT-Rの買取ならここですわ。どこよりも高く買取ってもらえるはず。お勧め!GT-R 買取
電王戦出場記念! 書籍化されたで! 監修したで!(`ω´) 絶版なってしもた Kindle版で復活!! 記事書いたで!
解析魔法少女美咲ちゃん マジカル・オープン!

YaneuLabs / やねうら王公式 / やねうらおにメール / twitter / プロフィール

 | 

2014-11-20 駒得のみの評価関数にしたやねうら王 V3.37を公開しました

[] 駒得のみの評価関数にしたやねうら王 V3.37を公開しました  駒得のみの評価関数にしたやねうら王 V3.37を公開しましたを含むブックマーク  駒得のみの評価関数にしたやねうら王 V3.37を公開しましたのブックマークコメント


駒得のみの評価関数にしたやねうら王 V3.37を公開しました

http://d.hatena.ne.jp/hiyokoshogi/20141120


駒得のみの評価関数なのでほどよく弱くて、ハム将棋卒業したての初心者の人も楽しめると思います。(たぶん…)


苦情や対局した感想要望などは本日コメント欄でどうぞ。


・追記 x64/x86SSEなしをリリース


2014/11/20 7:20x86用(32bit OS用)、もう少し頑張れば出来そう。もうちょっと待って…。

→ 2014/11/20 9:50 出来た…かな? SSEを使わないバイナリも出来たので上記のダウンロードページを更新ときました。32bit OSかつSSEなしのPCは私は持ってないので本当に動くかどうかはわかりません。


・追記 思考エンジン設定について


将棋からできる思考エンジン設定で、「基本定跡の幅(0=無,30=狭,100=広)」というのがあり、これはデフォルトで30になっています。定跡選択のときベストの指し手(で進めたとき評価値)から、30少ない評価値の指し手までは定跡の指し手として許容するという意味で、この値はゼロに設定したほうが強い定跡になります。(その代わり定跡選択の幅はなくなります)


「基本定跡で採用する評価値下限」はこの値を下回る指し手は採用しないという意味です。デフォルト-200です。後手だと後手の初手で-100ぐらいの点数がつくので、そこからさらに-100ぐらいは許容範囲という意味でこの値にしてあります。先手の場合は-100ぐらいで打ち切ったほうが良いのかも知れません。


・追記 npsについて


twitterでは駒得のみの割にnpsが低すぎるんではないかと言われています*1、通常バージョンのやねうら王は、いまどきのPC(例えばCore i7 4771)で1スレッド当たり1Mnpsちょっとます評価関数を駒得のみにするとこれが1.5Mnpsぐらいになります。つまり4コア時で6Mnps程度しか出ません。*2


駒割を差分計算していないのでやや遅いですが、そこを修正したとしても10%も速くならないのでやってないです。遅い主な原因は、オーダリングがそこそこ重いというのと通常探索・静止探索中の1手詰め探索があるからです。1手詰め探索をオフにすると1スレッド当たり2Mnps強ぐらい出ます。たぶんオフにしないほうが強いので、オフにしてないです。


・追記 駒得のみの評価関数のやねうら王は、駒得のみのソフトとして史上最強なのか?


駒得のみのソフトとしては史上最強だと思っていますが、まだ改良の余地は大いにあるので、他の開発者からの挑戦は大歓迎です。


あとBonanzaと対戦させたところ、「ボナンザ6勝 - やねうら王4勝」*3という話がありますが、それはさすがに出来すぎのような気はします。(たぶんBonanza相手では2,3割勝てるかどうか…)) Bonanza相手だと定跡の進行になりやすく序盤をすっ飛ばして中盤からスタートになるのでそのへんが大きいのかも知れませんが…。


・追記 定跡編集コマンド仕様公開しました


やねうら王の定跡生成コマンド

http://d.hatena.ne.jp/hiyokoshogi/20141121/1416505613


・追記 やねうら王と対局した感想を集めてみました


  • 評価関数が駒割だけのコンピュータ将棋は、たくさん読めるから意外と強いんだけど、いかんせん対人戦が絶望的に弱い。」 … この発言撤回ます(駒得のみのやねうら王に連敗しながら)。*4
  • やねうら王(駒得のみver)、5局くらい指したけど勝ててない。20分切れ負けで、もう少しで勝てそうなところで時間切れたのが1局。あとは完敗。くそう。*5
  • やねうら王 V3.37と指していると、自分の読みに無い手(主に大駒を捕獲される手)をたくさん指されるので自分の形勢が悪いと思ってしまう。我慢して終盤まで指すと自分がいいことに気づく。自分の形勢判断の悪さに悲しくなる。*7
  • やねうら王(駒得のみver)と対局してみた。50手で負けた。(詰まされたw)*9
  • やねうら王「駒得のみの評価関数」、指し手に個性あっておもしろい。とりあえず銀香交換して端突破とか角銀交換して飛先突破とかやってみた。仕掛けられた瞬間に楽観する感じではあるけどいい粘りをみせるので、格言「10将棋では駒損を避けよ」を思い出した*10
  • やねうら王弱いのに強い *12

ジャックジャック 2014/11/20 11:17 ハム将棋みたいにブラウザゲームにするのは無理でしょうか?
OSがUbuntu使ってるのでインストールできません。

yaneuraoyaneurao 2014/11/20 11:21 ↑(`ω´)つ Wine + 将棋所

浜 2014/11/20 12:54 以前公開されたfv.bin使用の週刊ひよこ将棋と比べるとどちらが強いのでしょうか?

yaneuraoyaneurao 2014/11/20 13:00 ↑今回のものは定跡搭載してますので、20手目あたりまで定跡から外れないという前提であれば、今回のもののほうが断然強いでしょう。初手で定跡を外すなら…週刊ひよこ将棋のほうが強いかも知れません。

ジャックジャック 2014/11/20 13:02 う〜ん、教えて頂いたWineを使って将棋所起動させたんですが
エンジン追加でやねうら王を選んだらエラーになります。
将棋所ってUbuntuで起動したら英語なんですね。

あとこのWineって奴はエミュレータは使えるのかしらと思って
エミュのスーパーファミコン起動させたんですが
動作がスローになりますね。
何が悪いのかさっぱりわからん。
 orz
ギブアップ。
まあどうせ やねうら王とやっても勝たれへんしなヽ(`Д´)ノ

yaneuraoyaneurao 2014/11/20 13:14 ↑ > エンジン追加でやねうら王を選んだらエラーになります。

ありゃ…そうなんですか…。そういや他の思考エンジンでその現象になると以前、聞いたことがあります。AperyはLinux + 将棋所で動いてるらしいので、何かうまくやればいけるんだとは思うのですが、思考エンジン側の問題なのか、設定なのかは私にはわからず…。

usapyonusapyon 2014/11/20 16:59 ・追記 x64/x86、SEEなしをリリース

SEEじゃなくてSSEですよね。
修正後、コメントは消して頂いて構いません。

yaneuraoyaneurao 2014/11/20 17:14 ↑修正しました。ご指摘感謝!これ間違うの何十回目かわからん&今後も何回も間違えそう…。

※ 将棋ソフトの探索技術にはSEE = Static Exchange Evaluationというのがあって、将棋ソフト開発者はそれとよく混同するため。

usapyonusapyon 2014/11/20 17:52 あは、そうですね。SEEとSSEは私も良く書き間違えます。

usapyonusapyon 2014/11/20 20:21 我が家のマシン(AMD PhenomII 3.0GHz)で、benchと打ち込むと、1スレッドで0.8Mnps位みたいです。
メモリアクセスが遅いのかなぁ。

wainwain 2014/11/20 22:55 質問なのですがやねうら王ではnodesとしてどのような数を使っているのでしょうか?
よろしければぜひお教えください。

ところでAVXは使ってないんですね。

yaneuraoyaneurao 2014/11/21 02:03 ↑*2 PhenomIIだと全体的に遅い気はします…(´ω`) あとは私はHaswellで最速npsになるように調整しているのでそれ以前のCPUのことはあまり考えてなかったり…。
↑*1 npsの計測の話でしょうか。do_move() でインクリメントしているので、局面を1手進めるごとに加算ですね。新規ノードかどうかは関係なくて、通常探索か静止探索かも関係なくて。AVXはPEXT以外は使いどころがほとんどなくて、PEXTはまだ使ってないです。(使っても2,3%速くなるかどうか程度だとは思いますが)

luminasluminas 2014/11/21 13:32 少々無理なお願いかもしれませんが、第三回電王戦を戦ったやねうら王と、3月バージョンのやねうら王を公開していただけないでしょうか。
純粋にどれだけ違うのか興味があるのです。

yaneuraoyaneurao 2014/11/21 16:39 ↑以前のやねうら王はまともな定跡を搭載してないので、進行が偏って強さの公平な比較が出来ないと私は思っています。そういうバージョンで対戦させた結果を誰かがブログに書いたりすると、結果だけがひとり歩きして非常に迷惑なので、申し訳ないですが公開はしません。

はっほーはっほー 2014/11/21 20:11 駒得バージョン入れてみました。ponderをオフにしても先読みしてしまってるようなのですが、バグですかね。

merom686merom686 2014/11/21 20:54 やねうら王と稲庭将棋を対戦させての質問です。
「引き分け時スコア」を-50にすると、やねうら王は喜んで千日手にしました(評価値は自分が+50)。
+50にすると、先手番のときは打開するのですが、後手だと長手数で千日手になり評価値も0です。
この後手番での挙動はどういうことなのでしょうか。

wainwain 2014/11/21 23:49 nodesについて教えていただきありがとうございます。
npsの計算についてnodesについて何を使うか自明ではないためnpsの数字を聞くたび、どの基準での数字かと疑問に思ってしまいます。

ところでAVXについてBonanzaのVSでのコンパイル時に/arch:AVXを追加するだけで約1%高速化されました。
1番伸びの大きそうなSandyBridgeでの計測結果ですが……
SSEからAVX128への置き換えだけでも少しは効果がありそうです。

茶田茶田 2014/11/21 23:56 3手目か4手目で止まってしまって「あれれ〜?おかしいぞ〜?」と思ってたけど、将棋所が古かっただけでした。

僕はウォーズ三段ですが、3切れで5局指して全然勝てません。へんてこな序盤相手に圧勝できそうなのに、僕の終盤力がなさ過ぎて。将棋を勝ち切るのって難しいんですね(しみじみ)

しみじみついでに語ると、ボンクラーズが出てくる前くらいまで僕は、「将棋ソフトが全ての人間を越えるときが来たとしてもどうせ、序盤はダサイけど中盤以降粘り倒して人間に勝つんだろうな」って思ってて、この予想は今のイカシタ序盤を指す強豪ソフトたちが裏切ってくれてるんですけど、この駒得やねうら王は一昔前の僕の「将棋ソフトの未来」のイメージ通りです。

yaneuraoyaneurao 2014/11/22 02:17 ↑*4 うちの環境ではponderオフにしたらオフになってますね…。(タスクマネージャーで確認) 最新版の将棋所でもそうなりますか?
↑*3 後手のとき、千日手を打開すると-50より悪くなる手を見つけてしまったので-50(千日手)を甘受した動作のような気はします。(バグでなければ)
↑*2 AVX128!!そうか…MOV要らなくなるから速くなるのか…。やってみます。
↑*1 時間が短いとじわじわ押していく将棋はしんどいですね…。

はっほーはっほー 2014/11/22 09:56 先ほどはShogiGUIで試してたんですが、将棋所で試してみたらponderオフに出来ました!

YOSIYOSI 2014/11/22 10:07 めちゃ強い。人間が対戦するには十分すぎる・・・
GPSFish0.2.1 と5分5秒で対戦させると50手くらいから差がつき、最後は、評価値7500くらいで大勝しました。

yaneuraoyaneurao 2014/11/22 10:44 ↑*2 なるほろ…。
↑*1 GPSfishに勝てたんですか…。それは100回に1回の奇蹟のような…。

merom686merom686 2014/11/22 11:17 > -50(千日手)を甘受した動作
それなら評価値が0ではなく-50になるはずですし、稲庭相手なので千日手自体簡単に回避できる(数百手の間は)と思います。

yaneuraoyaneurao 2014/11/22 12:26 ↑めっさバグっぽいです…。sfen(将棋所で検討モードで検討させたときにデバッグウィンドウで確認できます)でその局面図ここに貼ってもらえないでしょうか。

merom686merom686 2014/11/22 15:52 3gkg3/6sb1/1sn3n2/l3r3l/ppppppppp/9/PPPPPPPPP/1GKS2GS1
/LNB1R2NL b - 1
162手で千日手が成立した局面です(4スレッドで4MNPS、1秒)。
何回か試しましたが、もっと手数がかかることが多いです。ここから指し継がせても84手かかりました。

YakitoriYakitori 2014/11/22 17:40 普段使いのAtomでベンチを実行してみました。j1900である、BT-Dです。
SSE4.2版使いました。
コアをフルに使ってくれないですね。これ、シングルスレッドベンチですか?
まぁ、さすがに遅いですが、実用上問題ないのでいいです。

Total time (ms) : 143445
Nodes searched : 48529177
Nodes/second : 338312

茶田茶田 2014/11/23 01:27 こんなへんてこな序盤で強いはずがない。GPS先生に倒し方を教えてもらおう、と思ったら…サンプル数1ケタですけど3切れでGPSfishに圧倒してます。一局圧倒されたのもありましたが。(双方ponderあり。同じ将棋になりそうだと中断)これじゃ僕で勝てないのも当然ですね。持ち時間が短いと序盤の差をひっくり返されやすいので、長くしたら違ってくるんですかね。それかHashとかの設定が公平じゃないのか。floodgateに放流して確かめて欲しいところです。R2000ってレベルじゃないですよ。イノベーションかもしれませんよ。この路線を追求するのも面白いかもしれません。

将棋ソフトの強化を嘆く人もいますが、僕は将棋ソフトが強くなってくれて、新しい将棋の可能性を見られて、前より将棋を好きになり続けてます。筋の悪い序盤を相手にしたとき今まで僕は「こんな相手に負けるわけにはいかない」って思ってたんですけど、これからは「これもアリなのかも」と謙虚に捉えます。パラダイムシフトです。

そういえば、プロ入りしたての羽生さんは悪い将棋を粘り倒して勝っていましたね。

と書きながら持ち時間3分一手5秒にして試行数を増やした所…いややっぱり大量にやってみないとわからないですね。

茶田茶田 2014/11/23 01:41 これに入ってる定跡は電王戦向けverで選んだ奴ですよね。駒得verが自分の棋風に合った序盤を作れば一気に強くなるかもしれません。

yaneuraoyaneurao 2014/11/23 06:24 ↑*4 ありがとうございます。。調査してみます。
↑*3 シングルスレッドのベンチです。マルチスレッドだと探索結果が毎回変わってしまい、安定した計測にならないため、こうなっています。
↑*2 双方ponderありにしてるのでGPSfishの思考時間奪ってるだけではないですかね。 やねうら王、結構待機スレッド多くて、GPSfishに十分な計算時間が回ってきてないのだと予想します。
↑*1 駒得のみの評価関数であれば、駒が激しくぶつかり合う局面のほうが相対的にはいいでしょうね。なので、横歩取りとか角換わりを選択したほうが相対的に有利である気はします。

茶田茶田 2014/11/24 23:03 >GPSfishの思考時間奪ってる
なるほど。たしかにponderなしにしたらGPSfishが筋良く勝ってくれました。やっぱり将棋はこうでなくては(手のひら返し)

floodgateの成績を見ると、rate24の値を信じれば、五段くらいですね。昨日のコメントの後いろいろ触っみた体感通りです。

yaneuraoyaneurao 2014/11/25 12:03 ↑駒得だけの評価関数で五段もあるのが驚きです…。ちなみにあとR100〜200ぐらいは伸ばせそうではありますが、この方面で頑張るのは不毛のような気もするので気が向いたときにやります。

SaSa 2014/11/26 16:52 駒得やねうら王、明らかにおかしいです。
私の棋力 → 24でR1000くらい。
やねうら王のNPS → 6〜12M程度。

30秒で対局。
やってみたら、序盤から中盤までで、いきなり勝勢を築けました。
はっきり言って、おまえ将棋のルール覚えたばっかりかよ、って思いましたが…。

そのあと、プロとも思える鬼のような強さを発揮されて倒せません。
明らかにおかしいですなんとかしてください。
数回対局しましたが、全部こうなりました。
勝勢になった時の点数をGPSで取ったら、全部2000超えてました。
でもそっから倒せません。

yaneuraoyaneurao 2014/12/07 01:38 ↑楽しんでいただけているようで(?)、作者冥利に尽きます。

トラックバック - http://d.hatena.ne.jp/yaneurao/20141120
 | 

1900 | 01 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 06 | 08 | 10 | 11 | 12 |
2015 | 01 | 02 |


Microsoft MVP
Microsoft MVP Visual C# 2006.07-2011.06