ひまうら王のバイナリ公開しました。
2016/01/06 10:15追記。Yahooニュースで取り上げられたので、負荷分散のために以下のGoogle Driveでの共有をご利用ください。
@yaneuraou https://t.co/lHX1PclSy9 DL 後 md5 20bdea8a46b7b3f5dddd6146d232f609 でした。
— takotakot (@takotakot) January 5, 2016
ひまうら王20151225のダウンロード
【2015/12/25 23:00 追記。Dropboxのトラフィック制限に引っかかりました。転送が始まらないときは時間をあけてアクセスしてみてください。】
将棋所の思考エンジンとして使えます。要AVX2(Haswell以降)、空きメモリ1GB程度。
ひまうら王は人間の棋譜を用いずに、駒得のみの評価関数のソフトの自己対戦棋譜などから学習させて強くなるのかという実験です。
学習方法
ひようら王(駒得のみの評価関数のソフト) → R2200前後
↑のソフトの自己対戦棋譜3000局程度からの学習 → R2300程度
↑のソフトの自己対戦棋譜5000局程度からの学習 → R2350程度
↑のソフトの自己対戦棋譜+BishopLearningで詰みのある局面での指し手を教師として学習させたソフトで序盤を学習させる→強さはあまり変わらず。序盤が少し改善された?
穴熊などの囲いをなかなか学習しないので、将棋の開始局面の盤上の2駒をランダムに交換してから↑のソフトで自己対戦させた棋譜5000局程度から学習。囲いが少しうまくなった感じ? → R2450程度
↑のソフトの自己対戦棋譜4万局からの学習 → R2600程度(?)
この手順を繰り返していけば強くなることは確認できたので実験は終了。この最後のものを、上の「ひまうら王20151225のダウンロード」のところからダウンロードできます。
やねサンタ、プレゼントありがとうございます。
お年玉のやねうら王miniも楽しみにしています!
ありがとうございます。
使わせていただきます。
>ひようら王(駒得のみの評価関数のソフト) : R2200前後ーー>R2700程度(?)
おお、実験は成功しましたか!
やね理論の成立、おめでとうございます。
そうして、「将棋の開始局面の盤上の2駒をランダムに交換してから・・・」。
これがなにやら意味深であります。
何らかの適切なノイズ、想定外を入れないといけない様ですね。
それがサチレーションをある程度は防ぐのでしょうか。
あるいは「自己中毒防止」でしょうか。
そうして私にとっては疑問が増えました。
1・何で強くなれるのか?
2・どうして強くなるのがサチルのか?
一応コメントを期待しておりますので、よろしくお願いします。
(あるいは別記事でこれまでのサマリレポートなど・・・。)
PS
クリスマスプレゼント、ありがとうございます。
> 何らかの適切なノイズ、想定外を入れないといけない様ですね。
KPPって玉がその升に移動しないといつまでもKが特定の値のKPPの因子の値は0のままですから、探索中に出現しても0なので、そこを目指さず、出現しないものだから学習機会を失うのです。そこで適当な2駒の交換によって学習機会を増やしています。
> 1・何で強くなれるのか?
KPPの0になっていた因子に適切な値がつくからです。
> 2・どうして強くなるのがサチルのか?
KPPの表現力的な限界があるからです。
評価関数の定式化のやり方、構造自体がすでにある種の情報を持っている、、、と聞こえます。
そうして、自己対戦という行為によって値の付いていない因子に適切な値が入る、、、と。
そして、すべての因子にそれなりの値が付いた所で強さがサチる、、、訳ですね。
それが多分3000を超えたあたりでしょうか。
それでは、質問はこう変わります。
どうして先生なしで、それぞれの因子に適切な値が付くのか?
答えは、「将棋という勝ち負けがつくゲームゆえ、自己対戦結果の勝った方の棋譜が常に先生の役目をする」でよかったですか?
> 「将棋という勝ち負けがつくゲームゆえ、自己対戦結果の勝った方の棋譜が常に先生の役目をする」
勝負の勝ち負けは関係ないです。深い探索の結果を教師にするということですね。位取りなどの良い形は深くまで探索すると駒得に結びつくことが多いので、深い探索をした結果から形の良さを学習できるということではないかと思っています。
ふーむ。
何時もながらの分かりやすいご教授、ありがとうございます。
あんまり考えたくないのですが、教師がひよこカルロだったら何倍位時間かかるんでしょうかね。
駒得って、人間の経験則じゃないですか。
それを最初から持ってるということは、いくらかのディレクションは済んでるとみてよい気がします。
これをなくしてひよこカルロとか、ランダムプレイヤーとかで学習させた場合、どれくらい面倒なんでしょうね。
あぁ、屋根さんの功績を否定したいのではなくて、興味です。
屋根さんの試みもそれなりに原始的な部分から文明を築くくらいのものにはなってると思いますのでそれは大変称賛に価すると思います。
ただ、まだ手前があるんじゃないかとぼんやり思っただけです。ぼんやり思っただけです。
大事なことなので2回言いました。
まぁ、屋根さんが苦闘している日記は最高に面白かったですし、お疲れ様でした。と告げたいと思います。
偉そうですいません。
そもそも収束するのかという話にもなりそうですよね。
> 教師がひよこカルロだったら何倍位時間かかるんでしょうかね。
ひよこカルロでも駒割りはすぐ学習できると思いますよ。駒割りは案外、どんな方法でも学習できますんで…。駒割りさえ学習できてしまえば、あとは今回の手法で学習できます。
それはそれは。ふむ、杞憂でしたね。
ちゃんと収束するんだなー。と感心しきりですよ。
ひまうら王はランダムプレイヤーの自己対戦棋譜スタートでも駒割りは学習できると。
そうして今回のように学習を回していけばR2700に到達させることができる、、、と。
そこで質問です。
「ランダムプレイヤースタートのひまうら王(R2700)の評価関数のパラメータはひようら王から進化したひまうら王(R2700)のものと結局は同じ様なものになる」と私には聞こえるのですが、、、。
このような認識には同意されますか?
その2つのソフトの二乗誤差は、そこそこ小さくなるでしょうね。R2700の段階と、強さの上限(R3500付近)までやったときとで二乗誤差がどちらが小さいかは、よくわかりませんが。
回答、ありがとうございます。
そして、少し状況の整理など・・・
某掲示板にて「プロ棋士の棋譜がなければ何もできまい」という批判あり。
それに対して今回、R2700のソフトが完成ーー>バイナリ公開済
開発者は「この手法でMax R3500まで行けるはず」と豪語。
まあ豪語かどうか、それはともかく、R2700というのはそこそこの強さのはず。
「プロ棋士の棋譜を使わなくてもそこまでは行くぞ」と実証された訳です。
(ちなみに、「プロ棋士の棋譜を使わないクラス」があればクラス最強になるのでは、、、?)
さて、知られている事実は
R3000を超えていくソフトはすでにプロ棋士の棋譜のみに頼ってはおらず、自己対戦の棋譜を大量に使っている、、、という事。
このことはコトバを変えるならば、「学習という場面ではすでに人の遺産(=人手による棋譜の集合)はソフトに追い越された」ということになりそうです。
ここまでが長い前書き。
そうして、これが次の質問になります。
プロ棋士の棋譜をベースにR3500まで到達したソフトと、ランダムプレイヤーベースでR3500まで到達したソフトの二乗誤差は、そこそこ小さくなるだろう。、、、という予測に同意されますか?
哲学的でなんか面白いことおっしゃられますな。
個人的には、関東人と関西人くらいの違いは出るもんだと思いますけど。
ゲーム木というベースがちゃんとあるわけですから、素養が似てくるのはある程度あると思いますね。
屋根さんの回答が楽しみです。
> プロ棋士の棋譜をベースにR3500まで到達したソフトと、ランダムプレイヤーベースでR3500まで到達したソフトの二乗誤差は、そこそこ小さくなるだろう。、、、という予測
私はそこそこ小さくなると思ってますけど、条件が曖昧でそれではあまり何を言ってることにもならないような…。前者と後者とで特徴因子の符号の一致率が何%になるかとか、そういう尺度だと面白いような。6,7割ぐらいは一致するんじゃないかと思うんですけど。
完全解析が事実上できない将棋というゲームを戦うプレイヤーというのは、結局のところ棋理、大局観、評価関数、そういうものを頼りにして探索をして次の手を決めている、まあそうせざるを得ないのが事実でしょうか。
それで、ゲームの棋理、あるいは評価関数を決めているのはそのゲームのルールなんだろうなあ、、、と。
その場合、評価関数の分布というのは、一番正確な評価関数(これは将棋の神様を評価関数に写像したものかなと思うのですが、、、)それを頂点にした、富士山のような格好をしたものになりそうだな、、、と。
すべての評価関数はその理想の評価関数の近似であり、従って、ソフトのランキングが上昇するにつれて登り口がちがっていたとしても評価関数が似てくるのは当然、、、ということになりそうだなと。
まあ、そういう風に想像したのでありました。
PS
・・・それでも私にとっては「プロ棋士の棋譜ベースの評価関数」と「ランダムプレイヤーベースの評価関数」が似たものになるというのは「不思議なこと」のように思えるのでもあります。
> 「プロ棋士の棋譜ベースの評価関数」と「ランダムプレイヤーベースの評価関数」が似たものになるというのは「不思議なこと」
例えば、駒割り、わりとどんな方法で学習させても同じような値になりますけど、それも不思議なことだったり?
「不思議なこと」と感じられるのは、プロ棋士の棋譜を使った学習結果としての評価関数と、ソフトが独自で学習した結果の評価関数が似たものになるだろう、、、という点であります。
たとえば、今回のひまうら王(R2700)の評価関数とプロ棋士の棋譜を使って学習させた場合のひまうら王(R2700)の評価関数が似たものになるだろう、、、というように考えています。
この想定が成立しないのなら、「不思議だ」という感想は単なる私の早とちりですね。
そしてまたこれは「同じ将棋というゲームを相手にしているのだから、当然だ」と言われてしまえば、まあ、それまでの話なのではあります。
> 今回のひまうら王(R2700)の評価関数とプロ棋士の棋譜を使って学習させた場合のひまうら王(R2700)の評価関数が似たものになるだろう、、、というように考えています
それはそこそこ違うように思いますけども。
評価関数の表現力の限界まで達したときに、そんなに自由度はないというだけで、表現力の限界でなければいくらでもやりようはあるように思いますよ。
例えば、Aperyの評価関数パラメーターにかなり強めノイズを加えてもR2500ぐらい維持できるでしょうから、まあつまりR3500ぐらいのソフトを持ってきてR2500まで落としていいのであれば、評価関数パラメーター自体にはかなりの自由度はあるように思います。
状況が良く分かっていない者の議論にお付き合いいただき、恐縮のいたりであります。
それでもせっかくここまで教えていただいたのですから、最後にもうひとつ、質問をさせていただきます。
プロ棋士の棋譜のみを(あるいは人が指した棋譜のみを)用いた場合、現状主流の評価関数の形ではどの程度のR数値が上限になると想定できるのでしょうか?
(自己対戦棋譜による棋力アップはなし、、、ということで、お願いします。)
> 現状主流の評価関数の形ではどの程度のR数値が上限になる
PCはいまのままのスペックとしても、プロの棋譜のみで、いまのApery + R200ぐらいは十分到達可能でしょうからR3700辺りまでは2,3年以内にいけるかと思います。上限はよくわかりません。R4000ぐらいは(神様が探索部を改良するなどすれば)いける気がしますが。
おかげさまで状況の理解がすすみました。
長い質問リストにお付き合いいただき、感謝する次第であります。
連載楽しく読ませていただいております。質問させてください。
対戦時に多数のCPUを並列化することでどれくらい強くなるかというのは、電王戦のGPS将棋などである程度わかっていると思うのですが、
ソフトを開発している過程において、CPUを多数(たとえば数十個や数百個)使えるとすると、どのようなメリットがあるのでしょうか。
ぱっと思いつくのは旧バージョンとの自己対戦を各CPUにやらせて短時間に大きな統計量を稼げるとかでしょうか。棋譜からの学習は簡単に並列化できるものなのでしょうか。
棋譜からの学習の並列化ですが、近年、機械学習のメソッドがSGD+αになったせいで、PCが物理的に分かれてるとすこぶる並列化が難しいです。(そして並列化の効率悪いです。) 自己対戦させたり、学習対象の局面を作ったりするのには役立ちます。
すいません
どこからダウンロードするかわかりません
将棋所でプレイしたいのですが・・。
本文冒頭にあるツイートにGoogleDriveへのリンクがありまして…。