[過去ログ] 【オセロ,将棋】ボードゲーム Part2【囲碁,War】 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
171: 310 2017/12/23(土)09:08 ID:V4gvcHPy(1) AAS
ノードを完全読み切りまで展開した時に、末端ノードの評価が狂う時があるという
バグが以前ありました。おそらく並列処理による2重更新問題だろうと言う事で、
UCT探索の排他部分を強化して対応していましたが、ここにきてまた発生。
昨日原因が判明しました。まさかの、浮動小数点誤差の問題でした。

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

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

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

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

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

これ以上の精度を求めると、やはりDLに行かざるを得ないですね。
今の探索でもツリーがメモリー内に収まるギリギリに係数を設定しているので
探索延長が起きるとあっという間にスワップ開始になってしまいます。
というわけで大きなメモリーが欲しい今日この頃です。
173: 535 2017/12/25(月)21:28 ID:iTZFwLsg(1) AAS
すっごい微妙な駆け引きができるようになって会心の勝利!
と思いきや勝利目前でバグが出てパス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])
174: 535 2017/12/26(火)21:57 ID:vTaELiqs(1/2) AAS
勝利が目前に近づくとパスする。
マジ原因がわからんorzorzorz
ログでも仕込むか?
175: 535 2017/12/26(火)22:08 ID:vTaELiqs(2/2) AAS
石を取って必勝形になる形だとパスするのか?
条件絞り込みがムズイ。
とりあえず、ログかなぁ?
176: 535 2017/12/27(水)20:40 ID:SLxZ+o46(1/4) AAS
ログ仕込んだら計ったように再現しなくなったwwww
しばらく対局しまくるしかないか
177: 535 2017/12/27(水)21:31 ID:SLxZ+o46(2/4) AAS
バグの原因わかりました。
ノードに盤面情報登録し忘れてるパスがあった。
これで落ちずに連続対戦できるようになるかな。
178: 535 2017/12/27(水)22:15 ID:SLxZ+o46(3/4) AAS
連続対戦上手く動いてるっぽいです。
今のところ黒番で8勝2敗
かなりいい感じ。
179: 535 2017/12/27(水)22:57 ID:SLxZ+o46(4/4) AAS
黒番で13勝7敗
だいぶ追い上げられたorz
でも連続対戦ちゃんと動いてるようで嬉しい。
180: 310 2017/12/28(木)00:14 ID:p44JRClR(1) AAS
やっぱりintでオーバーフローしてた(汗。仕方無いのでint64で。doubleでも
メモリーサイズは一緒だけど、intの方がオーバーフローがわかりやすい。

あと、効果あるかわからないけど、置換表再利用回りをちょっと機能追加。

途中でゲーム終了になった時のスコアカウントですが、FFO計算をチェックに
使っている関係で空白マスを勝者総取りにしています。しかし、学習の時には
空白マスを含めない方が回帰の計算的には良いのではないかなと思い始め
ています。MCTS的には終局判定を入れてあり正しく終局時スコアを返すので、
あくまで学習時だけの話です。

ただ、記譜を経由していればスコア再計算で良いのですが、置換表に溜まって
いる盤面情報では、アメリカルールのスコアを割り出しようが無いという…。
181: 535 2017/12/30(土)18:56 ID:YPjfi6f/(1) AAS
実家に帰省しました。
DB作成を流しっぱなしにしてきたので
正月あけどれくらいデータ取れてるか楽しみ
182: 2017/12/31(日)18:54 ID:/rN76OKL(1) AAS
簡単にお金が稼げる方法興味ある人だけ見てください。

グーグル検索⇒『来島のモノノリウエ』

G32792G4ML
183: 535 2018/01/04(木)19:09 ID:mx9U9VEK(1/3) AAS
ふむう。学習は大分進んだと思うのですが、勝率が思うように上がりませんね。
184: 535 2018/01/04(木)19:40 ID:mx9U9VEK(2/3) AAS
もうちょいヒューリスティック入れるか…
185: 535 2018/01/04(木)20:05 ID:mx9U9VEK(3/3) AAS
leela zeroがもう有段者くらいの実力をつけているらしい。
もういちどleela zeroパクれるか検討するか?
うーむ。
186: 310 2018/01/05(金)08:48 ID:DiPIPsFr(1) AAS
年末年始で学習進めてました。
学習が進んだ結果、33〜35手目あたりは正確になり、評価値の精度が上がった
事からオーダリングが機能するようになり、遡りチェックの時間は少しづつ減ってきて
いる感じですが、30〜32手目以前はまだまだばらつきがある感じです。

また、以前から気になっていたのですが、MCTSによる記譜作成では35手目以後で
急に頻繁に手を間違える症状が出ています。記譜を膨らますにはちょうど良いので
放置していましたが、いよいよバグ探しを開始。やっぱり、並列処理の排他が不十分
で、末端ノードまでたどり着いて同じノードに探索が集中した時に、スコアの更新が
ぶつかっておかしな値になる事で、別のノードを探索。また探索が集中し、スコアが
狂い別のノードを探索という感じになっていた模様です。

修正したら大幅スピードダウンしてしまいましたが、精度は上がりました。
速度を持ちなおせるか色々調べましたが、ちょっと厳しい感じです。
187: 310 2018/01/08(月)02:22 ID:hx3YjBuD(1/3) AAS
記譜作成ですが、スコア差が大きなものが少ないため、ランダム着手の所に手を
加えてみましたが、今度は極端になりすぎて、パーフェクト勝敗な記譜が増えて
しまいました。どうしよう。

スピードダウンの影響は結構大きく、探索の終盤で、同じツリーに対する探索が集中
するためか、さらに大きく速度低下し、今度はそちらが原因で終盤間違えるように
なった感じです。あちらを立てればこちらが立たずです。

当初は、こういう問題はなかったはずなので、過去のソースを見直してみるつもり。
188: 535 2018/01/08(月)19:56 ID:NhsCP7en(1/2) AAS
alpha zero を参考にしたプロジェクトがgithubにいくつかあるんですがパクれないか物色中。
オセロやコネクト4もあるみたいですね。
189: 310 2018/01/08(月)21:48 ID:hx3YjBuD(2/3) AAS
ありゃ。すでにあるんだ。
たぶんディープラーニングしてるんだろうなぁ。

そりゃそうと、CPUのバグの影響どうなんでしょね。
あまりに時間がかかるので、ちょっと辛い。

記譜作成やめて、ひたすら強化学習にしてみようかなぁ。
後は細かい精度なので、その方が早い気がしてきた。
190: 310 2018/01/08(月)22:10 ID:hx3YjBuD(3/3) AAS
わかりにくい文章でした。

「あまりに時間がかかるので、ちょっと辛い。」

は、現状の学習方法だとあまりに時間がかかるので、やはり新PC欲しいんだけど、
CPUバグの話が出たので、ちょっと様子見すべきかどうかって事です。

ただ、MCTSで排他待ち合わせによる速度低下が出ているのと、読み切り探索では
並列探索の効果が頭打ちになりやすいので、本当にCPUに投資した効果があるの
かが不安になってきている面もあります。

むむむ。
191
(1): 535 2018/01/08(月)23:14 ID:NhsCP7en(2/2) AAS
並列化で速度出すのは結構難しいですよねぇ
まあメモリ増やすだけでも大分違うかもですが。

python 読めるようになったほうが後々いいんだろうなぁ
でもメンドクサイw
192: 535 2018/01/10(水)22:40 ID:woZtUoWo(1/3) AAS
アルファゼロを参考にしたコネクト4のプロジェクトのパイソンコード読んでるんですが
パイソンということを差し引いても結構難しいんだろうなって感じ
193: 535 2018/01/10(水)23:42 ID:woZtUoWo(2/3) AAS
パイソンだからコード眺めるだけでどうせ動かせないやと諦めるのではなく
実際に実行できるところまでこぎつけるべきだろうか
194: 535 2018/01/10(水)23:57 ID:woZtUoWo(3/3) AAS
うーんこれlinux用なのかなぁ
Cygwinじゃきびしいかなぁ
195: 310 2018/01/11(木)22:33 ID:TAFrfVFR(1/2) AAS
しばらく学習しっぱなしというか、デバッグしながら中途半端に遡り状態で放置した
記譜をガッツリ遡りチェック中なので暇です。で、よからぬ蟲が疼きだして、そろそろ
ボードを作ろうかと思い始めました。ソース消失前は、min-Max版時代のボードが
あったのですが、また作り直しです。

オセロにも碁盤ソフトみたいなのがあれば良いのですが、無いようなので自作を検討。
囲碁のGTPみたいなプロトコルを作って、思考エンジンとGUIを分離できたら良いなぁと。

というわけで、匿名パイプを使ったプロセス間通信について勉強してました。
サンプルコードが10年前のC言語しかなくて解読に苦労しましたがエコーサンプル
を修正しながらテスト。coutとcerrを別パイプに分離して、スレッド管理はPPLにお任せ
にするところまでやって、ようやく納得。

ボードGUI作って、プロトコル決めて、AIエンジン部を対応させてと、まだまだやる事が
ありますが、最終的には自動対局までできたら良いなあと。リソースの限界はあります
が、パラメータで強弱が出そうなので、客観的に評価したい。

というか、GUIの作り方から学習し直しだ…
GUI触りたくないからボードソフト探していたのに、無いから自分で作るという罠。
196: 310 2018/01/11(木)22:48 ID:TAFrfVFR(2/2) AAS
>>191
色々見直して、若干速度は回復しましたが、最初にRollout外した時のびっくりする
ほどの速度は出なくなっちゃいました。ただ、時々瞬間的に速い時があるので、
単純ではないかもしれません。

30手過ぎるとどんどん選択しが狭まっていきますので、ツリーサイズは小さくなって
いきます。ここで、一部の手に探索が集中して、100万探索単位で追加探索したとき
にようやく他の枝を調べ始めるようで、それでもツリーサイズはそれほど大きくならない
ので、メモリーはそれほどボトルネックになっていない感じです。

UCB1のCをいじったり、ポリシーの探索比率をいじったりして様子をみていますが、
あまりフラットに探索すると、正解にたどり着けないまま終盤を迎えてしまうし、
かといってスティープに探索すると、間違いを訂正するまでの追加探索が大量に
必要になるしで、調整が難しいです。そもそも評価関数の精度が十分じゃないと
言う事なんだと思います。
197: 535 2018/01/13(土)21:35 ID:yngzNrQg(1/2) AAS
コネクト4、マルチスレッド化されてるみたいですね。
何か読みにくいと思ったら。
198: 535 2018/01/13(土)22:44 ID:yngzNrQg(2/2) AAS
多分、コードに飛びつくのはまだ時期尚早なんだろな。
もうちょっとAlphaZeroの基本アイディアを理解してからじゃないと。
199: 310 2018/01/14(日)01:33 ID:Wql34YtP(1) AAS
コネクト4のGitHUBってどこにありますか?
ちょっと見てみたいかも。

GUI作ろうと思って調べたら、VS2017からなんかだいぶ変わっているみたいです。
MFCは非推奨との事で、ユニバーサルWindowsとかってやつと、あとはCLRですか。
両方試してみようとしたのですが、ユニバーサルWindowsはWindows10じゃないと
ダメっぽい。CLRはなんかエラーで動かない…。他にもC#だと楽だとか色々ある
みたい。MFCは使えるのですが、もう忘れたし、面倒くさかった記憶しかない(汗
C#で作るって手もあるみたい。

とりあえずC#を勉強してみようかなぁというところです。
脱線しすぎだなぁ。
200
(1): 535 2018/01/14(日)17:46 ID:NeYy2Zy+(1) AAS
外部リンク:github.com
これです
1-
あと 802 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.016s