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

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
4: 310 2019/11/23(土)22:24 ID:SYjlCoJ6(1) AAS
乙です!
13: 535 2019/11/26(火)21:34 ID:XeQhwPoh(4/4) AAS
オープンソースの強い9路囲碁のAIをどこかから持ってきて、初手から上位候補3〜4手を展開して
HDDが溢れるまでDBに登録するというのをヒマができたらちょっとやってみたい。

>>310さんに聞いてみたいですが、これ筋悪ですかね?
31: 310 2019/12/09(月)18:07 ID:U9gfgHkj(1) AAS
面白そうなゲームですね。このゲーム、千日手筋が出た時の引き分けの扱いが気になり
ます。引き分けにならないのかなぁ。

4×4なら、作者さんの様に盤面の勝敗情報をBook(DB)化して、幅優先探索で虱潰し
に穴埋めします。千日手検出して探索打ち切り筋決めながら。あと、Bookの遡り更新。
強いAIを作るというより、完全解析に向かっちゃいます。時間がどれくらいかかるのか
は不明だけどオセロの4×4は1秒未満で完全解析しちゃうのでいけるかなと。

8×8だと、何らかの評価関数が必要でしょうね。どういう評価関数にするか妄想膨らん
だけど、当面作る予定もない人が、先を予想するのもどうかと思うので、省略。

あと、偶数盤と奇数盤で結構必戦術が違ってきそうな気がしています。

つか、AI的に、ちょっと興味あるかも。
54: 310 2019/12/15(日)21:32 ID:PDoLh5O/(1) AAS
お。早速やりましたか。

必勝法の類の発想ですが、盤面に2×2のフィルタをかけたとして、3^(2×2)=81通り
を、縦接続・横接続・未定に分類して9×9の盤面に置きかえると、作戦を考えやすいの
かなと思っていたりします。
65: 310 2020/01/01(水)21:54 ID:b8dqHZW+(1) AAS
あけおめー。

昨年中に確定探索遡りのバックログを消化するつもりだったのが、
怪しい筋たくさん見つけて全部訂正棋譜を掘ってしまったので、
更にバックログ増加中。
81: 310 2020/01/31(金)20:42 ID:Qy9oY0qS(1/2) AAS
線対称と回転対称があって、線対称は縦横斜め×2の4通りと、
180度回転対称の5通りではないかと思われます。
83: 310 2020/01/31(金)23:26 ID:Qy9oY0qS(2/2) AAS
半分じゃまいかと
87: 310 2020/02/01(土)09:51 ID:rBYht6FY(1) AAS
回転対称の時は、180度回した場所と対称になるので、左上と右下みたいな感じです。

(0,0)⇔(8,8)
(0,1)⇔(8,7)
(1,0)⇔(7,8)
(1,1)⇔(7,7)

(m,n)⇔(8−m,8−n)

みたいになりますので、図形ではイメージしずらいかも。
91: 310 2020/02/04(火)22:54 ID:e/vxAQDk(1/2) AAS
なんか今日のabema中継で藤井君が新PC買ったみたいな話出てたよ。
解説陣の伝聞情報だからアテにならないかも知れないけど。

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

あと結構たくさんのパブリックドローが、ドローじゃなさそうな感じになってきてます。
ドローから外れる良い手(+2の分岐)が見つかった時に、それが正しいのかどうかを
チェックしています。深いところの分岐なら時間かければ完全読み切りで確定できる
のですが、浅いところで外れる場合は確認しきれません。Zebraを見ながら間違い探し
をしようにも、こういうのはZebraの評価値も揺れ動いていてあんまりあてにならず。

現在パブリックドローとして拾ってきた棋譜が99本ありますが、12本が確定間違い。
13本が、おそらく間違いという状態です。後者はDAGや対称形を考慮すると4パターン
に集約されます。

