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

90: 535 2020/02/03(月)21:22 ID:blktSoE8(1) AAS
スレッドリッパー3990x今週発売らしいですね。
藤井聡太7段が狙ってるとかなんとかw
91: 310 2020/02/04(火)22:54 ID:e/vxAQDk(1/2) AAS
なんか今日のabema中継で藤井君が新PC買ったみたいな話出てたよ。
解説陣の伝聞情報だからアテにならないかも知れないけど。

相変わらず棋譜作り続けているけど、まだまだ局面的にはスカスカな感じ(汗
あと1年くらい続けてもダメかも知れないorz

あと結構たくさんのパブリックドローが、ドローじゃなさそうな感じになってきてます。
ドローから外れる良い手(+2の分岐)が見つかった時に、それが正しいのかどうかを
チェックしています。深いところの分岐なら時間かければ完全読み切りで確定できる
省8
92: 310 2020/02/04(火)22:57 ID:e/vxAQDk(2/2) AAS
対称局面の話ですが、MCTSで探索範囲を絞るのであれば、All Moves As First法が
有効ではないかと思います。

オセロでは全く使えない方法なので僕は詳しくありませんが。
93: 535 2020/02/05(水)21:51 ID:gbgnOMyv(1) AAS
うーん、All Moves As First法ですか。
ライフゲーム囲碁は囲碁に似ているゲームだから有効かもしれませんが、手順はやっぱり大事な気がするんですよね〜
実装して試したわけじゃないけど、第一感として心のどこかで納得いってない部分はあります。
94: 310 2020/02/06(木)19:25 ID:ecERWYVc(1) AAS
すまんライフゲーム囲碁よくわからんで適当だった。
手順が大事なら無理だね。

こちらはF5f6の筋が全滅している…。
これから間違い探しですが、大変だぁ。
95: 535 2020/02/06(木)21:50 ID:zVCHlYJi(1) AAS
いや、実はむしろ囲碁よりライフゲーム囲碁のほうが有効な可能性までありますが…
やはり心のどこかで引っかかるものがあるのです。
96: 310 2020/02/09(日)10:30 ID:oU+8Ghci(1) AAS
F5f6の筋復活。

パブリックドローリスト99件に対して、6パターン12本の棋譜が確定間違い。
そのほか3パターン9本のおそらくパブリックドローじゃない疑い。
97: 535 2020/02/09(日)14:41 ID:zJ1T76cB(1) AAS
あああ、まったく頑張れない
今日も虚しく時間だけが過ぎて行く
Orz
98: 535 2020/02/09(日)19:12 ID:ojAywroZ(1/2) AAS
SQLのテーブルって一回定義しちゃって運用始まっちゃうと中々変えれないイメージがあって踏ん切りがつかない
それなら初めからテーブル分割気味に定義したほうがいいのだろうか?
99: 535 2020/02/09(日)19:47 ID:ojAywroZ(2/2) AAS
テーブルに予備項目もたせて後から項目増やしたくなったらそれ使うみたいな手法もないことはないな。
最善策ではないにしても。
100: 535 2020/02/10(月)20:30 ID:RVFxecd9(1/2) AAS
軽く計算してみたけど8TBのHDDをもってしても12〜13手くらいしか全記憶できないっぽいな
うーむ
101: 535 2020/02/10(月)21:09 ID:RVFxecd9(2/2) AAS
盤面情報と勝率情報をテーブル分けてidでjoinする方向で検討。
親子関係もテーブルに持つようにするかも。
102: 310 2020/02/10(月)21:49 ID:88R3xHqQ(1) AAS
F5f6の筋また死亡。
死亡復活を繰り返して3回目くらいに復活安定した筋もあるので、まだまだかかるかも(汗
というか、こういう作業が面倒臭い。
103: 535 2020/02/11(火)15:02 ID:5mcWafyZ(1/3) AAS
C++からpostgre sqlにテストデータを1件登録することに成功した。
夢が広がるなぁ
104: 535 2020/02/11(火)19:46 ID:5mcWafyZ(2/3) AAS
テーブル定義は段々固まってきたけどどういう順序で探索ツリーを展開するか一番肝心なところが決まってない。
105: 535 2020/02/11(火)21:32 ID:5mcWafyZ(3/3) AAS
探索が進むほど有望な局面を選択できるようにしたいがやはりMCTS系の探索だろうか?
106: 310 2020/02/11(火)21:43 ID:gp4irkBy(1) AAS
F5f6の筋復活(汗

その代わり、F5d6E6f4とF5f6E6d6(対称形)に差が出てきて、評価値がずれた。
F5f6E6d6の棋譜をすべてF5f6E6f4に変換して、Bookにはf4系とd6系の2種類登録
しているので、ここの間では差が生じないが、例えばF5f4E3〜の筋からたまたま
F5d6E6d6とかに合流してくると、その棋譜については対称変換しないので、差が
生じてしまうという事になるかなと気が付いて、対称変換で差が生じている棋譜を
Bookから逆生成してみたところ結構な件数が…というか、ざっくり見積もって既に
省5
107: 310 2020/02/12(水)00:35 ID:Gx8MvMLI(1/2) AAS
対称形の合流問題、一応のプログラムできた…と思う。

ロジック的には色々なやり方があるのだけど、処理時間とどこまでやるのかという
ところが悩みどころ。今のままで動かすか、どうするか。

ちょっと悩みたいので一旦ペンディング。
108: 310 2020/02/12(水)22:15 ID:Gx8MvMLI(2/2) AAS
一晩寝かしてプログラム破棄(汗

もともとある対称盤面の処理ロジックを生かして、F5筋しかない棋譜をC4/D3/E6に
対称変換する事で、根本的に解決しようという方向になりました。副作用はBookが
4倍に膨れるのと、F5スタート限定だった評価関数のエラーがいったん大きくなって
しまうために、学習しなおさなければならない事です。

やってみたら、Bookサイズでかすぎてメモリーギリギリ。仕方がないので60手目まで
作っていたBookを40手目までに限定。あと敢えて残して(意図的に作って)あった、
省2
109: 535 2020/02/12(水)23:03 ID:OxY0+llC(1/2) AAS
メモリ欲しいですよね〜。
110: 535 2020/02/12(水)23:12 ID:OxY0+llC(2/2) AAS
Ryzen Threadripper 3990Xに最適化したDDR4-3600 256GBメモリキットがG.SKILLから
外部リンク:www.gdm.or.jp
111: 535 2020/02/13(木)20:29 ID:t0qxkX+C(1) AAS
今更だけど、メモリよりHDDのほうがでかいわけだが、全部メモリに乗らないとするとどうやってプログラム組めばいいか悩ましいな。
ホント今更だけど。
112: 310 2020/02/15(土)00:33 ID:aU7p7RKo(1/2) AAS
スピードが必要な部分はメモリーに無いといかんわけで。
今は探索でBookを参照しているので、Bookアクセスには速度が必要なわけで。
Bookは重要だけど棋譜は既に重要ではないわけで。
棋譜はSDDに移そうかなと思っていたりします。
どうせ要所要所で保存しているわけだし、都度読み込めばみたいな。
(HDDは遅すぎるので論外かと)

ただ…今のロジックがメモリー前提なのと、棋譜ですら読み込みに数秒かかる
省9
113: 310 2020/02/15(土)00:35 ID:aU7p7RKo(2/2) AAS
そんな事より、対称形サポートして棋譜作っていたら、またF5f6系が全滅して
途方に暮れていたところで、知らぬ間に復活していたり。間違い可能性高い
パブリックドロー筋が復活したと思ったら、またダメだったり。

まだ棋譜作成が足りていないという事実に直面しています。
114: 310 2020/02/18(火)00:26 ID:xu5XdmKn(1) AAS
対称形サポートでBookはだいぶ良くなって来た感じですが、完全読み切りの探索時間
が遅くなった。まだ新しい教師データに対して学習不足なんだと思いますが、どこまで
復活するか。

残り30手読み切り時間がかかりすぎる。棋譜作成のプログラムの方は、ほぼ出来上
がってしまったので、動作具合を見ているだけになっている。何か探索高速化のネタは
無いものか。

PC一つ買って、そちらでオセロの棋譜作成させながら、別の何かの開発を始める時な
省1
115
(1): 535 2020/02/18(火)00:27 ID:kv2P7/8Y(1/3) AAS
とりあえずモンテカルロ1000poで10〜50手打ち進めてその局面で100000po回して結果の黒番の勝利回数、スコアの合計を収集するプログラムを作成。
あんまりいい方法じゃないとはおもうけどこれだというアイディアもないしこれで一回やってみます。
116: 535 2020/02/18(火)21:44 ID:kv2P7/8Y(2/3) AAS
マシンパワー欲しいすな。
3990xでも足りないかも。

アルゴリズム見直せと言われそうだが。
117: 535 2020/02/18(火)22:28 ID:kv2P7/8Y(3/3) AAS
まーでも310さんも言ってるけど計算にマシン取られるとヒマですね。
AWSとか使うのも面白いかもしれないけどいかんせん金が…
118: 535 2020/02/20(木)18:12 ID:YadOsXz6(1) AAS
夜中動かすとファンがうるさくてねれないorz
やっぱaws…
でも金が…
119: 535 2020/02/20(木)20:15 ID:BvOV7XJR(1/2) AAS
でもまあ、コロナでいつポックリいくともわからないならいっそ3990x買っちゃうってのも考えようによってはなくなないな。
120: 310 2020/02/20(木)22:03 ID:KuvbYeZk(1) AAS
たぶん感染経路不明な感染者が1000人超えたらテレビも飽きてきて
めっきり話題にならなくると思うなw
121: 535 2020/02/20(木)22:44 ID:BvOV7XJR(2/2) AAS
70499種類の盤面のモンテカルロ勝率スコアデータが取れました。
これをもとにDNNをトレーニングしてみます。
122: 535 2020/02/21(金)21:02 ID:/4d3LiPl(1/2) AAS
やっぱ素のモンテカルロに勝てない!!!
どうしてなんだ…
123: 535 2020/02/21(金)22:56 ID:/4d3LiPl(2/2) AAS
単に白番有利説が急浮上www
124: 535 2020/02/22(土)00:47 ID:j5uEDLd9(1/6) AAS
いや、ちがうっぽい。
うーん。
125: 535 2020/02/22(土)17:03 ID:j5uEDLd9(2/6) AAS
キター!素のモンテカルロに勝ち越しました!
黒番 31勝20敗
白番 32勝19敗
126: 535 2020/02/22(土)20:31 ID:j5uEDLd9(3/6) AAS
モンテカルロが間違える局面で間違いを訂正してそれをDNNに学習させる方法ないかなぁ
127
(2): 310 2020/02/22(土)21:32 ID:wHsEFeMN(1) AAS
間違える局面が特定できているて、間違えた手を訂正できるんなら、
訂正後から対戦再開させて、その棋譜で局面DB更新して、学習するとか。

特定できていなくても、基本強化学習は、対戦→DB更新&学習の
繰り返しで、徐々に間違いを訂正していく方法。もうちょっと工夫する
ならε-Greedyなどの手法で既存の棋譜の途中で無理やり別の手に
分岐させていく。その手が悪くても、「悪い手である」という認識を学習
させる事ができる。
省2
128: 535 2020/02/22(土)21:53 ID:j5uEDLd9(4/6) AAS
>>127
特定も訂正も現状できてないですね。

それよりひどいバグを発見して>>115で取ったデータが全て台無しになる可能性が…
129: 535 2020/02/22(土)22:00 ID:j5uEDLd9(5/6) AAS
あかん、なんか全然おかしいorz
ちゃんと見直さないと…
130: 535 2020/02/22(土)22:22 ID:j5uEDLd9(6/6) AAS
データ取りからやり直しますorzorzorz
131
(1): 310 2020/02/23(日)00:56 ID:9FygPBnT(1/4) AAS
間違い探しを続けるうちに、何故Zebraの評価値の方がまともに見えるか問題に
突き当りました。で、評価関数を手数毎に60種類に分割している事で、学習データ
が不足しているとか、スムージングしていないために、2手前の自分の番の盤面との
差分が取れないとかの問題があるのかなぁと思い立ちまして…。

また、4対称採用した事で学習時間も4倍になってしまいまして…。

思い切って、評価関数を1つにまとめてみたらどうだろうと思い立って、専用の学習
プロジェクトを作ってやってみました。通常数百回学習しないとまともな学習ができ
省9
132: 310 2020/02/23(日)01:08 ID:9FygPBnT(2/4) AAS
>>127に捕捉しとくと、

自分はGreedyな手法の精度をあげるために、浅い探索(9手)と組み合わせて、
評価値が少しだけ悪い手とか、Book登録ないのに評価値が良いとか、いくつかの
基準の訂正ロジックを作って、明らかに悪い手を排除したGreedy法をとって、
既存の棋譜に対して順次分岐を生成していく事で、Bookを埋めて行っています。

分岐は13手読みで作成していますが、この分岐も間違いがそれなりにあるため、
間違いを積み上げているのではないかという懸念もあります(汗
省7
133: 310 2020/02/23(日)03:01 ID:9FygPBnT(3/4) AAS
げげ。>>131の奴、本番に入れて学習させたらうまく動かん…。

原因箇所は特定できたけど、そもそもBook分だけで学習していて、後半の棋譜から
教師データ作ってなかったので、件数が大幅に違う。後ろ15手分が抜けている。

が、これが入ると学習の途中で無限ループに入ってしまう。
何かのオーバフローなんだと思うけど、今は原因不明orz
134: 310 2020/02/23(日)10:00 ID:9FygPBnT(4/4) AAS
たぶんなおった。

学習の進行具合インジケータの*印の数を作るところでオーバーフローして
延々と*を表示し続けてるだけだったw

こういうところで適当にint使っているのがいかん。
と、怪しそうなところをsize_tに直したら、整合性が取れなくなってワーニングの嵐w
適当にsize_tにすればよいというものでもなかったw
135: 535 2020/02/23(日)22:36 ID:xJvwRHu1(1) AAS
オーバーフローが嫌だからついlong longを使ってしまうw
メモリ余計に食うけど。
136: 535 2020/02/24(月)18:53 ID:S84dSY4F(1) AAS
タイルゲーム、完全解析した後でもそれなりに楽しめる不思議。自力では勝てないからな。
そういやconnect4より複雑で完全解析されててネットで遊べるゲームってなにかあるのかな?
137: 535 2020/02/25(火)20:37 ID:10rOW9ls(1) AAS
データ取りなおしたので再度DNN学習させてみます。
ついでにネットワーク少し大きくしてみます。
138: 535 2020/02/26(水)20:24 ID:LbNvrAvP(1/5) AAS
なんかDNNほぼ最悪の手を打つんだが…
真逆の学習させちまったか?
139: 535 2020/02/26(水)20:40 ID:LbNvrAvP(2/5) AAS
試しに評価値に*-1してみたがやっぱり悪い手を打つ。
真逆ってわけでもないのか?
わけわからん
140: 535 2020/02/26(水)20:50 ID:LbNvrAvP(3/5) AAS
モンテカルロ木探索の部分が間違ってたっぽい
141: 535 2020/02/26(水)21:22 ID:LbNvrAvP(4/5) AAS
うーん、なんかアルファ碁Leeみたいに、数手前の手順を学習データとして食わせるといいかもなぁ。
石がぶつかってる時の判断がちょっとおかしいんだよなぁ
142: 535 2020/02/26(水)21:35 ID:LbNvrAvP(5/5) AAS
もうヒューリスティックもモリモリ入れちゃおうかなぁ
143: 535 2020/02/27(木)19:12 ID:7f4H7cqb(1/2) AAS
お、微妙に勝ち越している。
でも微妙すぎw
144: 535 2020/02/27(木)21:11 ID:7f4H7cqb(2/2) AAS
先制攻撃を仕掛ける体制が整っているかどうかの判定が今後の課題ですね。
145: 535 2020/03/01(日)21:57 ID:X+Ti9n7n(1) AAS
先制攻撃を仕掛けた時に反撃で逆に取られる確率とか学習させたら駄目かなぁ?
146: 535 2020/03/02(月)06:27 ID:Td8MIT1I(1) AAS
ある局面に対し、それぞれの点が黒の地になる確率のベクタを返すようにDNNを学習したらどうだろう?
147: 535 2020/03/03(火)21:11 ID:PL4UDoSq(1) AAS
前回はスコア差を評価値に学習させましたが、今回は勝率で学習させてみます。
結局セオリー通りがいいのかもしれないので。
ホントはスコア最大化はぜひともやりたいんだけど。
148: 535 2020/03/04(水)20:23 ID:Q7ItuMwb(1/7) AAS
勝率で学習させたら黒番は勝ち越してますが、白番は負け越してますね。
白番でも勝てると思いましたが。
149: 535 2020/03/04(水)20:44 ID:Q7ItuMwb(2/7) AAS
うお、バグ発見w
DNNが全く働いてなかったww
黒番で勝ち越したのはたまたまやなこれは。
150: 535 2020/03/04(水)21:10 ID:Q7ItuMwb(3/7) AAS
うーん、石をくっつけて打つなぁ
もっとばらけさせたほうがいいと思うんだけど。
151: 535 2020/03/04(水)21:14 ID:Q7ItuMwb(4/7) AAS
うーん、石がくっついているか離れているか標準偏差のようなものを出して学習パラメータに渡すとか
152: 535 2020/03/04(水)21:17 ID:Q7ItuMwb(5/7) AAS
ホントはあんま手動で特徴量出そうとするのよくないアイディアなんだろうけど。
153: 535 2020/03/04(水)21:43 ID:Q7ItuMwb(6/7) AAS
結局モンテカルロの勝率データだけだとだめっぽくて、いろんな戦略の中からより良いものを探すようにしたいなぁ
154: 535 2020/03/04(水)22:34 ID:Q7ItuMwb(7/7) AAS
あれ、黒番、白番ともダブルスコアで勝ち越してる??
まだ対局数少ないからあれだけど。
155: 310 2020/03/04(水)22:39 ID:XCbeW9Ri(1) AAS
自分は、最近、学習効率アップさせようと入れていたヒューリスティックなロジックは
見つけ次第外す方向だったりします。

棋譜作成の元ネタだけは、結構たくさん手動で追加していますが、見つけ次第追加
みたいなやり方で、偏りが出そうな気がするのと、手動追加だと入力ミスも結構あって
面倒なので、どこかで後続棋譜が少ない手順を順次自動で追加していくようにしちゃ
おうかなと思ったりしています。ただ、本当に見てるだけになっちゃうのがちょっと嫌。

そんな事より、棋譜作成のペースが速すぎて、逆順での読み切り(スコア確定)が
省1
156: 535 2020/03/05(木)20:28 ID:P4JeNRVF(1/3) AAS
黒番 188勝 48敗
白番 176勝 55敗

めっちゃ勝ってる!!
157: 535 2020/03/05(木)20:45 ID:P4JeNRVF(2/3) AAS
結局ポスグレ全く使ってないというw
ま、当面ポスグレは保留かなぁ
158: 535 2020/03/05(木)21:05 ID:P4JeNRVF(3/3) AAS
とりあえず、この新しいAIで勝率データ取りなおして更に学習させるスパイラルへもっていくか。
159: 535 2020/03/06(金)20:19 ID:1GJjUnMY(1) AAS
うお、人間(俺)に勝った!
まぐれっぽいけど
160: 310 2020/03/06(金)21:29 ID:76Zol1eh(1/3) AAS
小人閑居して不善をなす…

評価関数の学習周りをいじっていたら、学習エラーが大きく(4〜5倍)なってしまった。
オプティマイザーをAdamにしてみたのが悪かったのか(バグ?)、それとも他にいじった
ところが悪かったのか。オプティマイザーを戻して、追加学習してみたけど、全然もとに
戻らない。

と言いながら、色々と溜まっていた懸案も機能追加してしまった。

結局、どうにも直らないのでウェイトを一旦クリアしてRMSpropで再学習してる最中です。
省1
161: 310 2020/03/06(金)21:39 ID:76Zol1eh(2/3) AAS
行列パッケージEigenにユーザ拡張のサポート無し機能がいくつか追加されていて、
その中にTensorクラスがある事に気づいた。

速度は期待できないけど、もう一度DCNNやってみようかなぁ。

つか、もう一台PCがあれば、棋譜が既にあるので、テストできるんだよなぁ。
162: 310 2020/03/06(金)22:53 ID:76Zol1eh(3/3) AAS
RMSpropで一から学習しなおしで、もうすぐ20エポックだけど、順調な感じ。
前回同様20回+αも回せば結構よいところに行きそうな感じ。

おかしかった時は、もともとの場所から離れて、変な局所解にトラップされていた
ような感じになっていたんだよなぁ。現状のAdamのコードにバグがあるのか調べ
たいけど、もともと参考にしたサイトが見つからない。今見つかるやつはChainerの
類の疑似コードらしく、ちょっとやそっとでは解読できないレベルの記号の羅列orz
163: 535 2020/03/07(土)01:06 ID:NIcvsU6/(1/3) AAS
モンテカルロ+ヒューリスティックAIにも勝利!!
いい感じだ。
164: 535 2020/03/07(土)21:53 ID:NIcvsU6/(2/3) AAS
あーもう、計算時間かかりすぎ!
あと3〜4日は計算回さないとデータが集まらない。

こんなときスレッドリッパー3990xがあれば…
165: 535 2020/03/07(土)22:30 ID:NIcvsU6/(3/3) AAS
ぶっちゃけ1週間かかる計算が1日で終わるとしたら3990x買うのもありなんじゃないか…???
金がないけど。
166: 310 2020/03/07(土)22:53 ID:6tZRBA6n(1) AAS
まあまあ。

自分は棋譜作成開始して、既に数年経ってる気がする(汗
途中データ飛んだりしているから、実際はもっと長い。

だんだんコツがわかって収集速度は加速的に高速化してきているけど、
今度はメモリー溢れが恐怖。
167: 535 2020/03/10(火)21:38 ID:IkE5Ol6x(1) AAS
データもぼちぼち溜まったしDNN学習に移ります。
168: 310 2020/03/11(水)19:25 ID:N0CjcdIm(1) AAS
Eigen UnsupportedのTensorクラスを見つけて、またぞろDCNNに興味が沸いて来ま
した。で、思い出しがてらウェブを眺めていました。前回断念したのは畳み込み層の
計算を行列で行うためのim2colのロジックを高速に行う方法が見つからなかったから
だと思い出しました(汗

しかし、気が付いてしまいました。所詮8×8のマスの定型変換で、汎用性いらないので
64ビットのローテーションとマスク値とのandというビット演算で、前処理ができてしまい
ます。そのあとで行列に変換すれば良いだけの事でした。つまりim2col関数はいらん。
省2
169: 535 2020/03/11(水)20:59 ID:kvcp7+Sq(1/5) AAS
DNN学習、損失もいい感じで減ってきました。
素のモンテカルロとの対戦に移ります。
170: 535 2020/03/11(水)21:02 ID:kvcp7+Sq(2/5) AAS
実を言えば私は畳み込みはやってないんですな。
全結合でやってます。
1-
あと 466 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.025s