【オセロ,将棋】ボードゲーム Part3【囲碁,War】 (636レス)
1-

186: 535 2020/03/17(火)22:44 ID:7xvLqO5q(3/3) AAS
DNN使わないと100万局面展開するのに4秒www
うーむ
187: 310 2020/03/18(水)00:47 ID:Wk4mfxEa(1/3) AAS
結局、実現確率探索に取り掛かってしまいました(汗

新規ソリューション作ってコピペ始めたところで、いずれ評価関数を整数化したかった
事を思い出して、あちこち修正開始となりました。

一応、普通のDepthバージョンと同じ深さになるように調整して、速度比較してみるつもり。
188: 535 2020/03/18(水)20:17 ID:4pnoWutQ(1) AAS
DNNの評価値上位7手を全展開してポスグレに詰めるのを実行に移すべきかどうか迷ってる。
一応そのつもりで8TBのHDDもポスグレも用意したんだけど、あんまりいいアイディアに思えなくなってきたというか。
189: 310 2020/03/18(水)23:45 ID:Wk4mfxEa(2/3) AAS
実現確率探索の中盤探索、プロトタイプのαβ版を作って癖を見ています。

実現確率は、評価値のSoftmaxで各要素を足して1.0になるように正規化するより、
最大値が1.0になるようにした方が使いやすいです。というのも、最大値をひたすら
追った枝の終了条件が綺麗に決まって最大深さを指定できるようになるからです。
1.0そのままだと終わらないので、例えば0.5にしておくと、深さnにしたい時は1÷2^n
が閾値になります。0.1の時は1÷10^nです。まあ、なんでもよいという事です。

後は各要素の差のつき具合を決める定数を調整すると、評価値が悪い手について、
どこまで探索の深さを確保するのかが決まります。ここが職人的作業なのがネック。
絞ると爆速。∞だと、ただの全幅探索になります。

速度は結構出てるのですが、調整ミスると全くダメみたいな様子が見え隠れしていて、
本当に常に使えるのか、まだ心配です。おそらくProbCutでも同じような問題がおきて
いるんじゃないかと思いますが。

次は置換表ですが、合流が発生した時の実現確率がルートによって違うので、その
時の置換表の評価値を使って良いのか悩みどころです。また、上述のように最大探索
深さを調整できるので、反復進化的に閾値を下げて行く事が可能性です。そうすると、
反復深化的に使いたくなるのが人情ですが、オーダリングにどのように反映するのが
良いのか。これも悩みどころだったりします。

要するにあと1週間くらいは遊べそうです(笑)
190: 310 2020/03/18(水)23:56 ID:Wk4mfxEa(3/3) AAS
あと、裏で棋譜作成進行中ですが、評価関数の学習時に、既存データに対する
エラーが増加を始めて、過学習の傾向を示しているのですが、例えばFFOの盤面
のように教師データ中に現れない盤面に対するエラーは減少しています。

状況的には、極端な石差がついている盤面の評価値が、石差ほどの評価値になって
おらず、じわじわと汎化が進んでいる一方、±0近傍の盤面は既に多いため、過学習
気味になっているのかなぁと推測しています。

とはいえ、非常に気持ち悪いです。

というわけで、ちょっと工夫をして石差が大きい棋譜を優先的に遡りチェック対象にしたり、
新規の自己対局するときに石差が大きくなる(悪い)進行も作るようにする事で、ほんの
少しですが、石差が大きい棋譜が増えるようにしてみました。まあ気休めです。
191: 310 2020/03/19(木)23:17 ID:opMYHtHc(1) AAS
実現確率探索の中盤探索ができました。置換表と並列処理のところまでです。
反復深化→読み切り処理までです。置換表というか、オーダリング処理を結構修正。

反復深化まではそこそこ機能していますが、置換表経由で読み切り処理の高速化が
性能が出ません。置換表経由で、中盤探索の結果を用いて終盤探索のオーダリング
をするところで、置換表データの不足があったり、オーダリングの間違いが生じて、
無駄な探索をしているように思います。

とすると、これは読み切り処理を前提とすると結構致命的な問題な気がします。
もちろん、まだバグや仕様ミスの可能性もありますが。というわけで、Solver関係には
使えない可能性が出てきました。

また、評価関数で実現確率を導いているので、浅い段階での間違いに対して、探索
対象をロックしてしまいやすく、深く探索していっても間違いがなかなか改まらない
傾向が見受けられます。

まあ、仮にダメでも、新バージョンにする過程で、これまでペンディングしていた細かい
修正ができますし、既存タイプの中盤探索も作ってあるので、このまま進めてみます。
192: 535 2020/03/20(金)23:24 ID:7lhYYUd2(1) AAS
DNNの上位7手を幅優先に展開していき200万局面を上限にストップ
展開したものをminmaxで評価値を再計算。
その結果をDNNに学習させようとしています。

ポスグレの出番はいまのところないw
193: 310 2020/03/21(土)02:31 ID:XYOBIhf/(1) AAS
実現確率探索で、探索幅広げる方向の反復を試してみましたが効果はあまりなし。
単体で使用するとかなり早いのですが、置換表使った探索との相性がいまいち。

とりあえずSolverまで作って速度計測していますが、既存の反復深化より遅く、反復
深化無しよりは若干早いという感じで、単体の速度を利用して幅を思いっきり広げて
みましたが、こちらは逆に遅くなるという体たらく。

置換表周りでどこか間違いがあるのかなぁという気もしていますが、今のところ不明。
Solver周りでの活用は一旦置いといて、自己対局で使ってみる事にします。
194: 535 2020/03/21(土)17:30 ID:cG9Ai74P(1/3) AAS
メモリ欲しい…
256GBくらい
195: 535 2020/03/21(土)18:19 ID:cG9Ai74P(2/3) AAS
えー駄目だ負けるorz orz orz
なんで駄目なの???
196: 535 2020/03/21(土)18:23 ID:cG9Ai74P(3/3) AAS
今回のはかなり期待してたのにorz orz orz
197: 535 2020/03/22(日)12:02 ID:upkGajEt(1) AAS
棋譜見ると素のモンテカルロの動きが思っているよりずっといい。
なんでだろう?
198: 310 2020/03/28(土)00:29 ID:vtZj/mQ8(1/2) AAS
実現確率探索というか、ソース全体見直し版が、だいたいできました。
まだデバッグ全部済んだわけではありませんが、後はログメッセージなんかの
細かいところくらいの修正かなと。

実現確率探索自体は、棋譜作成にフックを入れる感じでの使用にとどめていますが、
しばらく動かして、結果がよさそうなら切り替えようかなと思います。というか、対戦版
作るときには、中盤探索は実現確率探索で行くと思います。

で、実現確率探索と呼んでいますが、実際のところは違います。本来の実現確率は
「プロ棋譜など別途棋譜集から、よく出てくる手を回帰分析で確率化したもの」で、
よく出る手については深く探索しましょうという内容です。自分の奴は、確率を1手読み
の評価値から生成しています。1手読みにした理由は、差分計算で速く計算できる
からです。というわけで、本来は別の名前にした方が良いのですが、ネーミングセンス
が無いので放置です(笑)

他にも、本来と違う形で実装してるけど、放置してある名前が結構ありますorz
199: 535 2020/03/28(土)21:52 ID:XqE/6uS7(1) AAS
囲碁AIでKatagoという凄く強いAIがあるのですがライフゲーム囲碁に流用できないかと思い始めた。
200: 310 2020/03/28(土)22:16 ID:vtZj/mQ8(2/2) AAS
見直し版のチェックを本番やりながら進めてます。

今のところ、学習の速度が30%程度ダウンしたものの、終盤探索の速度が
30〜50%高速化している感じ。どちらも原因不明。
201
(1): 310 2020/03/31(火)00:30 ID:1mhY2vrp(1) AAS
見直し版で、遡りチェックで無駄な処理を見つけて直しました。
更に速度アップして、トータル50%強の速度アップとなりました。
まだ探索自体の速度は上がってませんが、まだ無駄があったとは。
202: 310 2020/04/01(水)23:58 ID:SRR0rDGm(1) AAS
急に探索自体の速度アップを思い立ちまして、いくつか実行。

ヒープ領域に作っていたオーダリング処理をスタック領域に来るように修正。
置換表のHash関数の修正で、置換表のキーエントリーの偏りを減らす。

これらにより更に高速化して、トータルで前バージョンの倍速近くなった感じです。
残り26手探索処理が1時間に90件弱→160件くらい。

あと、もうちょっとやってみたい事があります。
203: 2020/04/02(木)03:15 ID:iWlfdZP3(1) AAS
katago聞いたことない
alpha zeroは使わないの?
204: 535 2020/04/02(木)19:14 ID:9cAiWeM1(1/3) AAS
deep mindのオリジナルのalpha zeroは公開されてないはず。
github行くとクローンがいくつかあるけど。

katagoはKGSってネット碁会所で最高段位9dで打ってる。
205: 535 2020/04/02(木)20:00 ID:9cAiWeM1(2/3) AAS
でも当たり前だけどkatagoも相当高度なプログラムなので流用するのはかなり難しそう。
206: 535 2020/04/02(木)21:24 ID:9cAiWeM1(3/3) AAS
あかん、やっぱkatago相当難しい。
githubから簡単そうな奴探してお茶を濁すか…
207: 310 2020/04/06(月)22:33 ID:eOx9NvDZ(1) AAS
更に少し高速化しました。

オーダリングのvectorをスタック領域の配列に変更する部分ですが、並列探索部分
にも適用しました。配列も&でアドレス渡せばSTLのalgorism周りが使えるの知りました(^^;
スレッド間でのlockも他の処理と一緒にできるので、オーバーヘッドはありません。
あと、地味にセーブの時間がかかっていたので、回数減らしました。

残り26手1000件で10時間半が、5時間40〜50分くらいまで来ました。平均20秒強。
残り25手の読み切りができていてBookで時短しているので、まったくの新規棋譜の
読み切りはもっと遅くなります。

sort部分も何とかならないかと思いましたが、もともと32件以下(オセロはたまたま
ですが次の手の上限は32)は挿入ソートになっているようです。コピペで挿入ソート
を組んで、速度比較してみましたが、有意差は出ませんでした。

件数少ない時に早くかつ安定ソートな方法が他にないか調べてみようかと思います。
208
(3): 535 2020/04/10(金)20:40 ID:KcO1uf/C(1) AAS
今これ見てます。
外部リンク:github.com

libraryをビルド通るところまで行ったんだけどpythonでそのライブラリ読み込むと以下のようなエラーになる。

K:\alpha-zero-gomoku-master\test>python library_test.py
Traceback (most recent call last):
File "library_test.py", line 6, in <module>
from library import Gomoku, MCTS
File "../build\library.py", line 15, in <module>
import _library
ImportError: DLL load failed: 指定されたモジュールが見つかりません。
209: 2020/04/12(日)04:59 ID:DFViLwjz(1) AAS
その環境の内容見てないから詳しくはわからないけど…原因は大体これ

1. 読み込もうとしているdllが適切なパスに存在してるか
2. 読み込むdllは64bitか32bitか(ビルド構成と一致していないとダメ
210: 535 2020/04/12(日)10:52 ID:lk7abFDy(1) AAS
32bitか64bitかは64bitしか選べないみたいです。
適切なパスに存在しているかというのはどうやってしらべればよいでしょうか。
library.pyと_library.pydをカレントディレクトリに置いたりもしてみたのですが駄目でした。

ちなみにこれはswigというのを使っていてC++をpythonから読めるようにしているようです。
library.pyと_library.pydが生成されてlibrary.pyから_library.pydをインポートするときにこけています。
211: 2020/04/13(月)02:33 ID:q8ASrlIp(1) AAS
github見てみましたが、中国人が下で同じような質問してますね
buildディレクトリにコンパイルされたファイルを配置しないと駄目なようです
Pythonとかライブラリのバージョンも書いてあるので合わせたほうがいいかもですね

外部リンク:github.com
212: 535 2020/04/13(月)20:06 ID:E8a4txq0(1/2) AAS
ありがとうございます。
今python が3.6だったので3.7にしてみようとしたらpytorchがpipで入らず苦戦しています。
213: 535 2020/04/13(月)20:47 ID:E8a4txq0(2/2) AAS
結局python 3.8.2を入れたんですが駄目っぽいorz
やっぱ無理にでも3.7にすべきか…
214: 535 2020/04/14(火)20:06 ID:ezpleFZl(1/2) AAS
python 3.7.6を試してみましたが駄目。
pytorchももう1.1手に入らないっぽい。
手詰まりです。
215: 535 2020/04/14(火)23:01 ID:ezpleFZl(2/2) AAS
>>208 動いたらめっちゃよさそうなんだけど悔しいな〜
1-
あと 421 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.021s