[過去ログ]
【オセロ,将棋】ボードゲーム【囲碁,War】 (1002レス)
【オセロ,将棋】ボードゲーム【囲碁,War】 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
477: 460 [sage] 2016/08/12(金) 07:59:35.21 ID:mvQ0iJdF 64ビット移行+120万局の学習でFFOテストの結果をまとめました。 32ビット+86万局の学習だと合計が17219.7sだったので36%ほど高速化しています。 シングルスレッド動作なので、将来的にはマルチに移行したいところ・・・ OS:Win10 CPU:i5-6500 キャッシュサイズ:128MB FFO#40 (a2:+38) 1.04s FFO#41 (h4: +0) 3.22s FFO#42 (G2: +6) 4.01s FFO#43 (G3:-12) 13.10s FFO#44 (D2:-14) 3.22s FFO#45 (b2: +6) 58.63s FFO#46 (b3: -8) 10.27s FFO#47 (G2: +4) 4.60s FFO#48 (F6:+28) 36.09s FFO#49 (e1:+16) 50.33s FFO#50 (d8:+10) 354.14s FFO#51 (E2: +6) 59.20s FFO#52 (a3:+0) 142.79s FFO#53 (d8:-2) 656.87s FFO#54 (c7:-2) 1718.85s FFO#55 (G6:+0) 5588.48s FFO#56 (H2:+0) 314.27s FFO#57 (a6:-10) 1045.01s FFO#58 (g1:+4) 973.58s FFO#59 (g8:+64) 0.25s 合計11037.95s(トッププログラムは合計で600秒台orz) http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/477
478: 460 [sage] 2016/08/12(金) 08:01:32.72 ID:mvQ0iJdF >>477 FFO#56はH2:+0ではなくH5:+2に訂正です。。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/478
479: 310 [sage] 2016/08/12(金) 15:16:23.38 ID:USoZXJIB がーん。今まで、こちらはノートPCだしと、密かに思っていましたが、32bitでしたか・・・。 完全に脱帽です。 だったら、僕もこのスレで教わったAVX2とかBMIとかの組込関数使って、あとPPLとか OpenMPとかで並列化して4コアなら3倍強程度なので、トータル4倍以上に速度アップ すると思いますよ。つまり、その辺やるだけでEdax並まで行くかなと(汗 ちなみに、DeepLearningはあきらめ方向にだいぶシフトしてきました。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/479
480: 名前は開発中のものです。 [sage] 2016/08/12(金) 16:41:11.53 ID:8u/4Xx1J 仲間が出来ていいのう http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/480
481: 460 [sage] 2016/08/12(金) 17:56:57.44 ID:wDmYSTDl シングルスレッドだとトッププログラムですら合計2000秒台と限界があるので、マルチスレッド対応は必須ですよね ただybwc等の並列化アルゴリズムの理解に時間がかかりそう… http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/481
482: 310 [sage] 2016/08/12(金) 20:50:39.55 ID:USoZXJIB >>481 YBWCはnegascoutのnull window searchを並列化して一括処理する ようなものだと解釈して実装しました。 この辺はゲーム計算メカニズムなる本で勉強したかな。 並列処理のフレームワーク何使うかが問題ですね。 自分はVC++なのでmsdnで情報が得やすいPPLを使いました。 インテルTBBとかOpenMPなんてのもあります。 PPLは結構使いやすかったですが、速度は不明。 まあ、ルートの方でしか使わないので、あまり影響ないと思っています。 手組でマルチスレッドなプログラム書ける人には不要かも知れません。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/482
483: 310 [sage] 2016/08/13(土) 14:18:44.65 ID:D+1dBs0T あ、考え方がnegascoutみたいだという事で。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/483
484: 名前は開発中のものです。 [sage] 2016/08/13(土) 20:35:07.80 ID:p7EbJiId avx2って256bitだよな オセロだと128bitしか使えないような? http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/484
485: 310 [sage] 2016/08/13(土) 20:47:52.09 ID:D+1dBs0T 方向が8つあって、それぞれの処理を8回計算するとき、 右シフト方向が4つ、左シフト方向が4つ。 256bitは64bit×4。右シフトと左シフトで2回。 というわけで、mobilityとかflipとかで便利に使えます。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/485
486: 460 [sage] 2016/08/14(日) 16:41:37.52 ID:ALD5heTO 現在、終盤用MPCパラメータ作成中です。 23手完全読みのカットペアに入っています。24手読みの計算が終わったらいったん実装に入るつもりです。 >>310 YBWCに関して調べましたが、そうみたいですね。 MPCパラメータを作成している間に、なんとなくで適当に実装してみましたが なぜかエラーで落ちまくりでしたw 排他がかかっていない致命的な箇所があるのか・・・置換表は排他をかけたのですが・・・ PVライン生成あたりも怪しい、とりあえずもう少し調べてみないとダメそう。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/486
487: 460 [sage] 2016/08/14(日) 16:42:16.06 ID:ALD5heTO >>310は>>482の間違いです。。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/487
488: 名前は開発中のものです。 [sage] 2016/08/17(水) 21:19:58.40 ID:Z2gXWq7v 俺もボードゲーム系AIでディープラーニング書いてみたいと思ってるけど難しいんだろな。 論理もそうだけど膨大なデータが必要そうだし。 >>479 どのへんで諦めました? http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/488
489: 310 [sage] 2016/08/18(木) 15:43:08.07 ID:7GnJQiSP >>488 まだ細々やってます(汗 Eigenの導入と、少しづつ進んでいくC++技術のおかげで、前よりは試行の スピードはアップしていますが、なかなか成果は出ません。まだ、色々な パターンを試しながらディープラーニングって何ぞやを体感しているところ なんだと思います。 少なくとも「簡単に凄い事ができそう」という幻想は捨てる事ができました(汗 ボードゲームがターン制なら、基本はmin-Maxになると思います。 まずは、盤面の状態に(恣意的で構いません)点をつける評価関数作るところ から始めたらどうでしょう? 次のステップで評価関数に統計(線形回帰)を持ち込むと、ディープラーニング じゃなくても、プレイ譜がたくさん必要になります。 オセロの場合は、Buroさんという先人が、実用レベルの評価関数が線形回帰 で作れる事を示してくれています。 僕がディープラーニングを適用しようと思っているのは、ただの思いつきでして。 場合によっては、より軽くて正確評価関数が作れるかと思いましたが、実際に 始めてみると、なかなか評価関数として機能してくれないし、仮にできたとしても 重いものになっちゃいそうという感じです。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/489
490: 488 [sage] 2016/08/19(金) 23:15:11.39 ID:i9HkvHw2 >>489 手動評価関数はかなり昔五目並べで書いたことあります。 min-maxで思考時間が1手5分くらいかかったけど、 自分でプレーして負かされることもあるくらいの強さにはなりました。 そのBuroさんの線形回帰とやらはWebで論文とか見れたりしますか? 読んでも多分理解できないだろうけどちょっと興味あります。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/490
491: 488 [sage] 2016/08/19(金) 23:23:27.55 ID:i9HkvHw2 ぐぐったらこんなのがあったけど多すぎ。 https://skatgame.net/mburo/publications.html http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/491
492: 310 [sage] 2016/08/20(土) 16:51:13.03 ID:m44rb9b4 >>490 Buroさんが作った伝説のオセロプログラムがLogistelloです。 Thellというオセロプログラムの作者の方が日本語で解説してくれています。 http://sealsoft.jp/thell/learning.pdf 5.2の計算の高速化のところの説明(P.8の冒頭)のところ。 自分なりに解釈したら、自分が解釈違いしたのか、説明がおかしいのか、 この通りではなかった記憶があります。 とはいえ、これはオセロの考え方であって、将棋なんかだとbonanzaなどを 参考にすべきだし、全く別のゲームであったら、別な事を考えなければなり ませんね。当たり前ですが。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/492
493: 488 [sage] 2016/08/20(土) 20:33:47.55 ID:+7ONDgCM >>492 パターンの重みの線形和が評価関数になる的なことが書いてあるっぽいですけど、 パターンというのは人間が与えてやるわけですよね? そのパターンすら学習で求めるというのがディープラーニングなのかと思ってますけど。 まあディープラーニングにはロマンがありますね。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/493
494: 310 [sage] 2016/08/20(土) 21:29:23.21 ID:m44rb9b4 >>493 ですです。 あと、Deepじゃなくても、2層以上のパーセプトロンだと、線形分離不可能問題の 分類ができるようになります。XORの学習が典型ですね。 ところが、パターンの部分まで学習で求めてくれるってのは、やっぱり幻想でして。 ある程度パターンを想定しながら、ネットワークを作らないといかんのではないか という事に思い至っています。 例えば畳み込みニューラルネットワーク(CNN)で、何故畳み込みをするのかという と、縦線横線などの隣接ドット同士もつながりを識別してもらうためですし。そもそも 畳み込みのフォワード計算自体が、画像に対して例えば輪郭線強調といったフィル ターかけるのと、プログラム的に同じものだったりします。学習対象は、フィルターに なります。 オセロは、囲碁とかと違って、石の色がコロコロ変わるので、隣同士の石のつながで 判断するCNN的なネットワークをそのまま適用できないよなぁというのが、最近の諦め ポイントであります。 じゃあ、何に頼るかというと、自分はオセロ弱いので・・・No ideaだったりします。 あんな簡単な(DeepLearningと比較して)線形和でBuroさんの評価関数ができています ので、パターンを活かして、まずはそこに点数を割り振るところをMLPなんかでできない かなぁと思っています。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/494
495: 488 [sage] 2016/08/21(日) 00:04:33.21 ID:EnsCDbgT >>494 >ところが、パターンの部分まで学習で求めてくれるってのは、やっぱり幻想でして。 >ある程度パターンを想定しながら、ネットワークを作らないといかんのではないか >という事に思い至っています。 ふーむそうなのか。残念。 聞きかじった知識だと夢のような技術なのかと思っちゃったけど、 実戦してみるとなかなか難しいのかぁ。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/495
496: 名前は開発中のものです。 [sage] 2016/08/21(日) 21:39:11.08 ID:EnsCDbgT いくらオセロの盤面が小さいからってシングルスレッドで 10000Knps〜15000Knpsというのはとてつもなく速く感じるんだが。 どうやったらそんな速度がでるんだ? オセロ業界じゃ普通なのか? http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/496
497: 310 [sage] 2016/08/22(月) 02:41:50.59 ID:2ubnBUwd Kが余計で3桁間違えているんじゃないかと(汗 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/497
498: 310 [sage] 2016/08/22(月) 02:46:41.58 ID:2ubnBUwd あ、違った。自分が3桁間違えていた。 全然おかしくないです。自分の2コアで13000Kくらい出てます。 シングルで同等の速度ですから、かなり速いとは思いますが、 敢えて言うなら2倍程度なら縮められないとは思えない差です。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/498
499: 460 [sage] 2016/08/22(月) 08:13:03.66 ID:yZES3OuI 終盤MPCを実装完了してFFOを測定してみました。。 残すのはFFO#57のみですが、この時点で9364秒と1万秒を割ってるので 10%程度の高速化は期待できそうです。(評価テーブルは64ビット移行+120万局から変更なし) http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/499
500: 460 [sage] 2016/08/22(月) 09:20:01.85 ID:qlwiS2PE >>496 簡単な実装だと終盤探索は2000万ノード/秒いけますね。 合法手生成が将棋などより速いので。 とはいえ、中盤探索だと色々やるので5000knps程度に落ちてしまってます。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/500
501: 496 [sage] 2016/08/22(月) 21:10:28.52 ID:WzxI/O2e 2000万ノード/sとかってsseやavx使って始めて可能になるレベル? オセロの合法手の実装になにかすごい効率的なビット演算やってるとか? http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/501
502: 460 [sage] 2016/08/23(火) 11:44:32.28 ID:sSUGbl7L >>501 終盤探索だと合法手生成は葉ノードの近くでは使わないので、ループや条件分岐を使ったコードでなければアセンブラでなくても速度はそれなりに出ますよ。 こことかが参考になります。 http://d.hatena.ne.jp/ainame/touch/20100426/1272236395 自分はこんな感じのコードをアセンブラに落として少し改変したものを使ってますー http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/502
503: 460 [sage] 2016/08/23(火) 11:47:50.11 ID:sSUGbl7L 置換表に超大バグがあることに気づき修正したらFFO45が32秒になりました…w 180万局の学習を朝に終えたので今晩再度FFOを測定しようと思います。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/503
504: 310 [sage] 2016/08/23(火) 13:54:12.88 ID:LVh7XLe+ >>502 そのサイトは知りませんでしたが、同じことやっています。 自分の場合は、それをAVX2命令で1,7,8,9ビットシフトを4つ並列で動かす様にして、 右シフト左シフト2回の演算をC++で組んでます。並べて書くと混乱しそうだったので 演算オーバーライドしまくりで、バグ防止しました。 やっぱりアセンブラの方が速いんでしょうね。 ディープラーニングな評価関数の方ですが、突然収束を始めました。 まだ途中ですが、見た感じざっくりで、平均二乗誤差の平方根(σ)が0.6石程度に 収まりそうです。2σで1石、スコアは2づつ変わるので、評価逆転が起きる確率を 数%程度にするには、0.5石以下にしたい。 肝はミニバッチのサイズだった様です(謎)。ハイパーパラメータとしては考慮対象外 でしたが、テスト用に小さくすると収束が悪くなる感触があったので、思い切って大き くしてみたところ…大きくすればするほど記録を更新していくという状態。ついに212640 件という特大バッチサイズにしてしまいました。メモリー的にはまだいけるかも。 今までの比較検討データは全てパーになったので、検討済のネットワークも、バッチ サイズ変えて再評価です。今やってるのは、Buroさんパターンがベースのネットワーク ですが、もしかしたら入力ベタ打ちで「勝手に特徴抽出してくれる。すげー!」に戻るかも(汗 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/504
505: 名前は開発中のものです。 [sage] 2016/08/23(火) 19:39:22.88 ID:1+aieVpn >>502 ループはおろか条件分岐すらいらんのか(驚愕) >>504 おお、ディープラーニング期待してます。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/505
506: 名前は開発中のものです。 [sage] 2016/08/23(火) 21:26:59.10 ID:KqeLXU8U 文系の俺には全然分からん。 もっと簡素な3目並べなら勝てるAIとか作れないかな(´;ω;`) http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/506
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 496 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.015s