ちなみに、F5f6E6f4G5の筋は全滅しそうです。F5d6C3d3C4f4C5b3C2の筋は、たくさん
生き残っています。逆に新発見のおそらくパブリックドロー候補もたくさんあるけど、
まだ怖くて確認してません。
92: 310 2020/02/04(火)22:57 ID:e/vxAQDk(2/2) AAS
対称局面の話ですが、MCTSで探索範囲を絞るのであれば、All Moves As First法が
有効ではないかと思います。

オセロでは全く使えない方法なので僕は詳しくありませんが。
94: 310 2020/02/06(木)19:25 ID:ecERWYVc(1) AAS
すまんライフゲーム囲碁よくわからんで適当だった。
手順が大事なら無理だね。

こちらはF5f6の筋が全滅している…。
これから間違い探しですが、大変だぁ。
96: 310 2020/02/09(日)10:30 ID:oU+8Ghci(1) AAS
F5f6の筋復活。

パブリックドローリスト99件に対して、6パターン12本の棋譜が確定間違い。
そのほか3パターン9本のおそらくパブリックドローじゃない疑い。
102: 310 2020/02/10(月)21:49 ID:88R3xHqQ(1) AAS
F5f6の筋また死亡。
死亡復活を繰り返して3回目くらいに復活安定した筋もあるので、まだまだかかるかも(汗
というか、こういう作業が面倒臭い。
106: 310 2020/02/11(火)21:43 ID:gp4irkBy(1) AAS
F5f6の筋復活(汗

その代わり、F5d6E6f4とF5f6E6d6(対称形)に差が出てきて、評価値がずれた。
F5f6E6d6の棋譜をすべてF5f6E6f4に変換して、Bookにはf4系とd6系の2種類登録
しているので、ここの間では差が生じないが、例えばF5f4E3〜の筋からたまたま
F5d6E6d6とかに合流してくると、その棋譜については対称変換しないので、差が
生じてしまうという事になるかなと気が付いて、対称変換で差が生じている棋譜を
Bookから逆生成してみたところ結構な件数が…というか、ざっくり見積もって既に
3万件超え。どうやって復旧するか悩むところ。というか、おそらくこれやったらまた
F5f6の筋が死亡しそうな予感。これから対策を考えます。むむむ。

そのほか、部分的に遡って完全読み切りした時に、そこまでたどり着いていない
筋の方が良い評価値になってしまうという、Bookに生じる矛盾を解消する処理を追加。
こちらは結構綺麗にできた。
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手目までに限定。あと敢えて残して(意図的に作って)あった、
24手目以降のベストではない分岐も別途保存して一回削除しました。

メモリ64G以上欲しい…。スレッドは16くらいで十分なので。
112: 310 2020/02/15(土)00:33 ID:aU7p7RKo(1/2) AAS
スピードが必要な部分はメモリーに無いといかんわけで。
今は探索でBookを参照しているので、Bookアクセスには速度が必要なわけで。
Bookは重要だけど棋譜は既に重要ではないわけで。
棋譜はSDDに移そうかなと思っていたりします。
どうせ要所要所で保存しているわけだし、都度読み込めばみたいな。
(HDDは遅すぎるので論外かと)

ただ…今のロジックがメモリー前提なのと、棋譜ですら読み込みに数秒かかる
状態なので、できればメモリーに置いときたい。そもそも、大した容量じゃないし。

自分の場合、本体でBook読み込むのと、同時にZebraと突き合わせながら間違い
箇所探しで掘り進める用に、Bookを確認するプログラムも同時に動かしていて、
そちらでも同じサイズのBookを読み込まざるを得ないので、16Gのメモリーが
あっても、半分くらいに抑えておかないといけないという問題があります。

頭の片隅にバイナリファイルのランダムアクセスってのがちょこっとだけありますが、
それって自分用DBを作るようなものなので、悩み中。とはいえ、最終的にもしオセロ
の対戦プログラムにするのなら、今ほど探索時間気にするわけでもなし、動作環境
として要求するメモリー量が大きすぎるのもなんだかなぁと思っていたりもします。
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一つ買って、そちらでオセロの棋譜作成させながら、別の何かの開発を始める時な
のかも知れない。
120: 310 2020/02/20(木)22:03 ID:KuvbYeZk(1) AAS
たぶん感染経路不明な感染者が1000人超えたらテレビも飽きてきて
めっきり話題にならなくると思うなw
127
(2): 310 2020/02/22(土)21:32 ID:wHsEFeMN(1) AAS
間違える局面が特定できているて、間違えた手を訂正できるんなら、
訂正後から対戦再開させて、その棋譜で局面DB更新して、学習するとか。

特定できていなくても、基本強化学習は、対戦→DB更新&学習の
繰り返しで、徐々に間違いを訂正していく方法。もうちょっと工夫する
ならε-Greedyなどの手法で既存の棋譜の途中で無理やり別の手に
分岐させていく。その手が悪くても、「悪い手である」という認識を学習
させる事ができる。

線形計画だとモデルが上手くできていないと学習が飽和しちゃうけど、
DNNだったらある程度うまく学習してくれるかも。
131
(1): 310 2020/02/23(日)00:56 ID:9FygPBnT(1/4) AAS
間違い探しを続けるうちに、何故Zebraの評価値の方がまともに見えるか問題に
突き当りました。で、評価関数を手数毎に60種類に分割している事で、学習データ
が不足しているとか、スムージングしていないために、2手前の自分の番の盤面との
差分が取れないとかの問題があるのかなぁと思い立ちまして…。

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

思い切って、評価関数を1つにまとめてみたらどうだろうと思い立って、専用の学習
プロジェクトを作ってやってみました。通常数百回学習しないとまともな学習ができ
ないのですが、20回学習したところで、意外とフィットしてしまいました。学習時間も
少し減ってる気がする。

一旦評価関数の癖を変えたほうが強化学習も進むかなと思い、とりあえず本番採用
してみました。気持ち速度も速くなった気がしています。もっとも、評価関数の学習具合
によってαβのorderingも変わって速度が変わったりするので、今後学習を積み重ね
て、過学習気味になったりした時にどうなるのかは不明。

これから数日動かしてみて、良かったらこっちにしようかと思います。強いオセロAIを
作るのなら、対戦してどっちが強いとかやるのが本来なのですが、特にそういう目標も
現状あるわけでなし(汗
132: 310 2020/02/23(日)01:08 ID:9FygPBnT(2/4) AAS
>>127に捕捉しとくと、

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

分岐は13手読みで作成していますが、この分岐も間違いがそれなりにあるため、
間違いを積み上げているのではないかという懸念もあります(汗

オセロの場合、黒白両者とも最善の場合、引き分けに収束する可能性が濃厚なため
初手から最善引き分けとなるツリーについては、先頭側からこのGreedy法で分岐を
生成し、また(後ろから)確定読み切りを優先して実行する事で、引き分け手順だけ
優先的に精度を上げています。

評価関数作るのに、こういう制約をつけた方法が良いのかは不明です。現に極端に
形勢が傾いた盤面の読み切りは、学習データが不足しているために、引き分け盤面
よりずっと時間がかかるように感じています。
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
155: 310 2020/03/04(水)22:39 ID:XCbeW9Ri(1) AAS
自分は、最近、学習効率アップさせようと入れていたヒューリスティックなロジックは
見つけ次第外す方向だったりします。

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

そんな事より、棋譜作成のペースが速すぎて、逆順での読み切り(スコア確定)が
追い付かない。
160: 310 2020/03/06(金)21:29 ID:76Zol1eh(1/3) AAS
小人閑居して不善をなす…

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

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

結局、どうにも直らないのでウェイトを一旦クリアしてRMSpropで再学習してる最中です。
明日の朝にはまともになっているかなぁ。
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
166: 310 2020/03/07(土)22:53 ID:6tZRBA6n(1) AAS
まあまあ。

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

だんだんコツがわかって収集速度は加速的に高速化してきているけど、
今度はメモリー溢れが恐怖。
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.032s