【オセロ,将棋】ボードゲーム Part2【囲碁,War】

■ このスレッドは過去ログ倉庫に格納されています
1名前は開発中のものです。
垢版 |
2017/10/15(日) 17:34:58.03ID:RaMh0le2
比較的地味なボードゲーム専用のスレが欲しくて立ててみました。

前スレ
【オセロ,将棋】ボードゲーム【囲碁,War】
http://mevius.2ch.net/test/read.cgi/gamedev/1057763418/
74535
垢版 |
2017/11/12(日) 21:02:51.28ID:UqBtKmZ3
将棋電王戦あったみたいですね。
ポナンザは優勝ならずみたいですね。
75310
垢版 |
2017/11/12(日) 22:19:15.47ID:Uu7EAeJ9
しばらく出張してました。

終盤DBといえばチェスですかね。
遡りチェックは詰みを回避できるかチェックになるのかなぁ。
オセロだと何にも考えずに終局の石差でやっちゃうので。
言われてみて気付いたけど、ゲームの種類によって結構違う考えが必要なんですね。

最近、藤井四段に触発された友人の影響で将棋を始めました。
負けたくないので、3手詰め問題解いていると、どうやってプログラムしようか
とか雑念が沸いてきてしまいます(汗
76310
垢版 |
2017/11/12(日) 22:31:15.55ID:Uu7EAeJ9
MCTSのツリーを使ったオーダリングは、たぶんバグが取れたと思います。
が、なんか別のところで意味不明の動作をして、速度が出せませんorz

また、テストの際に半日経っても終了しなかった盤面を使ってしまい、
何度もやり直しをしていたために、強化学習が滞ってしまいました。

これ曲者過ぎるので、今夜一晩解かせてパスしたい。
朝までにとけなかったらどうしよう。
77535
垢版 |
2017/11/13(月) 23:59:34.34ID:0hUAGldi
試しにMCTSとか必至ルーチンとか重い処理全部取っ払ってみたけど思ったより弱くならなかった。
思ったよりってだけで弱いことは弱いけど。
78535
垢版 |
2017/11/14(火) 00:20:44.53ID:7RkiqcHt
LV1,LV2にも負け越すみたい。
やっぱ弱いわw
勝負が十数秒でつくのは面白いけど。
79310
垢版 |
2017/11/14(火) 00:31:34.47ID:ZeqYQGfh
重い局面は6〜7時間くらいかけてクリアしました。

MCTSの速度が出ない問題は、解消というか、原因不明のまま別の方法で回避。
parallel_forの問題かと思っていたけど、shared_ptrの方の問題だったっぽい。
遡りチェックの時、PVは探索せずに、その他の手をチェックしていくので、他の手
にも探索を振り向けたかったのですが、単純に1手先の局面からUCTを実行すると
10万プレイアウトくらいで突然数十秒宇固まったようになって、それを何度も繰り
返す結果、まったくツリー探索が進まないという症状です。UCT探索の方に1回目
だけランダムに着手する関数を作って、そちらを呼び出したところ、固まらなくなり
ました。

ようやくまともにツリーをオーダリングに再利用できるようになったのですが、要所
要所で極端に探索が遅くなって、逆に時間がかかります。
今しばらく調査が必要な模様。
80535
垢版 |
2017/11/14(火) 00:38:47.74ID:7RkiqcHt
途中経過

70局目
黒(airandom.dll)の勝利回数: 29
白(ai-lv2.dll)の勝利回数: 41

61局目
黒(ai-lv2.dll)の勝利回数: 53
白(airandom.dll)の勝利回数: 8

58局目
黒(airandom.dll)の勝利回数: 18
白(ai-lv1.dll)の勝利回数: 40

46局目
黒(ai-lv1.dll)の勝利回数: 26
白(airandom.dll)の勝利回数: 20
81535
垢版 |
2017/11/14(火) 08:46:58.91ID:7RkiqcHt
途中経過

311局目
黒(airandom.dll)の勝利回数: 97
白(ai-lv2.dll)の勝利回数: 214

275局目
黒(ai-lv2.dll)の勝利回数: 237
白(airandom.dll)の勝利回数: 38

259局目
黒(airandom.dll)の勝利回数: 114
白(ai-lv1.dll)の勝利回数: 145

213局目
黒(ai-lv1.dll)の勝利回数: 144
白(airandom.dll)の勝利回数: 69
82310
垢版 |
2017/11/14(火) 23:35:06.48ID:ZeqYQGfh
MCTSのツリーを使用する奴は、どうも挙動が変なのですが原因不明なので後回し。

アルファ碁Zeroでは、強化学習に軽い探索を取り入れたというのを見かけたので、
想像で真似してみる事にしました。

序盤はランダム着手。そこから5手読みの中盤探索を入れて、残り10手完全読み。
評価関数はValueを使用。たぶん、学習はマシになると思います。

もっと精度が上がったら、3手読みにしてスピードアップしたいです。
今はまだ結構ボロボロなので、これで我慢。
83535
垢版 |
2017/11/15(水) 00:08:07.85ID:hR/pxKTk
丸一日回してみました。
1000局くらい軽くいくだろうと思ってたけど意外と時間かかってますね。
これはこの辺にしておきます。

533局目
黒(airandom.dll)の勝利回数: 175
白(ai-lv2.dll)の勝利回数: 358

475局目
黒(ai-lv2.dll)の勝利回数: 407
白(airandom.dll)の勝利回数: 68

450局目
黒(airandom.dll)の勝利回数: 198
白(ai-lv1.dll)の勝利回数: 252

365局目
黒(ai-lv1.dll)の勝利回数: 252
白(airandom.dll)の勝利回数: 113
84310
垢版 |
2017/11/17(金) 23:19:33.73ID:0nQ3gtJu
浅い探索付き強化学習は結構有効に機能しているようです。
学習の速度が明らかに上がったし、精度も良くなっているようで、テスト盤面の
誤差が結構減りました。ただ、そろそろ飽和したか、局所解に入ったような印象。

で、色々考えたあげく、線形回帰ではこの辺が限界かもしれないという事で、
評価関数をmlpにしてみました。valueの方がうまく学習しなかったので、回帰型
ではなくsigmoid出力にして0〜1の数字を石差に変換かけてます。
強化学習は、回帰版の評価関数の結果をそのまま利用してます。

そろそろそこそこ使えそうな誤差になってきたようだし、強化学習は自分に対して
行った方が良いはずなので、全面的にmlpに移行しちゃおうか悩み中。
85535
垢版 |
2017/11/17(金) 23:58:50.71ID:8tEb8SWm
やっぱ思考時間短いといろいろいいんだよなぁ。
モンテカルロは確かにある程度強さ出せるけど
遅いのどうやって克服していいかわからんし。
悩ましい。
86310
垢版 |
2017/11/18(土) 20:23:37.47ID:TwYSqk9E
やっぱスピードは万能ですよねぇ。

モンテカルロですが、評価関数ができたら、アルファ碁Zero方式で(汗
緩やかに読み筋を絞り込みながら、有望な手を深読みする形になります。

mlp版を試していますが、中間層を64にしたら、学習は良いのですが、
モンテカルロが劇遅になりました…。今、中間層8で強化学習していますが、
なんか早々と線形回帰と同様に飽和状態になってしまった模様。

速度的には8が限界な気がする。

途中まで線形回帰の強化学習記譜で学習させていて、同じような癖がついて
しまったのかもしれないので、今晩一晩まっさらから学習させてみようかな。
87310
垢版 |
2017/11/19(日) 15:23:45.94ID:O7LFJYCP
あちゃー。

学習がいまいち変に感じていたのは、これは恥ずかしくて言えないレベルの
仕様ミスでした。あれ?と思って、良く考えずに念のため追加したコードが
数か所。ことごとく悪さしていました。

数日損をしたなぁ。
88310
垢版 |
2017/11/20(月) 22:18:43.00ID:/GG7G9SR
ぎゃー。

評価関数に入れるデータの変換テーブルに間違い見つけた。
評価関数がいまいち収束しなかったのはこれが原因かも。

もともとの線形回帰版の時代から隠れていたものなので、
線形回帰版も計算し直しです。

というわけで、数日パーどころか1か月単位でパーですorz
89310
垢版 |
2017/11/20(月) 22:23:13.40ID:/GG7G9SR
申し遅れましたが、これにて評価関数は最初から計算しなおしです。

幸い、記譜が60件+遡り時の訂正前分100件ほどの合計160件と、
置換表から拾ったものが10万件単位でありますので、最近得ていた
感触だと、これをベースに強化学習で補えそうだというのが、
唯一の救いです。
90535
垢版 |
2017/11/21(火) 23:12:52.06ID:orTiLUyu
やっぱアルファ碁ゼロは理想形なんだよなぁ。
全てが理想的すぎる。
まあ必要計算資源があれですが。。
91535
垢版 |
2017/11/23(木) 19:54:22.22ID:5nKVQF7K
アルファ碁ゼロには興味あるが詳細情報は意外とWebで探すの大変ですね。
かといってネイチャー買うのも金もかかるし読んでも多分理解できないからなぁ。
でも終盤DBとかやってても全然成果あがらなさそうだし生きてて辛い。
92535
垢版 |
2017/11/23(木) 21:16:22.89ID:5nKVQF7K
囲碁ソフトにLeela Zeroというオープンなフリーソフトがあるそうな。
何か参考になるだろうか?
93310
垢版 |
2017/11/23(木) 21:17:40.34ID:A/JPNP9D
アルファ碁ゼロの論文はまだ読んでませんが、アルファ碁の正常進化ですよ。
自分はDeep Learningのところは「しかと」しているので、MCTSの進化形として
とらえてみると、まあ想像ですうが、当たり前の事を当たり前にやっただけかなぁ
と思っています。

それより大問題が…
また、評価関数の入力データ作るための変換に間違いを見つけてしまいました。
前回どころではない大きな間違いで、良くこの評価関数でそこそこ収束していたなぁ
というレベルの間違いでした。ソース喪失して書き直していたところから仕込まれて
いたんだと言う事で。

なんか入力いい加減でもそこそこな評価関数ができちゃう事にびっくり。
今度こそ大丈夫と信じて・・・
94535
垢版 |
2017/11/24(金) 22:55:40.11ID:QoCCcG2C
なんかleela zeroのreadme読んでみたけど、一般人が買えるハードウェアだと
アルファ碁zeroの強さを再現するのに1700年トレーニングしなきゃならんとかw
は〜絶望するわ。
95535
垢版 |
2017/11/24(金) 23:04:07.44ID:QoCCcG2C
結局、仮に大金つっこんでスレッドリッパーとか買ったとしても到底無理ってことじゃん。
まあ、まったくの無駄になるとは思わないけど。
96535
垢版 |
2017/11/24(金) 23:04:57.72ID:QoCCcG2C
なんかIDにCがいっぱいあるな。
97310
垢版 |
2017/11/25(土) 00:38:47.57ID:Dx7Nr2Ji
もういっちょ間違い発見orz

ソース喪失後焦って数日でパーッと書いて、そのまま学習させて、そこそこ
収束していたから放置していたのを思い出してきた。今度は全部チェックした。

しかし、いい加減な評価関数でも、結構収束していたってのが凄いな。
そこはかとなく表現力不足を感じていたのはその辺が原因かなぁ。

記譜と置換表データで1から学習させるのに、一気に500回学習させたら、
思いっきり過学習になってしまった。現在、強化学習で解きほぐし中。
回帰の方はほぼほぐれたけど、MLPの方はまだ時間がかかりそう。
98310
垢版 |
2017/11/25(土) 00:54:30.38ID:Dx7Nr2Ji
>>95
某スレをウォッチしていたら、前から気になっていた事を指摘していた人がいた。
スレッドリッパーはAVX2命令の中に遅いものがあって、一つ下のインテルの奴の
方が、この手の計算は速いらしい。

あと、GPUをどう使うかだね。
けど学習だけならTensor Flowにやらせちゃえばよいのだろうけど、学習データを
使うところまで行ったら、GPU使った非同期並列処理とか考えなきゃならないし。
CUDAだっけ?GPU専用にコード書かないといけないし。

なんか道筋というか、そこまでやってる自分の姿がイメージしきれない(汗

その前に詰将棋を解くプログラム開発してそう(笑)
99535
垢版 |
2017/11/25(土) 01:01:08.99ID:ekS5f4AB
某スレってどこですか?
GPGPUはもうちょっとハードル下がってほしいですねぇ
CPUよりも何十倍も速くなるケースもあるらしいし興味ありますね
CUDAをごりごり書くのは難しそうですがライブラリとかに期待。
100310
垢版 |
2017/11/25(土) 01:26:03.49ID:Dx7Nr2Ji
コンピュータ囲碁か何かのスレです
この1か月くらいのカキこのどこかにありました(汗
101535
垢版 |
2017/11/25(土) 23:11:08.18ID:ekS5f4AB
ちょっと目先を変えて9路囲連星やってみようかな。
9路なら序盤DBだけで押し切れそうな気がするw。
102535
垢版 |
2017/11/25(土) 23:33:24.64ID:ekS5f4AB
310さんみたいに既存コード全捨てでやってみようかなぁ?
もう一度まっさらな気持ちになって…
103535
垢版 |
2017/11/25(土) 23:53:52.98ID:ekS5f4AB
まっさらな状態から書いてみようとしたけど、
めんどくさくなってすぐ昔のコード確認しちゃうw
駄目すぎるw
104310
垢版 |
2017/11/26(日) 13:10:07.09ID:kav93n5u
ソース喪失以外の時は、結構コピペしていますよw

書き直しの時は、たいていあちこちで使用しているクラスの構造変え
たりする類の後戻りが難しい変更加える時なので、中の関数は一緒です(汗

新しい評価関数は、だいぶ落ち着いてきましたが、遡り28手くらい
でタイムアウトになります。並べ替えに使っているので精度が上がる
と速度が速くなるのです。前は29手、調子が良い時は30手くらい
まで行っていたので、まだ精度が追い付いていないみたいです。

これでしばらく強化学習の具合見ながら待つだけになっちゃいました。

5×5の囲碁くらいならCNNで評価関数作れないかなぁとか、詰将棋を
作るならBitboardを2バイトに拡張しなきゃとか、悪い虫が疼き始めて
います。
105535
垢版 |
2017/11/26(日) 21:08:25.02ID:wxjv7tgm
後のコード書きやすいように柔軟性のある設計にするかゴリゴリの最適化を目指すか悩み中w
106535
垢版 |
2017/11/26(日) 21:53:28.37ID:wxjv7tgm
ああ、最適化の誘惑に駆られるw
107310
垢版 |
2017/11/26(日) 22:28:47.97ID:kav93n5u
僕が読んだ本では、

最適化するな。アルゴリズムを考えろ。
アルゴリズムなら桁単位で速度アップし、過去に行った最適化は無駄になる。

と言うよな事がトップに書いてあって、それ以来(自分の)読みやすさ優先にしている。

BITBOARDのAVX2命令とか、その辺でいくつかの関数のみ、ゴリゴリにしている。
とはいえ、その辺も一応アルゴリズムの範疇かなぁ。
演算子のオーバーロードとか関数で隠ぺいしているしね。

問題は、最初にクラスの構造とかあんまり考えてないので、あとでごちゃごちゃに
なってしまう事。それで何度か書き直ししている。
108535
垢版 |
2017/11/26(日) 22:35:57.72ID:wxjv7tgm
まあ、そのセオリーは私もどこかで聞いたことありますがw
アルゴリズムでの改善が行き詰まると結局泥臭い最適化に手を出すことにww
すでに一回実装したことのあるプログラムだしある程度勘所というか見通しは立つかなーと
109535
垢版 |
2017/11/27(月) 23:15:23.55ID:jINzvSI7
勢いでコード書きなおしてるけどテストするのが面倒くさいw
言ってもしょうがないけどw
110310
垢版 |
2017/12/01(金) 20:29:48.04ID:ONM9KZwZ
またしても問題発覚。

タイムアウトなどでキャンセルしたとき、探索途中の中途半端な評価値の置換表
が作成されている模様。対象の特定はできないため、置換表データをいったん
削除して、全データに対して再度遡りチェックを実施する事で、置換表データを
再作成する事にしました。

むむむ。

評価関数はそれなりの精度になっているので、それなりの速度ではチェックできる
はずですが、またしても…って感じでがっかりです。

同一評価値で変化がある分、記譜は多少は膨れるはずなので、そちらに期待。
111535
垢版 |
2017/12/05(火) 23:23:49.29ID:CujvIJMm
9路囲連星、一応ルールと簡単なモンテカルロAIはちゃんと動いたっぽいです。
ここからどう展開するか。
112310
垢版 |
2017/12/05(火) 23:36:41.89ID:5HB6IIYO
とりあえず軽く遡りチェック完了。28〜30まで遡ると時間かかるので当面25前後まで。
もっとも誤着手なしタイムアウト無しだと30手だろうと遡れちゃうから、28手あたりの
適度なところで止めちゃいましたが。

で、置換表データ激減。いままで間違ったものを相当学習に取り込んでいたっぽい。

あと、MCTSのツリーの末端(以後終盤探索しているので数値確定)の評価が時々
狂う問題がありまして、いつもではなかったので目をつぶってましたが、暇だった
ので着手。原因不明なれど、二重更新問題っぽかったので、ツリー部分のコード
を整理してみたところ、何故か治ってしまった模様。
本当に直っていたら自己対局の精度も少し良くなるはず。

つか、羽生永世7冠誕生ですね。
記譜みてみましたが、何が何だかわけわからんけどw
113310
垢版 |
2017/12/05(火) 23:43:42.63ID:5HB6IIYO
Buroさん型特徴の評価関数もそろそろ限界っぽいのと、今のままだと強化学習にも
かなり時間がかかるので、新しいパソコンが欲しくなってきました。やはりCNNに行く
しかないかもという事で。

ものは試しにi9-7980でパソコン組んだら幾らになるのか、ネットで見積もってみた
のですが…そっと閉じてしまいました(汗

クロック数とか見ると、10コア20スレッドくらいの奴が、一番よさそうな気がするんだ
けど、どうなんだろう。
114535
垢版 |
2017/12/06(水) 00:45:59.31ID:D/I5x6A8
メモリも山盛り積みたいですよね〜
GPGPUも考えられるし。
115535
垢版 |
2017/12/06(水) 21:27:03.05ID:D/I5x6A8
アルファ将棋爆誕w
116310
垢版 |
2017/12/06(水) 21:37:40.75ID:fJiMVswg
今見たorz

夢想段階にあったものをことごとく圧倒的な力量でやられてしまふ。
そのうち、5分でオセロ作ったよとか言われるんだろうなぁ。

学習と評価の実行が完全に二分された今となっては、
学習に使用するハード性能は正義だと思い知らされる。
117535
垢版 |
2017/12/06(水) 21:39:44.94ID:D/I5x6A8
グーグルのアルゴリズムはマジ万能なんですかね〜?
必要マシンパワーがあれですが、ムーアの法則が解決するでしょう。
118535
垢版 |
2017/12/06(水) 21:49:23.90ID:D/I5x6A8
そんなに万能ならライブラリとして公開してくれw
囲連星とライフゲーム碁を学習させたいww
119535
垢版 |
2017/12/06(水) 22:03:23.36ID:D/I5x6A8
いっそ完全解析してくれたら諦めつくんですけどねw
120535
垢版 |
2017/12/06(水) 22:49:40.35ID:D/I5x6A8
9路囲連星のDB作りはじめました。
何日かぶん回そう。
121310
垢版 |
2017/12/06(水) 23:02:24.56ID:fJiMVswg
non-MonteCalroなツリー探索(勝手にそう呼んでる)は、MCTSがロールアウト
関数さえ作れれば万能なように、完全情報ゲームでは万能だと思う。
あと強化学習による評価関数の作成も。

ただ、まだAlpha碁Zeroの論文読んでないからわからないけど、CNNの入力
については、人間が介在しているかもしれない。少なくともアルファ碁の段階
では、ちょっと特殊な入力データを用意していた。

それと、完全情報ができない以上、強さの地平線を広げたに過ぎないのも確か。
それを実現するために圧倒的なマシンパワーを使っているわけで。そのマシン
パワーを前提に、それを完全に活かせるアルゴリズムにしたってところが、評価
ポイントなのかもしれない。

かなり悔し紛れな評価だけどorz
122535
垢版 |
2017/12/06(水) 23:52:04.64ID:D/I5x6A8
ガンガンツリー展開して全部DBに突っ込んでたら意外と早くメモリがパンクした。
相変わらず学習しない俺w
しょうがないからDBに入れるのは序盤だけにするか。
123310
垢版 |
2017/12/07(木) 00:22:37.97ID:EKyZH2pF
Googleがやらかしてから、後だしで俺も考えていたとか悔しいので、
前から思っている事をボソっと書いとく。

十分に深いDCNNの場合、表現の自由度が高いから、強化学習を繰り返す
事で過学習になる事が、起こりうる局面の大半を内部に保持する事につな
がっていて、実は汎化性能ガン無視で良いのではないか。起こりにくい局面の
評価値はグチャグチャでも構わないという事で。

と思っていたりする。
124535
垢版 |
2017/12/07(木) 00:55:58.10ID:+QWWXInu
修正してみたけど、8プロセス並列で動かすと意外とまだメモリがきついな。
しょうがないから1プロセスだけで流すか。
125535
垢版 |
2017/12/07(木) 01:11:55.19ID:+QWWXInu
うーん、なんか同じ局面しか選ばなくなっちゃう。
これは致命的な欠陥だなぁ。
どうしよう?
126535
垢版 |
2017/12/07(木) 01:18:35.82ID:+QWWXInu
駄目だ分からん。
諦めて今日は寝よう。
127535
垢版 |
2017/12/07(木) 20:11:24.86ID:+QWWXInu
あ〜ツリーのノードに親ノードポインタ入れてなかったわw
変だと思ったw。
でも対称局面合流させちゃってるから親が一意にならないな。。。
どうしよう。。
128535
垢版 |
2017/12/07(木) 20:23:43.87ID:+QWWXInu
親ポインタは諦めてほかの方法でごまかそうw
129535
垢版 |
2017/12/07(木) 21:27:59.88ID:+QWWXInu
なんか、UCTって初期の探索で間違った結果出ると挽回するの凄い大変なのかね?
それこそ修正に指数的な試行が必要になっているような…
130535
垢版 |
2017/12/07(木) 21:35:42.53ID:+QWWXInu
おっと、なんか挽回してきたw

それはそうとして、メモリが欲しいですねぇ。1TBくらい
131535
垢版 |
2017/12/07(木) 22:05:33.83ID:+QWWXInu
うーん、局所解にずっぽり嵌ったっぽいorz
地力で脱出してくれないかな〜
132310
垢版 |
2017/12/07(木) 22:57:44.09ID:JixNNylG
>>129
大変です(汗
133535
垢版 |
2017/12/07(木) 23:14:30.29ID:+QWWXInu
うおお、メモリ消費がじわじわ増えてきてる。
今晩一晩耐えられるかは微妙なラインだなぁ。
134535
垢版 |
2017/12/08(金) 21:44:38.57ID:rkwPxGLh
あれえ、おかしいな。
かなり学習いい感じで進んだと思ったのに、公式AIに全く歯が立たない。
やっぱ読めてない局面に分岐されると無力なのかなぁ
135535
垢版 |
2017/12/08(金) 21:55:53.54ID:rkwPxGLh
DBだけじゃ無理か。
期待が高かっただけにガックリ。
136535
垢版 |
2017/12/08(金) 22:03:23.60ID:rkwPxGLh
ここでヒューリスティックに走るかDBの更なる肥大化に走るかCNNとかに手を出すか。
分岐点やな。
137535
垢版 |
2017/12/09(土) 11:22:20.19ID:L/Fjd2gI
当たりの石をつがないなぁなぜか。
ロールアウトで当たりの石を抜く確率と当たりの石をつぐ確率増やすか。
138535
垢版 |
2017/12/09(土) 19:05:03.36ID:L/Fjd2gI
キター!初勝利!
最終的にはアルファ碁みたいに100戦100勝したいな。

(
;FF[1]GM[1]SZ[9]
;B[de];W[dg];B[ef];W[cc];B[eg];W[fd]
;B[ec];W[eh];B[ed];W[ch];B[eb];W[fe]
;B[ee];W[ea];B[fa];W[hh];B[da];W[ac]
;B[ea])
139535
垢版 |
2017/12/09(土) 20:29:04.06ID:L/Fjd2gI
酷いバグ発見w
8近傍求める関数間違ってたw
2017/12/09(土) 21:36:39.83ID:L/Fjd2gI
ロールアウトの着手確率いじったら黒番の勝率5%だと…?
何が起こってるんだ…
141535
垢版 |
2017/12/09(土) 22:53:03.29ID:L/Fjd2gI
着手不能点を着手候補にしてたw
だからか。
142535
垢版 |
2017/12/10(日) 21:26:16.30ID:ecwKDJmF
局所解に落ち込むとなかなか抜け出せないのでUCB1のバイアス係数を思いっきり上げてみた。
これで局所解抜けてくれればいいが…
143310
垢版 |
2017/12/10(日) 22:11:20.32ID:3vDAj4sl
MLP版の評価関数がNaN地獄に落ちてた。
何回かやり直したけど、結構簡単にNaN地獄に落ちるので、一旦仕切り直しで、
線形回帰な評価関数に注力する事にしました。

MCTSでテストすると、途中まで割と見知ったオープニングになってきているけど、
評価値自体はあんまり安定していない感じ。まあ、相対関係があっていれば、
絶対値はずれていても関係ないといえば関係ないけど。

しばらく強化学習を続けながら、ちっと別な事を考えてみます。

というか、Alpha Zeroの強化学習の回数が、思ったより少ないなぁと思ったけど、
自分がこれまでにやった回数を概算で考えてみたら、桁が2〜3くらい少なかったorz
やっぱマシンパワーは正義だなぁ。
144535
垢版 |
2017/12/10(日) 22:51:07.98ID:ecwKDJmF
今晩一晩ながして局所解抜け出せなかったら別の方法考えなきゃな…
zen+が超絶スペックという噂が流れてますが、デマリークともいわれていて、
本当だったらいいなあと思っている今日この頃。
145535
垢版 |
2017/12/11(月) 21:43:28.43ID:fAOHhVpN
お、局所解抜けてる。
DBがTXTで1GB行っちゃったてへぺろ。
146535
垢版 |
2017/12/11(月) 21:49:20.78ID:fAOHhVpN
お、凄い、いい感じの勝ち方した。
これの凄さが分かってくれる人がどれだけいるかわからないが…

(
;FF[1]GM[1]SZ[9]
;B[ee];W[eg];B[df];W[fd];B[dc];W[dg]
;B[fe];W[ge];B[gd];W[gf];B[fc];W[cd]
;B[ed];W[cc];B[cg];W[ch];B[bg];W[fg]
;B[gc];W[gh];B[bh];W[hh];B[ai];W[ba]
;B[fd])
147535
垢版 |
2017/12/11(月) 22:02:11.19ID:fAOHhVpN
白番でも勝てるかもと思ったがそんなに甘くなかったw
148535
垢版 |
2017/12/11(月) 22:20:09.34ID:fAOHhVpN
うあああ、白番で惜しいところまで行ってバグで不正終了w
とりあえずバグとらなきゃorz
149535
垢版 |
2017/12/11(月) 22:31:43.51ID:fAOHhVpN
うーんまだまだだなぁ。
>>146はたまたまかorz.
150535
垢版 |
2017/12/12(火) 19:50:54.43ID:sU/cgenP
新しいパソコン欲しいな〜
現実的な線でいってもメモリ64GBくらい積みたい。
151535
垢版 |
2017/12/12(火) 23:05:56.72ID:sU/cgenP
DB作成をマルチスレッド化したいな〜
でもMCTSのマルチスレッド化って結構難しんだよな〜
152310
垢版 |
2017/12/13(水) 00:38:18.63ID:oWC3TnL7
MCTSのマルチスレッド化は簡単だと思う…
マルチコンピュータは難しいけど。

強化学習がなんかおかしい感じだったので、記譜学習で上書きしたら
かなり過学習になってしまった。強化学習で戻せばよいかと思ったけど
なんかなかなか戻らないorz

強化学習どっかおかしいのかもしれない。
153535
垢版 |
2017/12/13(水) 20:33:14.21ID:6thdoy0s
えーそうですか?
排他制御とかしたら性能出なさそう
154535
垢版 |
2017/12/13(水) 21:57:53.75ID:3yqEn+ak
ID違うと思うけど535です。
DBがTXTで1.7GBに。
実行時7GB程になりました。
std::mapを別のコレクションに変えたらメモリ使用量減らないかな〜?
155535
垢版 |
2017/12/13(水) 22:15:01.22ID:3yqEn+ak
unordered_mapにしてみたけどあんま変わんないやorz
156310
垢版 |
2017/12/14(木) 00:19:28.11ID:9pKHf6s7
排他制御は、まあ普通にしてますけど、PPLのcritical_sectionでlockしたり、
int型ならatomic<int>していたりで、並列ライブラリにお任せです。

またVirtual Lossという方法があって、ツリーを下っていく時は、先に負けた事にして
降りて行って、末端から戻ってくる時に正しい勝敗に置き換える事で、並列探索
の各スレッドが同じ枝に集中しないようにして、排他がかかる可能性を減らしてます。
あとは、排他制御が必要な領域を細かい単位に分割する事ですかね。

#と思って、ソース見たらVirtual Drawになっていた(汗

あ、そうか。DB化しているって事は、合流ありだし、盤面をキーにしなきゃならないから
そうなるとちょっとややこしいのかな?

自分は合流無視で、各ノードに盤面情報を保持していません。直前着手のみ持って
いて、ノードをたどる時に盤面情報を更新しながら降りていきます。着手もBITBOARD
の64bitは無駄なので、char型にしちゃってます(内部的にはintなんだろうけど)。
157535
垢版 |
2017/12/14(木) 21:56:41.20ID:IX7WwuCO
PPLなんてのがあるんですね。
頭の片隅に入れておきます。

とりあえず、子ノードへのポインタが結構メモリを食ってるような気がします。
これを無くして毎回子局面を計算するようにしてメモリ節約するという手もありますがあんまりやる気がしないなぁ。
158310
垢版 |
2017/12/15(金) 10:32:05.09ID:+7BwQo/4
PPLはVC++専用の並列処理ライブラリです。
Intel TBBとかと中身はほぼ同じだと思います。
かなり抽象されていて、わかりやすいです。
自分はこれなしでは並列化できません(汗


ツリー構造だと子ノードへのポインタが一番大事な情報になっちゃいますね。
その場合ポインターと直前着手があれば盤面情報は不要になります。
一方で、ハッシュテーブル構造だと、子ノードポインタ不要で、キー(と衝突検出)
のために盤面情報が必須になります。

DB化するんならハッシュテーブルとかの方が向いていますよね。

自分はMCTSでツリーを作ったり消したりなので、ツリー型にしています。
shared_ptr使って、不要になったノードはシステム任せで自動的に削除して貰って
います。ハッシュテーブルだと、そう簡単にはいきませんね。
159310
垢版 |
2017/12/17(日) 00:21:31.98ID:qILmYkkQ
ノートPCの冷却用(動作周波数に結構影響する)にUSB扇風機使ってましたが、
結構サイズでかくて持ち運び面倒だし、ノートPCのUSBポートに刺していると
安全装置が働いてしまうので、別途電源取っていました。

で、どうせ強化学習回しておくだけで暇だったので、専用のクーリングファンを
自作してみました。

タカチのアルミケースをぴったりサイズに切り欠いて、USBコネクタと5Vの
クーリングファンをセット。ノートPCに装着するとファンが回って冷却開始。
製作時間1時間程度。材料費は3000円くらい。

雑に作った割にはうまくできた。
160310
垢版 |
2017/12/17(日) 02:09:30.95ID:qILmYkkQ
EigenのSparseMatrixのサイズ制限を変える方法が見つかりました。

現在、簡易版と詳細版の2種類の評価関数を学習していますが、
これにより詳細版を完全にBuroさんモデルにする事ができるように
なりました。

というわけで、詳細版は再度学習し直しです。

簡易版は、多少癖があるようだけど、そこそこまともになっています。
一方、詳細版は何度もやり直し中(汗
161535
垢版 |
2017/12/17(日) 19:24:13.96ID:QB4rs7DZ
DBはメモリの勝負になる。
やはりCNNなどでメモリを圧縮する必要がある。
162535
垢版 |
2017/12/17(日) 20:37:59.85ID:QB4rs7DZ
うお、試行回数0回のデータ削除したらメッチャメモリ使用量減ったw
これで当分DBで押せるww
163535
垢版 |
2017/12/18(月) 21:48:20.69ID:2VaG9uC3
ちょっとづつ良くなってるとは思うけど今一歩だな〜
もうちょっとヒューリスティック入れたほうがいいかな〜
164310
垢版 |
2017/12/19(火) 00:06:06.27ID:jyMFUoq3
気が付いたらTensorFlowがWindows対応になってるね。

New PC欲しい病再発の兆し・・・
165535
垢版 |
2017/12/19(火) 22:55:01.32ID:BAiqwtex
とりあえず、ヒューリスティックのアイディアが2つあるんだが、
下手に手を加えないでDB肥大化で押したほうが、
真の棋理に近づくのかもしれないなどとも思ったり。
悩ましい。
166535
垢版 |
2017/12/20(水) 00:23:35.05ID:S+Iz2Vgy
ヒューリスティック一個仮組みしてみたけど上手くいかないや。
がっかりorz.
167535
垢版 |
2017/12/20(水) 22:02:26.64ID:S+Iz2Vgy
ちなみに仮組したヒューリスティックの内容は
適当な回数プレイアウトして7連が一番多くできたところ付近にしぼって
モンテカルロ木を展開するというもの。
168535
垢版 |
2017/12/21(木) 20:13:56.96ID:TDrdSCuN
序盤はそんなに悪くないんだけど終盤がなぁ
やっぱ9路でも必至、詰めろルーチンいるなぁ
169535
垢版 |
2017/12/21(木) 20:14:37.01ID:TDrdSCuN
でも遅くなるの見えてるからちょっとなぁ。
170535
垢版 |
2017/12/22(金) 21:57:55.17ID:fGil/O5L
なんか落ちるバグがあるな。
そういえば直してなかった。
は〜
171310
垢版 |
2017/12/23(土) 09:08:48.88ID:V4gvcHPy
ノードを完全読み切りまで展開した時に、末端ノードの評価が狂う時があるという
バグが以前ありました。おそらく並列処理による2重更新問題だろうと言う事で、
UCT探索の排他部分を強化して対応していましたが、ここにきてまた発生。
昨日原因が判明しました。まさかの、浮動小数点誤差の問題でした。

スコアの合計値と、試行回数を持っていて、合計値÷試行回数で平均スコアを
計算しているのですが、合計値が3500万を超えたあたりで+2をしてもfloat的
には、その2差を表現できる精度が無くなって、少しづつ合計値が不足していく
状態になっていました。

とりあえずfloatをdoubeにしてみましたが、案の定メモリーを消費する速度が大幅
増加してしまいました。小数点以下1桁もあれば十分なのでintに10倍値を持つ
ようにしてみようかなぁと思っています。
172310
垢版 |
2017/12/24(日) 00:22:00.25ID:XlhSPCGK
intに変更。桁溢れが無ければ、これで大丈夫だと思います。
ついでに速度アップしている分だけ、自己対局の探索時間を短くしました。

評価関数を簡易版・詳細版2種類使っていましたが、詳細版も十分に学習
できたようなので、詳細版一本に絞りました。というか、そろそろ追い抜いた
と思えるようになってきました。とはいえ自己対局の評価値を見ていると
30手目以後はそこそこまともな感じですが、序盤はまだデタラメかなぁ。

完全読み切りですが、30手より前に遡る事がなかなかできません。評価関数
の精度のためか、残り28手あたりから急激に読み切り時間がかかるようになり
ます。評価関数の精度が悪いのでオーダリングが正しくできていないからでは
無いかと想像しています。強化学習で補えるかと思っていますが、まだまだの
ようです。

現在、記譜学習は完全読み切りができている盤面しか使用していませんが、
せめてMCTS探索が始まって以後の盤面も学習に使用してみようか悩み中。

これ以上の精度を求めると、やはりDLに行かざるを得ないですね。
今の探索でもツリーがメモリー内に収まるギリギリに係数を設定しているので
探索延長が起きるとあっという間にスワップ開始になってしまいます。
というわけで大きなメモリーが欲しい今日この頃です。
173535
垢版 |
2017/12/25(月) 21:28:02.81ID:iTZFwLsg
すっごい微妙な駆け引きができるようになって会心の勝利!
と思いきや勝利目前でバグが出てパス2回した後エラーはいて落ちたorz
くそくそくそくそ!
いい加減直さなきゃだけど再現性低いからバグ潰すの難しいんだよなぁ
(
;FF[1]GM[1]SZ[9]
;B[ee];W[dc];B[de];W[ce];B[ge];W[df]
;B[hc];W[fg];B[gd];W[gf];B[cf];W[eg]
;B[gg];W[gh];B[cd];W[fe];B[fd];W[dd]
;B[ff];W[hg];B[be];W[cg];B[];W[gg]
;B[];W[dg])
174535
垢版 |
2017/12/26(火) 21:57:37.38ID:vTaELiqs
勝利が目前に近づくとパスする。
マジ原因がわからんorzorzorz
ログでも仕込むか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況