[過去ログ]
【オセロ,将棋】ボードゲーム【囲碁,War】 (1002レス)
【オセロ,将棋】ボードゲーム【囲碁,War】 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
887: 310 [sage] 2017/07/06(木) 23:41:11.66 ID:uY9At7Gi 終盤20手の盤面集めなので、ばらけた方がよいし、ランダム着手の方が速いかなと。 とはいえ、今はMCTS5秒読み+残り20マス完全読みで記譜集めしてます。 1譜3分弱で、今のところ重複記譜なしで、700譜くらい集まったところです。 さっきまで藤井四段のabemaTVにCPUを15%くらい持っていかれていました(汗 改良したいところはあちこちありますが、とりあえずニューラルネットのライブラリに専念。 optimizerをどうやって作ったか、まったく思い出せない(汗 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/887
888: 310 [sage] 2017/07/08(土) 20:32:28.67 ID:bOmPmg/w ニューラルネットの計算でけました。たぶん。 頭が行列に切り替わるまでが憂鬱なんだよなぁ。 optimizerは計算式なぞるだけで楽勝でした。が、理解しないまま行列計算 に置き換えているので、何が何だかわからなくて、忘れちゃうんでしょうね。 続いて、tiny_dnnのstl的なインターフェースに憧れて、ミニバッチの処理 とかのインターフェースに凝りだしてしまった。 本当はレイヤー階層定義のところも凝りたかったのだけど、今のところ MLPレベル(2層)までしかやらないと自分に言い聞かせて自粛中。 学習データは1200局くらい集まりましたが、全滅の時の完全読み切り の手順取得処理にバグがあって、無限ループ入り。せっかくの全滅に 至る記譜が採れませんでした。無念。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/888
889: 535 [sage] 2017/07/09(日) 21:54:20.93 ID:DDYaMcZG >モンテカルロ木をDBに保存して無限に成長させる これやってます。 5手目は正解できるようになったようですが、まだまだ完全ソルバには勝てません。 メモリはそんな簡単に爆発しないみたいだけど、木が大きくなるにつれ速度がかなり遅くなる。 UCBの計算が遅いのだろうか? http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/889
890: 310 [sage] 2017/07/10(月) 00:58:02.21 ID:NRizRRec 自分のはロールアウト関数がボトルネックなので、木が深くなると速度が上がっていき ます。MCTSの設定も、どんどん深く行く方向で調整してます。UCBの計算は普通に cmathのlogとかsqrtとか使ってます。 結局、今日は一日、ニューラルネットのライブラリのインターフェースをしこしこと 作って直して、してました。template使いまくりです。 まだやりたい事があるのですが、今の状況では不要だし、泥沼に入りそうなので、 いったんこの辺で。 記譜は1500超えたので、明日から終盤の評価関数作ってみる予定。 できたようなら、MCTSの探索方法を変えて、更に良い記譜を集めるか、それとも 置換表付き完全読み切りのバグを探すか。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/890
891: 535 [] 2017/07/10(月) 22:57:52.54 ID:Ioy9WIYD きたああああああぁぁぁぁあああああ!! 完全ソルバに勝利!!!! http://connect4.gamesolver.org/?pos=44444222242555777711776655625636363333111 この勝利を引くために数十回リトライしましたw http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/891
892: 535 [sage] 2017/07/10(月) 23:09:01.53 ID:Ioy9WIYD ちなみにDBは初期曲面のプレイアウト回数が約36万回になりました。 少なそうに見えるかもだけどDBつくるのに結構時間かかってる。 囲連星にも応用したいな〜 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/892
893: 535 [sage] 2017/07/10(月) 23:24:06.47 ID:Ioy9WIYD DBの木の深さは一番深いところで37。 結構、深いところまで読んでるんじゃないでしょうか。 もちろん、途中で読んでない局面に分岐されると困ってしまうんですが… http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/893
894: 535 [sage] 2017/07/10(月) 23:38:14.93 ID:Ioy9WIYD UCBの係数をいじれば木を浅く広くにもできそう? 完全ソルバに勝つにはそっちのほうがいいかもしれないですね。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/894
895: 535 [sage] 2017/07/11(火) 00:01:35.20 ID:XEOuAfue >>890 プロファイル取ってみました。 logとかsqrtとかはインライン展開されて?計算時間がよくわからなかったですけど多分ボトルネックじゃなさそう。 ちなみに局面と勝率を保持するクラスのコピーコンストラクタに全体の60%の時間がかかってるという 完全に意味不明のプロファイル結果が出ました。 どう解釈すればいいんですかね? http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/895
896: 535 [sage] 2017/07/11(火) 20:08:54.72 ID:XEOuAfue んーもしかしてツリーを丸っとコピーしちゃってる? 問題の個所はどこだろう? http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/896
897: 535 [sage] 2017/07/11(火) 21:20:27.73 ID:XEOuAfue え、めっちゃ早くなった?ww 我ながらこれはヒドスwwww http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/897
898: 535 [sage] 2017/07/11(火) 21:50:40.06 ID:XEOuAfue うおっ一瞬でメモリパンクしたwwww 310さんの言ったとおりだったwwwww http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/898
899: 535 [sage] 2017/07/11(火) 22:02:05.79 ID:XEOuAfue 局面の合流を検知しないでベタに木を展開してんのがまずいのかなぁ。 まあモンテカルロ木DB化はこの辺が限界かなぁ。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/899
900: 535 [sage] 2017/07/11(火) 22:31:32.07 ID:XEOuAfue 本線じゃない分岐の間違いを修正するには指数的な試行回数が必要になるなこれは。 まあしょうがないか。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/900
901: 310 [sage] 2017/07/12(水) 20:10:09.86 ID:b5nvOjQF 直ったようで何より(^^/ 自分は合流させてません。 合流させるメリットよりデメリットの方が大きそうだったので考える事をやめました。 モンテカルロ木DB化って、よくよく考えたらQ学習みたいなものではないかと思います。 Q学習だと全部のノードにQ値を持つので、結局全局面保持することになります。 現在Deep Q学習が主流になってるのは、Q値をディープラーニングで近似計算する 事で、全局面のQ値を保持しなくても良くするためという側面もあるかと思います。 で、Q学習だと考えるなら、時々変な手を混ぜて木をきちんと分岐させるってのが、 強化学習の肝ではないかと思います。 当方、完全読み切りのバグとり完了。 ニューラルネットのライブラリも大体できて、1900譜で40手目以後を学習してみました。 やっぱ、疎行列対応の行列パッケージでの計算は、tiny_dnnと比較して圧倒的に早い です。 データが少ないのと、同一の記譜内からテストデータ取っているのもあるのですが、 テスト誤差は十分小さな値になるのですが、FFOの盤面を評価させると、いまいち 合っていない感じで、あまり汎化できていない感じす。もっと記譜増やします。 やっつけで作ったmcts部分をきちっとさせるのと、とりあえず持っている評価関数 で、puct化できるか、ロールアウトの後半の精度を上げられるか、検討開始です。 強化学習までまだ遠いなぁ。でも、少し背中が見えてきたかな。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/901
902: 310 [sage] 2017/07/12(水) 20:27:07.87 ID:b5nvOjQF 記譜集めですが、8手までランダム着手していたら、 9手目で白全滅という記譜が取れました(汗 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/902
903: 535 [sage] 2017/07/14(金) 21:11:11.02 ID:TTQj/Kki Connect4もひと段落ついたし囲連星もアイディア湧かないし 気分転換にライフゲーム囲碁のAIやろうかな。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/903
904: 310 [sage] 2017/07/15(土) 02:17:52.56 ID:qcpUcaKf 再帰呼出は関数オブジェクトを使うと速いというのを見つけて、あちこち試してみました。 static constな再帰関数は速くなるみたい。 クラス内でthisを参照するような類は効果が無いようです。 が…、なんか数か所おかしいような。 やっぱり、どこかでバグを仕込んでしまった模様。むむむ。 続きは明日だなぁ。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/904
905: 535 [sage] 2017/07/15(土) 02:40:13.20 ID:+mfEtycW 関数オブジェクトを使うと速いってのはどんな理屈なんですかね? ちょっと想像つかない。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/905
906: 310 [sage] 2017/07/16(日) 00:06:25.07 ID:z0mkcRg4 なんかもともと関数呼び出しの方が速いという事で数字で実証するサイトがありました。 まあ、コンパイルの最適化のかかり具合なのかなぁ。わからないです。 コンパイラのバージョンで違うのかも。 バグの原因はわかりました。関数呼び出しにするときに、同時にパスの扱いを変えた のが原因だと思います。が、確かめる際にもとに戻したら、普通の関数の方が速かった という結果に。バグってるときの実行時間なので、あてになりませんが。 というわけで、全部もとに戻して、少しだけ確認しましたが、あまり差はない模様orz 記譜の中に間違った読み切り手順が混じってしまったので、全部再計算。 こちらもパスの扱いを変えたのが原因で、別のバグが出ました(汗 二次災害大です。 再計算は2400記譜で1時間半くらいで、着手は最善手の中でのランダムなので、 1回実行してアペンドすると倍、2回で3倍というように、記譜の増殖が可能と思い 当たりました。これを使えば学習データを簡単に増やすことができます。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/906
907: 310 [sage] 2017/07/17(月) 22:52:41.07 ID:GI+vwgP1 評価関数まわりを作ってデバッグ。 その中で致命的がバグが発覚しました。 学習用に溜めた記譜データにおかしなデータがいくつかあるというもの。 学習やり直しです。 記譜データ消した後で気が付きましたが、復旧できないわけではなかった。 後の祭りですorz http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/907
908: 535 [sage] 2017/07/19(水) 21:46:51.76 ID:oWNrCACG うヴぉあー プログラム組むのすっごいだるい。 心ときめくアイディアが欲しいところ。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/908
909: 535 [sage] 2017/07/20(木) 20:57:58.92 ID:5PqobJjm ライフゲーム囲碁、DB使ったほうが弱くなる? どういうことだこれは… http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/909
910: 535 [sage] 2017/07/20(木) 21:13:01.54 ID:5PqobJjm 弱くなってるわけではなく互角のよう? DBの情報量が少なすぎるだけだろうか? よくわからん。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/910
911: 535 [sage] 2017/07/20(木) 21:56:32.91 ID:5PqobJjm 攻め合いが全然めちゃくちゃだなぁ 5x5のパターンマッチ入れるか。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/911
912: 310 [sage] 2017/07/22(土) 02:06:09.72 ID:6HI7Rmqm 結局40手までランダム+残り20手完全読みな記譜集めて、残り20手の評価関数と Policyを作ってます。ランダム1000件に対して30件のMCTS自己対戦混ぜたもので 学習してます。ランダムだけで十分学習になるようで、悩むより数を集める方が大事な 感じです。40手以後の評価関数ですが、30手過ぎくらいから、そこそこ使えるみたい です。 で、これを使ってPUCTな形にしてます。 完全読みが使えないので、20〜40手あたりで最善手(に近い手順)をどうやって 作ろうかという感じです。 まずは、後ろから探索で、何手までまともな手だったか遡るプログラムを作って、 残り25手くらいまで遡れたら良いかなぁと。 つか、強化学習に行っちゃおうかなぁ。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/912
913: 310 [sage] 2017/07/22(土) 20:32:19.70 ID:6HI7Rmqm 逆順チェックのプログラムして、学習時に、正解手順で遡れる盤面も含むようにして みました。仕組みとしては、最終盤面からヌルウィンドウサーチして、もっと良い評価に なる手が無いことをチェックして、OKなら1手遡ります。置換表にてPVの評価は即求まる のと、ヌルウィンドウサーチを使っているので、25手までなら楽勝です。 MCTSで対戦したデータには27手より前まで遡れるものもあるようですが、丸1日 チェックしても終わりそうにないので、25手で打ち切り処理を入れました。 記譜に正解手順で遡れる手数を持たせて、学習時には、その手番以後の盤面を使用 する事で、30手過ぎの評価の精度を上げられたら良いなぁと思います。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/913
914: 535 [sage] 2017/07/23(日) 00:28:11.37 ID:IndxNOGW 5x5のパターン入れたらむしろ弱くなってるような… え〜なんで〜? 絶対効果あると思ったのに。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/914
915: 535 [sage] 2017/07/23(日) 20:45:11.86 ID:IndxNOGW ライフゲーム囲碁も囲連星も完全に手詰まり。 それはそれとしてスレッドリッパーが欲しすぎる。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/915
916: 310 [sage] 2017/07/23(日) 23:50:20.93 ID:DIga1NIH 遡りチェックしていたのですが、普通のUCT時代の方が精度が高い。 そこで気合入れてPUCTのチェックをしてみたら、案の定符号がひっくり返って いる箇所があったり、パスの処理が抜けてたり。 たぶん、これで大丈夫だと思います…。 これでしばらくは、高速化しながら、記譜集めですね。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/916
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 86 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.024s