[過去ログ]
【オセロ,将棋】ボードゲーム Part2【囲碁,War】 (1002レス)
【オセロ,将棋】ボードゲーム Part2【囲碁,War】 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
310: 535 [sage] 2018/04/02(月) 22:24:32 ID:3iK+AnRP Leela ZeroがKGSでかなり強くなってる。 俺がパクったプログラムも学習し続けたらあれくらい強くなるんだろうか? http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/310
14: 310 [sage] 2017/10/20(金) 22:21:51 ID:AyXCD9Rq あ、つけ忘れ失礼。 Rollout無し版を試してますが、何故か最近静まっていた終盤読み切りのエラーが(汗 撲滅していたはずなんですが・・・ http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/14
29: 310 [sage] 2017/10/27(金) 09:09:34 ID:InThdIzI あれれ。また名前が消えていた(汗 お分かりの通り、今のところ名無しは310です。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/29
38: 310 [sage] 2017/10/28(土) 13:51:26 ID:rt9aGKVT ネットワーク1段増やすだけで信じられないくらい遅くなりますよね。 最初に十分に深くして学習させて、だんだん減らしながら適切な深さを 求めたいんだけど、この速度低下を考えると、本当に学習できるのか わからないままだんだん深くしていくしか無いというのが萎える点です。 スレッドについては、リソースモニターで確認するとわかりますね。 ヘッダのどこかに並列化の設定があったはずです。 コンパイラがVSならOpenMPのオプションを設定します。 コンパイラのオプションの方もOpenMPの設定をお忘れなく。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/38
41: 310 [sage] 2017/10/28(土) 23:37:15 ID:rt9aGKVT CPU使用率はそんなもんかも。 ヘッダの話、Eigenとごっちゃになってるかも。 強化学習ですが、徐々に進んでいます。もっと早くSMORMS3にしとけば良かった。 終盤読み切りのソート順に評価値を使用しているのですが、目に見えて速度が 上がってきています。また自己対局の精度も上がってきたようで、遡りチェックで 30手まで何度か行きました。逆に記譜収集の方は、スコアのばらつきが無くなって きて、記譜的に良い事なのか不安。 というわけで、手ごたえを感じつつ、現状に合わせて若干設定変更。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/41
46: 310 [sage] 2017/11/01(水) 01:06:46 ID:FDjtq7R7 バラして部分づつ学習する手もあるかも。 あ、元データはランダムに並び替えた方が良いですよ。 わかってると思いますが。 こちらは、しばらく強化学習していたら、それなりに学習が進んだ結果、 対戦相手側の手のばらつきが足りなくなって、局所解に陥ってた感じ。 急きょばらつきを広げて学習再開させたところです。 バリューの方は地道に損失が減っているんだけど、ポリシーの損失が 増えてきた。ポリシーはsigmoidがあるので、ウェイトが絶対値でとてつも なく大きくなって、なかなか修正しきれない状況になってるかもしれない。 一旦リセットすべきか悩み中。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/46
49: 310 [sage] 2017/11/01(水) 20:13:34 ID:A50hx8cn たぶん、損失の減り方は最初はゆっくりだと思います。 「特徴抽出しながら」誤差修正していってますから。 僕と同じ悩みですね。 ネットワークの大幅簡素化の結果、最終的に線形回帰まで戻ってしまいました(汗 もっとも、オセロはBuroさんの特徴抽出があったから線形回帰まで戻れたのですが。 スリッパとGPUが呼んでます(笑) でも、もしかしたらAMDよりINTELの方が良いかもしれない。 高いけど。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/49
63: 310 [sage] 2017/11/05(日) 01:04:52 ID:BooXEMcV 同じ道をたどってますね(汗 こちらは、MCTSで構築したツリーを使って、完全読み切りが速くならないか 試していますが、謎のバグのオンパレードでかなり戦線縮小。一応、それなり に動作するレベルまで撤退してテストしていますが、なんとなく速度アップは している模様。 ただ、バグの過程で置換表データに変なものが混じったらしく、学習させると 異常終了になります。記譜は1700件くらい集まっているので、一旦全消去して しまいました。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/63
64: 310 [sage] 2017/11/05(日) 17:40:16 ID:BooXEMcV ツリー探査がおかしくなる状態を確認。 けど、カーっとなって即座に終了してしまったので、詳細判明せず。 なんとなく症状は見えたので、しばらく目視デバッグします。 というか、これにより直近に遡りチェックやった記譜の正確さに不安が生じてます。 やけに遡りチェックが簡単に通るなぁと思っていたけど、これが原因かもしれない。 というわけでタイムアウトまで行った記譜を50件ほど再チェックしなきゃならん。 全部で54時間くらいかかる予想。今週はまるまるパーになりそうです。 その分、良質な置換表データが補えるんだけど。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/64
65: 310 [sage] 2017/11/05(日) 17:50:28 ID:BooXEMcV 計算間違い。全部で80時間くらいだorz http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/65
67: 310 [sage] 2017/11/05(日) 23:36:09 ID:BooXEMcV ぬがーーーーーーーーーーーー! バグって、記譜データがすべて上書きされて消えてしまったorz ツリー利用探索のデバッグ用にput処理にエラートラップ仕掛けた時に やっちゃいました。 学習済のデータが残っているのだけが救いだ・・・。 ここから記譜作ると、そこそこ精度が良い記譜になるはずなのが救いだ…。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/67
70: 310 [sage] 2017/11/07(火) 15:06:28 ID:8EOI4Ksy >>68 おっしゃる通りですorz 評価関数の方は要所要所でコピー残していたのに、記譜はなめてました。 >>69 ライブラリ公開されても、実行できる環境構築の方がハードル高いかなと。 論文はいまだに読んでいませんが、rollout無し(バリューネットに100%依存) はうまく機能しています。圧倒的にツリー探索性能がアップしているため、評価関数 の精度の低さを、力技でカバーしている感じですが。 とはいえまだ30手以前の評価値はでたらめに近い状態なので頻繁に間違えます。 強化学習でここまで治るのにどれくらいの時間がかかるのかは不明。後ろの方の 精度が上がらないと、前の方は間違った学習を繰り返すことになりますので。 後ろの方の評価関数がそこそこまともになったので、読み切り処理や遡りチェックの 時間はかなり早くなりました。タイムアウト1時間設定で時々空白31マスまで遡れる ようになってきています。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/70
75: 310 [sage] 2017/11/12(日) 22:19:15 ID:Uu7EAeJ9 しばらく出張してました。 終盤DBといえばチェスですかね。 遡りチェックは詰みを回避できるかチェックになるのかなぁ。 オセロだと何にも考えずに終局の石差でやっちゃうので。 言われてみて気付いたけど、ゲームの種類によって結構違う考えが必要なんですね。 最近、藤井四段に触発された友人の影響で将棋を始めました。 負けたくないので、3手詰め問題解いていると、どうやってプログラムしようか とか雑念が沸いてきてしまいます(汗 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/75
76: 310 [sage] 2017/11/12(日) 22:31:15 ID:Uu7EAeJ9 MCTSのツリーを使ったオーダリングは、たぶんバグが取れたと思います。 が、なんか別のところで意味不明の動作をして、速度が出せませんorz また、テストの際に半日経っても終了しなかった盤面を使ってしまい、 何度もやり直しをしていたために、強化学習が滞ってしまいました。 これ曲者過ぎるので、今夜一晩解かせてパスしたい。 朝までにとけなかったらどうしよう。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/76
79: 310 [sage] 2017/11/14(火) 00:31:34 ID:ZeqYQGfh 重い局面は6〜7時間くらいかけてクリアしました。 MCTSの速度が出ない問題は、解消というか、原因不明のまま別の方法で回避。 parallel_forの問題かと思っていたけど、shared_ptrの方の問題だったっぽい。 遡りチェックの時、PVは探索せずに、その他の手をチェックしていくので、他の手 にも探索を振り向けたかったのですが、単純に1手先の局面からUCTを実行すると 10万プレイアウトくらいで突然数十秒宇固まったようになって、それを何度も繰り 返す結果、まったくツリー探索が進まないという症状です。UCT探索の方に1回目 だけランダムに着手する関数を作って、そちらを呼び出したところ、固まらなくなり ました。 ようやくまともにツリーをオーダリングに再利用できるようになったのですが、要所 要所で極端に探索が遅くなって、逆に時間がかかります。 今しばらく調査が必要な模様。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/79
82: 310 [sage] 2017/11/14(火) 23:35:06 ID:ZeqYQGfh MCTSのツリーを使用する奴は、どうも挙動が変なのですが原因不明なので後回し。 アルファ碁Zeroでは、強化学習に軽い探索を取り入れたというのを見かけたので、 想像で真似してみる事にしました。 序盤はランダム着手。そこから5手読みの中盤探索を入れて、残り10手完全読み。 評価関数はValueを使用。たぶん、学習はマシになると思います。 もっと精度が上がったら、3手読みにしてスピードアップしたいです。 今はまだ結構ボロボロなので、これで我慢。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/82
84: 310 [sage] 2017/11/17(金) 23:19:33 ID:0nQ3gtJu 浅い探索付き強化学習は結構有効に機能しているようです。 学習の速度が明らかに上がったし、精度も良くなっているようで、テスト盤面の 誤差が結構減りました。ただ、そろそろ飽和したか、局所解に入ったような印象。 で、色々考えたあげく、線形回帰ではこの辺が限界かもしれないという事で、 評価関数をmlpにしてみました。valueの方がうまく学習しなかったので、回帰型 ではなくsigmoid出力にして0〜1の数字を石差に変換かけてます。 強化学習は、回帰版の評価関数の結果をそのまま利用してます。 そろそろそこそこ使えそうな誤差になってきたようだし、強化学習は自分に対して 行った方が良いはずなので、全面的にmlpに移行しちゃおうか悩み中。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/84
86: 310 [sage] 2017/11/18(土) 20:23:37 ID:TwYSqk9E やっぱスピードは万能ですよねぇ。 モンテカルロですが、評価関数ができたら、アルファ碁Zero方式で(汗 緩やかに読み筋を絞り込みながら、有望な手を深読みする形になります。 mlp版を試していますが、中間層を64にしたら、学習は良いのですが、 モンテカルロが劇遅になりました…。今、中間層8で強化学習していますが、 なんか早々と線形回帰と同様に飽和状態になってしまった模様。 速度的には8が限界な気がする。 途中まで線形回帰の強化学習記譜で学習させていて、同じような癖がついて しまったのかもしれないので、今晩一晩まっさらから学習させてみようかな。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/86
87: 310 [sage] 2017/11/19(日) 15:23:45 ID:O7LFJYCP あちゃー。 学習がいまいち変に感じていたのは、これは恥ずかしくて言えないレベルの 仕様ミスでした。あれ?と思って、良く考えずに念のため追加したコードが 数か所。ことごとく悪さしていました。 数日損をしたなぁ。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/87
88: 310 [sage] 2017/11/20(月) 22:18:43 ID:/GG7G9SR ぎゃー。 評価関数に入れるデータの変換テーブルに間違い見つけた。 評価関数がいまいち収束しなかったのはこれが原因かも。 もともとの線形回帰版の時代から隠れていたものなので、 線形回帰版も計算し直しです。 というわけで、数日パーどころか1か月単位でパーですorz http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/88
89: 310 [sage] 2017/11/20(月) 22:23:13 ID:/GG7G9SR 申し遅れましたが、これにて評価関数は最初から計算しなおしです。 幸い、記譜が60件+遡り時の訂正前分100件ほどの合計160件と、 置換表から拾ったものが10万件単位でありますので、最近得ていた 感触だと、これをベースに強化学習で補えそうだというのが、 唯一の救いです。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/89
93: 310 [sage] 2017/11/23(木) 21:17:40 ID:A/JPNP9D アルファ碁ゼロの論文はまだ読んでませんが、アルファ碁の正常進化ですよ。 自分はDeep Learningのところは「しかと」しているので、MCTSの進化形として とらえてみると、まあ想像ですうが、当たり前の事を当たり前にやっただけかなぁ と思っています。 それより大問題が… また、評価関数の入力データ作るための変換に間違いを見つけてしまいました。 前回どころではない大きな間違いで、良くこの評価関数でそこそこ収束していたなぁ というレベルの間違いでした。ソース喪失して書き直していたところから仕込まれて いたんだと言う事で。 なんか入力いい加減でもそこそこな評価関数ができちゃう事にびっくり。 今度こそ大丈夫と信じて・・・ http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/93
97: 310 [sage] 2017/11/25(土) 00:38:47 ID:Dx7Nr2Ji もういっちょ間違い発見orz ソース喪失後焦って数日でパーッと書いて、そのまま学習させて、そこそこ 収束していたから放置していたのを思い出してきた。今度は全部チェックした。 しかし、いい加減な評価関数でも、結構収束していたってのが凄いな。 そこはかとなく表現力不足を感じていたのはその辺が原因かなぁ。 記譜と置換表データで1から学習させるのに、一気に500回学習させたら、 思いっきり過学習になってしまった。現在、強化学習で解きほぐし中。 回帰の方はほぼほぐれたけど、MLPの方はまだ時間がかかりそう。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/97
98: 310 [sage] 2017/11/25(土) 00:54:30 ID:Dx7Nr2Ji >>95 某スレをウォッチしていたら、前から気になっていた事を指摘していた人がいた。 スレッドリッパーはAVX2命令の中に遅いものがあって、一つ下のインテルの奴の 方が、この手の計算は速いらしい。 あと、GPUをどう使うかだね。 けど学習だけならTensor Flowにやらせちゃえばよいのだろうけど、学習データを 使うところまで行ったら、GPU使った非同期並列処理とか考えなきゃならないし。 CUDAだっけ?GPU専用にコード書かないといけないし。 なんか道筋というか、そこまでやってる自分の姿がイメージしきれない(汗 その前に詰将棋を解くプログラム開発してそう(笑) http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/98
100: 310 [sage] 2017/11/25(土) 01:26:03 ID:Dx7Nr2Ji コンピュータ囲碁か何かのスレです この1か月くらいのカキこのどこかにありました(汗 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/100
104: 310 [sage] 2017/11/26(日) 13:10:07 ID:kav93n5u ソース喪失以外の時は、結構コピペしていますよw 書き直しの時は、たいていあちこちで使用しているクラスの構造変え たりする類の後戻りが難しい変更加える時なので、中の関数は一緒です(汗 新しい評価関数は、だいぶ落ち着いてきましたが、遡り28手くらい でタイムアウトになります。並べ替えに使っているので精度が上がる と速度が速くなるのです。前は29手、調子が良い時は30手くらい まで行っていたので、まだ精度が追い付いていないみたいです。 これでしばらく強化学習の具合見ながら待つだけになっちゃいました。 5×5の囲碁くらいならCNNで評価関数作れないかなぁとか、詰将棋を 作るならBitboardを2バイトに拡張しなきゃとか、悪い虫が疼き始めて います。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/104
107: 310 [sage] 2017/11/26(日) 22:28:47 ID:kav93n5u 僕が読んだ本では、 最適化するな。アルゴリズムを考えろ。 アルゴリズムなら桁単位で速度アップし、過去に行った最適化は無駄になる。 と言うよな事がトップに書いてあって、それ以来(自分の)読みやすさ優先にしている。 BITBOARDのAVX2命令とか、その辺でいくつかの関数のみ、ゴリゴリにしている。 とはいえ、その辺も一応アルゴリズムの範疇かなぁ。 演算子のオーバーロードとか関数で隠ぺいしているしね。 問題は、最初にクラスの構造とかあんまり考えてないので、あとでごちゃごちゃに なってしまう事。それで何度か書き直ししている。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/107
110: 310 [sage] 2017/12/01(金) 20:29:48 ID:ONM9KZwZ またしても問題発覚。 タイムアウトなどでキャンセルしたとき、探索途中の中途半端な評価値の置換表 が作成されている模様。対象の特定はできないため、置換表データをいったん 削除して、全データに対して再度遡りチェックを実施する事で、置換表データを 再作成する事にしました。 むむむ。 評価関数はそれなりの精度になっているので、それなりの速度ではチェックできる はずですが、またしても…って感じでがっかりです。 同一評価値で変化がある分、記譜は多少は膨れるはずなので、そちらに期待。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/110
112: 310 [sage] 2017/12/05(火) 23:36:41 ID:5HB6IIYO とりあえず軽く遡りチェック完了。28〜30まで遡ると時間かかるので当面25前後まで。 もっとも誤着手なしタイムアウト無しだと30手だろうと遡れちゃうから、28手あたりの 適度なところで止めちゃいましたが。 で、置換表データ激減。いままで間違ったものを相当学習に取り込んでいたっぽい。 あと、MCTSのツリーの末端(以後終盤探索しているので数値確定)の評価が時々 狂う問題がありまして、いつもではなかったので目をつぶってましたが、暇だった ので着手。原因不明なれど、二重更新問題っぽかったので、ツリー部分のコード を整理してみたところ、何故か治ってしまった模様。 本当に直っていたら自己対局の精度も少し良くなるはず。 つか、羽生永世7冠誕生ですね。 記譜みてみましたが、何が何だかわけわからんけどw http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/112
113: 310 [sage] 2017/12/05(火) 23:43:42 ID:5HB6IIYO Buroさん型特徴の評価関数もそろそろ限界っぽいのと、今のままだと強化学習にも かなり時間がかかるので、新しいパソコンが欲しくなってきました。やはりCNNに行く しかないかもという事で。 ものは試しにi9-7980でパソコン組んだら幾らになるのか、ネットで見積もってみた のですが…そっと閉じてしまいました(汗 クロック数とか見ると、10コア20スレッドくらいの奴が、一番よさそうな気がするんだ けど、どうなんだろう。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/113
116: 310 [sage] 2017/12/06(水) 21:37:40 ID:fJiMVswg 今見たorz 夢想段階にあったものをことごとく圧倒的な力量でやられてしまふ。 そのうち、5分でオセロ作ったよとか言われるんだろうなぁ。 学習と評価の実行が完全に二分された今となっては、 学習に使用するハード性能は正義だと思い知らされる。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/116
121: 310 [sage] 2017/12/06(水) 23:02:24 ID:fJiMVswg non-MonteCalroなツリー探索(勝手にそう呼んでる)は、MCTSがロールアウト 関数さえ作れれば万能なように、完全情報ゲームでは万能だと思う。 あと強化学習による評価関数の作成も。 ただ、まだAlpha碁Zeroの論文読んでないからわからないけど、CNNの入力 については、人間が介在しているかもしれない。少なくともアルファ碁の段階 では、ちょっと特殊な入力データを用意していた。 それと、完全情報ができない以上、強さの地平線を広げたに過ぎないのも確か。 それを実現するために圧倒的なマシンパワーを使っているわけで。そのマシン パワーを前提に、それを完全に活かせるアルゴリズムにしたってところが、評価 ポイントなのかもしれない。 かなり悔し紛れな評価だけどorz http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/121
123: 310 [sage] 2017/12/07(木) 00:22:37 ID:EKyZH2pF Googleがやらかしてから、後だしで俺も考えていたとか悔しいので、 前から思っている事をボソっと書いとく。 十分に深いDCNNの場合、表現の自由度が高いから、強化学習を繰り返す 事で過学習になる事が、起こりうる局面の大半を内部に保持する事につな がっていて、実は汎化性能ガン無視で良いのではないか。起こりにくい局面の 評価値はグチャグチャでも構わないという事で。 と思っていたりする。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/123
132: 310 [sage] 2017/12/07(木) 22:57:44 ID:JixNNylG >>129 大変です(汗 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/132
143: 310 [sage] 2017/12/10(日) 22:11:20 ID:3vDAj4sl MLP版の評価関数がNaN地獄に落ちてた。 何回かやり直したけど、結構簡単にNaN地獄に落ちるので、一旦仕切り直しで、 線形回帰な評価関数に注力する事にしました。 MCTSでテストすると、途中まで割と見知ったオープニングになってきているけど、 評価値自体はあんまり安定していない感じ。まあ、相対関係があっていれば、 絶対値はずれていても関係ないといえば関係ないけど。 しばらく強化学習を続けながら、ちっと別な事を考えてみます。 というか、Alpha Zeroの強化学習の回数が、思ったより少ないなぁと思ったけど、 自分がこれまでにやった回数を概算で考えてみたら、桁が2〜3くらい少なかったorz やっぱマシンパワーは正義だなぁ。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/143
152: 310 [sage] 2017/12/13(水) 00:38:18 ID:oWC3TnL7 MCTSのマルチスレッド化は簡単だと思う… マルチコンピュータは難しいけど。 強化学習がなんかおかしい感じだったので、記譜学習で上書きしたら かなり過学習になってしまった。強化学習で戻せばよいかと思ったけど なんかなかなか戻らないorz 強化学習どっかおかしいのかもしれない。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/152
156: 310 [sage] 2017/12/14(木) 00:19:28 ID:9pKHf6s7 排他制御は、まあ普通にしてますけど、PPLのcritical_sectionでlockしたり、 int型ならatomic<int>していたりで、並列ライブラリにお任せです。 またVirtual Lossという方法があって、ツリーを下っていく時は、先に負けた事にして 降りて行って、末端から戻ってくる時に正しい勝敗に置き換える事で、並列探索 の各スレッドが同じ枝に集中しないようにして、排他がかかる可能性を減らしてます。 あとは、排他制御が必要な領域を細かい単位に分割する事ですかね。 #と思って、ソース見たらVirtual Drawになっていた(汗 あ、そうか。DB化しているって事は、合流ありだし、盤面をキーにしなきゃならないから そうなるとちょっとややこしいのかな? 自分は合流無視で、各ノードに盤面情報を保持していません。直前着手のみ持って いて、ノードをたどる時に盤面情報を更新しながら降りていきます。着手もBITBOARD の64bitは無駄なので、char型にしちゃってます(内部的にはintなんだろうけど)。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/156
158: 310 [sage] 2017/12/15(金) 10:32:05 ID:+7BwQo/4 PPLはVC++専用の並列処理ライブラリです。 Intel TBBとかと中身はほぼ同じだと思います。 かなり抽象されていて、わかりやすいです。 自分はこれなしでは並列化できません(汗 ツリー構造だと子ノードへのポインタが一番大事な情報になっちゃいますね。 その場合ポインターと直前着手があれば盤面情報は不要になります。 一方で、ハッシュテーブル構造だと、子ノードポインタ不要で、キー(と衝突検出) のために盤面情報が必須になります。 DB化するんならハッシュテーブルとかの方が向いていますよね。 自分はMCTSでツリーを作ったり消したりなので、ツリー型にしています。 shared_ptr使って、不要になったノードはシステム任せで自動的に削除して貰って います。ハッシュテーブルだと、そう簡単にはいきませんね。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/158
159: 310 [sage] 2017/12/17(日) 00:21:31 ID:qILmYkkQ ノートPCの冷却用(動作周波数に結構影響する)にUSB扇風機使ってましたが、 結構サイズでかくて持ち運び面倒だし、ノートPCのUSBポートに刺していると 安全装置が働いてしまうので、別途電源取っていました。 で、どうせ強化学習回しておくだけで暇だったので、専用のクーリングファンを 自作してみました。 タカチのアルミケースをぴったりサイズに切り欠いて、USBコネクタと5Vの クーリングファンをセット。ノートPCに装着するとファンが回って冷却開始。 製作時間1時間程度。材料費は3000円くらい。 雑に作った割にはうまくできた。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/159
160: 310 [sage] 2017/12/17(日) 02:09:30 ID:qILmYkkQ EigenのSparseMatrixのサイズ制限を変える方法が見つかりました。 現在、簡易版と詳細版の2種類の評価関数を学習していますが、 これにより詳細版を完全にBuroさんモデルにする事ができるように なりました。 というわけで、詳細版は再度学習し直しです。 簡易版は、多少癖があるようだけど、そこそこまともになっています。 一方、詳細版は何度もやり直し中(汗 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/160
164: 310 [sage] 2017/12/19(火) 00:06:06 ID:jyMFUoq3 気が付いたらTensorFlowがWindows対応になってるね。 New PC欲しい病再発の兆し・・・ http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/164
171: 310 [sage] 2017/12/23(土) 09:08:48 ID:V4gvcHPy ノードを完全読み切りまで展開した時に、末端ノードの評価が狂う時があるという バグが以前ありました。おそらく並列処理による2重更新問題だろうと言う事で、 UCT探索の排他部分を強化して対応していましたが、ここにきてまた発生。 昨日原因が判明しました。まさかの、浮動小数点誤差の問題でした。 スコアの合計値と、試行回数を持っていて、合計値÷試行回数で平均スコアを 計算しているのですが、合計値が3500万を超えたあたりで+2をしてもfloat的 には、その2差を表現できる精度が無くなって、少しづつ合計値が不足していく 状態になっていました。 とりあえずfloatをdoubeにしてみましたが、案の定メモリーを消費する速度が大幅 増加してしまいました。小数点以下1桁もあれば十分なのでintに10倍値を持つ ようにしてみようかなぁと思っています。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/171
172: 310 [sage] 2017/12/24(日) 00:22:00 ID:XlhSPCGK intに変更。桁溢れが無ければ、これで大丈夫だと思います。 ついでに速度アップしている分だけ、自己対局の探索時間を短くしました。 評価関数を簡易版・詳細版2種類使っていましたが、詳細版も十分に学習 できたようなので、詳細版一本に絞りました。というか、そろそろ追い抜いた と思えるようになってきました。とはいえ自己対局の評価値を見ていると 30手目以後はそこそこまともな感じですが、序盤はまだデタラメかなぁ。 完全読み切りですが、30手より前に遡る事がなかなかできません。評価関数 の精度のためか、残り28手あたりから急激に読み切り時間がかかるようになり ます。評価関数の精度が悪いのでオーダリングが正しくできていないからでは 無いかと想像しています。強化学習で補えるかと思っていますが、まだまだの ようです。 現在、記譜学習は完全読み切りができている盤面しか使用していませんが、 せめてMCTS探索が始まって以後の盤面も学習に使用してみようか悩み中。 これ以上の精度を求めると、やはりDLに行かざるを得ないですね。 今の探索でもツリーがメモリー内に収まるギリギリに係数を設定しているので 探索延長が起きるとあっという間にスワップ開始になってしまいます。 というわけで大きなメモリーが欲しい今日この頃です。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/172
180: 310 [sage] 2017/12/28(木) 00:14:18 ID:p44JRClR やっぱりintでオーバーフローしてた(汗。仕方無いのでint64で。doubleでも メモリーサイズは一緒だけど、intの方がオーバーフローがわかりやすい。 あと、効果あるかわからないけど、置換表再利用回りをちょっと機能追加。 途中でゲーム終了になった時のスコアカウントですが、FFO計算をチェックに 使っている関係で空白マスを勝者総取りにしています。しかし、学習の時には 空白マスを含めない方が回帰の計算的には良いのではないかなと思い始め ています。MCTS的には終局判定を入れてあり正しく終局時スコアを返すので、 あくまで学習時だけの話です。 ただ、記譜を経由していればスコア再計算で良いのですが、置換表に溜まって いる盤面情報では、アメリカルールのスコアを割り出しようが無いという…。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/180
186: 310 [sage] 2018/01/05(金) 08:48:12 ID:DiPIPsFr 年末年始で学習進めてました。 学習が進んだ結果、33〜35手目あたりは正確になり、評価値の精度が上がった 事からオーダリングが機能するようになり、遡りチェックの時間は少しづつ減ってきて いる感じですが、30〜32手目以前はまだまだばらつきがある感じです。 また、以前から気になっていたのですが、MCTSによる記譜作成では35手目以後で 急に頻繁に手を間違える症状が出ています。記譜を膨らますにはちょうど良いので 放置していましたが、いよいよバグ探しを開始。やっぱり、並列処理の排他が不十分 で、末端ノードまでたどり着いて同じノードに探索が集中した時に、スコアの更新が ぶつかっておかしな値になる事で、別のノードを探索。また探索が集中し、スコアが 狂い別のノードを探索という感じになっていた模様です。 修正したら大幅スピードダウンしてしまいましたが、精度は上がりました。 速度を持ちなおせるか色々調べましたが、ちょっと厳しい感じです。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/186
187: 310 [sage] 2018/01/08(月) 02:22:41 ID:hx3YjBuD 記譜作成ですが、スコア差が大きなものが少ないため、ランダム着手の所に手を 加えてみましたが、今度は極端になりすぎて、パーフェクト勝敗な記譜が増えて しまいました。どうしよう。 スピードダウンの影響は結構大きく、探索の終盤で、同じツリーに対する探索が集中 するためか、さらに大きく速度低下し、今度はそちらが原因で終盤間違えるように なった感じです。あちらを立てればこちらが立たずです。 当初は、こういう問題はなかったはずなので、過去のソースを見直してみるつもり。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/187
189: 310 [sage] 2018/01/08(月) 21:48:13 ID:hx3YjBuD ありゃ。すでにあるんだ。 たぶんディープラーニングしてるんだろうなぁ。 そりゃそうと、CPUのバグの影響どうなんでしょね。 あまりに時間がかかるので、ちょっと辛い。 記譜作成やめて、ひたすら強化学習にしてみようかなぁ。 後は細かい精度なので、その方が早い気がしてきた。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/189
190: 310 [sage] 2018/01/08(月) 22:10:59 ID:hx3YjBuD わかりにくい文章でした。 「あまりに時間がかかるので、ちょっと辛い。」 は、現状の学習方法だとあまりに時間がかかるので、やはり新PC欲しいんだけど、 CPUバグの話が出たので、ちょっと様子見すべきかどうかって事です。 ただ、MCTSで排他待ち合わせによる速度低下が出ているのと、読み切り探索では 並列探索の効果が頭打ちになりやすいので、本当にCPUに投資した効果があるの かが不安になってきている面もあります。 むむむ。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/190
195: 310 [sage] 2018/01/11(木) 22:33:43 ID:TAFrfVFR しばらく学習しっぱなしというか、デバッグしながら中途半端に遡り状態で放置した 記譜をガッツリ遡りチェック中なので暇です。で、よからぬ蟲が疼きだして、そろそろ ボードを作ろうかと思い始めました。ソース消失前は、min-Max版時代のボードが あったのですが、また作り直しです。 オセロにも碁盤ソフトみたいなのがあれば良いのですが、無いようなので自作を検討。 囲碁のGTPみたいなプロトコルを作って、思考エンジンとGUIを分離できたら良いなぁと。 というわけで、匿名パイプを使ったプロセス間通信について勉強してました。 サンプルコードが10年前のC言語しかなくて解読に苦労しましたがエコーサンプル を修正しながらテスト。coutとcerrを別パイプに分離して、スレッド管理はPPLにお任せ にするところまでやって、ようやく納得。 ボードGUI作って、プロトコル決めて、AIエンジン部を対応させてと、まだまだやる事が ありますが、最終的には自動対局までできたら良いなあと。リソースの限界はあります が、パラメータで強弱が出そうなので、客観的に評価したい。 というか、GUIの作り方から学習し直しだ… GUI触りたくないからボードソフト探していたのに、無いから自分で作るという罠。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/195
196: 310 [sage] 2018/01/11(木) 22:48:49 ID:TAFrfVFR >>191 色々見直して、若干速度は回復しましたが、最初にRollout外した時のびっくりする ほどの速度は出なくなっちゃいました。ただ、時々瞬間的に速い時があるので、 単純ではないかもしれません。 30手過ぎるとどんどん選択しが狭まっていきますので、ツリーサイズは小さくなって いきます。ここで、一部の手に探索が集中して、100万探索単位で追加探索したとき にようやく他の枝を調べ始めるようで、それでもツリーサイズはそれほど大きくならない ので、メモリーはそれほどボトルネックになっていない感じです。 UCB1のCをいじったり、ポリシーの探索比率をいじったりして様子をみていますが、 あまりフラットに探索すると、正解にたどり着けないまま終盤を迎えてしまうし、 かといってスティープに探索すると、間違いを訂正するまでの追加探索が大量に 必要になるしで、調整が難しいです。そもそも評価関数の精度が十分じゃないと 言う事なんだと思います。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/196
199: 310 [sage] 2018/01/14(日) 01:33:25 ID:Wql34YtP コネクト4のGitHUBってどこにありますか? ちょっと見てみたいかも。 GUI作ろうと思って調べたら、VS2017からなんかだいぶ変わっているみたいです。 MFCは非推奨との事で、ユニバーサルWindowsとかってやつと、あとはCLRですか。 両方試してみようとしたのですが、ユニバーサルWindowsはWindows10じゃないと ダメっぽい。CLRはなんかエラーで動かない…。他にもC#だと楽だとか色々ある みたい。MFCは使えるのですが、もう忘れたし、面倒くさかった記憶しかない(汗 C#で作るって手もあるみたい。 とりあえずC#を勉強してみようかなぁというところです。 脱線しすぎだなぁ。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/199
201: 名前は開発中のものです。 [] 2018/01/15(月) 19:10:16 ID:SOjHonZe >>310 オセロ用の確立された GUI はありませんが、 nboard http://www.orbanova.com/nboard/ xboard / winboard (alien edition) http://hgm.nubati.net/alien.html Othello Engine Protocol (cassio) http://cassio.free.fr/engine-protocol.htm Edax はいずれもサポートしているので、プロトコルは ソースでも見られます。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/201
203: 310 [sage] 2018/01/16(火) 01:56:04 ID:8d/ib1bw >>200 どもです。ダウンロードしてみました。 酔っぱらって帰ってきたところなので、明日以後見てみます。 >>201 ありがとうございます。 cassioはmin-Max前提みたいですね。 nboardとxboardは明日以後見てみます。 とはいえ、もうすでに作り始めてしまいました(汗 c#はVBみたいな感じですね。10年くらいVBも触っていないので、VB自体も 昔とはだいぶ違うんだと思いますが。 まずは匿名パイプでのやり取りまで確認できました。 色々なソースのつぎはぎでわけわからんけど、何とかC++とAPIで作ったサーバ 側と同じ動作するものが動いています。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/203
206: 310 [sage] 2018/01/20(土) 13:01:59 ID:Zq3gts8j >>205 ありがとうございます。 さっそくダウンロードしました。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/206
211: 310 [sage] 2018/01/27(土) 00:56:40 ID:0QPAoXtC 自分もGUIでモチベ保てず、がっつりさぼり中。 技術的に難しそうな事は気合入るんだけど、どっちが黒番とかのラジオボタン をどうしようかとか考え出すと、思考が止まってしまう(汗 一つの項目で諦めがつくまでに3日づつかかっていますorz http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/211
213: 310 [sage] 2018/01/28(日) 17:18:05 ID:0oeW9Kee GUIのパスの処理を真剣にチェックしだしたら、特定のケースで動作が おかしいので、丸々一晩デバッグしていました。ケースは特定できてた のですが、ぱっと見まったく原因がわからず。 C#はオブジェクトを代入すると参照になるのでした。やられた。 やっぱCというのは名前だけですね。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/213
219: 310 [sage] 2018/01/31(水) 00:01:03 ID:EjEC4Ae7 すまん。わからんけど、collecdt2というフォルダ(ファイルかも)が無いと言ってる? こちらは、どうしても画面が崩れてしまうので、最初から作り直し。 原因は、トップのFormでauto resizeをtrueにしていた事でした。 ゲームの進行を上手に管理する方法が無いか考えていると、つい寝てしまうorz http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/219
223: 310 [sage] 2018/02/04(日) 20:16:17 ID:Wmf+lsae 他人のコードは読みづらいですよね。 1年前に書いた自分のコードもですがorz Theano動作おめでとうございます。良かったです。 こちらは…GUI作るのに嫌気がさして、学習部をいじっていましたが、 そろそろ〜30手の評価関数もそれほど酷いものではなさそうな気がしてきて、 中盤探索9手読み(なんの工夫も無し)で記譜作れる事に思い至りまして。 つまり、MCTSより短時間で記譜作成できると…。 この学習で、もし中盤探索の読みがそこそこな精度になってしまったら、 そもそもMCTSにする意味ないじゃんという現実からいかに目を背け続けるか という戦いが始まりました(涙 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/223
226: 310 [sage] 2018/02/05(月) 23:37:11 ID:tGe3CIWd 相変わらず、GUIから逃げています。 アルファ碁でいうところのポリシーネットの学習を放棄して、代わりに評価値から P(UCT探索に対する絞り込み項)を生成していましたが、これをQ(UCT探索の 予想スコア:これまでの探索の加重平均)から、1プレイアウト毎に再計算するよう にしてみました。 多少探索速度は落ちますが、良い感じかなぁ。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/226
228: 310 [sage] 2018/02/09(金) 23:42:10 ID:XzN5+u9b 新言語習得はストレスですよね。 C#ですら混乱して、C++に帰りたくなってます(汗 というか、メモリー管理できないC#にいらついて、記譜作成回りをいじって 慰みにしています。中盤探索に置換表を足して、反復深化っぽくしてみま したが、あんまり早くならなくてがっかり。 Python本はまだ買ってません。ウェブ上の入門を眺めたくらいです。 Pythonは構造やら変数の型の考えやら、落とし穴になりそうなところが 色々とありますね。計算式だけ見ていればわかったような気になりますが、 どういう順番で処理が進むのか、慣れないとわからん感じ。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/228
235: 310 [sage] 2018/02/13(火) 13:07:22 ID:SwoVylIU アルファ碁の論文に書いてあったかな。次の1手的には意味なさそうだけど、 有った方が強くなるので外せなかったみたいな事が書いてあったような。 今現在の思いつきですが、ツリーサーチの末端近くでは、手の流れに応じて 点数が変わる事で、そのツリーのルート側の評価(加重平均)に影響が出てくる 可能性はある。 囲碁の場合、同一盤面が出る可能性が非常に高いのだけど、そこに至る経路で 隙があると、相手にその隙を突かれて、分岐が生じる事で、その点数は無意味に なる。けど、それは途中の分岐をしっかり読まないと判明しない。経路情報によって 評価値(評価関数直)を下げてしまえば、プレイアウトの振り分けが減って、別の もっと良い手に集中させることができる。こういう事かなぁ。 ま、本当に今思いついたばかりですが。 GUIに気が進まないまま、ぼーっと学習を見ていると、何故か(効果は微妙だけど) 速度アップの方法を思いついてしまうもので…。地味に色々改良しています。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/235
237: 310 [sage] 2018/02/14(水) 20:49:32 ID:I/pUqAGs 単にGUIが嫌いなんですorz 凝りたい気持ちと、画面遷移の罠から、心がデッドロックを起こして、 しまいに面倒くさくなってしまうという。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/237
241: 310 [sage] 2018/02/17(土) 21:53:57 ID:vz2S+0Ke ドタバタしながら音だけ聞いていたけど、なんか普通に互角から徐々に優勢を 築いて、相手の奇手にも動ぜずにさばいて、勝利って感じで、強さが際立って いましたね。 これで勝っても漫画なら編集長にバカにされるレベルと言われていましたが、 本当に笑うしかないですね。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/241
248: 310 [sage] 2018/02/19(月) 23:48:36 ID:KY7Wcd5F PythonからC++関数を呼べるみたいですね。 C++からPythonも呼べるみたいです。 前にPythonに手を出そうかと思った時にググったら出てきました。 前者の方が解説が多かったと思います。 自分はBitboardを使いまくりなので、Pythonに手を出しあぐねていました。 また、評価関数の学習部と、評価値計算をうまく分離できれば、前者を Python、後者をC++で書けないかなぁと思っていますが、im2col関数の うまい実装を考えるのが面倒で、放置になっています。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/248
249: 310 [sage] 2018/02/19(月) 23:56:04 ID:KY7Wcd5F ここ数日強化学習の結果がよさげになってきたので、結果の良かった学習方法に 集中させたら、また変な学習になってしまったようで、迷走中です。 学習の具合が良いと、色々な探索も速度アップするんだけど、具合が悪いと全部 悪循環になってしまうという。 仕方無いので、中盤探索の反復深化を作り、その結果を置換表に溜めてオーダ リングを行うようにしてみましたが、効果があったのかよくわからない罠。 こちらも、学習の具合が良くなったら、急激に効果が表れるのではないかと期待 しているんだけど。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/249
253: 310 [sage] 2018/02/22(木) 01:36:26 ID:pKMuaeJh 評価関数がどんどん悪化していく罠。 頭に来たので、評価関数をステージ分割。 ステージ分割すると学習部分の全面書き直しとなる。 どうせニューラルネットは使わないと決めたので、線形回帰にスケールダウン。 またしてもゴチャゴチャしてきた部分を全面書き直しパターンへ。 もうGUIはすっかり忘れていますorz http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/253
264: 310 [sage] 2018/02/28(水) 22:12:43 ID:4D1Jf52Q 評価関数変更ついでにまるっと作り直してます。 自己対戦など、汚いコードを綺麗に書き直し。 かけた工数的には自己対戦の方が大変だったかも。 評価関数を1手毎のステージ分割で60ステージにして、学習し直しです。 これで序盤を学習させると終盤が狂う問題は解消されると信じていますが、 学習に60倍の時間がかかる事が予想されるという状態で、記譜を幾ら作って も追い付かない感じなので、強化学習主体にするつもりです。 というか、まだ、UCTの所は作りこんでいない。 まあ、ほとんどコピペですが。 で、ここまで来たところで、もういっちょ改造したくなってきた…。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/264
281: 310 [sage] 2018/03/08(木) 00:53:26 ID:KJS05rsc 新評価関数版ようやく一通りできた。 強化学習にすごーく時間がかかりそう(汗 というわけでNew PC見繕ってます。 ノートPCでi7-8700Kの6コア12スレッドにメモリー32メガで GTX1080搭載のノートPCがある。 むむむ。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/281
287: 310 [sage] 2018/03/08(木) 23:33:49 ID:KJS05rsc どもです。 お高いですが、デスクトップのフルスペックの1/3以下で済むようです。 回しっぱなしの奴がレアケースで異常終了すると萎えますね。 自分の奴は、たぶん怪しいところはほぼ蓋をしているので、今は安心しています。 とはいえ、評価値の保存に数秒かかるようになってしまったので、保存中にうっかり 終了してウェイトファイルを破壊しないように、いくつか策を講じました。最近はOSの アップデートで勝手に再起動されちゃうので。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/287
289: 310 [sage] 2018/03/10(土) 19:53:38 ID:jEGGoWyJ あ、価格と性能です(^^; 強化学習に凡ミス発見。 強化学習が良いのは、学習し続ければ何とか復旧できると思えるところorz http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/289
291: 310 [sage] 2018/03/10(土) 23:47:40 ID:jEGGoWyJ こいつです。 https://www.pc-koubou.jp/products/detail.php?product_id=617093 i9-7080XEのデスクトップだとメモリー頑張ると100万ですからね… http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/291
294: 310 [sage] 2018/03/14(水) 21:17:53 ID:Hsr0gVbu うぬぬ。強化学習でどこかおかしい。 強化学習単純化しすぎちゃったかなぁ。 暫定的にひたすら記譜作成&記譜学習に戻しました。 遡り30手が鬼門。記譜学習で、ここをクリアする事を当面の目標にします。 とはいえ、残り29手完全読み切りの記譜がそれなりにあるのは、以前では 考えられない状況ではありますが。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/294
295: 310 [sage] 2018/03/15(木) 22:46:56 ID:CxmBs8oA 強化学習がおかしいというより、記譜のパターンが圧倒的に足りていなかった のかもと思い始めました。それによって、着手して分岐しても±0となっている みたいな。 とりあえず、記譜の増殖手段を模索中。 今は、ヌルウィンドウサーチを使用して、遡り探索を行っている関係で、間違った 着手(石損となる手)を捨ててますが、ある程度までその手も読み切って、記譜に 加えても良いのかなぁと思っています。 とりあえず、βカット(もっと良い手があった)時の評価関数は明らかに読み間違い をしているので、そこ限定で記譜に加えていますが、ある程度以上の手数は全て 付け足しても良いのかなぁと。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/295
296: 310 [sage] 2018/03/17(土) 02:14:23 ID:Foa7nGV6 なんとなく想像しただけですが、何が悪かったのかわかり始めました。 今の学習は「良い手」しか学習していないという事です。 序盤はある程度ランダムな着手を入れて、結果がばらつくようにしていますが、 途中から読みを入れて、良い手だけで着手し、その結果を遡りで訂正しています。 遡りが有効なのは30手くらいまでで、序盤のランダムは20手程度までに抑えて あります。とすると、遡れる範囲では、悪手を打ったらどういう事になるのかという 学習が抜けている。間違えた着手もちょっとだけ悪いだけでです。結果、最善手の 評価値はそこそこ正確なのですが、極端な悪手も、評価値としてはちょっとだけ 悪い数字でも問題が起きないという事になります。 これはこれで順序付けさえ合っていればそれで良いのですが、ちょっと学習が 進んで、微妙に係数が変わった時に、計算上0.1程度しか悪くない相当な悪手 をうっかり選択しやすくなってしまうという事で、これがオーダリングで悪さをして、 探索時間を長引かせてしまう可能性があります。 恐らく評価関数のステージ分割で、表現力がかなりアップした事から、こういう 学習漏れみたいな事が起きてくるのかなぁと。ほんと、評価関数はスカスカです。 というわけで、昨夜書いたように、ある程度深さを捨てて分岐をすべて記譜に残す ようにしてみようかなぁと思っています。しばらく記譜作成しながら、この事を踏まえ た強化学習をちょっと考えてみたいと思っています。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/296
301: 310 [sage] 2018/03/25(日) 02:23:39 ID:Yig4cMbl 分岐をすべて記譜にリストアップするようにしてから、爆発的に記譜が増えてます。 2000程度だったのが、15000超えました。 が、まだまだスカスカみたいです。 ここまでするんなら、真面目に自己対戦して遡りせずに、ランダム着手に対して 分岐をリストアップさせても一緒というか、早い気がしてきています(汗 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/301
302: 310 [sage] 2018/03/31(土) 01:38:59 ID:h3UgGfs1 ランダム着手も追加して記譜増殖中。ただいま32000超え。 もっとも、残り数手とかの記譜もあるけど(汗 ステージ分割しているので、記譜がなかなか生成されない25〜30手近辺で 非常に少ない教師データで何度も学習する事になり、そのあたりが極端な 過学習になってしまった。 解消方法をいくつか検討中です。 1)時間かかっても良いので、25〜30手の記譜ができるまで頑張る 2)前後の盤面を混ぜて、教師データを増やしてみる 3)ランダム強化学習してみる。 2)3)をやると、おそらく、平均化されて評価値がフラットになるが大小関係は 治ってくると思う。 というわけで、今夜は2)3)を試してみる予定。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/302
303: 310 [sage] 2018/03/31(土) 01:43:35 ID:h3UgGfs1 あと、時々スコア指定(ヌルウィンドウサーチ)の記譜作成処理で エラー(スコア間違い)が出る時がある。 運が悪い事にハンドリングミスその他で、記譜を残せていないので、 現象の特定ができていない。 頻度としては数日に1回くらい。 たぶん、全滅と直前のパスがらみだと思うんだけど。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/303
306: 310 [sage] 2018/04/01(日) 01:07:10 ID:OBeH+1OH おお。どんどん進んでますね。 こちらは、昨夜のバグの現象は特定しました。 スコアが62や−62で、mtd(f)の探索開始が64や−64の時に、 置換表に残った64や−64が悪さして、64や−64と誤答する模様。 とはいえ、どこを直すべきかはわかりません。探索開始が64や−64 の時に、62や−62にしてやる事で、姑息的に回避はできるので後回し。 あと、記譜作成に色々機能を加えていたら、どこかがおかしそうだという 不安な状態になってしまいまして。このまま記譜学習を進めて良いか自信 が無いので、今までのデータで安全な部分をテスト用に回して、新たに 記譜を作成開始。34手目までは全探索しながら普通に遡れる感じです。 33手目から先は探索時間がしんどいので、ひとしきり落ち着いてから、もう 一度、遡りチェックのプログラムをきちっと見直して、追加していこうかな と思っています。この間に、強化学習混ぜて、過学習部分を解消して いこうと思います。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/306
308: 310 [sage] 2018/04/01(日) 13:49:33 ID:DAl+8Sdv バグ問題は、結局姑息的手段では回避できず。 全滅がらみでほかのケースでも誤答するケースが発生しました。 元々FFO#59用にmin-Max探索に入れていた、全滅時の処理くらいしか 原因となりそうなものが思い当たらなかったので、とりあえずコメントアウト して様子見です。全滅時の探索が速度低下しますが、仕方がありません。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/308
309: 310 [sage] 2018/04/02(月) 20:15:06 ID:9LYme7cN 結局バグ問題は…迷宮入り臭いです。 記譜作成で負荷テスト並みに探索を繰り返すと、全滅絡まなくても間違うケースが 出てきました。再現性が無いのが辛いところ。 その昔悩んでいた時も、やっぱり置換表がらみの問題で迷宮入りでしたが、 今回も、ケチって置換表を極力クリアせずに使用していた事から、何らかの 矛盾が起きているようです。それを言っちゃうと、置換表付mtd(f)でf値を変え ながら探索することも、またその時に作成された置換表を流用して記譜作成 兼ねた読み切り処理を速度アップすることも、怪しいという事になるわけで。 間違えてしまった事が判明した時点で、その探索は捨てるくらいしか対策が 無いという事になります。 ネットで調べたら、将棋AI界隈でも置換表の問題点を書いている人がいまして。 少なくとも深さがあっていない置換表データは使うべきではない模様。 今の調子だと一晩動かすと結構な頻度で朝見たら止まっているとい状態なので せめて発生率を下げるべく、mtd(f)に入る前に置換表をクリアする事にしました。 なぜしなかったかというと、記譜データからスコアが確定している盤面を置換表に 入れて、それを見ながら既に読み切りしている盤面は飛ばす処理をしていたから です。置換表をクリアして盤面再構築に時間がかかるためです。別途盤面キャッシュ を持って、そちらは追記、置換表は毎回クリアという形に変更しました。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/309
313: 310 [sage] 2018/04/06(金) 22:00:28 ID:952uhqxW 誤答問題は、置換表クリアで解消しました。 違う局面の探索で使用した置換表データは使いまわしてはいけないという事で。 なんか、結果的に、2年くらい前にも同じ事で騒いでいたような。 色々整ってきたので、あとはひたすら記譜作成しながら学習を回すだけになって しまって、暇になってます。別PC買ってそっちで学習させながら、別の事をはじめ ようかなぁと思い始めています。 http://mevius.5ch.net/test/read.cgi/gamedev/1508056498/313
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.033s