49.49%前回からあまり伸びていない。楽観的に見てR30程度だろうか。あと、浮かむ瀬ともやらせてみる。将棋電王トーナメント)で2位のソフトである。R150ぐらいの差があるようだが、次の目標としては良さそう。ここまででプロの棋譜を用いずにApery(WCSC26)レベルの評価関数が作成出来ることは十分示せたと思うので、ここからは実験条件を色々変更しながら学習を続けることにする。6elmoの時代になってから棋力の計測を長い持ち時間でやらないと正確に出ないことがわかっているので長めで計測しているのだが、このため計算資源を相当に消費する。棋譜生成と学習より、この計測作業のほうが計算資源を消費するぐらいである。このへんからは教師局面を増やして学習を回したほうがトータルで早くなるはずである。そこで今回は教師局面を20億局面生成して、学習に使う局面を5億、10億、20億と条件を変え、それぞれで差が出るかを調べた。6-20と呼ぶことにする。6-20は1周回すことにした。しておくことでそれぞれの学習時間が同じになるし、また見かけの学習対象局面の数を揃えておくことで教師局面の多様性が棋力に及ぼす影響を純粋に計測することが出来るからである。48.37%教師局面数20億にしたものは、浮かむ瀬とR100程度の差となった。教師局面数がずいぶんと学習に影響を及ぼすこともよくわかった。上のレーティングの上昇率から見ると20億局面でもまだ足りない気はしなくもない。棋力が低いうちは、5億局面程度で学習を回すのが有効であったが、このへんからは、20億局面以上を使うべきだろう。学習部のバグが見つかるなんとこのタイミングで、ものすごいバグが見つかった!玉が5筋のときのKKP、KPPの値がすべてゼロのままになっていた。Pが手駒のときも同じくゼロになっていた。BonaPieceのミラー位置を求めるmir_piece()という関数を用意しているのだが、これの初期化のタイミングが悪かった。修正commitがこれだ。1行入れ替えただけだ。https://github.com/yaneurao/YaneuraOu/commit/dbe054308c03845533cd834683d6b2fe29c04f1eよくこんな状態で浮かむ瀬とR100差のところまで来たなという感じであるな...。いうことは、このバグを修正して学習させると、この一連の記事に書いたより早いペースで強くなるということである。6から、さきほど生成した20億局面でもう一度追加学習させてみた。(エコである)しかし、ほとんど強くならなかった。考えてみると教師局面の生成のときに玉が5筋にいると評価値が0になっちゃうので教師局面の質自体に問題があるからか...。6と技巧1と対局させてみたが、いまどきの(コンピューター将棋としては)普通の将棋っぽい気がする。1とか2のときのような異国情緒あふれる将棋とは違っていて(笑)、なんだか残念な気もする。結局、KPPT型評価関数の表現限界から来る制約により、強くしていこうと思うと自ずと他のソフトと同じような形を好むようになるのかも知れない。すれば、elmoにしてもプロ棋士の棋譜の残滓など、元々何も残っていなかったという可能性もある。この仮説が正しいかどうかはこのあとの結果が教えてくれるだろう。:KPPTのほうはまだ限界が来てなくて(次元数が多いので)、2駒のほうは限界の近いという可能性も...。:まさかのバグで死んでやり直しの方向なのか。:教師局面とレートの関係。長年の疑問だったのでデータ大変ありがたいです。5億では足りない説は本当にありがたくないですが......良ければ教えて欲しいことがひとつあります。20億と5億とでは最終的な誤差の大きさに違いはありますか?もし違いある、かつ、特定の場所で急激に誤差が減るなら鞍点に引っ掛かってる可能性があります。その場合はadagradをadamにする、勾配にランダムノイズを足すなどが解決策になり得ると思います。entropy)のみ計測してます。関係があって20億局面が最も下がっています。tce、lceともにいずれのケースもそこそこ綺麗に減衰しています。10億局面を2周回す場合は、lceのほうはノコギリみたいな山が2つありますし、5億局面4周する場合はlceのほうはノコギリみたいな山が4つありますが、tceはほとんど振幅はないですね。鞍点に引っかかっている可能性はないと思っています。次元数がこんなにあればそう簡単に鞍点は存在できないのではないかと思っています。ちなみに教師局面データは、完全シャッフルしてます。:コメントありがとうございます。先の話題と少し変わりますが、もうひとつ質問です。局面生成のとき、depthをランダムにできる仕様(gensfenのdepth2オプション)になっていますが、現状だと局面ごとにdepthがランダムになるようになってますが、対局の勝率をみる上では対局単位では固定した方がよいと思います。:はい、もちろん、勝敗の情報の正確性を上げるなら、必然的にdepthのランダム性は排除したほうが良いですね。ソースコード上は以下のようになっていて、min-depth(search_depth)とmax-depth(search_depth2)を指定できるようになっており、この二つが等しいとき、以下の式の右辺の第二項が0になるのでこの時depthにランダム性はないです。:個人的に今年の内は将棋AIで遊べないので、自分のアイデアをもしよかったら試していただけたら嬉しいです。実装してみる価値がありそうかだけ意見を聞けたら嬉しいです。1スライド絞り置換絞りは、天才やねさんがやめたというので、スライド絞りは更に効果が薄いかもしれませんが...でも、メリットはちゃんとあります。1.学習用局面を大量に生成出来る2.似たような局面の僅かな違いに敏感になる(かもしれない)方法は簡単。教師局面から一部の駒をスライドしてelmo絞りするだけもう1つ学習用アイデアがあります。2メタ駒関係ある駒関係が存在する時、別のある駒関係があるかどうかが勝率にどの程度影響するかを使って絞ります。駒関係の評価の後に、メタ駒関係によって学習させた関係相性を使って評価値を補正します。実験結果がリセットになったということは、つまりまだまだ伸びる余地があるということですね。三駒関係の限界が近づいてきて似たような将棋になってしまっているのだとしたら少し残念な気もしますけれど、この先の成果を楽しみに待たせていただきます。1スライド絞り駒をスライドさせた局面が現実的に出現しうる確率の多寡が問題になるのでは。実現可能性が高い局面において、その特徴因子が出現したときの勝率の予測がしたいわけで...。ある駒関係が存在する時、別のある駒関係があるかどうかが勝率にどの程度影響するかを使って絞ります。KPPって単純にやると5駒関係のように聞こえるんですけども...。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。