[過去ログ] 【オセロ,将棋】ボードゲーム Part2【囲碁,War】 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
622: 310 2019/01/23(水)02:07 ID:QHWWUXAJ(2/2) AAS
>>618
min-Max前提だと、探索値を求める際には勝率(点数)が必須で、
次の1手評価関数はオーダリングや前方枝刈向きではないですか?
探索深さ1なら次の1手で行けますが。
初代アルファ碁も、両方組み合わせていますが、次の1手評価関数で
手の優先順位をつける事で読み深さを実現した変則mctsで、最終的には
評価値で判断していますよね。
626: 310 2019/01/24(木)01:32 ID:cGqmeFv+(1/3) AAS
囲連星は初期配置ないんでしょ?
だったら対象局面ありの方が良いと思う。
オセロは悩み中。
初手をF5固定にした時に、本当に対称局面が出てくるのかわからない。
対称局面が同じ重要性で生じないのであれば、評価値を希釈しちゃうだけ。
学習の時間も単純に倍々で増えるので、今はやっていない。
強いて言うなら、F5F6E6の次がF4とD6で斜め対称になるので、ここだけは
記譜作成時にはF4固定にして、D6の対称局面を作っている。
627: 310 2019/01/24(木)01:49 ID:cGqmeFv+(2/3) AAS
置換表自作の件、目的を見失っている(汗
一旦リセットして、最初からやり直して、当初の目的に戻ろうと思うorz
629: 310 2019/01/24(木)02:08 ID:cGqmeFv+(3/3) AAS
着手できる場所の自由度が高いゲームは回転させるべきだと思う。
オセロは着手可能場所が限られるので、現れない局面が結構ありそう。
ちなみに、オセロは8倍じゃなくて4倍。初期配置が4対称だから。
囲連星は初手天元固定なのかな?
634: 310 2019/01/26(土)17:00 ID:VyVaK4H+(1) AAS
自作置換表ですが、大体のところがまとまりました。
結局のところ、unordered_mapを作っていた形になります(汗
当初は領域の追加について、データ部分をまとめて追加する方向で改造し、
ハッシュ配列については22ビット固定で、高速化をしました。で、ハッシュ配列が
22ビット固定は芸がないと、二分木・赤黒木などを試しましたが、速度大幅低下。
要するに、unordered_mapにmapを組み合わせて、ハッシュのメリットを相殺して
しまっていたという事で。
最終的に、ハッシュ配列の追加方法をようやく思いつき、組んでみたところ、それが
そのままunordered_mapのrehashだと気が付きました(汗。その後、max_load_factor
などを追加して、unordered_mapと条件を揃えて速度比較となりました。
iteratorと削除が無い分だと思いますが、unordered_map、concurrent_unordered_map
に対して、それぞれシングル版、concurrent版とも若干高速になりました。
新たな課題は…stlも自作版も、どちらも並列に動かしたconcurrent版の方が遅いと
言う事です。もともとそういうものなのか…テスト方法が並列向けじゃないのか。
684(1): 310 2019/02/06(水)01:11 ID:uzcir1oY(1/2) AAS
久々です。
置換表は、だいぶ前にリハッシュ対応して、この辺にしとこうか状態になってます。
多分unordered_mapの仕組みはそこそこ理解できたと思います。
deleteとガベージコレクション、iteratorを除いてですが。
Edaxのソースを解析しようと、VC++で読み込んでみましたが、Edaxは裸のCで…
_s地獄とコンパイラの違いで、動かすところまで持ち込むのが相当大変な感じ。
一番の地獄は、探索部のソースを見ても何がなんだかわからない事。
せめて偶数理論のところは見つけたいんだけど。滅茶諦めモード。
というわけで、記譜作成を動かし続けるしかなくなってしまいましたorz
WZebraのソースが見たい…。
685(1): 310 2019/02/06(水)01:14 ID:uzcir1oY(2/2) AAS
>>675
メモリバスの帯域とか、L2キャッシュ溢れとか…
わかっているけど、エビデンスが取れないので、認められないorz
691: 310 2019/02/08(金)00:11 ID:Ar3tbH3V(1) AAS
偶数理論なかなか良い実装を思いつきました。
オーバーヘッドが極小なのは、オーダリングへ影響する値だけゼロにして、
ほぼ速度低下が無い事で確認済です。が…何をどうしても速度がダウンします。
というわけで、またしても偶数理論挫折。
次ネタ考え中。
ネタを一つ見つけたけど、結構全面改訂になりそう。
694: 310 2019/02/09(土)21:06 ID:bf+o2ihZ(1) AAS
次ネタ結構大変だと思ったら、意外と簡単にできた。
FFO40-49のタイムは30%強短縮した。
FFO40が悪化して、49はだいぶ短縮しているので、探索深さが深い方が
効果が出る傾向に見える。という事は、残り28か所空きをやっている棋譜
作成では、もっと改善する可能性あるかも。
思い込みって怖い。正直、何故今まで思い付かなかったのだろうというレベルorz
696: 310 2019/02/10(日)09:57 ID:WWsJbkKo(1) AAS
パラメータの調整というか、使い方変えたら、更に5%くらい改善。
残り28手空きの記譜作成は、トータル倍弱まで速度アップした模様。
とはいえl、記譜作成の方は、解く問題によってばらつきが大きすぎる
ので、もう少し様子を見ないと、どれくらい早くなったかはなんとも
言えない。早くなったのは確実。
さて、またネタが無くなった(汗
707: 310 2019/02/15(金)23:44 ID:fcveN5+T(1) AAS
>>706
情報ありがとうございます。そのソースなのですが、コマンドラインなのですね。
ビルドしたかった理由はデバッグモードを使いたかったからです。
QUADRANT_IDのあたりは追っかけたのですが、もともとの探索の構造が
読めなくて、デバッグモードに頼ろうとした次第です。
で、処理内容を予想して自分で組んでみたのですが、FFOテストでは速度が
若干ですが、落ちてしまうのです。
あと、実はVC++しか使った事ないというか、オセロ開発でC++使い始めたので、
makefileが何やってるのかわからないです(汗
というわけで、ちと調べてみます。
動くだけでも、自動対戦の相手になってもらえる可能性ありますから。
715(1): 310 2019/02/22(金)00:24 ID:e/VjvE/W(1) AAS
ようやく評価関数が安定してきたのか、遡り記譜作成の速度が上がってきた気がする。
暇なので、mctsでも組んどこうかと考え始めたら、置換表の新アイデアが。
今までは、unordered_mapにとらわれていましたが、もともと探索木は文字通り
ツリー構造なので、その形のまんま置換表にして、探索しながら木を同時並行
でたどっていけば、置換表内で「探す」必要が無い上に、着手リストがそのまま
ノードとして存在しているので、反復系の探索の時に何度もmobility関数を呼ぶ
必要が無い。
結構大掛かりな修正になりましたが、とりあえず基礎的な探索まではできるように
なりました。速度計測はこれから。
あと、shared_ptr使った事で、不要な置換表データを自動削除できるので、minMaxで
AIを組んだ時に、置換表を縮小しながら再利用できるかなと。
あ、mctsはどこに行ってしまったんだろう(汗
717: 310 2019/02/23(土)17:22 ID:XSOOC+yB(1) AAS
>>715の続き
良く考えたら、ツリー構造で自分の値を残しておくという意味で、mtd(f)や
反復深化の系統には効果あるけど、同じ局面を見つける事ができないので
そもそも置換表ではありませんねorz
その代り、並列探索でも排他制御をしなくて良い事になります。
メモリー使用量も少なくて済みます。
速度については、今のところ微妙。
棋譜作成が一段落したらPCリセットしてクリーンな状態で再計測の予定。
721: 310 2019/02/24(日)23:56 ID:GBomweD/(1) AAS
んごー。めっちゃスピードダウンorz
ダメ筋だったかも。
途中速度アップしてる気がしていたけど、単にバグっていただけだった。
置換表機能が消えて、余計な筋を読んでいるのか。
それとも、パラパラとmake_sharedしているからなのか。
どうせやる事ないので、しばし検討。
733: 310 2019/03/04(月)23:03 ID:2gMEJXd0(1) AAS
バグでドツボ中。
再現性がなさすぎて、よーわからん。
頻度の低さと、再現性の無さから、置換表の二重更新だと思うんだけど…
それっぽい箇所も見当たらない。
760(1): 310 2019/03/23(土)00:07 ID:QKAaRf+n(1) AAS
久々です。
新型版はテストのためにいちいち学習を止めるのが面倒で、放置しています。
一晩耐久テストやらないとわからないので。
で、未だずーっと棋譜作成&学習を続けています。
もともと800件強の記譜をベースに間違い訂正をしたり、確定しているところ以降
の全分岐を作成したりして学習データにしていたのですが、昔作った記譜なので
序盤で結構間違いが多く、効率よく学習できないのではないかと考えました。
で、最近は序盤の定石6〜20手からスタートして記譜を作成したりしていました。
そこそこ序盤の間違いが訂正されてきたのですが、まだところどころおかしい
ところがあって、Zebraで並べてみながら、多分間違えたであろう箇所を特定して
それ以後の記譜を作らせる事で、強制的に正しい手順に戻すなんていう、禁断の
ドーピング技を始めてしまいました。
現在は1200記譜くらいまで増えていますが、まだまだ間違いも散見されますし、
パブリックドローの変化っぽいのに、記譜が無いものもあり、まだまだ記譜が足り
ていない感じです。
あと、ドーピング作業やりながらZebraの評価値見ていると、20〜30手目あたりは
進行の種類によってはZebraの評価値もあまりあてにならないなぁと言う事に気付い
てしまいました。ここら辺の精度を上げると、もっと強くできるのではないかと思います。
自動対戦してくれる序盤DB付きのオセロプログラムがあると、ドーピング作業が更に
楽になるんだけど(汗
現在残り20手目以後の学習に使う盤面は70万件くらいになっています。それでも
残り20手以後の初見の盤面の評価値では結構な誤差があります。本当にBuroさん
の線形評価関数で良いのかというのも相変わらず悩ましいところです。
774(1): 310 2019/03/30(土)20:46 ID:IsrC9h82(1) AAS
既知のパブリックドローのリストが見つかったというか、
今年になってブログでまとめて発表してくれている人がいた。
ちょうど良いタイミングすぎる(汗
2種類あるのと、自分がZebraから拾った奴を合体して、32手目まででカット。
ソートして重複削除したら450件程度に。多分既存の記譜と多少重複してると思う。
全部やるとかなり記譜が偏る気がするけど、やっちゃうかな。
776: 310 2019/03/31(日)01:39 ID:5poc64Oc(1/2) AAS
棋譜から序盤DB作れない?
778: 310 2019/03/31(日)20:14 ID:5poc64Oc(2/2) AAS
棋譜から序盤DB作る時に、その盤面からの勝率入れて、勝率が高い手を指す
ようにするとか。まあ、ぶっちゃけ記譜単位でmctsやってるような事になるの。
780: 310 2019/04/01(月)20:17 ID:JaNWOXQ3(1/2) AAS
普通DB化すると同じ手順だと毎回同じに間違えるはず。
だとするなら、DBの棋譜をテキストに吐き出すなどして、チェックしたら?
間違いっぽい分岐見つけたら、正解着手させてその後を対戦させて記譜を
強制的に正しい分岐を学習させるの。そのあとでも間違えて、なかなか治らない
事もあるけど。
これが>>760で書いたドーピング。
781: 310 2019/04/01(月)20:22 ID:JaNWOXQ3(2/2) AAS
>>774のリスト。パブリックドローはFJT分だけだった。
2種類あって、もう一つは代表的な序盤定石から適度に着手した後で、
残り30手を読み切ったリストで、ドローとは限らなかった。
遡りチェックの時にあり得ない奴があったので、気が付いた。
試しにZebraで並べて評価値見てみたら、中盤で結構変な手順になっていたりする。
まあ記譜の足しにはなるかなぁという感じ。
785: 310 2019/04/02(火)20:42 ID:BP3gZfVl(1) AAS
そうか。オセロだとある程度定石はあるし、ZebraやEdaxで並べれば
終局スコアの予想はできて、間違いが見つけやすいけど、囲連星では
そうはいかないですね。
途中で変な手を打つのは、恐らく記譜が足りていないからではないかと
思います。オセロでもドーピングやらないで純粋に自己対局学習だけで
やった場合、1万〜10万対局くらいは必要かなと思っています。
796: 310 2019/04/10(水)23:44 ID:R42Zvvs5(1/2) AAS
どんより…
バグを見つけてしまった。
今ある記譜50万件の数%くらいに間違いがありそう。
直管的には、全データに対して読み切り処理を噛まさないと間違いの有無すら確認できない。
多分、逆順探索処理を簡素化した時にバグが入り込んだのだと思う。
暇なのでログ書き出しの処理を作ってたら見つかった。
うぐぐ。
もうしばらく様子を確認して、他にもバグが無いか見た上で…どうしよう。
一旦記譜をリセットして作り直すべか。
797: 310 2019/04/10(水)23:48 ID:R42Zvvs5(2/2) AAS
と、書いた直後に気が付いた。
ログの側のバグだった事に…
お騒がせ様でした。
811: 310 2019/04/30(火)03:48 ID:RyvRJxq2(1) AAS
どもです。
ひたすら記譜作成中に、やっぱり暇なので、記譜管理周りをリニューアルしていたら、
結局記譜ファイルの形式を大きくいじってしまい、かなり全面的なリニューアルに。
そしたら、あちこちバグが出て、結局記譜作成より新作デバッグ優先に(汗
>>809-810
序盤DBは、記譜溜めていくと途中で弱くなるけど、いずれ直ってくるものだと思う。
正しい手順があるとして、1回間違えると、間違えた側が負ける記譜ができる。
負ける事で、その手は選ばれない事が記譜に登録される。
しかし、探索の精度が低い状態で記譜作ると、2回間違える記譜ができて、本来
負けのルートで勝ってしまう。これが記譜に登録されると、この2回目の間違いが
訂正されるまでは勝率が下がる。
どのくらいで直るのかは、直接なのか評価関数経由の間接なのかなど、フィード
バックのかかり方で変わってくる。直接的なら割とすぐに直るはず。
自分のは間接なのでかなり時間がかかりそうで面倒なので、Zebraで2つ目の間違い
箇所を特定して、そこまで着手した後探索をする棋譜を作って、かなり強制的に直し
ちゃった。
序盤は大体良いのだけど、確定値で学習している箇所と、序盤DBで学習している
箇所の境目で、確定値が足りないまま過学習になっている評価値ステージがあって
そこらあたりで大抵間違える(汗
814: 310 2019/05/04(土)22:14 ID:fzBCFIZ6(1/2) AAS
新作の探索周りを、例のバグ付のやつにしたら、案の定バグ発生。
色々と入れ替えながらバグ発生箇所を特定に成功しました。
が、なぜそこでバグっているのかわかりませんorz
まともに動いたから良しとするしかない感じ。
あと2か所改良したいところがあります。
あと2日では無理だなぁ。
815: 310 2019/05/04(土)22:17 ID:fzBCFIZ6(2/2) AAS
と思ったら、またいきなりバグ発生。
原因は複数ありそうですorz
816: 310 2019/05/05(日)20:55 ID:GksqIPP4(1/2) AAS
原因判明。アホなミスでした。
やっぱり当初の置換表に変なデータが登録されているのが正解だった。
残した課題のうち1つもできた。
817: 310 2019/05/05(日)23:26 ID:GksqIPP4(2/2) AAS
最後の課題は、学習の速度アップを目論みましたが、まったくダメでしたorz
さて、何をしよう。
844: 310 2019/05/15(水)23:27 ID:2Iqikd3t(1) AAS
新バージョンで色々プログラム見直し。
探索部は全く改善していませんが、その他の部分が大幅にスピードアップ。
自動記譜作成時のオーバーヘッド(探索以外の時間)がかなり減った。
あとは学習の時間を減らしたい。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.040s