[過去ログ] 【オセロ,将棋】ボードゲーム Part2【囲碁,War】 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
477: 310 2018/10/21(日)22:20 ID:wV/AjJxk(1/2) AAS
>>475
はじめまして。新規参入嬉しいですね。
50万記譜計画の記譜は今はHPからダウンロードできないですね。懐かしい。
評価関数が正しくないと、探索時間かかりますからね。
自分は今は、自作の記譜を後ろから順番に訂正していってます。
が、やはりすごく時間がかかりまするorz
478: 310 2018/10/21(日)22:39 ID:wV/AjJxk(2/2) AAS
先日、局面の偏りで反復深化で評価値がゼロになっていく件を書きましたが、
もっと大きな問題な気がしてきました。
マイナスの評価値になるはずの局面から、中盤探索を反復深化で深くしていく時、
途中で評価関数的に未知の局面に入って、評価値0を返すようになる事があります。
もともと期待される評価値はマイナスなので、評価値0のルートに乗り換えてしまい
ます。どうもこの様な現象が起きる事で、探索を間違える事がありそうです。
これから、デバッグ用のプログラム書いて、現象を確認してみようと思います。
もしかしたら、評価関数の初期値をゼロから始めるのが、良くないのかもしれません。
初期値を−1にすると、未知の局面は−66点(パターンの種類)になるし、1つ2つ
混入したくらいでは、評価値への影響も小さいのかなと思っています。
評価関数のゼロデータを−1にして動かしてみる方が早いかなぁ?
479: 310 2018/10/22(月)22:40 ID:cyPX+oid(1/2) AAS
一応、ゼロデータをすべて−1に置き換えてみたところ、それなりな感じで、
頻度はだいぶ減りました。が、まだ時々おかしな時があります。
デバッグ用のプログラムが案外簡単にできたので、評価値の計算を確認して
みたところ、反復深化の計算のどこかにバグがありそうだという結論に…。
ただ、ほとんどのケースでは正しそうなんだなぁ。
480: 310 2018/10/22(月)22:53 ID:cyPX+oid(2/2) AAS
ソース見てたら、一瞬で判明(汗
ほぼtypoの類でしたorz
これで探索少し早くなるかな?
481: 310 2018/10/23(火)01:08 ID:rwBd0O0t(1) AAS
ウェイトのゼロデータを−1にしてみましたが、関係なさそうなので0に戻しました。
原理的にはマイナス評価値の問題は起きそうなのですが、評価値ゼロはあまり
発生していない感じです。
残り27手読み切りあたりから今のやり方では追い付かなくなって来ていますので、
MPCモドキの導入を考えています。MPCのスレッショルドの計算を真面目に
やると、それだけで日が暮れてしまいそうなので、あくまでモドキですが(汗
置換表から作り直しになるし、記譜作り直しで、まだ27手まで時間がたっぷりある
ので、1週間くらいじっくり考えてから始めようかと思います。
482: 535 2018/10/28(日)21:48 ID:X2c31b1r(1) AAS
うう、やっぱPCに30万はおいそれと出せないorz orz orz
しかし、何もしないままでただ時間が過ぎていくほうが怖いような気もする。
483: 535 2018/10/30(火)23:21 ID:pl1cfUhR(1) AAS
なんかRTXに不具合があるとか何とか
マジ?
もうしばらく様子見が正解か…
484: 310 2018/11/01(木)00:10 ID:D90j6hyj(1) AAS
MPCですが、完全読み切りをIterative Wideningで速度アップするためのProbCutを
作ってます。とりあえずスレッショルド計算のところまでできました。線形近似と誤差の
標準偏差の計算ですが、以前はループでゴリゴリ計算してました。今回はEigen使って
行列で計算するようにしたら超簡単でびっくりするほど早くなりました。
結局、計算時間の大半は浅い探索になります。
で、結果を見れば見るほど、無理に計算しなくてよいのではないかと思えてきます(汗
誤差は1σ=4〜5程度の固定値。線形近似は、1次係数は1.0で0次の定数(バイアス)
を、深さが偶数で+1〜+2、奇数−1〜−2くらい。探索の深さを変えると、誤差は
減っていきますが、あまり頑張るとオーバーヘッドになります。
そもそもIterative Wideningでは、探索精度ではなく、徐々に探索対象を広める事で、
置換表の精度を上げていく事で高速化をしますので、アドホックな値でも良いのかなと。
誤差やバイアスは今の自分の評価関数での値ですが、気が向いた時に再度チェック
するくらいで良いのかなと思う次第。
というわけで、大幅に簡素化・定数化して、読み切り処理の方に移る事にしました。
485: 535 2018/11/02(金)23:35 ID:1vnWpGba(1) AAS
9900K発売ですか。
かなり入手困難みたいですね。
486: 535 2018/11/04(日)21:31 ID:AYd3OzR3(1) AAS
11/6にAMDからなにか発表があるとか
ZEN2くるかなー?
とりあえず今は待ちか。
487: 535 2018/11/08(木)22:14 ID:l30eANOm(1) AAS
結局zen2は春ごろなんですかね?
いまはRyzen 2700xを買っていつでも乗り換えられる体勢を取るのが正解かなぁ?
488: 310 2018/11/10(土)22:53 ID:MAqAiuT/(1) AAS
ぬぬぬ。
ProbCutのバグ取りに時間がかかりました。というか、なかなか高速化できません。
むしろ倍以上時間がかかってしまいます。
もっとひどい事に、今までのやり方のうち、比較的単純なやつが最も早い可能性が
高いという事に気が付いてしまいました…。下手すると40%くらい早いかも。
ProbCut比では3〜4倍速いという事です。
もともとProbCu自体は中盤探索で前方枝刈するための仕組みです。
これを読み切りしながら順次探索範囲を広げる事でソート順を修正する方向で
活用しようとしているのですが、下位のところを何度も読むオーバーヘッドがあり、
そこを置換表で高速化と考えていましたが、どこかがおかしい…。
そうこうするうちに、評価関数の精度が上がって、反復深化で十分実用になる
ソート順がセットできる事になった模様です。
まだバグの可能性は捨てきれませんが、一旦諦めようかな。
489: 310 2018/11/15(木)23:13 ID:Gy98Zi+i(1) AAS
ProbCutは一旦放置して、地道にSolverの速度アップを始めました。
作り直した時に、末端ノードの処理を結構簡素化しちゃったので、やり直しです。
で、Zebraの初期バージョンのオーダリングを日本語で解説した資料を見つけて
色々とノウハウを得まして、Fastest Fastの処理を見直したり、その他色々やった
ところ、速度が倍になりました。
が、見たくない現実としては、まだZebraの当時のFFOテストより若干遅い感じです。
以前はFFO#20限定で0.3秒くらいまで行っていたのですが、まだ1〜2秒前後。
ちなみに、似たスペックのPCでの計測値が公表されているマスターオセロは、
更に10倍程度高速です。ぬぬぬ。
棋譜作って学習していくと、探索時間が地味に短くなっていくし、時にはオーダリング
の間違いが直ってジャンプするように特定の盤面で高速化する事がありますので、
まだまだ辛抱かなぁ。
490: 2018/11/17(土)11:28 ID:8gp5y6uH(1/5) AAS
なんとか棋譜訂正が終わりました
それだけだと終盤探索にあまり効き目はなかったようです…
これで終わりたくなくて色々見直したところ、なんとかFFO55が6000秒から2500秒切るレベルまで高速化されました
ただ問題があって、空きマスリストを用意していない影響で、空きマスが2つになるまでビット演算で着手番号を取得してるので、NPSがかなり低くなっています
ここを改善するだけでも20%ぐらいは高速化するのではないかと…今週はそのへんやってみようかと思います
491(1): 2018/11/17(土)11:43 ID:8gp5y6uH(2/5) AAS
テスト結果を載せます
ここから2倍ぐらいになれば、MasterReversiの背中が見えてくるレベル・・・まだまだです
YBWCとかやらないとなぁ
Microsoft Windows 10
Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz
キャッシュサイズ256MB
FFO#40 ( Exact:(a2:+38) 1.19sec node: 12.33[Mn] nps:10323[Knps] )
FFO#41 ( Exact:(h4: +0) 2.99sec node: 35.31[Mn] nps:11825[Knps] )
FFO#42 ( Exact:(g2: +6) 2.86sec node: 39.98[Mn] nps:13961[Knps] )
FFO#43 ( Exact:(G3:-12) 2.49sec node: 25.47[Mn] nps:10236[Knps] )
FFO#44 ( Exact:(D2:-14) 4.08sec node: 40.86[Mn] nps:10006[Knps] )
FFO#45 ( Exact:(b2: +6) 29.92sec node: 449.45[Mn] nps:15022[Knps] )
FFO#46 ( Exact:(b3: -8) 7.48sec node: 87.43[Mn] nps:11687[Knps] )
FFO#47 ( Exact:(G2: +4) 3.71sec node: 49.65[Mn] nps:12851[Knps] )
FFO#48 ( Exact:(F6:+28) 18.78sec node: 216.42[Mn] nps:11523[Knps] )
FFO#49 ( Exact:(e1:+16) 53.12sec node: 655.97[Mn] nps:12350[Knps] )
FFO#50 ( Exact:(d8:+10) 141.11sec node: 1.39[Gn] nps: 9873[Knps] )
FFO#51 ( Exact:(E2:+6) 39.81sec node: 509.68[Mn] nps:12804[Knps] )
FFO#52 ( Exact:(a3:+0) 54.33sec node: 725.60[Mn] nps:13355[Knps] )
FFO#53 ( Exact:(d8:-2) 774.22sec node: 10.74[Gn] nps:13873[Knps] )
FFO#54 ( Exact:(c7:-2) 965.65sec node: 14.37[Gn] nps:14973[Knps] )
FFO#55 ( Exact:(G6:+0) 7124.95sec node: 105.41[Gn] nps:14794[Knps] )
FFO#56 ( Exact:(H5:+2) 244.72sec node: 3.22[Gn] nps:13475[Knps] )
FFO#57 ( Exact:(a6:-10) 926.60sec node: 11.06[Gn] nps:13352[Knps] )
FFO#58 ( Exact:(g1:+4) 551.11sec node: 8.16[Gn] nps:14803[Knps] )
FFO#59 ( Exact:(g8:+64) 0.94sec node: 5.28[Mn] nps: 5626[Knps] )
492(1): 2018/11/17(土)11:45 ID:8gp5y6uH(3/5) AAS
間違えて前のバージョンを載せてしまいましたw
今回はこちらです。比較になってちょうどよかったかも
FFO#40 ( Exact:(a2:+38) 1.29sec node: 10.63[Mn] nps: 8244[Knps] )
FFO#41 ( Exact:(h4: +0) 2.97sec node: 25.54[Mn] nps: 8599[Knps] )
FFO#42 ( Exact:(g2: +6) 2.24sec node: 20.58[Mn] nps: 9189[Knps] )
FFO#43 ( Exact:(C7:-12) 2.54sec node: 19.23[Mn] nps: 7572[Knps] )
FFO#44 ( Exact:(B8:-14) 4.32sec node: 32.07[Mn] nps: 7418[Knps] )
FFO#45 ( Exact:(b2: +6) 27.68sec node: 294.61[Mn] nps:10644[Knps] )
FFO#46 ( Exact:(b3: -8) 7.56sec node: 68.56[Mn] nps: 9070[Knps] )
FFO#47 ( Exact:(G2: +4) 3.25sec node: 36.70[Mn] nps:11293[Knps] )
FFO#48 ( Exact:(F6:+28) 21.11sec node: 195.99[Mn] nps: 9286[Knps] )
FFO#49 ( Exact:(e1:+16) 34.84sec node: 346.90[Mn] nps: 9958[Knps] )
FFO#50 ( Exact:(d8:+10) 108.94sec node: 960.91[Mn] nps: 8820[Knps] )
FFO#51 ( Exact:(E2:+6) 36.21sec node: 378.54[Mn] nps:10453[Knps] )
FFO#52 ( Exact:(a3:+0) 63.95sec node: 730.82[Mn] nps:11429[Knps] )
FFO#53 ( Exact:(d8:-2) 545.77sec node: 6.17[Gn] nps:11304[Knps] )
FFO#54 ( Exact:(c7:-2) 626.09sec node: 7.42[Gn] nps:11848[Knps] )
FFO#55 ( Exact:(G6:+0) 2492.74sec node: 31.10[Gn] nps:12475[Knps] )
FFO#56 ( Exact:(H5:+2) 212.26sec node: 2.52[Gn] nps:11894[Knps] )
FFO#57 ( Exact:(a6:-10) 520.85sec node: 6.35[Gn] nps:12183[Knps] )
FFO#58 ( Exact:(g1:+4) 588.80sec node: 8.54[Gn] nps:14512[Knps] )
FFO#59 ( Exact:(g8:+64) 1.88sec node: 8.86[Mn] nps: 4722[Knps] )
493: 535 2018/11/17(土)17:28 ID:s4ulT91Q(1/6) AAS
うおお、ついに新PC買っちゃいました!
画像リンク
494: 535 2018/11/17(土)17:38 ID:s4ulT91Q(2/6) AAS
なんか買っただけで満足してしまっている自分がいるwww
495(2): 2018/11/17(土)18:39 ID:8gp5y6uH(4/5) AAS
空きマスリストを作る方式でやってみたのですがビット演算のほうが5%速かったみたいです
こうなるとオーダリングのコストを下げるしか無くなってきました
496(1): 2018/11/17(土)18:40 ID:8gp5y6uH(5/5) AAS
RYZENですか
自分もi5なので、新しいPCが欲しいところ
497(1): 535 2018/11/17(土)19:32 ID:s4ulT91Q(3/6) AAS
>>496
せっかくなのでなにか͡コテ名乗ってくれませんか?
まあ無理強いはしませんが。
498: 535 2018/11/17(土)20:03 ID:s4ulT91Q(4/6) AAS
シネベンチマルチ1705CB
うーん、壊れる前のマシンの倍くらいにはなってるんですかね?
499: 535 2018/11/17(土)20:20 ID:s4ulT91Q(5/6) AAS
さて本題のAI開発は何から始めようか?w
差しあたっての目標はAQをwindowsでビルドかな
500: 535 2018/11/17(土)22:39 ID:s4ulT91Q(6/6) AAS
>>491
よくみたらキャッシュ256MBってどうゆうこっちゃw
501: 535 2018/11/18(日)00:16 ID:rI0UFOUu(1/5) AAS
windowsでビルドするの結構難しそう。
気分転換にAQのあらかじめexeになってるものを落として動かしてみたら割とサクサク動く。
そして当たり前だけど強い。
これは期待が高まるw
502: 310 2018/11/18(日)01:01 ID:CiNHjYBr(1/3) AAS
おお。大体僕の倍くらいの速度ですね。
なお、気が短いし、記譜訂正が26手目くらいまでしかできていないので、
今は#40-#44の5つしか計測していません。昔から#41がピンポイントで遅い。
空きマスのビット演算、ちょうどやったところです。
mobility使わずに、flip関数がゼロだと着手不能ってパターンです。
静的オーダリングを使っていますが、角優先×最後って事で。
パターン配列作ってループ回してAND版と、先に空きマスをpextで並び替えて、
テーブル引いて元に戻して着手する版と2種類トライしまいしたが、速度差は
誤差としか言いようが無いレベルでしたorz
元に戻す演算を思いついたらまたトライする予定。
本日はProbCutを再トライ。今度はちゃんと高速化しているようです。
スレッショルド1.0σで反復無しで、その結果を用いてアスピレーションウィンドウ
サーチして、少し高速化できたかなぁと言う感じ。
ただ、投機的に高速化しているので、FFOで比較しても、苦手盤面がありそうです。
棋譜が揃って来たら投機のヒット率が上がると信じて、しばらく使ってみます。
503: 310 2018/11/18(日)01:13 ID:CiNHjYBr(2/3) AAS
535さんニューマシンおめ!
自分はSurface3で、i7-4650Uの1.7GHz(2.29GHz)×4です。
キャッシュとかどこで見れるのかなぁ。
504: 310 2018/11/18(日)01:19 ID:CiNHjYBr(3/3) AAS
ちなみに、偶数理論は何度かトライしていますが、速度低下してしまうので
使えずにいます。
ZebraはUndo方式で空きマスリストを常時更新しているようです。
僕はCopy方式で、末端の該当ノードで空きマスリストを作ろうとしているので
すが、なかなかうまくできません。
過去にpaint処理みたいな方法で完全な空きマスリストを作成しましたが、
当然オーバーヘッドが大きくて使い物になりませんでした。
最近は「どうせ4隅でしょ?」という事で、盤面を4分割して空きマス計算して
いますが、それでも遅い。
「どうせ4隅」が良くないのか、偶数理論の理解が間違っているのか…
505: 535 2018/11/18(日)17:01 ID:rI0UFOUu(2/5) AAS
高負荷時のファンが意外とうるさいorz
熱風もなかなかorz
あんまり連続実行しないほうがいいのかもorz
506: 535 2018/11/18(日)17:56 ID:rI0UFOUu(3/5) AAS
なんかクロームがメモリ1GBとか使ってるんだがこれで平常運転なのか?
メモリに余裕あるからってなめすぎじゃね?
上下前次1-新書関写板覧索設栞歴
あと 496 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.013s