【オセロ,将棋】ボードゲーム Part3【囲碁,War】
at GAMEDEV
1:名前は開発中のものです。
19/11/23 19:09:58.05 0YM91Vba.net
比較的地味なボードゲーム専用のスレが欲しくて立ててみました。
前スレ
【オセロ,将棋】ボードゲーム Part2【囲碁,War】
スレリンク(gamedev板)
2:535
19/11/23 19:12:08.93 0YM91Vba.net
保守って必要なんでしたっけ?
とりあえず少し書き込んどくか
3:535
19/11/23 19:16:02.64 0YM91Vba.net
CPUがシングルスレッド動作で遊んじゃってるから並列化したいが難しいかな?
4:310
19/11/23 22:24:52.69 SYjlCoJ6.net
乙です!
5:535
19/11/23 23:13:05.52 0YM91Vba.net
ライフゲーム囲碁のルール的に5x5のフィルタは絶大な効力があるはずだが。
今のネットワークが行き詰まったら試してみたい。
6:535
19/11/25 20:13:20.12 2wmTVw+j.net
ネットワークいじってみます。
7:535
19/11/25 21:18:17.92 2wmTVw+j.net
倍、遅くなりました。orz
でもこれで行こう。
8:535
19/11/25 22:30:43.24 2wmTVw+j.net
もしかしたらGPUつかってたらGPUがネックになってCPU並列にしても高速にならないとか可能性あるんだろか?
そんなもん試してみなきゃわからんか。
うーん。
9:535
19/11/25 22:51:45.65 2wmTVw+j.net
他人のコードをただ使うだけじゃなく、ちゃんと理解したほうがいいんだろな。
ぼちぼち読み解いていくのもやっていかないとな。
10:535
19/11/26 19:30:51.66 XeQhwPoh.net
今日も止まってる。
中間結果をもっとこまめに吐き出すようにして止まっても再開できるようにしないとだめかなぁ
11:535
19/11/26 19:50:21.34 XeQhwPoh.net
100戦ごとに中間結果を吐き出すのを20戦ごとにしました。
ベストポリシー更新も40戦中24勝で更新のところを10戦中7勝で更新にしました。
短いスパンで回数をこなす方針です。
12:535
19/11/26 19:55:34.68 XeQhwPoh.net
ただ固まらないで走り続けてくれるだけでいいのになんでこんなことで躓くんだろ?
これはあれか?new マシンを買えという神のお告げか?ww
13:535
19/11/26 21:34:32.66 XeQhwPoh.net
オープンソースの強い9路囲碁のAIをどこかから持ってきて、初手から上位候補3〜4手を展開して
HDDが溢れるまでDBに登録するというのをヒマができたらちょっとやってみたい。
>>310さんに聞いてみたいですが、これ筋悪ですかね?
14:535
19/11/27 19:51:58.04 1doHT5Qb.net
お、止まってない。
当たり前のことがこんなにうれしい。
15:535
19/11/27 23:02:57.56 pze7UUXG.net
なんかcpu特化マシンとgpu特化マシンと2台用意するのが良いのかも知れない
そんな気がする
16:535
19/11/28 19:26:52.13 v0cCrhOy.net
お、今日も止まってない。
17:535
19/11/28 19:43:10.05 v0cCrhOy.net
ランダムボットと対戦してみます。
18:535
19/11/28 20:27:44.97 v0cCrhOy.net
お、50戦50勝ですね。
既存AIとも対戦させてみたいですが手入力はめんどくさいですね…
19:535
19/11/28 20:37:24.27 v0cCrhOy.net
手入力でやってみようかと思いましたが誤入力してしまうと取り返しがつかずかなり面倒ですね。
ちょっとやってみましたがいきなり先制攻撃して反撃を食らってしまうモンテカルロの癖が見られますね。
まだ既存のモンテカルロ+ヒューリスティックAIには勝てないかな。
20:535
19/12/03 21:41:13.98 psH8GHTp.net
ベストポリシー更新こね〜〜〜
丸一日来なかった切なすぎる。orz
21:名前は開発中のものです。
19/12/04 12:01:20.94 DcP5cUp2.net
これがシンプルで初心者向きかと
TLWIN4
URLリンク(www2u.biglobe.ne.jp)
22:535
19/12/04 20:41:26.48 NLOWOBvY.net
>>21
囲碁っぽいゲームだね。
自分がそのAI作ろうとは思わないけど、作者がこのスレに書き込んでくれるなら歓迎する。
23:535
19/12/04 21:27:51.53 NLOWOBvY.net
結構昔のゲームなのか。
強いな。勝てない。まあ当たり前か。
アルファベータっぽいアルゴリズムなのかな?
いい枝刈りがあれば完全解析も夢ではないかも。
作者もう開発してないかもね。
センスいいゲームだと思います。
24:535
19/12/04 21:35:48.74 NLOWOBvY.net
ん〜16マスだとすべての局面数が高々3^16=43メガか
今のマシンなら完全解析できそうな?
ていうか多分作者がもう完全解析達成してそう?。
25:535
19/12/04 21:54:47.77 NLOWOBvY.net
多分今からやるなら6x6か8x8がいいサイズかな?
でも小さい盤面でも奥が深いのは確かにそう思う。
26:535
19/12/04 22:29:16.14 NLOWOBvY.net
310さんにもコメント頂きたいですね〜これは
27:名前は開発中のものです。
19/12/05 21:57:34.99 kfWaNk0U.net
タイルゲーム紹介した人だけど作者ではないけど
ちかいうちにたたき台をあげる
これで実験することで他のゲームにも応用、流用できるはずだろうと
28:535
19/12/05 23:28:53.86 TGSJx2oP.net
>>27
今後、継続的に書き込むなら、なんかコテつけてくれるとありがたいです。
29:535
19/12/06 22:26:41.60 oWoLkQQa.net
ここ3日くらい止まらないで動いてくれてる。
ありがたい。
30:535
19/12/07 11:40:38.80 g440eZAz.net
いきなりつける癖が抜けてないですねorz
31:310
19/12/09 18:07:44.19 U9gfgHkj.net
面白そうなゲームですね。このゲーム、千日手筋が出た時の引き分けの扱いが気になり
ます。引き分けにならないのかなぁ。
4×4なら、作者さんの様に盤面の勝敗情報をBook(DB)化して、幅優先探索で虱潰し
に穴埋めします。千日手検出して探索打ち切り筋決めながら。あと、Bookの遡り更新。
強いAIを作るというより、完全解析に向かっちゃいます。時間がどれくらいかかるのか
は不明だけどオセロの4×4は1秒未満で完全解析しちゃうのでいけるかなと。
8×8だと、何らかの評価関数が必要でしょうね。どういう評価関数にするか妄想膨らん
だけど、当面作る予定もない人が、先を予想するのもどうかと思うので、省略。
あと、偶数盤と奇数盤で結構必戦術が違ってきそうな気がしています。
つか、AI的に、ちょっと興味あるかも。
32:535
19/12/09 21:43:34.79 Tnj0Wr3X.net
ライフゲーム囲碁もうまく行かないし少しこのゲームに寄り道したい気持ちが出てきた。
まだやるかわからんけど。
33:535
19/12/14 21:52:48.39 U079ctc/.net
タイルゲームのルール実装しました。
多分4x4の完全解析行けそうな感じです。
34:535
19/12/15 00:07:31.40 dv2UjkPD.net
あれ意外と手ごわいかも?
まだメモリは尽きてないから様子見かなぁ
35:535
19/12/15 00:34:33.88 dv2UjkPD.net
計算上メモリは足りるはず…
頼む、足りてくれ!
36:535
19/12/15 02:40:07.52 dv2UjkPD.net
計算おわらねぇなぁ
310さんの言うように千日手あるのかなぁ
もう今日は徹夜だ
37:535
19/12/15 02:48:14.39 dv2UjkPD.net
このゲーム凄いギリギリのゲームバランスを達成してるのかもしれない。
まだ計算途中だけど白黒で必勝局面の数がほとんど変わらない。
凄い。
38:535
19/12/15 02:52:03.54 dv2UjkPD.net
対称局面考慮すればもうちょっと速くなりそうかな。
8対称にはならないかな?4対称?
39:535
19/12/15 03:12:30.90 dv2UjkPD.net
これ310さんならもっと速くとけるんじゃないかなぁ。
メモリを意識しすぎたかもしれん。
もっと贅沢にメモリ使ってもよかったかも?
40:535
19/12/15 03:14:21.83 dv2UjkPD.net
16手目まで読んでも探索が終わらないだと?
なんか間違えてんのかなぁ
41:535
19/12/15 03:50:04.48 dv2UjkPD.net
4対称いれてみました。
42:535
19/12/15 04:10:25.62 dv2UjkPD.net
この調子だと5x5の完全解析はかなり難しいかもな。
まだ解けてないけど4x4は行けるはず。
43:535
19/12/15 04:45:38.29 dv2UjkPD.net
4対称を考慮したすべての合法な局面数16050722になるっぽい。
でも完全解析はまだできてない。
反復深化っぽいアルゴリズムにしたの失敗だったか?
44:535
19/12/15 04:47:02.51 dv2UjkPD.net
あ、合法局面数えるの終局判定入れてなかったorz
もっと減るかな。
45:535
19/12/15 04:50:51 dv2UjkPD.net
14649602に修正
46:535
19/12/15 05:17:18 dv2UjkPD.net
反復深化やめたら72秒で完全解析完了しましたw
結果は後手の勝ち。
まあバグはあるかもしれない。
310さんもやってみてほしいな〜
答え合わせしたいw
47:535
19/12/15 05:22:54 dv2UjkPD.net
使用メモリは2GBくらい。
うーん。
なんかちょっとバグの予感がしますが。
48:535
19/12/15 05:43:15.98 dv2UjkPD.net
バグあるっぽいw
駄目か〜
49:535
19/12/15 06:32:05.02 dv2UjkPD.net
千日手が正解の可能性が浮上?
50:535
19/12/15 09:52:56.34 dv2UjkPD.net
勝った〜
一勝した。
必勝かどうかは確かめる気力なしwww
もう寝るwwww
これ以上バグが無ければ後手必勝と出ました。
51:535
19/12/15 17:50:01.09 dv2UjkPD.net
今のところ完全解析にかかる時間は2分15秒
公式AIにも勝てるし多分バグも大丈夫
ちなみに5x5完全解析は絶望的
6x6くらいをアルファゼロでやってみるのも面白いかもね。
52:535
19/12/15 17:55:09.82 dv2UjkPD.net
ID真っ赤だな俺ww
まあ今日は頑張ったww
久しぶりに気分いいわww
53:535
19/12/15 18:19:20.88 dv2UjkPD.net
公式AIのBookのフォーマット、ドキュメントがありますね。
必勝ブックを作るのもちょっと面白そうだがさすがにそこまではやらないかな。
54:310
19/12/15 21:32:35.89 PDoLh5O/.net
お。早速やりましたか。
必勝法の類の発想ですが、盤面に2×2のフィルタをかけたとして、3^(2×2)=81通り
を、縦接続・横接続・未定に分類して9×9の盤面に置きかえると、作戦を考えやすいの
かなと思っていたりします。
55:535
19/12/16 21:09:00.92 dJ29kvV6.net
AIから日本語で棋理を抽出出来たら面白いなーと妄想したり。
囲碁将棋でだれかやってくれないかな。
56:535
19/12/16 21:13:33.69 dJ29kvV6.net
タイルゲームはわりとツークツワンクが大事っぽいですね。
57:535
19/12/16 21:31:10.69 dJ29kvV6.net
タイルゲームのソースとexe公開しますね。
URLリンク(drive.google.com)
58:535
19/12/17 19:35:03.93 h0rSgjCv.net
あ、27さんの見せ場を奪ってしまったかな?
まあ5x5とか残っているし頑張れ
59:535
19/12/19 23:00:30.63 XsL9bSJe.net
アルファゼロってホントに強くなるのかなぁ?
疑念が収まらないww
60:535
19/12/20 22:46:58.99 /59V9wdU.net
DeepMindからAlphaZeroの進化版「MuZero」が登場
?!?
61:535
19/12/22 18:05:10.17 XpBmBKVP.net
ちょっと燃え尽き症候群
充電期間に入ります。
62:535
19/12/26 18:46:52.48 ocod8Evw.net
19路囲連星をまたやろうかとかぼんやり考えています
63:535
19/12/30 18:05:24.77 dZSTVZh/.net
リレーショナルDBに手を出してみたい
ポスグレが第一候補
64:535
20/01/01 00:57:35.38 w82OsQtH.net
あけおめことよろ
65:310
20/01/01 21:54:10.76 b8dqHZW+.net
あけおめー。
昨年中に確定探索遡りのバックログを消化するつもりだったのが、
怪しい筋たくさん見つけて全部訂正棋譜を掘ってしまったので、
更にバックログ増加中。
66:535
20/01/07 23:13:54.32 lg7NV8/5.net
ポスグレの入門本買ったけど全く手を付けてない
さぼりモード
67:535
20/01/08 20:25:47.47 cMYKNZky.net
ポスグレ使うとして囲碁やるかライフゲーム囲碁やるか囲連星やるか心が決まらない
68:535
20/01/11 16:36:11.27 WpEoOetb.net
とりあえず8TBのHDD買った
どのゲームやるかはまだ決まってない
69:535
20/01/11 18:23:32.55 WpEoOetb.net
うお、ケースにHDD増設するスペースがないw
外付け化できるやつ買うかw
70:535
20/01/11 20:01:59.75 k+qMG4J3.net
HDD無事OSに認識されました。(最初認識されなくて焦った)
さてここからどうするか。
71:535
20/01/11 21:11:20.06 k+qMG4J3.net
は〜心が決まらないorz
72:535
20/01/12 01:24:49.63 lXXQv4sQ.net
ライフゲーム囲碁はデータ取るほど弱くなるし、19路囲連星は広すぎるし9路囲連星かなぁ
73:535
20/01/12 01:31:22.13 lXXQv4sQ.net
あれ、おかしいな。9路囲連星のソースどこかいっちゃった。
まあ気持ちも新たに1から作るのも悪くないけど。
74:535
20/01/13 21:33:57.10 1JhgLjol.net
なんかちょっとしばらくさぼってたらコーディングの腕が鈍ってるかも。
勘が働かないというか。
75:535
20/01/21 21:15:41 fnHRizf7.net
マジでモチベが湧いて来ない
ここのところ忙しかったのもあるけど
76:535
20/01/25 16:52:30.60 7FFFt+eL.net
9路囲連星のモチベが上がらないのは本当は心の底ではライフゲーム囲碁をやりたいからなのかもしれない。
77:535
20/01/25 20:21:04 7FFFt+eL.net
いや、ちがうな。手っ取り早く結果が欲しいだけなんだ。
心が弱いんだ。
78:535
20/01/28 21:14:35 /HMe/KRT.net
やっぱ教科書の通り実装しようとするよりも自分でアイディアひねり出そうともがくほうが楽しいなぁ。
教科書が大事じゃないとは言わないけど、なによりモチベが全ての活動の源泉だからな。
79:535
20/01/30 22:19:32.33 7K5l2TPR.net
対称局面で候補手を絞り込む処理書いてるんだけど、もしかして8対称じゃなくて4対称しか使えないのだろうか??
80:535
20/01/30 22:27:50.02 7K5l2TPR.net
ちょっと言葉が足りないかな?
着手後の局面が対称局面として同型となる候補手が複数ある場合、
そのうちの一つだけを代表として選択できるようにする、みたいなイメージなんだけど。
81:310
20/01/31 20:42:25 Qy9oY0qS.net
線対称と回転対称があって、線対称は縦横斜め×2の4通りと、
180度回転対称の5通りではないかと思われます。
82:535
20/01/31 21:33:38.95 AV/HbVoo.net
うーむ、線対称はそれぞれ候補手が約半分になるのはわかるが180度回転対称はどうなるんだろう?
83:310
20/01/31 23:26:47.00 Qy9oY0qS.net
半分じゃまいかと
84:535
20/01/31 23:37:10.96 AV/HbVoo.net
すいません、まだわかってません。
考えてみます。
85:535
20/01/31 23:53:18.86 AV/HbVoo.net
0 O O O O @ @ @ @ @ | 0 O O O O O O O O O | 0 @ @ @ @ @ @ @ @ @ | 0 O O O O O O O O @
1 O O O O @ @ @ @ @ | 1 O O O O O O O O O | 1 O @ @ @ @ @ @ @ @ | 1 O O O O O O O @ @
2 O O O O @ @ @ @ @ | 2 O O O O O O O O O | 2 O O @ @ @ @ @ @ @ | 2 O O O O O O @ @ @
3 O O O O @ @ @ @ @ | 3 O O O O O O O O O | 3 O O O @ @ @ @ @ @ | 3 O O O O O @ @ @ @
4 O O O O @ @ @ @ @ | 4 @ @ @ @ @ @ @ @ @ | 4 O O O O @ @ @ @ @ | 4 O O O O @ @ @ @ @
5 O O O O @ @ @ @ @ | 5 @ @ @ @ @ @ @ @ @ | 5 O O O O O @ @ @ @ | 5 O O O @ @ @ @ @ @
6 O O O O @ @ @ @ @ | 6 @ @ @ @ @ @ @ @ @ | 6 O O O O O O @ @ @ | 6 O O @ @ @ @ @ @ @
7 O O O O @ @ @ @ @ | 7 @ @ @ @ @ @ @ @ @ | 7 O O O O O O O @ @ | 7 O @ @ @ @ @ @ @ @
8 O O O O @ @ @ @ @ | 8 @ @ @ @ @ @ @ @ @ | 8 O O O O O O O O @ | 8 @ @ @ @ @ @ @ @ @
やっぱりわからないかもしれない。
例えば線対称なら上図のようになりますよね(@が着手候補)
回転対称ってどう半分になりますか?
86:535
20/02/01 01:57:04 TrLaB+Vx.net
もしかして現局面の対称性を考えるんじゃなくて着手後の対称性を考えるとわかるのだろうか?
87:310
20/02/01 09:51:10.99 rBYht6FY.net
回転対称の時は、180度回した場所と対称になるので、左上と右下みたいな感じです。
(0,0)⇔(8,8)
(0,1)⇔(8,7)
(1,0)⇔(7,8)
(1,1)⇔(7,7)
:
(m,n)⇔(8−m,8−n)
みたいになりますので、図形ではイメージしずらいかも。
88:535
20/02/01 18:31:37 TrLaB+Vx.net
うーん、回転対称確かに使えるかも。結局8対称全部使えるってことなのかなぁ?
89:535
20/02/01 23:53:26 TrLaB+Vx.net
とりあえずpostgre sqlをインストールしました。
90:535
20/02/03 21:22:57.75 blktSoE8.net
スレッドリッパー3990x今週発売らしいですね。
藤井聡太7段が狙ってるとかなんとかw
91:310
20/02/04 22:54:13 e/vxAQDk.net
なんか今日のabema中継で藤井君が新PC買ったみたいな話出てたよ。
解説陣の伝聞情報だからアテにならないかも知れないけど。
相変わらず棋譜作り続けているけど、まだまだ局面的にはスカスカな感じ(汗
あと1年くらい続けてもダメかも知れないorz
あと結構たくさんのパブリックドローが、ドローじゃなさそうな感じになってきてます。
ドローから外れる良い手(+2の分岐)が見つかった時に、それが正しいのかどうかを
チェックしています。深いところの分岐なら時間かければ完全読み切りで確定できる
のですが、浅いところで外れる場合は確認しきれません。Zebraを見ながら間違い探し
をしようにも、こういうのはZebraの評価値も揺れ動いていてあんまりあてにならず。
現在パブリックドローとして拾ってきた棋譜が99本ありますが、12本が確定間違い。
13本が、おそらく間違いという状態です。後者はDAGや対称形を考慮すると4パターン
に集約されます。
ちなみに、F5f6E6f4G5の筋は全滅しそうです。F5d6C3d3C4f4C5b3C2の筋は、たくさん
生き残っています。逆に新発見のおそらくパブリックドロー候補もたくさんあるけど、
まだ怖くて確認してません。
92:310
20/02/04 22:57:24 e/vxAQDk.net
対称局面の話ですが、MCTSで探索範囲を絞るのであれば、All Moves As First法が
有効ではないかと思います。
オセロでは全く使えない方法なので僕は詳しくありませんが。
93:535
20/02/05 21:51:06.12 gbgnOMyv.net
うーん、All Moves As First法ですか。
ライフゲーム囲碁は囲碁に似ているゲームだから有効かもしれませんが、手順はやっぱり大事な気がするんですよね〜
実装して試したわけじゃないけど、第一感として心のどこかで納得いってない部分はあります。
94:310
20/02/06 19:25:08 ecERWYVc.net
すまんライフゲーム囲碁よくわからんで適当だった。
手順が大事なら無理だね。
こちらはF5f6の筋が全滅している…。
これから間違い探しですが、大変だぁ。
95:535
20/02/06 21:50:40 zVCHlYJi.net
いや、実はむしろ囲碁よりライフゲーム囲碁のほうが有効な可能性までありますが…
やはり心のどこかで引っかかるものがあるのです。
96:310
20/02/09 10:30:31.08 oU+8Ghci.net
F5f6の筋復活。
パブリックドローリスト99件に対して、6パターン12本の棋譜が確定間違い。
そのほか3パターン9本のおそらくパブリックドローじゃない疑い。
97:535
20/02/09 14:41:50 zJ1T76cB.net
あああ、まったく頑張れない
今日も虚しく時間だけが過ぎて行く
Orz
98:535
20/02/09 19:12:30 ojAywroZ.net
SQLのテーブルって一回定義しちゃって運用始まっちゃうと中々変えれないイメージがあって踏ん切りがつかない
それなら初めからテーブル分割気味に定義したほうがいいのだろうか?
99:535
20/02/09 19:47:31 ojAywroZ.net
テーブルに予備項目もたせて後から項目増やしたくなったらそれ使うみたいな手法もないことはないな。
最善策ではないにしても。
100:535
20/02/10 20:30:44.20 RVFxecd9.net
軽く計算してみたけど8TBのHDDをもってしても12〜13手くらいしか全記憶できないっぽいな
うーむ
101:535
20/02/10 21:09:48.48 RVFxecd9.net
盤面情報と勝率情報をテーブル分けてidでjoinする方向で検討。
親子関係もテーブルに持つようにするかも。
102:310
20/02/10 21:49:59.84 88R3xHqQ.net
F5f6の筋また死亡。
死亡復活を繰り返して3回目くらいに復活安定した筋もあるので、まだまだかかるかも(汗
というか、こういう作業が面倒臭い。
103:535
20/02/11 15:02:56.99 5mcWafyZ.net
C++からpostgre sqlにテストデータを1件登録することに成功した。
夢が広がるなぁ
104:535
20/02/11 19:46:16.02 5mcWafyZ.net
テーブル定義は段々固まってきたけどどういう順序で探索ツリーを展開するか一番肝心なところが決まってない。
105:535
20/02/11 21:32:51.43 5mcWafyZ.net
探索が進むほど有望な局面を選択できるようにしたいがやはりMCTS系の探索だろうか?
106:310
20/02/11 21:43:38.70 gp4irkBy.net
F5f6の筋復活(汗
その代わり、F5d6E6f4とF5f6E6d6(対称形)に差が出てきて、評価値がずれた。
F5f6E6d6の棋譜をすべてF5f6E6f4に変換して、Bookにはf4系とd6系の2種類登録
しているので、ここの間では差が生じないが、例えばF5f4E3〜の筋からたまたま
F5d6E6d6とかに合流してくると、その棋譜については対称変換しないので、差が
生じてしまうという事になるかなと気が付いて、対称変換で差が生じている棋譜を
Bookから逆生成してみたところ結構な件数が…というか、ざっくり見積もって既に
3万件超え。どうやって復旧するか悩むところ。というか、おそらくこれやったらまた
F5f6の筋が死亡しそうな予感。これから対策を考えます。むむむ。
そのほか、部分的に遡って完全読み切りした時に、そこまでたどり着いていない
筋の方が良い評価値になってしまうという、Bookに生じる矛盾を解消する処理を追加。
こちらは結構綺麗にできた。
107:310
20/02/12 00:35:06 Gx8MvMLI.net
対称形の合流問題、一応のプログラムできた…と思う。
ロジック的には色々なやり方があるのだけど、処理時間とどこまでやるのかという
ところが悩みどころ。今のままで動かすか、どうするか。
ちょっと悩みたいので一旦ペンディング。
108:310
20/02/12 22:15:37 Gx8MvMLI.net
一晩寝かしてプログラム破棄(汗
もともとある対称盤面の処理ロジックを生かして、F5筋しかない棋譜をC4/D3/E6に
対称変換する事で、根本的に解決しようという方向になりました。副作用はBookが
4倍に膨れるのと、F5スタート限定だった評価関数のエラーがいったん大きくなって
しまうために、学習しなおさなければならない事です。
やってみたら、Bookサイズでかすぎてメモリーギリギリ。仕方がないので60手目まで
作っていたBookを40手目までに限定。あと敢えて残して(意図的に作って)あった、
24手目以降のベストではない分岐も別途保存して一回削除しました。
メモリ64G以上欲しい…。スレッドは16くらいで十分なので。
109:535
20/02/12 23:03:00 OxY0+llC.net
メモリ欲しいですよね〜。
110:535
20/02/12 23:12:45.08 OxY0+llC.net
Ryzen Threadripper 3990Xに最適化したDDR4-3600 256GBメモリキットがG.SKILLから
URLリンク(www.gdm.or.jp)
111:535
20/02/13 20:29:06.20 t0qxkX+C.net
今更だけど、メモリよりHDDのほうがでかいわけだが、全部メモリに乗らないとするとどうやってプログラム組めばいいか悩ましいな。
ホント今更だけど。
112:310
20/02/15 00:33:20.86 aU7p7RKo.net
スピードが必要な部分はメモリーに無いといかんわけで。
今は探索でBookを参照しているので、Bookアクセスには速度が必要なわけで。
Bookは重要だけど棋譜は既に重要ではないわけで。
棋譜はSDDに移そうかなと思っていたりします。
どうせ要所要所で保存しているわけだし、都度読み込めばみたいな。
(HDDは遅すぎるので論外かと)
ただ…今のロジックがメモリー前提なのと、棋譜ですら読み込みに数秒かかる
状態なので、できればメモリーに置いときたい。そもそも、大した容量じゃないし。
自分の場合、本体でBook読み込むのと、同時にZebraと突き合わせながら間違い
箇所探しで掘り進める用に、Bookを確認するプログラムも同時に動かしていて、
そちらでも同じサイズのBookを読み込まざるを得ないので、16Gのメモリーが
あっても、半分くらいに抑えておかないといけないという問題があります。
頭の片隅にバイナリファイルのランダムアクセスってのがちょこっとだけありますが、
それって自分用DBを作るようなものなので、悩み中。とはいえ、最終的にもしオセロ
の対戦プログラムにするのなら、今ほど探索時間気にするわけでもなし、動作環境
として要求するメモリー量が大きすぎるのもなんだかなぁと思っていたりもします。
113:310
20/02/15 00:35:39.59 aU7p7RKo.net
そんな事より、対称形サポートして棋譜作っていたら、またF5f6系が全滅して
途方に暮れていたところで、知らぬ間に復活していたり。間違い可能性高い
パブリックドロー筋が復活したと思ったら、またダメだったり。
まだ棋譜作成が足りていないという事実に直面しています。
114:310
20/02/18 00:26:29.87 xu5XdmKn.net
対称形サポートでBookはだいぶ良くなって来た感じですが、完全読み切りの探索時間
が遅くなった。まだ新しい教師データに対して学習不足なんだと思いますが、どこまで
復活するか。
残り30手読み切り時間がかかりすぎる。棋譜作成のプログラムの方は、ほぼ出来上
がってしまったので、動作具合を見ているだけになっている。何か探索高速化のネタは
無いものか。
PC一つ買って、そちらでオセロの棋譜作成させながら、別の何かの開発を始める時な
のかも知れない。
115:535
20/02/18 00:27:41.65 kv2P7/8Y.net
とりあえずモンテカルロ1000poで10〜50手打ち進めてその局面で100000po回して結果の黒番の勝利回数、スコアの合計を収集するプログラムを作成。
あんまりいい方法じゃないとはおもうけどこれだというアイディアもないしこれで一回やってみます。
116:535
20/02/18 21:44:13 kv2P7/8Y.net
マシンパワー欲しいすな。
3990xでも足りないかも。
アルゴリズム見直せと言われそうだが。
117:535
20/02/18 22:28:54 kv2P7/8Y.net
まーでも310さんも言ってるけど計算にマシン取られるとヒマですね。
AWSとか使うのも面白いかもしれないけどいかんせん金が…
118:535
20/02/20 18:12:42.14 YadOsXz6.net
夜中動かすとファンがうるさくてねれないorz
やっぱaws…
でも金が…
119:535
20/02/20 20:15:56.39 BvOV7XJR.net
でもまあ、コロナでいつポックリいくともわからないならいっそ3990x買っちゃうってのも考えようによってはなくなないな。
120:310
20/02/20 22:03:32.96 KuvbYeZk.net
たぶん感染経路不明な感染者が1000人超えたらテレビも飽きてきて
めっきり話題にならなくると思うなw
121:535
20/02/20 22:44:26.40 BvOV7XJR.net
70499種類の盤面のモンテカルロ勝率スコアデータが取れました。
これをもとにDNNをトレーニングしてみます。
122:535
20/02/21 21:02:31 /4d3LiPl.net
やっぱ素のモンテカルロに勝てない!!!
どうしてなんだ…
123:535
20/02/21 22:56:34.67 /4d3LiPl.net
単に白番有利説が急浮上www
124:535
20/02/22 00:47:13.32 j5uEDLd9.net
いや、ちがうっぽい。
うーん。
125:535
20/02/22 17:03:42.93 j5uEDLd9.net
キター!素のモンテカルロに勝ち越しました!
黒番 31勝20敗
白番 32勝19敗
126:535
20/02/22 20:31:10 j5uEDLd9.net
モンテカルロが間違える局面で間違いを訂正してそれをDNNに学習させる方法ないかなぁ
127:310
20/02/22 21:32:51.12 wHsEFeMN.net
間違える局面が特定できているて、間違えた手を訂正できるんなら、
訂正後から対戦再開させて、その棋譜で局面DB更新して、学習するとか。
特定できていなくても、基本強化学習は、対戦→DB更新&学習の
繰り返しで、徐々に間違いを訂正していく方法。もうちょっと工夫する
ならε-Greedyなどの手法で既存の棋譜の途中で無理やり別の手に
分岐させていく。その手が悪くても、「悪い手である」という認識を学習
させる事ができる。
線形計画だとモデルが上手くできていないと学習が飽和しちゃうけど、
DNNだったらある程度うまく学習してくれるかも。
128:535
20/02/22 21:53:22.17 j5uEDLd9.net
>>127
特定も訂正も現状できてないですね。
それよりひどいバグを発見して>>115で取ったデータが全て台無しになる可能性が…
129:535
20/02/22 22:00:44.31 j5uEDLd9.net
あかん、なんか全然おかしいorz
ちゃんと見直さないと…
130:535
20/02/22 22:22:49.38 j5uEDLd9.net
データ取りからやり直しますorzorzorz
131:310
20/02/23 00:56:57.70 9FygPBnT.net
間違い探しを続けるうちに、何故Zebraの評価値の方がまともに見えるか問題に
突き当りました。で、評価関数を手数毎に60種類に分割している事で、学習データ
が不足しているとか、スムージングしていないために、2手前の自分の番の盤面との
差分が取れないとかの問題があるのかなぁと思い立ちまして…。
また、4対称採用した事で学習時間も4倍になってしまいまして…。
思い切って、評価関数を1つにまとめてみたらどうだろうと思い立って、専用の学習
プロジェクトを作ってやってみました。通常数百回学習しないとまともな学習ができ
ないのですが、20回学習したところで、意外とフィットしてしまいました。学習時間も
少し減ってる気がする。
一旦評価関数の癖を変えたほうが強化学習も進むかなと思い、とりあえず本番採用
してみました。気持ち速度も速くなった気がしています。もっとも、評価関数の学習具合
によってαβのorderingも変わって速度が変わったりするので、今後学習を積み重ね
て、過学習気味になったりした時にどうなるのかは不明。
これから数日動かしてみて、良かったらこっちにしようかと思います。強いオセロAIを
作るのなら、対戦してどっちが強いとかやるのが本来なのですが、特にそういう目標も
現状あるわけでなし(汗
132:310
20/02/23 01:08:08.23 9FygPBnT.net
>>127に捕捉しとくと、
自分はGreedyな手法の精度をあげるために、浅い探索(9手)と組み合わせて、
評価値が少しだけ悪い手とか、Book登録ないのに評価値が良いとか、いくつかの
基準の訂正ロジックを作って、明らかに悪い手を排除したGreedy法をとって、
既存の棋譜に対して順次分岐を生成していく事で、Bookを埋めて行っています。
分岐は13手読みで作成していますが、この分岐も間違いがそれなりにあるため、
間違いを積み上げているのではないかという懸念もあります(汗
オセロの場合、黒白両者とも最善の場合、引き分けに収束する可能性が濃厚なため
初手から最善引き分けとなるツリーについては、先頭側からこのGreedy法で分岐を
生成し、また(後ろから)確定読み切りを優先して実行する事で、引き分け手順だけ
優先的に精度を上げています。
評価関数作るのに、こういう制約をつけた方法が良いのかは不明です。現に極端に
形勢が傾いた盤面の読み切りは、学習データが不足しているために、引き分け盤面
よりずっと時間がかかるように感じています。
133:310
20/02/23 03:01:39.99 9FygPBnT.net
げげ。>>131の奴、本番に入れて学習させたらうまく動かん…。
原因箇所は特定できたけど、そもそもBook分だけで学習していて、後半の棋譜から
教師データ作ってなかったので、件数が大幅に違う。後ろ15手分が抜けている。
が、これが入ると学習の途中で無限ループに入ってしまう。
何かのオーバフローなんだと思うけど、今は原因不明orz
134:310
20/02/23 10:00:35.35 9FygPBnT.net
たぶんなおった。
学習の進行具合インジケータの*印の数を作るところでオーバーフローして
延々と*を表示し続けてるだけだったw
こういうところで適当にint使っているのがいかん。
と、怪しそうなところをsize_tに直したら、整合性が取れなくなってワーニングの嵐w
適当にsize_tにすればよいというものでもなかったw
135:535
20/02/23 22:36:15.39 xJvwRHu1.net
オーバーフローが嫌だからついlong longを使ってしまうw
メモリ余計に食うけど。
136:535
20/02/24 18:53:46 S84dSY4F.net
タイルゲーム、完全解析した後でもそれなりに楽しめる不思議。自力では勝てないからな。
そういやconnect4より複雑で完全解析されててネットで遊べるゲームってなにかあるのかな?
137:535
20/02/25 20:37:07.39 10rOW9ls.net
データ取りなおしたので再度DNN学習させてみます。
ついでにネットワーク少し大きくしてみます。
138:535
20/02/26 20:24:56 LbNvrAvP.net
なんかDNNほぼ最悪の手を打つんだが…
真逆の学習させちまったか?
139:535
20/02/26 20:40:14 LbNvrAvP.net
試しに評価値に*-1してみたがやっぱり悪い手を打つ。
真逆ってわけでもないのか?
わけわからん
140:535
20/02/26 20:50:37.02 LbNvrAvP.net
モンテカルロ木探索の部分が間違ってたっぽい
141:535
20/02/26 21:22:57 LbNvrAvP.net
うーん、なんかアルファ碁Leeみたいに、数手前の手順を学習データとして食わせるといいかもなぁ。
石がぶつかってる時の判断がちょっとおかしいんだよなぁ
142:535
20/02/26 21:35:19 LbNvrAvP.net
もうヒューリスティックもモリモリ入れちゃおうかなぁ
143:535
20/02/27 19:12:50 7f4H7cqb.net
お、微妙に勝ち越している。
でも微妙すぎw
144:535
20/02/27 21:11:32 7f4H7cqb.net
先制攻撃を仕掛ける体制が整っているかどうかの判定が今後の課題ですね。
145:535
20/03/01 21:57:12 X+Ti9n7n.net
先制攻撃を仕掛けた時に反撃で逆に取られる確率とか学習させたら駄目かなぁ?
146:535
20/03/02 06:27:35.74 Td8MIT1I.net
ある局面に対し、それぞれの点が黒の地になる確率のベクタを返すようにDNNを学習したらどうだろう?
147:535
20/03/03 21:11:27.98 PL4UDoSq.net
前回はスコア差を評価値に学習させましたが、今回は勝率で学習させてみます。
結局セオリー通りがいいのかもしれないので。
ホントはスコア最大化はぜひともやりたいんだけど。
148:535
20/03/04 20:23:35.42 Q7ItuMwb.net
勝率で学習させたら黒番は勝ち越してますが、白番は負け越してますね。
白番でも勝てると思いましたが。
149:535
20/03/04 20:44:28.42 Q7ItuMwb.net
うお、バグ発見w
DNNが全く働いてなかったww
黒番で勝ち越したのはたまたまやなこれは。
150:535
20/03/04 21:10:05 Q7ItuMwb.net
うーん、石をくっつけて打つなぁ
もっとばらけさせたほうがいいと思うんだけど。
151:535
20/03/04 21:14:38 Q7ItuMwb.net
うーん、石がくっついているか離れているか標準偏差のようなものを出して学習パラメータに渡すとか
152:535
20/03/04 21:17:15 Q7ItuMwb.net
ホントはあんま手動で特徴量出そうとするのよくないアイディアなんだろうけど。
153:535
20/03/04 21:43:12 Q7ItuMwb.net
結局モンテカルロの勝率データだけだとだめっぽくて、いろんな戦略の中からより良いものを探すようにしたいなぁ
154:535
20/03/04 22:34:42 Q7ItuMwb.net
あれ、黒番、白番ともダブルスコアで勝ち越してる??
まだ対局数少ないからあれだけど。
155:310
20/03/04 22:39:44.37 XCbeW9Ri.net
自分は、最近、学習効率アップさせようと入れていたヒューリスティックなロジックは
見つけ次第外す方向だったりします。
棋譜作成の元ネタだけは、結構たくさん手動で追加していますが、見つけ次第追加
みたいなやり方で、偏りが出そうな気がするのと、手動追加だと入力ミスも結構あって
面倒なので、どこかで後続棋譜が少ない手順を順次自動で追加していくようにしちゃ
おうかなと思ったりしています。ただ、本当に見てるだけになっちゃうのがちょっと嫌。
そんな事より、棋譜作成のペースが速すぎて、逆順での読み切り(スコア確定)が
追い付かない。
156:535
20/03/05 20:28:15.73 P4JeNRVF.net
黒番 188勝 48敗
白番 176勝 55敗
めっちゃ勝ってる!!
157:535
20/03/05 20:45:33.61 P4JeNRVF.net
結局ポスグレ全く使ってないというw
ま、当面ポスグレは保留かなぁ
158:535
20/03/05 21:05:27 P4JeNRVF.net
とりあえず、この新しいAIで勝率データ取りなおして更に学習させるスパイラルへもっていくか。
159:535
20/03/06 20:19:27.94 1GJjUnMY.net
うお、人間(俺)に勝った!
まぐれっぽいけど
160:310
20/03/06 21:29:36.82 76Zol1eh.net
小人閑居して不善をなす…
評価関数の学習周りをいじっていたら、学習エラーが大きく(4〜5倍)なってしまった。
オプティマイザーをAdamにしてみたのが悪かったのか(バグ?)、それとも他にいじった
ところが悪かったのか。オプティマイザーを戻して、追加学習してみたけど、全然もとに
戻らない。
と言いながら、色々と溜まっていた懸案も機能追加してしまった。
結局、どうにも直らないのでウェイトを一旦クリアしてRMSpropで再学習してる最中です。
明日の朝にはまともになっているかなぁ。
161:310
20/03/06 21:39:02.84 76Zol1eh.net
行列パッケージEigenにユーザ拡張のサポート無し機能がいくつか追加されていて、
その中にTensorクラスがある事に気づいた。
速度は期待できないけど、もう一度DCNNやってみようかなぁ。
つか、もう一台PCがあれば、棋譜が既にあるので、テストできるんだよなぁ。
162:310
20/03/06 22:53:37 76Zol1eh.net
RMSpropで一から学習しなおしで、もうすぐ20エポックだけど、順調な感じ。
前回同様20回+αも回せば結構よいところに行きそうな感じ。
おかしかった時は、もともとの場所から離れて、変な局所解にトラップされていた
ような感じになっていたんだよなぁ。現状のAdamのコードにバグがあるのか調べ
たいけど、もともと参考にしたサイトが見つからない。今見つかるやつはChainerの
類の疑似コードらしく、ちょっとやそっとでは解読できないレベルの記号の羅列orz
163:535
20/03/07 01:06:05 NIcvsU6/.net
モンテカルロ+ヒューリスティックAIにも勝利!!
いい感じだ。
164:535
20/03/07 21:53:01 NIcvsU6/.net
あーもう、計算時間かかりすぎ!
あと3〜4日は計算回さないとデータが集まらない。
こんなときスレッドリッパー3990xがあれば…
165:535
20/03/07 22:30:53.08 NIcvsU6/.net
ぶっちゃけ1週間かかる計算が1日で終わるとしたら3990x買うのもありなんじゃないか…???
金がないけど。
166:310
20/03/07 22:53:18 6tZRBA6n.net
まあまあ。
自分は棋譜作成開始して、既に数年経ってる気がする(汗
途中データ飛んだりしているから、実際はもっと長い。
だんだんコツがわかって収集速度は加速的に高速化してきているけど、
今度はメモリー溢れが恐怖。
167:535
20/03/10 21:38:55.27 IkE5Ol6x.net
データもぼちぼち溜まったしDNN学習に移ります。
168:310
20/03/11 19:25:55.84 N0CjcdIm.net
Eigen UnsupportedのTensorクラスを見つけて、またぞろDCNNに興味が沸いて来ま
した。で、思い出しがてらウェブを眺めていました。前回断念したのは畳み込み層の
計算を行列で行うためのim2colのロジックを高速に行う方法が見つからなかったから
だと思い出しました(汗
しかし、気が付いてしまいました。所詮8×8のマスの定型変換で、汎用性いらないので
64ビットのローテーションとマスク値とのandというビット演算で、前処理ができてしまい
ます。そのあとで行列に変換すれば良いだけの事でした。つまりim2col関数はいらん。
もう少しDCNNの最新動向をフォローしてから、同じ棋譜を学習させて試してみたいと
思います。
169:535
20/03/11 20:59:47.72 kvcp7+Sq.net
DNN学習、損失もいい感じで減ってきました。
素のモンテカルロとの対戦に移ります。
170:535
20/03/11 21:02:33.51 kvcp7+Sq.net
実を言えば私は畳み込みはやってないんですな。
全結合でやってます。
171:535
20/03/11 21:13:45.28 kvcp7+Sq.net
お、
黒番 7勝2敗
白番 9勝0敗
これは期待が高まる!!!
172:535
20/03/11 22:57:19.64 kvcp7+Sq.net
黒番 22勝3敗
白番 20勝5敗
いいね〜いいね〜
173:535
20/03/11 23:19:03.17 kvcp7+Sq.net
そろそろソースコードのバージョン管理とかやったほうがいいのかなぁ
GitHubとか
174:310
20/03/12 00:31:25.32 CNvjXxHZ.net
GitHubとかよーわからんのだけど、コメント適当だったり、変数や関数名の英語が
変だったりするソース公開する度胸ないのを言い訳に、調べようとしていない(汗
175:名前は開発中のものです。
20/03/12 00:34:39.55 TwK5c7NK.net
プライベートプロジェクトにすればいい。昔はパブリックだけプロジェクト数無制限だったけど今はプライベートも無制限。
176:310
20/03/12 00:39:06 CNvjXxHZ.net
情報ありがとうございます。
ちと調べてみます。
前みたいにソースもデータも丸ごと飛んだら困るので。
177:名前は開発中のものです。
20/03/12 10:02:43.61 c8m7GwVr.net
GitHubの前にGitを使おう
使えるようになってからでいいよ、GitHubは
178:535
20/03/12 19:58:09.43 so1xRnaL.net
ありゃ、
黒番111勝 29敗
白番105勝 33敗
おもったほどじゃなかったorz
179:535
20/03/13 22:42:10.14 vmr0Tb8m.net
業を煮やしてヒューリスティックを実装した。
さてどうなるか。
180:535
20/03/13 23:28:51.32 vmr0Tb8m.net
ちなみにヒューリスティックの内容は石がぶつかってないときは相手の石からも自分の石からも一間以上離して打つというもの。
181:535
20/03/14 18:49:30.64 z7EfFQTc.net
くそーうまく行かねー
182:535
20/03/14 23:30:28.50 z7EfFQTc.net
あーなんか気が抜けちゃったな
次のアイディアもないし
183:310
20/03/16 00:36:34.84 FpZgJFeI.net
しばらくは棋譜の遡りを優先しようと思っていたのですが、やっぱり暇ができると
どうしても何かやりたくなってしまい、結局序盤中盤の貪欲法絡みのブラッシュアップ
をしてしまい、またまた遡り対象の棋譜を増殖させています(汗。
DLやろうか、将棋AIの勉強しようかと思い立ち、将棋AIの本などを買い込んでつらつら
眺めていたら、実現確率探索なるものを見つけてしまいました。遷移確率は評価値の
Softmaxで作れる気がしています。現在、前方の打ち切りはProbCutでやっていますが、
途中の1つの盤面の評価値が酷い状態だと、その時点で問答無用でカット対象となって
しまう懸念があります。その点、実現確率探索の方が多少ロバストなのかなぁと。逆に、
手が広い局面では探索深さが浅くなってしまう悪影響も想定できます。
とはいえ、中盤探索のロジック自体は多少の改良で済むのですが、置換表使って中盤
探索の結果を終盤探索のオーダリングに使うところは結構修正が必要な気がします。
最悪反復深化をまるっとあきらめなきゃならないかも知れません。あと、なぜか評価値
に+1〜2程度の手番加算がついたみたいになっている事から、探索深さを揃えられ
ないと、そっちからも悪影響が出る可能性があります。
かなり大幅な変更と、テストが必要なので、ちょっと躊躇しています。
プロジェクト全体コピーして別プロジェクト建てるレベルです。むむむ。
184:535
20/03/17 21:33:11.60 7xvLqO5q.net
DNN評価値の上位7手を初手から全展開するというのをやろうとしたのですが、意外とDNNの計算が重たいですね。
すぐにメモリ溢れるだろうとみていたのですが、牛歩のような計算の進み具合で、溢れるまでかなり時間かかりそうです。
185:535
20/03/17 22:41:35.63 7xvLqO5q.net
60万局面展開するのに33分かかる。
遅い。
186:535
20/03/17 22:44:36.96 7xvLqO5q.net
DNN使わないと100万局面展開するのに4秒www
うーむ
187:310
20/03/18 00:47:20.72 Wk4mfxEa.net
結局、実現確率探索に取り掛かってしまいました(汗
新規ソリューション作ってコピペ始めたところで、いずれ評価関数を整数化したかった
事を思い出して、あちこち修正開始となりました。
一応、普通のDepthバージョンと同じ深さになるように調整して、速度比較してみるつもり。
188:535
20/03/18 20:17:58.60 4pnoWutQ.net
DNNの評価値上位7手を全展開してポスグレに詰めるのを実行に移すべきかどうか迷ってる。
一応そのつもりで8TBのHDDもポスグレも用意したんだけど、あんまりいいアイディアに思えなくなってきたというか。
189:310
20/03/18 23:45:39.14 Wk4mfxEa.net
実現確率探索の中盤探索、プロトタイプのαβ版を作って癖を見ています。
実現確率は、評価値のSoftmaxで各要素を足して1.0になるように正規化するより、
最大値が1.0になるようにした方が使いやすいです。というのも、最大値をひたすら
追った枝の終了条件が綺麗に決まって最大深さを指定できるようになるからです。
1.0そのままだと終わらないので、例えば0.5にしておくと、深さnにしたい時は1÷2^n
が閾値になります。0.1の時は1÷10^nです。まあ、なんでもよいという事です。
後は各要素の差のつき具合を決める定数を調整すると、評価値が悪い手について、
どこまで探索の深さを確保するのかが決まります。ここが職人的作業なのがネック。
絞ると爆速。∞だと、ただの全幅探索になります。
速度は結構出てるのですが、調整ミスると全くダメみたいな様子が見え隠れしていて、
本当に常に使えるのか、まだ心配です。おそらくProbCutでも同じような問題がおきて
いるんじゃないかと思いますが。
次は置換表ですが、合流が発生した時の実現確率がルートによって違うので、その
時の置換表の評価値を使って良いのか悩みどころです。また、上述のように最大探索
深さを調整できるので、反復進化的に閾値を下げて行く事が可能性です。そうすると、
反復深化的に使いたくなるのが人情ですが、オーダリングにどのように反映するのが
良いのか。これも悩みどころだったりします。
要するにあと1週間くらいは遊べそうです(笑)
190:310
20/03/18 23:56:29.62 Wk4mfxEa.net
あと、裏で棋譜作成進行中ですが、評価関数の学習時に、既存データに対する
エラーが増加を始めて、過学習の傾向を示しているのですが、例えばFFOの盤面
のように教師データ中に現れない盤面に対するエラーは減少しています。
状況的には、極端な石差がついている盤面の評価値が、石差ほどの評価値になって
おらず、じわじわと汎化が進んでいる一方、±0近傍の盤面は既に多いため、過学習
気味になっているのかなぁと推測しています。
とはいえ、非常に気持ち悪いです。
というわけで、ちょっと工夫をして石差が大きい棋譜を優先的に遡りチェック対象にしたり、
新規の自己対局するときに石差が大きくなる(悪い)進行も作るようにする事で、ほんの
少しですが、石差が大きい棋譜が増えるようにしてみました。まあ気休めです。
191:310
20/03/19 23:17:05 opMYHtHc.net
実現確率探索の中盤探索ができました。置換表と並列処理のところまでです。
反復深化→読み切り処理までです。置換表というか、オーダリング処理を結構修正。
反復深化まではそこそこ機能していますが、置換表経由で読み切り処理の高速化が
性能が出ません。置換表経由で、中盤探索の結果を用いて終盤探索のオーダリング
をするところで、置換表データの不足があったり、オーダリングの間違いが生じて、
無駄な探索をしているように思います。
とすると、これは読み切り処理を前提とすると結構致命的な問題な気がします。
もちろん、まだバグや仕様ミスの可能性もありますが。というわけで、Solver関係には
使えない可能性が出てきました。
また、評価関数で実現確率を導いているので、浅い段階での間違いに対して、探索
対象をロックしてしまいやすく、深く探索していっても間違いがなかなか改まらない
傾向が見受けられます。
まあ、仮にダメでも、新バージョンにする過程で、これまでペンディングしていた細かい
修正ができますし、既存タイプの中盤探索も作ってあるので、このまま進めてみます。
192:535
20/03/20 23:24:37.61 7lhYYUd2.net
DNNの上位7手を幅優先に展開していき200万局面を上限にストップ
展開したものをminmaxで評価値を再計算。
その結果をDNNに学習させようとしています。
ポスグレの出番はいまのところないw
193:310
20/03/21 02:31:57.66 XYOBIhf/.net
実現確率探索で、探索幅広げる方向の反復を試してみましたが効果はあまりなし。
単体で使用するとかなり早いのですが、置換表使った探索との相性がいまいち。
とりあえずSolverまで作って速度計測していますが、既存の反復深化より遅く、反復
深化無しよりは若干早いという感じで、単体の速度を利用して幅を思いっきり広げて
みましたが、こちらは逆に遅くなるという体たらく。
置換表周りでどこか間違いがあるのかなぁという気もしていますが、今のところ不明。
Solver周りでの活用は一旦置いといて、自己対局で使ってみる事にします。
194:535
20/03/21 17:30:57.63 cG9Ai74P.net
メモリ欲しい…
256GBくらい
195:535
20/03/21 18:19:45.50 cG9Ai74P.net
えー駄目だ負けるorz orz orz
なんで駄目なの???
196:535
20/03/21 18:23:26.64 cG9Ai74P.net
今回のはかなり期待してたのにorz orz orz
197:535
20/03/22 12:02:13 upkGajEt.net
棋譜見ると素のモンテカルロの動きが思っているよりずっといい。
なんでだろう?
198:310
20/03/28 00:29:51 vtZj/mQ8.net
実現確率探索というか、ソース全体見直し版が、だいたいできました。
まだデバッグ全部済んだわけではありませんが、後はログメッセージなんかの
細かいところくらいの修正かなと。
実現確率探索自体は、棋譜作成にフックを入れる感じでの使用にとどめていますが、
しばらく動かして、結果がよさそうなら切り替えようかなと思います。というか、対戦版
作るときには、中盤探索は実現確率探索で行くと思います。
で、実現確率探索と呼んでいますが、実際のところは違います。本来の実現確率は
「プロ棋譜など別途棋譜集から、よく出てくる手を回帰分析で確率化したもの」で、
よく出る手については深く探索しましょうという内容です。自分の奴は、確率を1手読み
の評価値から生成しています。1手読みにした理由は、差分計算で速く計算できる
からです。というわけで、本来は別の名前にした方が良いのですが、ネーミングセンス
が無いので放置です(笑)
他にも、本来と違う形で実装してるけど、放置してある名前が結構ありますorz
199:535
20/03/28 21:52:44.02 XqE/6uS7.net
囲碁AIでKatagoという凄く強いAIがあるのですがライフゲーム囲碁に流用できないかと思い始めた。
200:310
20/03/28 22:16:21.29 vtZj/mQ8.net
見直し版のチェックを本番やりながら進めてます。
今のところ、学習の速度が30%程度ダウンしたものの、終盤探索の速度が
30〜50%高速化している感じ。どちらも原因不明。
201:310
20/03/31 00:30:27 1mhY2vrp.net
見直し版で、遡りチェックで無駄な処理を見つけて直しました。
更に速度アップして、トータル50%強の速度アップとなりました。
まだ探索自体の速度は上がってませんが、まだ無駄があったとは。
202:310
20/04/01 23:58:19.45 SRR0rDGm.net
急に探索自体の速度アップを思い立ちまして、いくつか実行。
ヒープ領域に作っていたオーダリング処理をスタック領域に来るように修正。
置換表のHash関数の修正で、置換表のキーエントリーの偏りを減らす。
これらにより更に高速化して、トータルで前バージョンの倍速近くなった感じです。
残り26手探索処理が1時間に90件弱→160件くらい。
あと、もうちょっとやってみたい事があります。
203:名前は開発中のものです。
20/04/02 03:15:04.40 iWlfdZP3.net
katago聞いたことない
alpha zeroは使わないの?
204:535
20/04/02 19:14:11.82 9cAiWeM1.net
deep mindのオリジナルのalpha zeroは公開されてないはず。
github行くとクローンがいくつかあるけど。
katagoはKGSってネット碁会所で最高段位9dで打ってる。
205:535
20/04/02 20:00:58.76 9cAiWeM1.net
でも当たり前だけどkatagoも相当高度なプログラムなので流用するのはかなり難しそう。
206:535
20/04/02 21:24:35.34 9cAiWeM1.net
あかん、やっぱkatago相当難しい。
githubから簡単そうな奴探してお茶を濁すか…
207:310
20/04/06 22:33:27 eOx9NvDZ.net
更に少し高速化しました。
オーダリングのvectorをスタック領域の配列に変更する部分ですが、並列探索部分
にも適用しました。配列も&でアドレス渡せばSTLのalgorism周りが使えるの知りました(^^;
スレッド間でのlockも他の処理と一緒にできるので、オーバーヘッドはありません。
あと、地味にセーブの時間がかかっていたので、回数減らしました。
残り26手1000件で10時間半が、5時間40〜50分くらいまで来ました。平均20秒強。
残り25手の読み切りができていてBookで時短しているので、まったくの新規棋譜の
読み切りはもっと遅くなります。
sort部分も何とかならないかと思いましたが、もともと32件以下(オセロはたまたま
ですが次の手の上限は32)は挿入ソートになっているようです。コピペで挿入ソート
を組んで、速度比較してみましたが、有意差は出ませんでした。
件数少ない時に早くかつ安定ソートな方法が他にないか調べてみようかと思います。
208:535
20/04/10 20:40:22.22 KcO1uf/C.net
今これ見てます。
URLリンク(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: 指定されたモジュールが見つかりません。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
394日前に更新/170 KB
担当:undef