【オセロ,将棋】ボードゲーム Part3【囲碁,War】
比較的地味なボードゲーム専用のスレが欲しくて立ててみました。
前スレ
【オセロ,将棋】ボードゲーム Part2【囲碁,War】
https://mevius.5ch.net/test/read.cgi/gamedev/1508056498/ 保守って必要なんでしたっけ?
とりあえず少し書き込んどくか CPUがシングルスレッド動作で遊んじゃってるから並列化したいが難しいかな? ライフゲーム囲碁のルール的に5x5のフィルタは絶大な効力があるはずだが。
今のネットワークが行き詰まったら試してみたい。 もしかしたらGPUつかってたらGPUがネックになってCPU並列にしても高速にならないとか可能性あるんだろか?
そんなもん試してみなきゃわからんか。
うーん。 他人のコードをただ使うだけじゃなく、ちゃんと理解したほうがいいんだろな。
ぼちぼち読み解いていくのもやっていかないとな。 今日も止まってる。
中間結果をもっとこまめに吐き出すようにして止まっても再開できるようにしないとだめかなぁ 100戦ごとに中間結果を吐き出すのを20戦ごとにしました。
ベストポリシー更新も40戦中24勝で更新のところを10戦中7勝で更新にしました。
短いスパンで回数をこなす方針です。 ただ固まらないで走り続けてくれるだけでいいのになんでこんなことで躓くんだろ?
これはあれか?new マシンを買えという神のお告げか?ww オープンソースの強い9路囲碁のAIをどこかから持ってきて、初手から上位候補3〜4手を展開して
HDDが溢れるまでDBに登録するというのをヒマができたらちょっとやってみたい。
>>310さんに聞いてみたいですが、これ筋悪ですかね? お、止まってない。
当たり前のことがこんなにうれしい。 なんかcpu特化マシンとgpu特化マシンと2台用意するのが良いのかも知れない
そんな気がする お、50戦50勝ですね。
既存AIとも対戦させてみたいですが手入力はめんどくさいですね… 手入力でやってみようかと思いましたが誤入力してしまうと取り返しがつかずかなり面倒ですね。
ちょっとやってみましたがいきなり先制攻撃して反撃を食らってしまうモンテカルロの癖が見られますね。
まだ既存のモンテカルロ+ヒューリスティックAIには勝てないかな。 ベストポリシー更新こね〜〜〜
丸一日来なかった切なすぎる。orz これがシンプルで初心者向きかと
TLWIN4
http://www2u.biglobe.ne.jp/~shunbook/omocha/tlwin4.htm >>21
囲碁っぽいゲームだね。
自分がそのAI作ろうとは思わないけど、作者がこのスレに書き込んでくれるなら歓迎する。 結構昔のゲームなのか。
強いな。勝てない。まあ当たり前か。
アルファベータっぽいアルゴリズムなのかな?
いい枝刈りがあれば完全解析も夢ではないかも。
作者もう開発してないかもね。
センスいいゲームだと思います。 ん〜16マスだとすべての局面数が高々3^16=43メガか
今のマシンなら完全解析できそうな?
ていうか多分作者がもう完全解析達成してそう?。 多分今からやるなら6x6か8x8がいいサイズかな?
でも小さい盤面でも奥が深いのは確かにそう思う。 タイルゲーム紹介した人だけど作者ではないけど
ちかいうちにたたき台をあげる
これで実験することで他のゲームにも応用、流用できるはずだろうと >>27
今後、継続的に書き込むなら、なんかコテつけてくれるとありがたいです。 ここ3日くらい止まらないで動いてくれてる。
ありがたい。 面白そうなゲームですね。このゲーム、千日手筋が出た時の引き分けの扱いが気になり
ます。引き分けにならないのかなぁ。
4×4なら、作者さんの様に盤面の勝敗情報をBook(DB)化して、幅優先探索で虱潰し
に穴埋めします。千日手検出して探索打ち切り筋決めながら。あと、Bookの遡り更新。
強いAIを作るというより、完全解析に向かっちゃいます。時間がどれくらいかかるのか
は不明だけどオセロの4×4は1秒未満で完全解析しちゃうのでいけるかなと。
8×8だと、何らかの評価関数が必要でしょうね。どういう評価関数にするか妄想膨らん
だけど、当面作る予定もない人が、先を予想するのもどうかと思うので、省略。
あと、偶数盤と奇数盤で結構必戦術が違ってきそうな気がしています。
つか、AI的に、ちょっと興味あるかも。 ライフゲーム囲碁もうまく行かないし少しこのゲームに寄り道したい気持ちが出てきた。
まだやるかわからんけど。 タイルゲームのルール実装しました。
多分4x4の完全解析行けそうな感じです。 あれ意外と手ごわいかも?
まだメモリは尽きてないから様子見かなぁ 計算おわらねぇなぁ
310さんの言うように千日手あるのかなぁ
もう今日は徹夜だ このゲーム凄いギリギリのゲームバランスを達成してるのかもしれない。
まだ計算途中だけど白黒で必勝局面の数がほとんど変わらない。
凄い。 対称局面考慮すればもうちょっと速くなりそうかな。
8対称にはならないかな?4対称? これ310さんならもっと速くとけるんじゃないかなぁ。
メモリを意識しすぎたかもしれん。
もっと贅沢にメモリ使ってもよかったかも? 16手目まで読んでも探索が終わらないだと?
なんか間違えてんのかなぁ この調子だと5x5の完全解析はかなり難しいかもな。
まだ解けてないけど4x4は行けるはず。 4対称を考慮したすべての合法な局面数16050722になるっぽい。
でも完全解析はまだできてない。
反復深化っぽいアルゴリズムにしたの失敗だったか? あ、合法局面数えるの終局判定入れてなかったorz
もっと減るかな。 反復深化やめたら72秒で完全解析完了しましたw
結果は後手の勝ち。
まあバグはあるかもしれない。
310さんもやってみてほしいな〜
答え合わせしたいw 使用メモリは2GBくらい。
うーん。
なんかちょっとバグの予感がしますが。 勝った〜
一勝した。
必勝かどうかは確かめる気力なしwww
もう寝るwwww
これ以上バグが無ければ後手必勝と出ました。 今のところ完全解析にかかる時間は2分15秒
公式AIにも勝てるし多分バグも大丈夫
ちなみに5x5完全解析は絶望的
6x6くらいをアルファゼロでやってみるのも面白いかもね。 ID真っ赤だな俺ww
まあ今日は頑張ったww
久しぶりに気分いいわww 公式AIのBookのフォーマット、ドキュメントがありますね。
必勝ブックを作るのもちょっと面白そうだがさすがにそこまではやらないかな。 お。早速やりましたか。
必勝法の類の発想ですが、盤面に2×2のフィルタをかけたとして、3^(2×2)=81通り
を、縦接続・横接続・未定に分類して9×9の盤面に置きかえると、作戦を考えやすいの
かなと思っていたりします。 AIから日本語で棋理を抽出出来たら面白いなーと妄想したり。
囲碁将棋でだれかやってくれないかな。 タイルゲームはわりとツークツワンクが大事っぽいですね。 あ、27さんの見せ場を奪ってしまったかな?
まあ5x5とか残っているし頑張れ アルファゼロってホントに強くなるのかなぁ?
疑念が収まらないww DeepMindからAlphaZeroの進化版「MuZero」が登場
?!? 19路囲連星をまたやろうかとかぼんやり考えています リレーショナルDBに手を出してみたい
ポスグレが第一候補 あけおめー。
昨年中に確定探索遡りのバックログを消化するつもりだったのが、
怪しい筋たくさん見つけて全部訂正棋譜を掘ってしまったので、
更にバックログ増加中。 ポスグレの入門本買ったけど全く手を付けてない
さぼりモード ポスグレ使うとして囲碁やるかライフゲーム囲碁やるか囲連星やるか心が決まらない とりあえず8TBのHDD買った
どのゲームやるかはまだ決まってない うお、ケースにHDD増設するスペースがないw
外付け化できるやつ買うかw HDD無事OSに認識されました。(最初認識されなくて焦った)
さてここからどうするか。 ライフゲーム囲碁はデータ取るほど弱くなるし、19路囲連星は広すぎるし9路囲連星かなぁ あれ、おかしいな。9路囲連星のソースどこかいっちゃった。
まあ気持ちも新たに1から作るのも悪くないけど。 なんかちょっとしばらくさぼってたらコーディングの腕が鈍ってるかも。
勘が働かないというか。 マジでモチベが湧いて来ない
ここのところ忙しかったのもあるけど 9路囲連星のモチベが上がらないのは本当は心の底ではライフゲーム囲碁をやりたいからなのかもしれない。 いや、ちがうな。手っ取り早く結果が欲しいだけなんだ。
心が弱いんだ。 やっぱ教科書の通り実装しようとするよりも自分でアイディアひねり出そうともがくほうが楽しいなぁ。
教科書が大事じゃないとは言わないけど、なによりモチベが全ての活動の源泉だからな。 対称局面で候補手を絞り込む処理書いてるんだけど、もしかして8対称じゃなくて4対称しか使えないのだろうか?? ちょっと言葉が足りないかな?
着手後の局面が対称局面として同型となる候補手が複数ある場合、
そのうちの一つだけを代表として選択できるようにする、みたいなイメージなんだけど。 線対称と回転対称があって、線対称は縦横斜め×2の4通りと、
180度回転対称の5通りではないかと思われます。 うーむ、線対称はそれぞれ候補手が約半分になるのはわかるが180度回転対称はどうなるんだろう? 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 @ @ @ @ @ @ @ @ @
やっぱりわからないかもしれない。
例えば線対称なら上図のようになりますよね(@が着手候補)
回転対称ってどう半分になりますか? もしかして現局面の対称性を考えるんじゃなくて着手後の対称性を考えるとわかるのだろうか? 回転対称の時は、180度回した場所と対称になるので、左上と右下みたいな感じです。
(0,0)⇔(8,8)
(0,1)⇔(8,7)
(1,0)⇔(7,8)
(1,1)⇔(7,7)
:
(m,n)⇔(8−m,8−n)
みたいになりますので、図形ではイメージしずらいかも。 うーん、回転対称確かに使えるかも。結局8対称全部使えるってことなのかなぁ? とりあえずpostgre sqlをインストールしました。 スレッドリッパー3990x今週発売らしいですね。
藤井聡太7段が狙ってるとかなんとかw なんか今日のabema中継で藤井君が新PC買ったみたいな話出てたよ。
解説陣の伝聞情報だからアテにならないかも知れないけど。
相変わらず棋譜作り続けているけど、まだまだ局面的にはスカスカな感じ(汗
あと1年くらい続けてもダメかも知れないorz
あと結構たくさんのパブリックドローが、ドローじゃなさそうな感じになってきてます。
ドローから外れる良い手(+2の分岐)が見つかった時に、それが正しいのかどうかを
チェックしています。深いところの分岐なら時間かければ完全読み切りで確定できる
のですが、浅いところで外れる場合は確認しきれません。Zebraを見ながら間違い探し
をしようにも、こういうのはZebraの評価値も揺れ動いていてあんまりあてにならず。
現在パブリックドローとして拾ってきた棋譜が99本ありますが、12本が確定間違い。
13本が、おそらく間違いという状態です。後者はDAGや対称形を考慮すると4パターン
に集約されます。
ちなみに、F5f6E6f4G5の筋は全滅しそうです。F5d6C3d3C4f4C5b3C2の筋は、たくさん
生き残っています。逆に新発見のおそらくパブリックドロー候補もたくさんあるけど、
まだ怖くて確認してません。 対称局面の話ですが、MCTSで探索範囲を絞るのであれば、All Moves As First法が
有効ではないかと思います。
オセロでは全く使えない方法なので僕は詳しくありませんが。 うーん、All Moves As First法ですか。
ライフゲーム囲碁は囲碁に似ているゲームだから有効かもしれませんが、手順はやっぱり大事な気がするんですよね〜
実装して試したわけじゃないけど、第一感として心のどこかで納得いってない部分はあります。 すまんライフゲーム囲碁よくわからんで適当だった。
手順が大事なら無理だね。
こちらはF5f6の筋が全滅している…。
これから間違い探しですが、大変だぁ。 いや、実はむしろ囲碁よりライフゲーム囲碁のほうが有効な可能性までありますが…
やはり心のどこかで引っかかるものがあるのです。 F5f6の筋復活。
パブリックドローリスト99件に対して、6パターン12本の棋譜が確定間違い。
そのほか3パターン9本のおそらくパブリックドローじゃない疑い。 あああ、まったく頑張れない
今日も虚しく時間だけが過ぎて行く
Orz SQLのテーブルって一回定義しちゃって運用始まっちゃうと中々変えれないイメージがあって踏ん切りがつかない
それなら初めからテーブル分割気味に定義したほうがいいのだろうか? テーブルに予備項目もたせて後から項目増やしたくなったらそれ使うみたいな手法もないことはないな。
最善策ではないにしても。 軽く計算してみたけど8TBのHDDをもってしても12〜13手くらいしか全記憶できないっぽいな
うーむ 盤面情報と勝率情報をテーブル分けてidでjoinする方向で検討。
親子関係もテーブルに持つようにするかも。 F5f6の筋また死亡。
死亡復活を繰り返して3回目くらいに復活安定した筋もあるので、まだまだかかるかも(汗
というか、こういう作業が面倒臭い。 C++からpostgre sqlにテストデータを1件登録することに成功した。
夢が広がるなぁ テーブル定義は段々固まってきたけどどういう順序で探索ツリーを展開するか一番肝心なところが決まってない。 探索が進むほど有望な局面を選択できるようにしたいがやはりMCTS系の探索だろうか? F5f6の筋復活(汗
その代わり、F5d6E6f4とF5f6E6d6(対称形)に差が出てきて、評価値がずれた。
F5f6E6d6の棋譜をすべてF5f6E6f4に変換して、Bookにはf4系とd6系の2種類登録
しているので、ここの間では差が生じないが、例えばF5f4E3〜の筋からたまたま
F5d6E6d6とかに合流してくると、その棋譜については対称変換しないので、差が
生じてしまうという事になるかなと気が付いて、対称変換で差が生じている棋譜を
Bookから逆生成してみたところ結構な件数が…というか、ざっくり見積もって既に
3万件超え。どうやって復旧するか悩むところ。というか、おそらくこれやったらまた
F5f6の筋が死亡しそうな予感。これから対策を考えます。むむむ。
そのほか、部分的に遡って完全読み切りした時に、そこまでたどり着いていない
筋の方が良い評価値になってしまうという、Bookに生じる矛盾を解消する処理を追加。
こちらは結構綺麗にできた。 対称形の合流問題、一応のプログラムできた…と思う。
ロジック的には色々なやり方があるのだけど、処理時間とどこまでやるのかという
ところが悩みどころ。今のままで動かすか、どうするか。
ちょっと悩みたいので一旦ペンディング。 一晩寝かしてプログラム破棄(汗
もともとある対称盤面の処理ロジックを生かして、F5筋しかない棋譜をC4/D3/E6に
対称変換する事で、根本的に解決しようという方向になりました。副作用はBookが
4倍に膨れるのと、F5スタート限定だった評価関数のエラーがいったん大きくなって
しまうために、学習しなおさなければならない事です。
やってみたら、Bookサイズでかすぎてメモリーギリギリ。仕方がないので60手目まで
作っていたBookを40手目までに限定。あと敢えて残して(意図的に作って)あった、
24手目以降のベストではない分岐も別途保存して一回削除しました。
メモリ64G以上欲しい…。スレッドは16くらいで十分なので。 Ryzen Threadripper 3990Xに最適化したDDR4-3600 256GBメモリキットがG.SKILLから
ttp://www.gdm.or.jp/pressrelease/2020/0212/338305 今更だけど、メモリよりHDDのほうがでかいわけだが、全部メモリに乗らないとするとどうやってプログラム組めばいいか悩ましいな。
ホント今更だけど。 スピードが必要な部分はメモリーに無いといかんわけで。
今は探索でBookを参照しているので、Bookアクセスには速度が必要なわけで。
Bookは重要だけど棋譜は既に重要ではないわけで。
棋譜はSDDに移そうかなと思っていたりします。
どうせ要所要所で保存しているわけだし、都度読み込めばみたいな。
(HDDは遅すぎるので論外かと)
ただ…今のロジックがメモリー前提なのと、棋譜ですら読み込みに数秒かかる
状態なので、できればメモリーに置いときたい。そもそも、大した容量じゃないし。
自分の場合、本体でBook読み込むのと、同時にZebraと突き合わせながら間違い
箇所探しで掘り進める用に、Bookを確認するプログラムも同時に動かしていて、
そちらでも同じサイズのBookを読み込まざるを得ないので、16Gのメモリーが
あっても、半分くらいに抑えておかないといけないという問題があります。
頭の片隅にバイナリファイルのランダムアクセスってのがちょこっとだけありますが、
それって自分用DBを作るようなものなので、悩み中。とはいえ、最終的にもしオセロ
の対戦プログラムにするのなら、今ほど探索時間気にするわけでもなし、動作環境
として要求するメモリー量が大きすぎるのもなんだかなぁと思っていたりもします。 そんな事より、対称形サポートして棋譜作っていたら、またF5f6系が全滅して
途方に暮れていたところで、知らぬ間に復活していたり。間違い可能性高い
パブリックドロー筋が復活したと思ったら、またダメだったり。
まだ棋譜作成が足りていないという事実に直面しています。 対称形サポートでBookはだいぶ良くなって来た感じですが、完全読み切りの探索時間
が遅くなった。まだ新しい教師データに対して学習不足なんだと思いますが、どこまで
復活するか。
残り30手読み切り時間がかかりすぎる。棋譜作成のプログラムの方は、ほぼ出来上
がってしまったので、動作具合を見ているだけになっている。何か探索高速化のネタは
無いものか。
PC一つ買って、そちらでオセロの棋譜作成させながら、別の何かの開発を始める時な
のかも知れない。 とりあえずモンテカルロ1000poで10〜50手打ち進めてその局面で100000po回して結果の黒番の勝利回数、スコアの合計を収集するプログラムを作成。
あんまりいい方法じゃないとはおもうけどこれだというアイディアもないしこれで一回やってみます。 マシンパワー欲しいすな。
3990xでも足りないかも。
アルゴリズム見直せと言われそうだが。 まーでも310さんも言ってるけど計算にマシン取られるとヒマですね。
AWSとか使うのも面白いかもしれないけどいかんせん金が… 夜中動かすとファンがうるさくてねれないorz
やっぱaws…
でも金が… でもまあ、コロナでいつポックリいくともわからないならいっそ3990x買っちゃうってのも考えようによってはなくなないな。 たぶん感染経路不明な感染者が1000人超えたらテレビも飽きてきて
めっきり話題にならなくると思うなw 70499種類の盤面のモンテカルロ勝率スコアデータが取れました。
これをもとにDNNをトレーニングしてみます。 やっぱ素のモンテカルロに勝てない!!!
どうしてなんだ… キター!素のモンテカルロに勝ち越しました!
黒番 31勝20敗
白番 32勝19敗 モンテカルロが間違える局面で間違いを訂正してそれをDNNに学習させる方法ないかなぁ 間違える局面が特定できているて、間違えた手を訂正できるんなら、
訂正後から対戦再開させて、その棋譜で局面DB更新して、学習するとか。
特定できていなくても、基本強化学習は、対戦→DB更新&学習の
繰り返しで、徐々に間違いを訂正していく方法。もうちょっと工夫する
ならε-Greedyなどの手法で既存の棋譜の途中で無理やり別の手に
分岐させていく。その手が悪くても、「悪い手である」という認識を学習
させる事ができる。
線形計画だとモデルが上手くできていないと学習が飽和しちゃうけど、
DNNだったらある程度うまく学習してくれるかも。 >>127
特定も訂正も現状できてないですね。
それよりひどいバグを発見して>>115で取ったデータが全て台無しになる可能性が… あかん、なんか全然おかしいorz
ちゃんと見直さないと… 間違い探しを続けるうちに、何故Zebraの評価値の方がまともに見えるか問題に
突き当りました。で、評価関数を手数毎に60種類に分割している事で、学習データ
が不足しているとか、スムージングしていないために、2手前の自分の番の盤面との
差分が取れないとかの問題があるのかなぁと思い立ちまして…。
また、4対称採用した事で学習時間も4倍になってしまいまして…。
思い切って、評価関数を1つにまとめてみたらどうだろうと思い立って、専用の学習
プロジェクトを作ってやってみました。通常数百回学習しないとまともな学習ができ
ないのですが、20回学習したところで、意外とフィットしてしまいました。学習時間も
少し減ってる気がする。
一旦評価関数の癖を変えたほうが強化学習も進むかなと思い、とりあえず本番採用
してみました。気持ち速度も速くなった気がしています。もっとも、評価関数の学習具合
によってαβのorderingも変わって速度が変わったりするので、今後学習を積み重ね
て、過学習気味になったりした時にどうなるのかは不明。
これから数日動かしてみて、良かったらこっちにしようかと思います。強いオセロAIを
作るのなら、対戦してどっちが強いとかやるのが本来なのですが、特にそういう目標も
現状あるわけでなし(汗 >>127に捕捉しとくと、
自分はGreedyな手法の精度をあげるために、浅い探索(9手)と組み合わせて、
評価値が少しだけ悪い手とか、Book登録ないのに評価値が良いとか、いくつかの
基準の訂正ロジックを作って、明らかに悪い手を排除したGreedy法をとって、
既存の棋譜に対して順次分岐を生成していく事で、Bookを埋めて行っています。
分岐は13手読みで作成していますが、この分岐も間違いがそれなりにあるため、
間違いを積み上げているのではないかという懸念もあります(汗
オセロの場合、黒白両者とも最善の場合、引き分けに収束する可能性が濃厚なため
初手から最善引き分けとなるツリーについては、先頭側からこのGreedy法で分岐を
生成し、また(後ろから)確定読み切りを優先して実行する事で、引き分け手順だけ
優先的に精度を上げています。
評価関数作るのに、こういう制約をつけた方法が良いのかは不明です。現に極端に
形勢が傾いた盤面の読み切りは、学習データが不足しているために、引き分け盤面
よりずっと時間がかかるように感じています。 げげ。>>131の奴、本番に入れて学習させたらうまく動かん…。
原因箇所は特定できたけど、そもそもBook分だけで学習していて、後半の棋譜から
教師データ作ってなかったので、件数が大幅に違う。後ろ15手分が抜けている。
が、これが入ると学習の途中で無限ループに入ってしまう。
何かのオーバフローなんだと思うけど、今は原因不明orz たぶんなおった。
学習の進行具合インジケータの*印の数を作るところでオーバーフローして
延々と*を表示し続けてるだけだったw
こういうところで適当にint使っているのがいかん。
と、怪しそうなところをsize_tに直したら、整合性が取れなくなってワーニングの嵐w
適当にsize_tにすればよいというものでもなかったw オーバーフローが嫌だからついlong longを使ってしまうw
メモリ余計に食うけど。 タイルゲーム、完全解析した後でもそれなりに楽しめる不思議。自力では勝てないからな。
そういやconnect4より複雑で完全解析されててネットで遊べるゲームってなにかあるのかな? データ取りなおしたので再度DNN学習させてみます。
ついでにネットワーク少し大きくしてみます。 なんかDNNほぼ最悪の手を打つんだが…
真逆の学習させちまったか? 試しに評価値に*-1してみたがやっぱり悪い手を打つ。
真逆ってわけでもないのか?
わけわからん うーん、なんかアルファ碁Leeみたいに、数手前の手順を学習データとして食わせるといいかもなぁ。
石がぶつかってる時の判断がちょっとおかしいんだよなぁ もうヒューリスティックもモリモリ入れちゃおうかなぁ 先制攻撃を仕掛ける体制が整っているかどうかの判定が今後の課題ですね。 先制攻撃を仕掛けた時に反撃で逆に取られる確率とか学習させたら駄目かなぁ? ある局面に対し、それぞれの点が黒の地になる確率のベクタを返すようにDNNを学習したらどうだろう? 前回はスコア差を評価値に学習させましたが、今回は勝率で学習させてみます。
結局セオリー通りがいいのかもしれないので。
ホントはスコア最大化はぜひともやりたいんだけど。 勝率で学習させたら黒番は勝ち越してますが、白番は負け越してますね。
白番でも勝てると思いましたが。 うお、バグ発見w
DNNが全く働いてなかったww
黒番で勝ち越したのはたまたまやなこれは。 うーん、石をくっつけて打つなぁ
もっとばらけさせたほうがいいと思うんだけど。 うーん、石がくっついているか離れているか標準偏差のようなものを出して学習パラメータに渡すとか ホントはあんま手動で特徴量出そうとするのよくないアイディアなんだろうけど。 結局モンテカルロの勝率データだけだとだめっぽくて、いろんな戦略の中からより良いものを探すようにしたいなぁ あれ、黒番、白番ともダブルスコアで勝ち越してる??
まだ対局数少ないからあれだけど。 自分は、最近、学習効率アップさせようと入れていたヒューリスティックなロジックは
見つけ次第外す方向だったりします。
棋譜作成の元ネタだけは、結構たくさん手動で追加していますが、見つけ次第追加
みたいなやり方で、偏りが出そうな気がするのと、手動追加だと入力ミスも結構あって
面倒なので、どこかで後続棋譜が少ない手順を順次自動で追加していくようにしちゃ
おうかなと思ったりしています。ただ、本当に見てるだけになっちゃうのがちょっと嫌。
そんな事より、棋譜作成のペースが速すぎて、逆順での読み切り(スコア確定)が
追い付かない。 黒番 188勝 48敗
白番 176勝 55敗
めっちゃ勝ってる!! 結局ポスグレ全く使ってないというw
ま、当面ポスグレは保留かなぁ とりあえず、この新しいAIで勝率データ取りなおして更に学習させるスパイラルへもっていくか。 小人閑居して不善をなす…
評価関数の学習周りをいじっていたら、学習エラーが大きく(4〜5倍)なってしまった。
オプティマイザーをAdamにしてみたのが悪かったのか(バグ?)、それとも他にいじった
ところが悪かったのか。オプティマイザーを戻して、追加学習してみたけど、全然もとに
戻らない。
と言いながら、色々と溜まっていた懸案も機能追加してしまった。
結局、どうにも直らないのでウェイトを一旦クリアしてRMSpropで再学習してる最中です。
明日の朝にはまともになっているかなぁ。 行列パッケージEigenにユーザ拡張のサポート無し機能がいくつか追加されていて、
その中にTensorクラスがある事に気づいた。
速度は期待できないけど、もう一度DCNNやってみようかなぁ。
つか、もう一台PCがあれば、棋譜が既にあるので、テストできるんだよなぁ。 RMSpropで一から学習しなおしで、もうすぐ20エポックだけど、順調な感じ。
前回同様20回+αも回せば結構よいところに行きそうな感じ。
おかしかった時は、もともとの場所から離れて、変な局所解にトラップされていた
ような感じになっていたんだよなぁ。現状のAdamのコードにバグがあるのか調べ
たいけど、もともと参考にしたサイトが見つからない。今見つかるやつはChainerの
類の疑似コードらしく、ちょっとやそっとでは解読できないレベルの記号の羅列orz モンテカルロ+ヒューリスティックAIにも勝利!!
いい感じだ。 あーもう、計算時間かかりすぎ!
あと3〜4日は計算回さないとデータが集まらない。
こんなときスレッドリッパー3990xがあれば… ぶっちゃけ1週間かかる計算が1日で終わるとしたら3990x買うのもありなんじゃないか…???
金がないけど。 まあまあ。
自分は棋譜作成開始して、既に数年経ってる気がする(汗
途中データ飛んだりしているから、実際はもっと長い。
だんだんコツがわかって収集速度は加速的に高速化してきているけど、
今度はメモリー溢れが恐怖。 Eigen UnsupportedのTensorクラスを見つけて、またぞろDCNNに興味が沸いて来ま
した。で、思い出しがてらウェブを眺めていました。前回断念したのは畳み込み層の
計算を行列で行うためのim2colのロジックを高速に行う方法が見つからなかったから
だと思い出しました(汗
しかし、気が付いてしまいました。所詮8×8のマスの定型変換で、汎用性いらないので
64ビットのローテーションとマスク値とのandというビット演算で、前処理ができてしまい
ます。そのあとで行列に変換すれば良いだけの事でした。つまりim2col関数はいらん。
もう少しDCNNの最新動向をフォローしてから、同じ棋譜を学習させて試してみたいと
思います。 DNN学習、損失もいい感じで減ってきました。
素のモンテカルロとの対戦に移ります。 実を言えば私は畳み込みはやってないんですな。
全結合でやってます。 お、
黒番 7勝2敗
白番 9勝0敗
これは期待が高まる!!! 黒番 22勝3敗
白番 20勝5敗
いいね〜いいね〜 そろそろソースコードのバージョン管理とかやったほうがいいのかなぁ
GitHubとか GitHubとかよーわからんのだけど、コメント適当だったり、変数や関数名の英語が
変だったりするソース公開する度胸ないのを言い訳に、調べようとしていない(汗 プライベートプロジェクトにすればいい。昔はパブリックだけプロジェクト数無制限だったけど今はプライベートも無制限。 情報ありがとうございます。
ちと調べてみます。
前みたいにソースもデータも丸ごと飛んだら困るので。 GitHubの前にGitを使おう
使えるようになってからでいいよ、GitHubは ありゃ、
黒番111勝 29敗
白番105勝 33敗
おもったほどじゃなかったorz 業を煮やしてヒューリスティックを実装した。
さてどうなるか。 ちなみにヒューリスティックの内容は石がぶつかってないときは相手の石からも自分の石からも一間以上離して打つというもの。 あーなんか気が抜けちゃったな
次のアイディアもないし しばらくは棋譜の遡りを優先しようと思っていたのですが、やっぱり暇ができると
どうしても何かやりたくなってしまい、結局序盤中盤の貪欲法絡みのブラッシュアップ
をしてしまい、またまた遡り対象の棋譜を増殖させています(汗。
DLやろうか、将棋AIの勉強しようかと思い立ち、将棋AIの本などを買い込んでつらつら
眺めていたら、実現確率探索なるものを見つけてしまいました。遷移確率は評価値の
Softmaxで作れる気がしています。現在、前方の打ち切りはProbCutでやっていますが、
途中の1つの盤面の評価値が酷い状態だと、その時点で問答無用でカット対象となって
しまう懸念があります。その点、実現確率探索の方が多少ロバストなのかなぁと。逆に、
手が広い局面では探索深さが浅くなってしまう悪影響も想定できます。
とはいえ、中盤探索のロジック自体は多少の改良で済むのですが、置換表使って中盤
探索の結果を終盤探索のオーダリングに使うところは結構修正が必要な気がします。
最悪反復深化をまるっとあきらめなきゃならないかも知れません。あと、なぜか評価値
に+1〜2程度の手番加算がついたみたいになっている事から、探索深さを揃えられ
ないと、そっちからも悪影響が出る可能性があります。
かなり大幅な変更と、テストが必要なので、ちょっと躊躇しています。
プロジェクト全体コピーして別プロジェクト建てるレベルです。むむむ。 DNN評価値の上位7手を初手から全展開するというのをやろうとしたのですが、意外とDNNの計算が重たいですね。
すぐにメモリ溢れるだろうとみていたのですが、牛歩のような計算の進み具合で、溢れるまでかなり時間かかりそうです。 DNN使わないと100万局面展開するのに4秒www
うーむ 結局、実現確率探索に取り掛かってしまいました(汗
新規ソリューション作ってコピペ始めたところで、いずれ評価関数を整数化したかった
事を思い出して、あちこち修正開始となりました。
一応、普通のDepthバージョンと同じ深さになるように調整して、速度比較してみるつもり。 DNNの評価値上位7手を全展開してポスグレに詰めるのを実行に移すべきかどうか迷ってる。
一応そのつもりで8TBのHDDもポスグレも用意したんだけど、あんまりいいアイディアに思えなくなってきたというか。 実現確率探索の中盤探索、プロトタイプのαβ版を作って癖を見ています。
実現確率は、評価値のSoftmaxで各要素を足して1.0になるように正規化するより、
最大値が1.0になるようにした方が使いやすいです。というのも、最大値をひたすら
追った枝の終了条件が綺麗に決まって最大深さを指定できるようになるからです。
1.0そのままだと終わらないので、例えば0.5にしておくと、深さnにしたい時は1÷2^n
が閾値になります。0.1の時は1÷10^nです。まあ、なんでもよいという事です。
後は各要素の差のつき具合を決める定数を調整すると、評価値が悪い手について、
どこまで探索の深さを確保するのかが決まります。ここが職人的作業なのがネック。
絞ると爆速。∞だと、ただの全幅探索になります。
速度は結構出てるのですが、調整ミスると全くダメみたいな様子が見え隠れしていて、
本当に常に使えるのか、まだ心配です。おそらくProbCutでも同じような問題がおきて
いるんじゃないかと思いますが。
次は置換表ですが、合流が発生した時の実現確率がルートによって違うので、その
時の置換表の評価値を使って良いのか悩みどころです。また、上述のように最大探索
深さを調整できるので、反復進化的に閾値を下げて行く事が可能性です。そうすると、
反復深化的に使いたくなるのが人情ですが、オーダリングにどのように反映するのが
良いのか。これも悩みどころだったりします。
要するにあと1週間くらいは遊べそうです(笑) あと、裏で棋譜作成進行中ですが、評価関数の学習時に、既存データに対する
エラーが増加を始めて、過学習の傾向を示しているのですが、例えばFFOの盤面
のように教師データ中に現れない盤面に対するエラーは減少しています。
状況的には、極端な石差がついている盤面の評価値が、石差ほどの評価値になって
おらず、じわじわと汎化が進んでいる一方、±0近傍の盤面は既に多いため、過学習
気味になっているのかなぁと推測しています。
とはいえ、非常に気持ち悪いです。
というわけで、ちょっと工夫をして石差が大きい棋譜を優先的に遡りチェック対象にしたり、
新規の自己対局するときに石差が大きくなる(悪い)進行も作るようにする事で、ほんの
少しですが、石差が大きい棋譜が増えるようにしてみました。まあ気休めです。 実現確率探索の中盤探索ができました。置換表と並列処理のところまでです。
反復深化→読み切り処理までです。置換表というか、オーダリング処理を結構修正。
反復深化まではそこそこ機能していますが、置換表経由で読み切り処理の高速化が
性能が出ません。置換表経由で、中盤探索の結果を用いて終盤探索のオーダリング
をするところで、置換表データの不足があったり、オーダリングの間違いが生じて、
無駄な探索をしているように思います。
とすると、これは読み切り処理を前提とすると結構致命的な問題な気がします。
もちろん、まだバグや仕様ミスの可能性もありますが。というわけで、Solver関係には
使えない可能性が出てきました。
また、評価関数で実現確率を導いているので、浅い段階での間違いに対して、探索
対象をロックしてしまいやすく、深く探索していっても間違いがなかなか改まらない
傾向が見受けられます。
まあ、仮にダメでも、新バージョンにする過程で、これまでペンディングしていた細かい
修正ができますし、既存タイプの中盤探索も作ってあるので、このまま進めてみます。 DNNの上位7手を幅優先に展開していき200万局面を上限にストップ
展開したものをminmaxで評価値を再計算。
その結果をDNNに学習させようとしています。
ポスグレの出番はいまのところないw 実現確率探索で、探索幅広げる方向の反復を試してみましたが効果はあまりなし。
単体で使用するとかなり早いのですが、置換表使った探索との相性がいまいち。
とりあえずSolverまで作って速度計測していますが、既存の反復深化より遅く、反復
深化無しよりは若干早いという感じで、単体の速度を利用して幅を思いっきり広げて
みましたが、こちらは逆に遅くなるという体たらく。
置換表周りでどこか間違いがあるのかなぁという気もしていますが、今のところ不明。
Solver周りでの活用は一旦置いといて、自己対局で使ってみる事にします。 えー駄目だ負けるorz orz orz
なんで駄目なの??? 今回のはかなり期待してたのにorz orz orz 棋譜見ると素のモンテカルロの動きが思っているよりずっといい。
なんでだろう? 実現確率探索というか、ソース全体見直し版が、だいたいできました。
まだデバッグ全部済んだわけではありませんが、後はログメッセージなんかの
細かいところくらいの修正かなと。
実現確率探索自体は、棋譜作成にフックを入れる感じでの使用にとどめていますが、
しばらく動かして、結果がよさそうなら切り替えようかなと思います。というか、対戦版
作るときには、中盤探索は実現確率探索で行くと思います。
で、実現確率探索と呼んでいますが、実際のところは違います。本来の実現確率は
「プロ棋譜など別途棋譜集から、よく出てくる手を回帰分析で確率化したもの」で、
よく出る手については深く探索しましょうという内容です。自分の奴は、確率を1手読み
の評価値から生成しています。1手読みにした理由は、差分計算で速く計算できる
からです。というわけで、本来は別の名前にした方が良いのですが、ネーミングセンス
が無いので放置です(笑)
他にも、本来と違う形で実装してるけど、放置してある名前が結構ありますorz 囲碁AIでKatagoという凄く強いAIがあるのですがライフゲーム囲碁に流用できないかと思い始めた。 見直し版のチェックを本番やりながら進めてます。
今のところ、学習の速度が30%程度ダウンしたものの、終盤探索の速度が
30〜50%高速化している感じ。どちらも原因不明。 見直し版で、遡りチェックで無駄な処理を見つけて直しました。
更に速度アップして、トータル50%強の速度アップとなりました。
まだ探索自体の速度は上がってませんが、まだ無駄があったとは。 急に探索自体の速度アップを思い立ちまして、いくつか実行。
ヒープ領域に作っていたオーダリング処理をスタック領域に来るように修正。
置換表のHash関数の修正で、置換表のキーエントリーの偏りを減らす。
これらにより更に高速化して、トータルで前バージョンの倍速近くなった感じです。
残り26手探索処理が1時間に90件弱→160件くらい。
あと、もうちょっとやってみたい事があります。 katago聞いたことない
alpha zeroは使わないの? deep mindのオリジナルのalpha zeroは公開されてないはず。
github行くとクローンがいくつかあるけど。
katagoはKGSってネット碁会所で最高段位9dで打ってる。 でも当たり前だけどkatagoも相当高度なプログラムなので流用するのはかなり難しそう。 あかん、やっぱkatago相当難しい。
githubから簡単そうな奴探してお茶を濁すか… 更に少し高速化しました。
オーダリングのvectorをスタック領域の配列に変更する部分ですが、並列探索部分
にも適用しました。配列も&でアドレス渡せばSTLのalgorism周りが使えるの知りました(^^;
スレッド間でのlockも他の処理と一緒にできるので、オーバーヘッドはありません。
あと、地味にセーブの時間がかかっていたので、回数減らしました。
残り26手1000件で10時間半が、5時間40〜50分くらいまで来ました。平均20秒強。
残り25手の読み切りができていてBookで時短しているので、まったくの新規棋譜の
読み切りはもっと遅くなります。
sort部分も何とかならないかと思いましたが、もともと32件以下(オセロはたまたま
ですが次の手の上限は32)は挿入ソートになっているようです。コピペで挿入ソート
を組んで、速度比較してみましたが、有意差は出ませんでした。
件数少ない時に早くかつ安定ソートな方法が他にないか調べてみようかと思います。 今これ見てます。
https://github.com/hijkzzz/alpha-zero-gomoku
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: 指定されたモジュールが見つかりません。 その環境の内容見てないから詳しくはわからないけど…原因は大体これ
1. 読み込もうとしているdllが適切なパスに存在してるか
2. 読み込むdllは64bitか32bitか(ビルド構成と一致していないとダメ 32bitか64bitかは64bitしか選べないみたいです。
適切なパスに存在しているかというのはどうやってしらべればよいでしょうか。
library.pyと_library.pydをカレントディレクトリに置いたりもしてみたのですが駄目でした。
ちなみにこれはswigというのを使っていてC++をpythonから読めるようにしているようです。
library.pyと_library.pydが生成されてlibrary.pyから_library.pydをインポートするときにこけています。 github見てみましたが、中国人が下で同じような質問してますね
buildディレクトリにコンパイルされたファイルを配置しないと駄目なようです
Pythonとかライブラリのバージョンも書いてあるので合わせたほうがいいかもですね
https://github.com/hijkzzz/alpha-zero-gomoku/issues/18 ありがとうございます。
今python が3.6だったので3.7にしてみようとしたらpytorchがpipで入らず苦戦しています。 結局python 3.8.2を入れたんですが駄目っぽいorz
やっぱ無理にでも3.7にすべきか… python 3.7.6を試してみましたが駄目。
pytorchももう1.1手に入らないっぽい。
手詰まりです。 >>208 動いたらめっちゃよさそうなんだけど悔しいな〜 Ruby なら、require/load で相対パスで指定されたときに、ファイルを検索する時の場所は、$LOAD_PATH だけど、
Python にはそういうパスが無いのか?
これで、site_ruby, vendor_ruby などが、ずらずらと表示される
ruby -e 'puts $LOAD_PATH'
Python は、よく知らないけど、import _library
で、拡張子 .pyd まで探してくれるのか?
_library.pyd レスありがとうございます。
ファイルを検索する場所はsys.pathというのがあるみたいです。
表示させたら以下のようになりました。
['K:\\temp\\alpha-zero-gomoku-master_orig\\test',
'C:\\Users\\nagat\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip',
'C:\\Users\\nagat\\AppData\\Local\\Programs\\Python\\Python37\\DLLs',
'C:\\Users\\nagat\\AppData\\Local\\Programs\\Python\\Python37\\lib',
'C:\\Users\\nagat\\AppData\\Local\\Programs\\Python\\Python37',
'C:\\Users\\nagat\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages',
'..\\build']
import _library.pyd はエラーになりました。 ん、neural_network_test.pyは動いた。
どういうことだ??? import libraryの前にimport torchをつければいいのか???もしかして うおお、動いたっぽい!!!!
ありがとうございます!! leaner_test.py train 動きました!!
GUIが起動してポチポチ自己対局を始めました!!
これは期待が高まる!! とりあえず、五目並べでちゃんと強くなるかどうか2〜3日学習させてみます。 ん、GPUの使用率が1%くらいから上がりませんね。
でも0%じゃないからちゃんと使ってんのかな… お、早くも石が中央に寄り始めた??
そうだとしたら凄い。 しかし、4すら止めないw。
ホントに0からの学習なんだなぁ お、凄い!たった一日で五目並べっぽくなってる!
たまにそっぽ打つのは乱数でランダムな手を打つようになってるんでしょうね。 うお、早くも人間(俺)に勝った!!
あり得ね〜〜〜!!! 15路という非常に広い盤面でここまで早く強くなるとは… もう五目並べの学習は十分ですね。
となると次のステップはライフゲーム囲碁か囲連星を移植ですね。 ライフゲーム囲碁はパスを実装しないといけないからまずは9路囲連星かなぁ すぐにでもコード書き始めたくなるけどぐっと我慢して>>208のソースを少し読み解かねば。。。 あれ、モチベすげー湧いてくると思ったのに意外とそうでもないな…
仕事で疲れてんのかな… 実はライフゲーム囲碁を移植しようとしてたのですがパスの実装がやはり意外と難しそうです
9路囲連星に転進しようかな は〜目の前に理想のalpha zeroがあるというのになぜかモチベが湧いてこない、踏ん張りがきかない。
さぼりモードに入りつつあるorz。
ていうか思ってるより移植が工数かかる作業なのかもしれない。 9路囲連星はコードを消失していたので19路囲連星を移植してます。 多分移植完了した。バグが無ければ。
学習フェーズへ移項します。 うーん。これGUIの盤のひろさとプログラム上での盤の広さが違いますね。
まあ論理的には整合性は取れているので見た目だけの問題なので放置。 まだ学習始めたばっかなので全然見当違いのところに打ちまくるの見てて切ないw
でもまあ、五目並べではわずか一日で人間(俺)に勝てるところまで来たのだから期待して待ちましょう。 メモリ10GBくらい使ってる。
思ったよりでかい。 GPUのファンが五月蠅い。
タスクマネージャーだと1%とかなのに。
タスクマネージャーじゃ使用率ちゃんと測れないのかな? 強くなってないと思ったら致命的なバグがorz
勝敗データをパイソンに渡す個所にバグがあったようです。
丸一日の学習がパーorz ん、付けにははねよを覚えたっぽい?
だとしたら凄い。 1日学習させたけど強くなってるように見えませんね
15路五目並べと19路囲連星じゃ勝手が違うか
とりあえず1週間位は粘ってみます 強くなってませんね。
完全なランダムでないにせよ。
もう少し様子見します。 は〜じれったい。ハード性能があと10000倍くらいあればな〜 むしろ一生懸命7並ばないようにしているとさえ思えるw
バグなのかなぁ 相変わらず棋譜作成中。
プログラムはそれなりに改良しているつもりだけど、成果は全くなし。
まあ、思いついて試すのが楽しいんだけどね。
つか、逆順探索での棋譜訂正。やってるそばからあまりに間違っている筋を
見つけて、修正かける過程で、新しい棋譜どんどん増えて、バックログがどんどん
増えていく地獄になっています。まだまだ重要な分岐でも間違いというか未探索
が多すぎる。
手作業で修正箇所見つけるの面倒なので、延々やらないといけないけど、
ε-Greedy的な何か導入しようかなぁと思い始めています。 お、もしかしてポン抜き覚えたか?
しかしこの学習速度で線形の速度で強くなるとしたらとてもじゃないが時間かかりすぎるが、
ある地点から爆発的に強くなったりしないのかなぁ あるところまでは、間違いは間違いと学習するための時間かも知れませんね。 うーん、少し囲連星っぽくなってきてるかなぁ?
ま、当分様子見かな。 でもまあディープラーニングってルールも知らないネットワークが勝敗結果だけで強くなるって凄いことだよな。
人間がルール知らずに勝敗結果だけで強くなろうとしたら発狂するw 囲連星本来の棋譜とはまだまだ程遠いけど、何かをつかみつつあるような気配がする。。。
様子見続行。 あーネットワークの層増やしてみたいな。
囲連星は7目並べだから7層がちょうどよかったかも…
今デフォルトの4層でやってるんだけど。
でもいまさら後に引けないか。 まじすか
現状でもフィルタは256(デフォルト)とかなり贅沢に使ってるんですが。。。
オリジナルの作者もフィルタ数が大事と思ったのかもしれませんね。 >>256
256フィルタあるんなら流石に大丈夫そうだね。 やっぱ9路囲連星にしとけばよかったかな〜
でもいまさら後に引けない…orz うーむ、進むべきか引き返すべきか段々悩ましくなってきた。
まあもうちょい様子見続行か。。。 知性の芽生えみたいなものを全く感じないわけじゃないから打ち切るのも躊躇われるが、
いかんせん成長速度が遅いんだよなぁ。ウーム悩ましい。 囲めば石取れることはわかってるっぽいんだよなぁ
もう少し粘ろう あーパソコン複数台ほしいなぁ
でも置き場所がないからなぁ
となるとAWSとかGCPとかかなぁ
でもあれ、金がやばいらしいからなぁ 囲連星もやりたいけど、ライフゲーム囲碁もやりたいんだよなぁ。
>>208のやつはパス実装するのが難しいからなんか別の奴探してこようかなぁ。
ルール的にはオセロのクローンから移植すればライフゲーム囲碁移植しやすいはず。 打ち筋は確かに改善されてるような気がするんだよなぁ。
ただ、あまりに上達が遅い。 何で五目並べはあんなうまく行くんだろう?
やっぱ複雑度が全然違うのだろうか? どんなに早くてもleela zeroが強くなるのに必要だったぐらいの時間はかかるのかもしれないなこれ… あかん、超長期戦になりそうorz
マシンパワーがあと10000倍あればorz らちが明かないので19路囲連星はいったん止めて9路囲連星に移行します。
でもいつかは戻ってきたい。
I shall return. お、9路囲連星は結構強くなるかも。
早くもランダムではない何かを感じる。 もしかしたら19路囲連星は層の数が足りなかったってことなのかも。
9路囲連星は6層でやってます。
5目並べが4層でうまく行ったから7目並べの囲連星なら6層かな?と思ったのですが当たりだったかも。 しかしalpha zero てこの手のゲームの最終解答にちかいな。
単に移植しただけで既存ボットに勝つとは。 学習が進んだので既存ボットと対戦してみましたが、大幅に負け越しますね。。。
過学習? うーん、わからん。層数をさらに増やして学習させてみようかな…
囲碁AIにならって20層くらい一気にいってみるかな… チャネル数 384
層数 20
の超ビッグネットワークで再挑戦します。 ん、CPU使用率が上がらない?
ネットワークでかすぎたか? GPUのメモリが溢れてるっぽいorz
しょうがない、小さくするか。 GTX 1080 でもメモリ足らんとかorz
気安くいってくれるぜ うーん、もしかしたらCPUはあんま必要なくてGPUに金使ったほうがいいのかもしれないな。これは。 層増やしたけどあんまうまく行ってないのかなぁ。
それともまだまだ学習が足りないだけなのか… 棋譜作成触りすぎるとなかなかはかどらなくなるので、しばし回しっぱなし。
そろそろBookが巨大化しすぎているので、メモリーからSDDに移せないか検討中。
concurrent_unordered_mapを自作した経緯があるので、同じような感じでランダム
アクセスなDB化をしてます。確定分は探索で使うのでメモリーにおいて、速度を
必要としないアクセスをDBにしようかなと。
巨大Bookの作成処理の類を並列処理にしているので、何とか並列にできないかと
色々やっていますが、色々と罠がある。複数プロセスからの並列更新はあきらめた
けど、単一プロセスからの並列更新でロック範囲がまだいまいち。
専門書買ってコード見て勉強した方が早いんだろうけど、まあ、しばらく楽しみます。 いままで新旧のAIを比較するとき10戦中6勝以上でAI更新にしてたのを50戦中30勝以上で更新にしてみます。
もしかしたら試行回数が少なすぎて弱くなっていてもAI更新してたかもしれないので。 うぬぬ。DB化は並列諦めてみたけど、やはり更新が遅すぎる。
もうちょっと工夫してみるけど。 ただ待ってるだけってのもつらいな。
結果も出ないし。 自己対局みてると結構強そうに見えるだけどな。
公式AIと対局すると勝てねんだよな。 AlphaGoは計算資源をコスト度外視で使って1000年分対局してるから…… IT掲示板群 ttp://x0000.net/forum.aspx?id=15
学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0
UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0
連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
4Dエンジン
ttp://x0000.net/topic.aspx?id=3677-0
matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0
ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0
SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0 >>292
/ ̄⌒⌒ヽ
| / ̄ ̄ ̄ヽ
| | / \|
.| | ´ ` |
(6 つ / ちくしょう・・・
.| / /⌒⌒ヽ
| \  ̄ ノ
| / ̄
,冖 ,、 冖 / // ,. - ―- 、
`,-. -、'ヽ' └ァ --'、 〔/ / _/ ヽ
ヽ_'_ノ)_ノ `r=_ノ / / ,.フ^ー- j
,冖 ,、 ,へ / ,ィ / \
`,-. -、'ヽ' く <´ 7_// / _/^ 、`、
ヽ_'_ノ)_ノ \> / / / _ 、,.;j ヽ|
n 「 | /. | -'''" =-{_ヽ{
ll || .,ヘ / ,-、 | ,r' / ̄‐-..,フ!
ll ヽ二ノ__ { / ハ `l/ i' i _ `ヽ
l| _| ゙っ  ̄フ.rソ i' l r' ,..二''ァ ,ノ
|l (,・_,゙> / { ' ノ l /''"´ 〈/ /
ll ,冖 ,、 > >-' ;: | ! i {
l| `,-. -、'ヽ' \ l l ;. l | | !
|l ヽ_'_ノ)_ノ トー-. !. ; |. | ,. -、,...、| :l
ll ,冖 ,、 |\/ l ; l i i | l
ll `,-. -、'ヽ' iヾ l l ;: l | { j {
|l ヽ_'_ノ)_ノ { |. ゝ ;:i' `ー‐-' }
. n. n. n l | ::. \ ヽ、__ ノ
|! |! |! l | ::. `ー-`ニ''ブ
o o o ,へ l :. | Hash関数変更
DBのハッシュキーの効率が悪かったので、ちょっと考えてみた。
今まではshuffle_epi8でバイト単位シャッフルしていたのを、BMIのpextでビット単位の
シャッフルと、rotateしたものを、xorでまとめていく方法。以前よりは、ちょっと良くなった
気がする。
何をもってよくなったかの指標が欲しくなり、ネットを探索したけど、数値指標みたいなの
は見つからない。確率論の誕生日問題の反対みたいな状況なのでしばらく考えてみる。
要するに、1万人くらいの生徒がいる学校で、誰一人誕生日ではない日が何%くらい存在
するのかという類の問題です。
また、そう考えてみると、現状では直観よりかなり未使用キーが多い気がしています。
xorを繰り返してビットのオンオフをすると、いずれ立っているビット数が32個を平均と
した正規分布(二項分布)になって、一様分布にならないのではないかという疑念が。
正規分布だと、中央に近いところは重複しやすく、立っているビット数が0とか64とか
の出現確率が下がる事になります。xor繰り返すと正規分布に本当に近づいていくのか、
ちょっと検証してみたい。 DBの件
たぶんあるだろうとネットで検索してみたら、Kyoto Cabinetなるキーバリュー型の
簡易DBライブラリがある事が判明。ほかにもLevelDBとか、何種類かあるみたい。
RDB使うまでもないけど、データ量が多いとメモリーだとリソース勿体ないみたいな。
やはりみんな考える事は一緒だなと。せっかくなので導入の方向で検討。
DBの速度問題
また、おそらく1棋譜単位でのBook更新は速度的に問題ないのですが、DAG(合流)
時に、棋譜外の合流元の方の更新がされないという問題があり、学習前に一括で
再構築しています。この一括更新が件数の関係ですごく時間がかかる事が問題です。
一応、1棋譜単位で更新した時に、DAG分もちゃんと処理するロジックを検討中です。
バグさえなければ速度問題はかなり解消できるはず。とはいえ、何回もループを回す
処理となるため、速度に自信なし。 DBの件…
確定探索の時にはメモリーに確定分だけおいとくと考えていましたが、
今件数確認したらおよそ2/3は確定分として確保しなきゃならない
事に気づきました(汗
棋譜作成時はメモリーでやるしかないかも。
1棋譜更新でのDAG問題回避はやりたいかな。
Book再構築にだいたい20分くらいかかる。
DAG回避で1棋譜分更新するのが1秒として1000棋譜追加でおよそ16分。
これ以下の時間で済むならやる価値ありそう。 久々に完全読み切りでバグ発生。
ProbCutを広げながらmtd(f)している時に、どうもパス絡みで発生しているっぽい。
ProbCutによるIterative Wideningを止めたらちゃんと読み切る。
まあ、置換表絡みなんだとは思うけど、事例が少なすぎて(数か月に1回程度)、
前の記録消しちゃったので、とりあえず記録を残し、絆創膏当てて続行。
気が向いたらデバッグしてみる。可能性があるところはなんとなくわかっている
つもりだけど。
Book更新時のDAG回避は、かなり悩ましい。というか頭がこんがらがる。
未使用Hashの期待値計算も頭が未だにこんがらがってます。。 お姉さん問題で有名な、北大の湊教授のZDD を使えないの?
本も出てる katagoを使った9路囲碁の巨大Book作成、やってみようかなぁ。
難しそうだけど。 Hash関数の効率判断基準できました。
同じキーにデータが8つくらい入っているようなものもあり、それが適正かどうか
判断できなくてゴチャゴチャしていましたが、昨夜しれっと書いたように未使用キー
の数の期待値に着目したら簡単でした。
キーサイズと、データ件数からExcelなどで簡単に計算できます。
3件程度調べてみましたが、理想的な一様ランダム値で生じる未使用キー数の
期待値との差は0.1%未満で、このHash関数も一様ランダム化するものと言って
良いレベルでした。
逆に言えば、自分の典型的な使用方法だと20〜30%のキーが未使用になる
という事のようです。これはこれで…。 やっぱライフゲーム囲碁やりてぇなぁ。
ウーム悩ましい。 Hash値、1件2件…と期待値出そうと思ったら、なんとなく昔の記憶が戻ってきて、
0件の時は不要だけど、こちらではPとかCとかが必要になるような気がしてきた。
確率の勉強するかな。
ZDDちらっと見てみたけど、ちょっと目的と違うような感じがしている。
本買ってみるけど。
脱線はこれくらいにして、DAG考慮したBook更新に戻ろう。 自己流でライフゲーム囲碁に取り組むべきか。
なぜalpha zeroがうまく行かなかったのかを調査すべきか。
まあしばらくさぼりモードだけど。 ・19路盤での定石の発見とかを可視化して、強さを判断する
・まず5〜9路盤で最強目指す
俺なら後者を選択する
バグが出なくなったら前者に取り組む >>306
実際に自分で手を動かす人なら歓迎するぞ?
口先だけならいらない。 DAG時のBook更新の件、めっちゃ悩み中。
普通にやったら1件更新に14秒とかかかって使い物にならない。
逆引きDBを作ろうかと思うのだけど、結構なサイズになるので、それこそメモリーに
置きたくない。形としてはunordered_multimapになるんだけど、Kyoto Cabinetが重複
キーを許すのか英文読まなきゃならないので止まってる。
そうこうするうちに完全読み切りのバグがまた発生して、事例が3件になったので、
調査開始。2か所間違いを発見。一つ目はケアレスミス。
2つ目は最善手の直後にパスが来るケース。置換表登録はパス後、オーダリングなどで
読む時はパス前の盤面になっていた。これで値が狂う理由がいまいち理解できないの
だけど、修正したら正しい答えが出るようになった。パスの処理は本当に鬼門。
たぶんバグは取れたけど、50%くらい速度低下。どこかにまだバグがありそう。 速度低下は50%どころではなかった…150〜200%だorz orderingの中でパス処理をしていたのでmobility関数を呼びまくっているのが遅い原因
ではないかと思い、パスの処理の仕方を変えて、パスも1手とするように変更したところ、
15〜20%の速度低下まで戻りました。他にも、つられてバグが発覚したので修正。
かなりのレアケースでしか発生しないバグですが、今まで自信満々で完全読み切りは
間違っていないと思っていましたが、なんか自信なくなった。
中盤探索も同様に修正したら、浅い探索の読み筋が変わったみたいで、少しは精度が
良くなるのかなぁと期待しています。 以前もちょろっと触れたけど囲碁ディープラーニングプログラミングという本の12章にあるactor-critic法というのがまた気になり始めた。
自分なりに解釈して実装してみようかな。 またエラーが…
なんとなく記憶をたどっていくと、初段で並列処理してMap-Reduceすると、βカットの関係で
評価値は合っていても、ordering次第で間違った手を返す事を思い出しました。
で、たまたま回避策となっていた処理を>>201で外してしまったのではないかと。
並列探索だと本質的に回避できない気がするので、初段を順次処理に変更。残り空きマス
26での平均処理時間。一時は20〜25秒くらいまで来ていたのが、30秒程度に悪化orz 藤井7段凄かったね。今年中に8段行っちゃうんじゃないかと思った。
エラーの原因を冷静に見直したところ、どこをどう変えたか覚えていないレベルの
ちょっとした修正を加えたところからドツボって、修正するたびに更にバグを仕込んで
いたような。結局、元々のプログラムに戻して、速度も復旧しました。むむむ。
こういうのがあるからから、終盤探索に手を入れたくないorz
Bookの遡り修正ですが…行き詰っています。
Kyoto Cabinetはやはり単一キーしか扱えず。
メモリー上に逆引きDBを作ると、たぶんBookよりサイズが大きくなるためメモリーにおけない。
しばし悩み中。
息抜きで、棋譜作成のロジックをちょこっと修正。
同じような評価値が並んでいたり、最善手より評価値が良くなる分岐について、今までは
見つけて気になったところだけ手で追加していましたが、適度なペースで見つけて自動的
に追加する様にしました。 長期サボりモードに突入
なんか本で読んだけどモンテカルロ木探索の訪問回数をdnnの教師データとして使うようなやり方もあるらしい DB化、未だに方法が見いだせずストップしてます。
パブリックドロー臭いのにそうじゃない筋を手動で修正して、20件ほどもとに戻った。
その間に、棋譜が100万件突破しました。
が、Book眺めていると、まだまだ間違い多い。
Zebraも結構間違えているけどね。 2020/05/11 グロービス、囲碁AI「GLOBIS-AQZ」のプログラムをオープンソース化 プロジェクトの集大成としてソースコードを公開
https://www.globis.co.jp/news/release/20200511_globis.html
知らなかった。
ちょっと見てみようかなぁ なお、公開しているソースコードは対局・解析のみの実装で、学習に関する機能は含まれていません。
駄目じゃんorz ライフゲーム囲碁でモンテカルロ木探索の訪問回数をdnnの教師データにするのやり始めました。
今教師データを収集してるところです。 教師データを学習させてみましたがあんまり強くなりませんでした。orz そもそもモンテカルロ木探索を教師にしてる時点で、モンテカルロ木探索の強さを大きくは超えられないわけで。
根本的に駄目な気はしてきたorz 結局、現状、良い教師データがないと厳しい。
アルファゼロ方式の自己対局で強くなるのは1000年かかりそうだし。
むうぅ ライフゲーム囲碁で打った石が最終的に取られるかどうかを学習させてみようかと考え中 相変わらず棋譜作成しながら評価関数学習を続けています。ようやく100万件突破。
推定パブリックドローは大体700件くらいで増えたり減ったりしています。
対称形や合流も重複させていますので、重複除くと400件くらいかなぁ。
終盤は比較的多数の分岐を試しているのですが、序中盤の分岐が不足していて、
棋譜が偏っているような気がしてきたので、棋譜作成のロジックを大幅に変更して
序中盤の分岐が多くなるように。また、評価値とBook値が大きく違う分岐を再検証
するようにしてみました。これで、抜けている筋がだいぶ拾えるようになると期待。
棋譜作成中に暇な時間が多いので、試しにZebraと対戦。Zebraはランダムに
パブリックドロー筋から外れる様にできているようですが、外れたら勝てるはずが、
なかなか勝てない。Zebra26手読み、こちらは時間の都合で20手読みくらいなので
仕方が無いのですが、それにしてもBook外れた時の評価関数の精度が悪いという事に。
あと、やはり中盤探索の速度に大きな差があり、とても26手読みなどできない。
むむむ。 つか、藤井先生強すぎ。
1回勝負なら時々一発入るけど、番勝負で勝ち越せる人いないんじゃないかな。
竜王戦勝ち進んで、豊島竜王名人との番勝負が見てみたい。 そこに打ったらn手以内に反撃で取られてしまうか?を判定するルーチンを書いてAIに組み込んだら、かなり動きがよくなった。 結局、強化学習できない限り、DNNあんま意味ないんじゃ?という状態。 残念だったね<F7先生。相当疲れているんじゃないかな。まだ連戦続くので心配。
こちらは棋譜じゃんじゃか追加中。もう逆順探索で正確さを高めるなんて言ってられない。
いちいち遡りチェックするより、分岐を増やしてしまった方が早い気がしてきた。
で、Zebraと対戦させると、まだまだ穴だらけ。Zebraがわざとパブリックドローから外した
ところからが本番の対局となるのですが、そこから10〜20手の間に2回くらい間違えて
逆転される感じ。逆にZebraがほとんど間違えていない事に驚いています。評価値は怪しい
ところもあるけど、選択する手のミスが本当に少ない。Zebra24手読みに変えましたが、
こちらは17手。読む深さの差もあるのか。
デバッグ用のBookチェックプログラムを改良して、簡易対戦と棋譜訂正が外から簡単
にできるようにしました。今まではプログラム動かしていると、気が付いた訂正箇所も
いちいちプログラム止めないと追加できなかったのですが、動かしっぱなしのままで
訂正済棋譜にして適宜放り込めるようになりました。ただ、Bookが凄い勢いで増大して
いるので、メモリーがかなり危機的状況になってきました。BookチェッカーもBook全体を
読み込むので、ダブルで効いてくる。今16Gなのですが32Gは欲しい。
Zebraに負けた棋譜の手を遡って最善手順っぽいの探して訂正していくと、まだまだ
パブリックドローっぽい手順が結構見つかる。過去に間違えてパブリックドローではない
と判断している奴も結構ありそうなので、見つけられたら最終800件くらいは行くと思う。
中盤探索の速度差は、ただのProbCutとMulti-ProbCutの差かなぁ。あれ、再計算が重くて
以前は実装していたんだけど、PC壊れてソース全滅して以来手を出していないのよね。 王位戦第二局も含めて、ツエーーーーーーーーーー!って、今更ながらに思った。
人間相手ならabemaAI的40:60で不利な局面程度はひっくり返せるという事なんだろうなぁ。
あと、木村王位の体育座りが悲しかった。
棋譜作成は、自動作成で一気に大量に貪欲法かけたところ、既存の推定パブリックドロー筋
の4割くらいが、事前の分岐でパブリックドローから外れる事態に(汗
想定からズレた箇所は、見つけ次第ログに書き出して、そこから貪欲法でチェックするの
ですが、それでもパブリックドローから外れる筋については、Zebra使って徹底チェック。
自分のAIとZebraが同意見でも、読みが深まるにつれて揺れ動くZebraの評価値を見ていた
ら、なんとなくZebraが間違えていそうな着手がわかるようになってきて、その手をさらに
深堀してチェックする事で、ほぼ元の数まで戻す事ができました。たぶん、「パブリック
ドローから外れるのが正解」という筋が2系統ありまして、逆に周辺を掘って行ったら別の
パブリックドロー筋が見つかったりして、現在のところ残り30手推定パブリックドローが
780通り程度となりました。
増えたり減ったりはあるけど、今週だけで80件近く増えているので最終は1000件程度に
なってもおかしくない気がします。
もろに、人間が判断して手作業で修正みたいなのが、悲しいところ。
Zebraが無ければこんな事できないわけで。 とりあえず、>>328のAIで棋譜取り始めることにしました。
棋譜取った後の方針はまだあんまり固まってませんが。 ちょっと寄り道して4x4タイルゲームの最善手順計算してみた。
双方最善で20手で後手勝利みたい。
結構手順長いですね。 ふとやねうらおさんのサイトちょっとみてみたら、やっぱレベルたけーんだなって感じ。 一括貪欲法を何度か繰り返す事で少し落ち着いてきたみたいで、パブリックドロー候補は
850件くらいになりました。
別途、Bookの再構築を速度アップしました。今までは文字通り再構築でしたが、直したい
のはDAGから生じる矛盾の修正だったので、トップから再帰で潜って戻りながら評価値など
を更新する形にして、再構築分の手間を削減しようという目論見です。が、シングルスレッド
でしか動作しないため非常に遅い。最終的に、基本の対称形を一括処理するようにして、
2手目の分岐単位でスレッドを分割して、何とか20分から5分に短縮できました。
まだ、スレッド3つしか使えていないので、もうちょっと工夫して8スレッド全部使えるように
しようかと思っています。目論みでは2分〜3分くらいまで行けかな。 >>335
タイルゲームの最善手計算凄いですね。
5×5とか6×6にしたらどうなるんでしょうね。 bookの再構築は1分50秒台まで短縮しました。
30手読み切りのパブリックドロー候補は900件超え。
割と淡々と増えているので、ホンマかいなと不安になってきています。
過去にパブリックドローとみなした筋が、パブリックドローを外れた時に、原因となった
着手を追いかけて、間違い箇所探していて、大抵直す事ができるのですが、この新しく
棋譜にした筋の評価値が結構へんてこになっています。Zebraも時々そういう局面が
ありますが、結構遭遇します。おそらく過学習の絞り尻が、棋譜に出現していない局面
に押し込められているのだと思います。という訳で貪欲法のロジックを変更して、評価値
が怪しい局面から分岐をさせるように変更。とにかく棋譜を作りたいし、過去に間違えた
筋の訂正にもなるので、これをメインにしてみます。遡りチェックは、諦めて、棋譜の数の
暴力で正解筋を引く方向に変更。
そろそろ合流筋が増えて来たのと、FFOテストの局面が3つ棋譜から生成されたので、
手筋のカバー度は結構上がってきていると思うんだけどなぁ。
ちなみに現在118万棋譜。どこかで区切りつけたい気もしてきた。 棋譜数の暴力で130万棋譜突破。
Book確認用画面の方で手修正を掛けられるようにして、通常の棋譜作成プログラム
を動かしながら、おかしなBook値のところから後続の棋譜作成を手作業で指示して
修正がかけられるようにしました。最初は1件単位だったのが、縦深型の貪欲法で
チェック掛けられるようになり、処理時間はかかるけど効率よく修正できるようになり
ました。
となると、以前からパブリックドローの可能性が否定できないと思っている筋(Zebraで
+0〜-1程度の変化)を重点的に調べる事ができるようになりました。調査自体はドロー
ではないと確信できるまで、Zebra参考に縦深貪欲法を適用するだけですが、結構な
筋でドローが見つかりました。続いて、既存の幅優先貪欲法と30手まで遡りチェックで
ドロー筋である事を確認。幅優先貪欲法は間違いが多いので、ここで外れた筋はもう
1回縦深貪欲法でチェック。これを繰り返して、 途中で送信しちゃった。
まあ、要するに、色々棋譜作成していたら、現在ドロー候補が1000件超えました。
FJTは生きてますが、LOGISTELLOは消えました。F5d6C4g5筋がそこそこ充実。
斜め取りはF5f6E6f4G5d6からE3は消えましたが、F3とD7、もしかしたらC5も候補として浮上。
まだ、間違いがあって消える筋もあり、場合によっては200件単位でボツという事もありえ
ますが、最初は100件程度から始まった事を思えば、増えたものです。
今はとりあえずリストアップ優先ですが、最後の最後に、ガッツリとチェックの篩にかける
つもりです。どれくらい残るかなぁ。 やっちまった。操作ミスで棋譜データ飛ばした。たまたま8月20日のバックアップと、
現時点でのパブリックドローリストがあったので、現在そこから復旧中。
消えた棋譜は恐らく10万件以上orz
こういうミスが起きそうなのは認識していたし、色々プログラムも整理したいので、また
プロジェクト一から作り直しするかなぁ。 ちょっとわけあって長期で活動から離れていました。
また活動再開する予定もないのですが、このままフェードアウトするのも寂しいのでLifeGameGoのAIを公開します。
アルゴリズムはモンテカルロ木探索+>>328のヒューリスティックですね。
https://drive.google.com/file/d/1n-QaJ_Jhbb-yGMOzA993CjgVofZIKf4n/view?usp=sharing >>346のAIはそこそこ強いと思います。
vectorで公開してるやつより若干強いはず。 棋譜件数とパブリックドローリストはほぼ復活。
パブリックドロー件数は、1200件くらいのところで落ち着きそうな気が
してますが、まだしばらく増減があると思います。
ソースも整理して、気になっていたところを直しました。
これでデータ飛ばすリスクはかなり減りました。
ただ、Bookはまだまだスカスカだし、評価値もギザギザです。
棋譜が間違っていると思ったら、評価値(自作もZebraも)が間違っていた
というケースも散見され、そろそろBuroさん型の評価関数の限界が見えて
きた気がしています。
今ある棋譜を生かして、もっとフィット率が良い評価関数が作れないものか。
とはいえ、NN系は計算が重すぎるし、いまいちモチベーションがわかない。 AI作成はやってないのですがライフゲーム囲碁ってタイルゲームみたいに千日手存在するのだろうか?というのがちょっと気になってツラツラ考えています。
きちんと証明しようとすると意外と難しい ライフゲーム囲碁では千日手はなさそう。
でもうまく証明できないな。 全ての棋理を表現できる構造体作れないかな、とかちょっと妄想したけど、
もしかしてCNNでほぼ実現できてるのかな、とも思ったり。 やねうら王2019のソースを見つけてダウンロードしたけど、やっぱり他人のソースを
見るモチベーションが沸きません(汗。NNUEとかLazySMPとか興味はあるんだけど。
LazySMPは8スレッド以上だと効果が出るそうで、自分の
CNNは十分な複雑さがあれば万能近似関数になりうるので、可能性はありますが、 単純すぎる棋理で勝てちゃうゲームもつまらないし
棋理らしい棋理もなく逆転逆転ばっかりのゲームもつまらないし
理想のゲームバランスってどんなんなんだろね DeepMindのMuzeroってAtari 2600のゲームも解けるらしいけど、
冷静に考えるととんでもないことですね。 書き込み途中で送信しちゃった直後から、BBQになってます。
とりあえず仕事場からカキコ。 そろそろ書けるかな?
CNNは色の無い万能近似関数で、汎化性能なるものが幻想ならば、という前提で。
万能近似関数が正しく学習できるためには、全局面分の教師データが必要となります。
その時、万能近似関数で学習する暇があったら、全局面分の教師データでTHE BOOK
を作ってしまえば良い。これで絶対に間違えなくなる。
という事で、可能性はあるけど、それが実現できるレベルに至ったら、そもそもCNNが
必要ないという事になるのではないかと思います(汗
評価関数なるものは、そもそも全局面を列挙する事が不可能な時に、とりあえず重要そう
な局面のセットで学ばせるものではないかと思います。 >>356
どもです。
>THE BOOKを作ってしまえば良い。
最近タイルゲームでTHE BOOKをどれだけコンパクトに表現できるか?
みたいなことをツラツラ考えていたりします。
勝利局面を列挙する以上にコンパクトにできたら素敵だなと。
羽生さん100期がんばれ! cnnが汎化性能出せるかどうかはゲームによるところもあるのかな、と思ったり タイルゲームのTHE BOOKをテキストでダンプしてみました。
266MBくらいになった。
>>300のZDDで圧縮、ちょっとやってみたいかも? 藤井二冠の自作PCについて最強将棋ソフト開発者に聞いたらトンデモないことが判明した件
https://originalnews.nico/281224
コンピュータ将棋スレで拾って読んだけど、めちゃうなずいてしまった。
あと、テラショック定跡という名前でビビッて劣等感を感じていたけど100万局面とな。
今140万超の棋譜なので、局面ではその60倍になる。重複外しても1000万はあるはず。
でも、オセロの様な単純なゲームにとっても、まだ全然スカスカ。
貪欲法の効率が上がり、ついでにおかしそうな棋譜の訂正もかけるようにしたので、
以前よりは、ゴミ棋譜が減ったと思う。過去のゴミ棋譜除去にはまだ時間かかるけど。 >>361
がんばれ〜
俺はもうかなりさぼりモード入ってるからスレを盛り上げてくれると嬉しい。 ちなみにタイルゲームは盤面が小さいからしらみつぶしできるってだけで、
盤面が大きくなったら全然簡単じゃないからね。 ライフゲーム囲碁はルール上、パス機能が必須だと思ってたけど、
片方が一回合法手がなくなった時点で終局図は確定してしまうから
パス機能なしでも大丈夫だということに気づいた。
すなわちgithubからひろってきたalpha zeroで
パスを実装しなくてもライフゲーム囲碁を移植できる! パスしないと負け、パスすれば勝ちのケースはあるのでは?
ルール上、パスがオーケーなら組み込まないと別ゲームになってしまう
囲碁や将棋やオセロではパスはできないが
ルールはしらないが いや間違えた
オセロは手がなくなればパスに自動的だが
戦略上、パスもできるゲームはパスいれないと駄目だが、正確なルールは把握してない いやさらにまちがってたかも?
囲碁もいまいちで
囲碁はパスしていいルールだった気もしてきた ライフゲーム囲碁はどんな着手であってもパスより自分の不利に働くことがないゲームなのです。 羽生さん、99期で終わったら死んでも死にきれないだろ コロナではないようですね。
100期は何とか達成してほしいですね〜。 ちょっとgoogle colabに手を出し始めました。 google colab(python)上でライフゲーム囲碁のルールが大体実装できてきました。
あとはgit hubでも漁ってalpha zeroなりmuzeroなりを移植できれば。 タイルゲームの作者って絶対、完全解析、達成してるはずなんだよな。
でもしなかったってのは完全解析より成長するAIのほうがおもしろいと思ったってことかな? なんかalpha zero も muzeroも全然できそうにないな。
まるでRPGでまだフラグが立ってないからこれ以上先に進めない、みたいなのと同じ感覚に陥る。 あかん、これはGPUないと計算時間がとてつもないかも。 ご無沙汰です。
現在棋譜は160万くらいになっています。縦掘り型の貪欲法が良い調子なので、学習より
棋譜作成を優先しています。残り30手推定パブリックドローは相変わらず1100〜1300件
くらいを行ったり来たりしています。まだ、知られていないドロー筋がありそうです。
やねうら王さんのサイト見ていたら、終盤近辺のヒューリスティックスオーダリングのアイデア
(偶数理論がらみ)を思いついてしまった。どうしよう(汗
羽生さん残念だったね。
正月のabemaTVトーナメントスピンオフ企画が楽しみです。 まじで神様からお前はまだフラグ立ててないから進んじゃダメって言われてるみたいだ。
なんなんだこの進まない感覚は。 セブンってショップのBTOのページすごい便利ね。
ryzen 5950x
Geforce RTX 3080
memory 64GB
これで約50万円。
ほしいなー
でも金がなー >>379にライフゲーム囲碁を移植しました。
ようやくバグも収束してきたかなという感じです。
しかし学習の計算時間が半端なく実用にはならないかも? まじであまりの計算の遅さに新PCに50万ぶっこみかねないです。金がないけど。 羽生さん残念でしたね。
自分はDL系は諦めました(汗
将棋で別ルートのアイデア考え中ですが、その前にオセロ片付けねば。 どっちかというと、パブリックドローがどんだけあるのかに興味が移っています。
残り30手ドロー筋が1100〜1300くらいとか言っていましたが、色々やっていたら
1700超えしてしまいまして。大半は、やっぱり違いましたという事になるのだと思い
ますが、まだまだ定跡が整ったと言える状態では無いという事で…。
将棋は序盤定跡だけちょっとやってみたい事があります。まだまだ妄想の域ですが。
だけど、盤面をどう表現するのか、まだ悩み中です。方針が決まったら手を付け始める
かも知れません。 パブリックドロー筋を−2〜−4程度で相手が外した時に、勝ち切るだけの
精度を持った評価関数が別途必要なのですが、まだ自信はありません。
ただ、相手が悪い変化にした時の話なので、確率的には勝ちやすくはなって
いると思います。 あと、極端に悪い手の教師データが極端に少ないため、評価値が団子状態になって
しまっていて差がつかず、そういう局面が来ると大悪手をやらかす傾向が見えます。 >>379のプログラムですが学習に2〜3ヶ月かかりそうなかんじ orz AMD株買おうかな?
AMD株で儲けた金でAMD製品を買ってさらにAMD株が上がるという夢のような話が実現したら最高なのに。 どもです。
現在棋譜173万件、推定ドローは1800件ちょい。
まだ、推定ドローの出入りが激しい状態なので、200万件くらいまでは
継続しないと確からしくならないかなぁと思っています。
将棋は、盤面をどう持つのかでまだ悩み中。
オセロでBitboardがパワー発揮しすぎだったのに引っ張られて、できない
事をやろうとしていた感じです。諦めをつけるのに時間がかかった(汗 急がず、気が向いたら少しづつね。
というか、最初にやりたい事は、AI開発じゃなかったりする。 うおお、amd株買いました!!
100株!!
絶対負けられない!!! なんか円高来そうなふいんき(なぜか変換できない)
やばいか? SQLite遅えええええええっ
なんか間違えてんのか?? トランザクション使ったら速くなったww
俺があほなだけだったか。 今、DNNに現状の局面から終局図を予測させる、というのをやってます。 ランダムな打ち手で棋譜を取る
↓
棋譜から対局途中の盤面と終局図を取り出しDNNで現局面から終局図を予想するように学習
↓
学習したDNNを使って1手読みAIを作成
↓
そのAIで棋譜取り
↓
棋譜から途中の盤面と終局図を取り出しDNNで終局図を予想するように学習
↓
学習したDNNを使って1手読みAIを作成 ←今ここ
現状全然弱いですが、何世代も繰り返したら強くならないかと淡い期待を抱いてます。 学習だけで強くなることが理想だけど時間かかりすぎるんでヒューリスティック入れます。
このヒューリスティックはかなり強力なので。 AI結構つよくなったかも。
勝てないわけじゃないけど負かされるときは大差で負かされるというなかなか面白いAIができた。
思考時間も超サクサクだしかなりいい感じ。
100世代くらい学習させてみたいな。 世代を重ねるごとにDNNの損失が減りやすくなっているな。
これはどういうことだろう? 終局図を予想する方法は囲連星でも有効な気がする。
ライフゲーム囲碁が落ち着いたら囲連星もやってみたいな。 終局図予想はなかなかいいアイディアだったけど
人間に100%勝てるようになるにはあと3つはブレークスルーが要るかな DNNが結構うまくいったのでDNNとMCTS組み合わせたらすげー強くなるんじゃないかと思ったがうまくいかない。
なんでだろ? ぎゃああああ
AMD株さがってます!
でも絶対損切りません!
ガチホールドです!! AMD株更に暴落!
/ /| /| |ヽ ヽ,ヽ, |
. // .| <l./u | レ' ヽ,ヽ, | そんなっ・・・!
〃 | / / ,.へ |! > _、へ |\ ヽ,ヽ,| バカなっ・・・! バカなっ・・・!
. | /| ./!イ==`、 iレ´==== ヽ ヽ,ヽ, なんでこんなことがっ・・・・・・!
. | / レ ト、_。_) ( ,、 | |⌒i iヽ,\
、_ レ /|  ̄/.|j~ `.=°=´ | |つ.| ゝ.\.\ なんでこんな・・・・・・
、_`'-、_ / .レ´ u u _ ,、-'´ .| |ノ/ ヽ \ \ あってはならないことがっ・・・・・・!
`' -、,`' -、/`7―-/ r'__ __ `  ̄ |j~ ||ノ. \ \ \
`'ァ、\/―- 、 __| f========ニ`i /| |\ \ \ .\ どうして・・・
/ \ \ | | } / | | / ̄ "'' ‐-\ .\ なんで・・・ こんな・・・
i. / \.\ / ||- ―‐-r――‐-/ / レ N ̄ "'' ―‐ --\ こんな・・・・・・・・・
. | / \.\〃! |` ――' -----'/ | |
| \.\| .| u== ,、- '´ u ./| | こんな理不尽なことが
| \ \l_ ,.、- ' ´ /| |. N オレの身ばかりにっ・・・・・・・・・!
| | |\ \ |j〜 / | レ |
| | レ |\ \ / | | |
|. | | | \ \ u / | | | だんだん時間かける事に鈍感になってきて、棋譜作成のサイクル一回回すのに
既に1ヵ月以上経過w
手作業で掘る作業が追い付かなくなって、まだ1ヵ月くらいかかりそう。 セブンってショップでRyzen 9が売り切れてんだが?
まじか?
かなり異常事態のような。 結構タイルゲームで遊んでるんだけど、もしかしたらAIの勝ちが人間の勝ちの2倍程度になるように調整してるのかもしれないな。
AIの勝ちが増えすぎるとわざと負けてくれてるような気がする? アイディアとモチベが湧いてこないですねぇ。
もう何週間もさぼってる。
それはそうと最近、天頂7の9段に9路の白番で勝つ手順を丸暗記するという割とむなしい遊びをしています。
相手が手順通りに打ってくれば天頂7に白番で勝てるというw
いま勝てるパターンを2つ暗記しました。 すっかり手掘り作業が癖になってしまい、棋譜は190万件突破。
FFO(フランスのオセロ団体で、FFOテストで有名)のサイトを久々に見ていたら、
今更ながらに棋譜集を見つけてしまいました。トータル5万件ちょい。
試しにいくつか読み込んでみました。残り24手以後はこちらで読み切り処理してます。
結構スコア差がついている棋譜が多くて、読み切りの結果全滅している棋譜も数%。
それでも、24手目以後ドローで、現在の自分のBookでは推定パブリックドローと
判断すべき棋譜も2000件中5件程度はあります。
現状、石差が大きい棋譜が不足しているのと、推定パブリックドローが100件程度は
拾えそうなので、順次読み込んでみたいと思います。
時々、末端に近いノードのヒューリスティックスによるオーダリングのアイデアを考えて
いますが、プログラム修正して速度計測するのが面倒くさい(汗 天頂に白番で勝てる手順w
もちろん変化されたら無力ww
(;GM[1]FF[4]AP[Zenith:7.0]SZ[9]HA[0]KM[6.5]CA[UTF-8]
PB[天頂の囲碁 九段]BR[9d]PW[あなた]WR[]ZT[10]DT[2021-02-17]
RE[W+Resign];B[ed];W[ef];B[ff];W[fg];B[gf];W[gg];B[eg];W[dg];B[eh];W[ee];
B[fd];W[dh];B[hg];W[fh];B[cd];W[gc];B[gd];W[fb];B[eb];W[hb];B[ga];W[hd];
B[fa];W[he];B[hf];W[ha];B[bf];W[bg];B[cf];W[cg];B[ag];W[ah];B[af];W[bh];
B[ie];W[id];B[gh];W[ei];B[gi];W[de];B[ce];W[dc]) ライフゲーム囲碁で軽くて強いAIができたらUnityでiOSアプリとして出して広告収入を得るという野望ができたw
ぼちぼち頑張っていこう。 終局図を予想するんじゃなくて終局図を3 x 3ごとの領域に分割して
その領域の石の数の和を予想するようにしてみた。
そしてそのDNNをつかったAIは盤面全体でなるべく万遍なく地を取るようにパラメータを調整した。
結構強くて面白い打ち筋のAIができた。 UnityってC#限定らしい。
tiny-dnn使いたいけどどうしようかな。 ヤバイ、かなり強くなった。
しかも思考時間サクサク。
IPadの計算能力でも十分実用に耐えると思う。
広告収入の夢がひろがりんぐ。 あれっはるか昔に作ったモンテカルロAIに勝てないな?
こんなはずでは… 今まで収集した棋譜から50万局面サンプリングしてDNN学習してたけど
150万局面サンプリングにしたら結構質が上がるっぽい Unityの勉強したいと思ってるけど、なんとなく先延ばしにしてしまう。
C#ならライフゲーム囲碁のGUI作ったことあるから楽勝かと思われたが案外苦戦するかも。 メモリがDDR5になると一枚128GBとかになるそうですね。
ここはZen4まで待ちか? ライフゲーム囲碁では現在石のあるところに終局時も同じ石がある事が多いから終局図予想が有効なんだろうな
オセロだと石がコロコロ変わるから役に立たないかも 本当にオセロで役に立たないかちょっと試してみたいかも
まあ当面はライフゲーム囲碁に注力するけど うあああああ、AMD株ゲロ下げ! orz orz orz
意地でも損切りしません!! あれ、ある程度強いAI出来たらなんかライフゲーム囲碁への興味が薄れてきたんだが。。。
俺の情熱はこの程度のものだったのか? 一旦AI強化はストップしてiOSアプリとして世に出すことに注力しようかな。。。
そしたらライフゲーム囲碁は一区切りつく気がする。 囲連星の時はLV3という素晴らしいライバルがいたけど、
ライフゲーム囲碁AIはある意味、独り相撲(という言い方があってるかあれだが
強い相手が欲しい。 app storeにアプリ出すのって年会費10000円以上かかるとかなんとかorz
はやくも暗礁に乗り上げたorz 一応unityダウンロードしてみたんだけど。。。
鶏を割くにいずくんぞ牛刀を用いん、って感じなんだが。。。 もっと手軽な碁石と碁盤使ったゲームのツクール系ツールみたいなのないんか? ちょっとunityからは撤退しようかな。。。w
明らかに碁盤を使ったゲームを作るのには不向きだろこれ。。。 棋譜200万件突破。
FFOの棋譜を読み込んだら、一気に推定ドロー数が半減してしまった。
一部チェックしてみたら、当然だけど最善進行になっていない棋譜が多い。
誤手1回目でドロー筋から外れて、2回目で逆転するような棋譜があると、
本当はドローなのに、ドローじゃない事になってしまうので、その可能性が高い。
もしかしたら、本当に正しくドローじゃないのかも知れないけど。
気が付いた一部の棋譜を手で修正していたら、あっという間に200万件突破。
この後、タイミング見て、前回ドローだった筋がドローから外れたところを重点チェック
する処理をかけたいけど、かなり大量になりそうです。普段ですら100件程度出てくる
んだけど1000件単位になりそう。終わった頃には棋譜が250万件超えているだろう
と思います(汗。 unityがあきらめきれず、まだもがいてます。
多分良いチュートリアルが見つかればなんとかなる。はず。 FFOから追加したのが2200件、これを見つけ出して後ろから訂正するから途方に
くれるのであって、前からドロー筋をチェックしていけば、比較的簡単じゃないかと
閃いて、前からチェックでいくつか直したけど、1/3ほどしか治らんかった。
後は、重点チェックの自動処理に任そうと思う。
手動訂正飽きてきたし。 youtubeでunity入門のいい動画が見つかって、一気に進みました!
碁盤に碁石をポチポチ置けるところまですでに出来てます!
ライフゲーム囲碁のルールを実装するのはそれほど難しくないから
あとはtiny-dnnをなんとかすればやりたいことはほぼクリア出来たも同然です!! >>456
Unityゲームスタジオ スタジオしまづ 倉庫番 で検索してください。 AMD株が瀕死 orz 絶対損切らない T△T
tiny-dnnもダメかも?
最悪Unityで使えるフレームワークで学習しなおしになるかも。
教師データが残ってるのがせめてもの救いか。 重点チェック処理完了。思ったより少なかったのでおよそ1.5万件で済みました。
ドロー筋は、FFO棋譜読み込む直前の状態に近いところまで戻りました。
もう二度と人間の棋譜は入れない(汗
なんつーか、Thread Ripperが欲しくなってきた。
そろそろBookが大きくなってメモリーパンパンだし。 AMD株が200$になったらスレッドリッパー買うんだ。。。(死亡フラグ) tiny-dnnどうするかまだ悩んでます。
一応、今考えているのが
C++をC#へトランスレートするようなものを目指すか、
tiny-dnnをすててpytorchなどで学習しなおすか。
どっちも結構な工数がかかりそう、かつ技術的ハードルも高めで踏ん切りがつかない。
特にC++をC#へトランスレートは成功する保証が全くない。
迷ってる間に両方やればいいのかもしれないけど、そこまでの体力とモチベーションもない。
悩ましい。 ,.へ /`',
//ヽ.\ (二二 .二二二)
.// \ヽ._ / ./
` ' \_`, .// ∩∩ ,へ
/_,-‐−‐‐- 、 ∪∪//
-=ニ ̄ \ // O O O
/ l__
/ __ /| _\
( i'^'l r‐ ' ̄| .| i / | 、\ ̄ 嘘だ…
//-iノr-'⌒ヽ|/ / /二|/ l |ヽ|
_< ((/((._ ,@ v, =、、 |/| | |i |
< / u_ιu~= u/_ @ ヾ//| |l/ 夢だろ…これ…
< ̄ l/ニヽ-、_r _ {ι、,-'´/ レ
─┬─ | /ヾニヾ、ヽ、\J /
./ // / `i v ヾ ニ、_ノノ 夢に決まってる…!
/ / // / ヽ ミ u,/'//
' ̄i/ // /`-'/´///
AMD下げ止まらない! pytorcで学習しなおすにはC++で書いたLifeGameGoのコードをpython に移植する必要があると思ってたけど、
swigうまく使えばかなりコード使いまわせるかも、と思いついた。 python から教師データにアクセスすることに成功しました。
あとはpytorchで学習する部分が書ければ。。。 4か所ほど改造したくなってきました。
ソースの混乱を避けるためまた新ソリューションで作ろうかと思っていますが、
例のFFO棋譜で生じたBookのダメージ箇所を見つけて直す作業がかなり時間が
かかりそうです。削除しちゃえば早かったんだけど、活かして訂正かける方向に
しちゃったので、後に引けない。
どうしよう。
あと、NTESTのソース見つけた(今頃)。
NTESTの引き分けBOOKは公開されていないらしい。残念。 意外とwebの情報だけだとpytorchがとっつきにくくて、入門本をキンドルで買いました。 なんかいまいち情熱が湧き上がってこない。
あまり気負わないほうがいいかもだけど。 >>470
ありがと。それで良いんだ。
早速ダウンロードしました。 まだpytorch進めていいフラグが立ってないみたい。orz pytorchでの学習に成功したようです。
それっぽい値が返ってきてます。
素晴らしい。
次はonnx形式にエクスポートしてunityから参照ですね。
ゴールが近づいてきたっ unityでonnx使えました!!
全ての技術的障壁はとりはらわれました!!!
あとは整えるだけです!!!! 整えるだけとか言ったけど、それが地味にボリュームあることに気づいたorz unityですが基本的なゲーム部分はほぼ形になりました。
あとはどういう形で公開するかですね。。。
収益化とか興味あったけど、どうせ大した額にはならないだろうし
iOSアプリはちょっとハードル高いのでWebGLでunityroomにでも上げてしまうか?
まあぼちぼち考えていきます。 Githubで公開しました。
GithubでLifeGameGoWebGLで検索してください。
収益化はとりあえず見送りかな。。。 LifeGameGo AI かなり強いと思いましたが、囲碁高段者とかには普通に負かされるっぽいorz
まだまだ修行が必要か。。。 でもまあライフゲーム囲碁は一区切りかなぁ?
なんか目先を変えて違うゲームやりたいな。
ライフゲーム囲碁では終局図予想が結構うまくいったから
ほかのゲームにも応用してみたいな。 一週間くらい活動休もうかな?w
若干、燃え尽きた感がww 9路囲碁やろうかな?
終局図予想の応用として相性がよさげ 1カ月くらいさぼろうかな?ww
完全に燃え尽きたww 色々改造中。たくさん改造するのでバージョン2にして全面見直し中。
棋譜210万件を超えて、メモリーがいよいよヤバいので、棋譜へのランダムアクセスは
色々工夫してファイルシステム任せ、BookはSQLite化して外だしを進めています。移植し
ながらの修正がまだ完了していないので、テストどころかコンパイルすらしてません(汗
片や、現行のバージョンでは、棋譜作成のロジックを修正して、結構効率よく要チェック
できるようになりましたが…こちらの処理を優先しているのも、なかなかコンパイルに至ら
ない原因だったりしますorz お、310さんもSQLite使ってるんですか。
SQLiteいいですよね、簡単に組み込めて。 >>488
相変わらず、ソースは書いたけどコンパイルしていない状態ですw
KYOTO CABINETから調べ始めてましたが、気が付いたらKYOTO CABINETは次バージョン
になってて。検索してたらNoSQLという単語を知って、その系統を色々調べて…。
所詮、Unordered Mapをメモリー外でしたいだけなので、NoSQLで良いかなと思ったのですが、
SQLiteならファイル単位くらいの粗さで複数プロセス書き込み管理ができるようなので、
選択してみました。SQLiteならやりたいことができて、やりたくない事はやらなくて良さそうなの
が良い感じ。 >>やりたくない事はやらなくて良さそう
これ何気にだいじですよね。 LifeGameGoから囲碁に使えるソースを持ってきて整理したり
昔買ったコンピュータ囲碁本をちらちら見返したりしてます。 半導体関連、品薄で値上がりしてますね。
zen4がでるころには解消しててほしい。 SQLite化ができたので移行してみましたが、あちこちで問題が(汗
1.評価関数の形を変えてゼロリセットしたが、まだ学習回数が足りず探索が遅い
4日くらい回し続けなきゃならないかも。
2.unordered_mapの形のままSQLに置き換えたら、激遅箇所ができた。
ランダムアクセス減らす様に修正しているけど、何か所か妥協が必要かも。。
3.並列処理してもDB更新がボトルネックになってシングル動作並のCPU使用率。
諦めるかも。
4.Windowsが不安定になるときがある。メモリーリークかも。
というわけで、しばらく棋譜作成停止して、悩む事になりそうです。 いくつか解消。
SQL周りは何とかなりそうだけど、排他周りがまだよくわからないかも。
探索速度の低下は、SQLではなく評価関数の修正が原因の模様。
今夜修正する予定。また再学習だなぁ。
そのほかの劇遅箇所は、修正しつつあります。 AMD株ちょっとあがった。
なんとかプラスになってほしい。 いっそpython onlyで組んでみるか?
とちょっと思わなくもない。 モダンな開発環境とか使って自動テストとかもばっちり組んで高い生産性でコーディングしてみたい。 jsでテスト関数?describe()なんてあったっけ?と調べたらnode.jsの関数だったわ それで何するのかも意義もよく分からんけど 使いこなせたら女にモテることは理解できた すごいな自動テスト 評価関数問題は回避しました。
でも、SQliteでBook探索という一番使うところでSQLITE_MISUSEエラーが出て、
行き詰ってます(汗。よりによって、完全読み切り処理の中で起きています。
別スレッドから同じDBポインタを引数にして…という説明があるので、DB接続を分けた
のですが直らん。
テストでparallel_for内でマルチスレッド化して使ってみましたが、普通に動作する。
SQL文のtypoでもこのエラーが出るのを見つけたのですが、他の場所では動作するので
typoとは思えない。
何か他に原因があるのだろうか… 原因判明。prepareのところでBUSYとなっていたのに、待っていなかったのが原因でした。
というわけで待つ様に偏向したところ、めっちゃ速度低下。そもそも探索1回あたりの処理が
軽すぎて、DBアクセスの準備が間に合わなくなっていたのが原因みたいです。
BUSYを待つようにしたら滅茶苦茶速度低下。並列化の意味なしパターンです。読み切り
処理で過去に読み切り済のBookを活用するための処理でBookを見ていましたが、初段
限定使用に改造して回避。
読み切り処理のテスト時にバグでBookに矛盾が生じてしまったので、矛盾解消の処理の
テスト始めたら、ここもバグってる感じ。毎回再構築した方が早いかも。
まだ先は長そうというか、長期間楽しめそうです(汗 Book矛盾解消もBook再構築も、どちらもBUSY地獄になりました。
一旦BUSYになったら無限ループ待ち。COMMITしてみたり試したけどダメ。
Book再構築は昔は動いていたはずなのですが、DB接続を関数ごとに分離した
ために動かなくなった感じなのかなぁ。泥縄で試していくしかないですね(汗 BUSY問題解消。やっぱり更新Transaction内では参照系を別のDB接続でやっては
ダメだった模様です。
そのほか、いわゆる単体テストレベルは一通りチェックしました。後は全部繋げて
どうかという話になります。処理時間が長くて使えないものも出てきそうですが、
移行できる算段はできたかなぁ。
プログラム書いている裏で、旧版を動かしっぱなしなので、切り替えるタイミング
がなかなか作れなかったりして。 いまさらながらライフゲーム囲碁のAIが思ったより強くないことに気づいてしまった。
でも、さらに鍛え直そうという気もさほど起きないな。
pythonの勉強も放置中ですね。 visual stdio 2019にpython を追加してみました。
自動テストも出来るっぽい。
ちょっとづつでいいから前進しよう。 完全移行前のチャンスだからと、今更ながらに読み切り処理の見直し。
少し前にようやくKiller Moveが何なのかわかったので、組み込んでみるも…
速度が低下してしまったorz
昔試した偶数理論もダメだったし、コーディングが悪いのかなぁ。 自動テスト動くと結構うれしいですね。
でもテスト書く工数も意外と馬鹿にならない感じもする。
今後テスト書くモチベーションが高くなるか低くなるかどっちかなぁ。
これ多分、テストは凝らずにあっさり書くのが長く続くコツだろうな。 テスト書くモチベーションが低下し始めたwww
さすがに根性なさすぎと思うが自分じゃどうしようもないw 自作ゲームツールで操作履歴を記録し、操作を戻す機能を作っている
それで気づいたんだけど履歴システムはテスト機能も兼ねるのでないかと...
操作名が記録されたなら、操作を行い関数実行して最後に記録するまでの証明ができる
各操作の関数内外部にテスト用関数を用意してon/offの引数があれば、
履歴機能から全テストを行い、集約できて一覧できるのでないかと...
アホな思いつきですまん。履歴機能関係なくもっと簡便な方法があるはず... 黄 金 週 間 !
7連休です。
しかし活動するかどうかは微妙なラインだなw
気持ちが乗らなくてもちょっとづつでもいいから進めるのが正解なんだろうが。。。 そこそこ移行できて、あとは抽出処理の速度だけだと思っていたら、棋譜とBookの
確定読み切り深さの情報に不整合が発生してました。棋譜上は26手目まで読み切り
になっているのにBookだとまだ読み切りになっていないみたいな。
棋譜からBookを作っているので、棋譜が正のはずなんだけど、同じスコアとなる分岐
となる棋譜の確定読み切り深さを、深い方に揃える処理がバグっていたのかも…
とりあえずおかしいのは棋譜の深さだと決めつけてヨタプロ書いてBookから棋譜に
戻してますが、ヨタプロが間違えていたりで、結構ゴタゴタしてます。
しかもヨタプロに限って、トランザクション中におそらくBUSYで固まるというトラブルも。
というわけで、まだ安定再稼働には至っていませんorz GW中は一日15分でもいいから活動するようにしたいかな。
いくらpythonといえど調子さえ戻れば囲碁のルール実装するくらいはさほど難しくはないんだから。 2時間くらいコーディングできました。
仕様通り動かすだけならそんなに難しくないけど、計算量気にしだすと結構ハマるなぁ。 >>514
あぁあぁあコードが見たい、、、あなたのソースコードが見たいよぉハァハァ見せておくれよお願いだよほぉぉ
少しだけでいいからチラッと画像upしてくれたら、コーディングスタイルであなたの人柄をズバリ言い当ててみせるから 漫画のセリフのパロディかなんかか?
よくそこまでキモくできるな(驚愕 計算量には目をつぶってとりあえず動くものを目指したら
囲碁ルール、ぱっと見動くようになりました。
まだバグはありそうですが。。。
あとランダムに打って100局終局するまでに40秒かかる。
これは遅いでしょう。
あと10倍くらい速くしたいところではある。 石の連結情報の更新を見直して100局26秒まで縮まりました。
もっと縮まってくれると思ってましたが、意外と厳しいorz 見せたら見せたで貶され難癖つけられると思って警戒してるな >>516
恥ずかしい、、、恥ずかしくて怖くてたまらない...でも本当は誰かに見てもらいたい
君の心中はこうだ。違うか?違わないだろ?柔らかく膨らんだ突起が今にも芽吹きそうな自分を>>516は本能的に察知し昂ぶる己を抑えている、、、プログラマなら誰もが知っている感覚
同じコードを何度も組み替え発見し到達する興奮と充足 成長と本質を得て知る愉悦
>>516は階段を上ることができる、、、そうだ。そう、味合わせてやろう性的な意味じゃなく >>516を開発者と見込んで穴をアナリティクス性的な意味でなく 曝けたコードをサディスティックに嘗め回すように、念入りにだ(ゴム手袋パッチ--ン)
>>516 君はもうすで心を決め外装を解き、とっておきの自慢な創意と工夫をこらした難解なコードを公開する準備を整えているんだろ?熱い吐息を感じるよ。そしてわざわざ反意な言で俺がどう出るか応えるか様子を伺ってるそうだね? 仲間に入りたいならお前もコード書けよ?
このスレには口先だけの奴はいらない どうやら俺が囲碁も将棋もAIもプログラムも全く知らない解らないのを見抜いたようだな
ふふふそのとおりだ。>>520、俺は適当な誘い文句で>>520 のコードを嘲るのが目的のただの釣り師だ
よくぞ見破った。だが食えるサイズかと思いきや>>520 は餌取り程度の小物だな
懐も心も狭い矮小な輩のようだな、まあいいせっかくのGW、獲物はそこら中にいる>>520はせいぜいプログラム楽しんで爆死するがいいさ粉塵爆発しろフケとか埃を掃除するがいい俺はした自己満足の囲碁プログラムとともに果てろ。鉢植えとか興味あ?ない?あ、そう。近日中に爆死だカス何が仲間だこのスレに仲間?片腹から漏れて痛いわ 囲碁AIですがGUIを作ろうかと思ったのですがよく考えたら囲碁はGTPに準拠すればオープンソースなGUIが使えるんでした。
GTP勉強するか。 あれ、セキってどう判定すればいいんだ?
意外と難しい? 主要な棋譜作成処理は動作確認・速度問題解消できたので、とりあえずsqlite3版を
本チャンに移行して、ぼちぼち残った部分を直しています。
メモリーがスカスカになって気持ちいい。 visual studioとか使ってみたけど結局、Cygwin+サクラエディタに戻っちまうな
bashが手になじみすぎてそうそう抜けられない。 KataGoのソースをgithubから落としてきました。
セキ判定のアルゴリズムをパクろうとしているのですが読み解くの結構しんどいorz 株バブル弾けたか?
AMDもヤバイ orz orz orz sqlite3でエラーになる原因がほぼ特定できて、エラー処理を全面見直しました。
・棋譜追加処理のトランザクションのCOMMITの際にBUSY状態の継続を検出した時は、
ロールバックして再度更新をやり直すという形に変更。棋譜とBOOKの整合性を保つため
にも、速度面でもトランザクションは必須。
・SQL文の事前コンパイルであるprepareでもBUSYが発生する事がわかったので、エラー
処理を行ってBUSY検出して成功するまで繰り返す事で、prepareの完了を保証する
これらにより2プロセスまでのデッドロックは何度も検出してロールバックしてやり直しが
完遂するのが確認できています。
が、3つ以上の棋譜作成プロセスを同時に動かした時に、たまたま棋譜追加のタイミングが
3つ揃うと三すくみ的なデッドロック的状況になってしまうようで、ロールバックしてリトライが
3プロセスで順番に発生して無限ループに的に繰り返される状態になってしまう…。
2プロセスでは起きた事は無いのですが、3つだと起きる模様。
まだまだsqlite3の理解が足りないようです。 あかん、囲碁、撤退したくなってきた orz
まさかルール実装ごときで躓くとは… もう囲碁から撤退して別のゲームやろうかなーどうしようかなーとかウダウダ考えて時間だけが過ぎていく最悪のパターンにハマってますね。 気分転換に 6x6 タイルゲーム を始めましたw
速度を測ってみましたが5万po/sくらい。
そして昔ライフゲーム囲碁が1000万po/sでたとか書いたけど
それはバグでもっと全然遅かったことが判明したw
がっつり 6x6 タイルゲームやるかどうかはまだ分からん
気分次第ではこれもやめるかも よびのりたくみ先生のYoutubeに、谷合四段が出演して、自作将棋AIでよびのり先生
(おそらく有段レベル)と対局した顛末がアップされていました。
ライブラリ活用して2日で作ったそうです(驚)が、見事に快勝されていました。
独自部分はDLで自然言語処理向けのネットワークを使ってみたとの事で、探索部は
MCTSで動作しているようです。おそらく、ポリシーネットに使用しているのかと思います。
流石、東大大学院で自動運転技術の研究している異色の棋士ですね。
で、今更ながらにライブラリの存在に思い至りました(汗。盤面とか指し手生成とか、その手
の処理を今から作っても車輪の再発明にしかならないし、自分が考えていた独自性に至る
手前の障害物となっていたので、時間ができたら調べてみようかなぁと思います。
また、自然言語処理は今まで関心がわかなかったのですが、ポリシーネットに使うという
アイデアに惹かれています。多分、手筋の学習に強いのかなと。
当分オセロにかかりきりですが、少しづつ勉強してみようかなと思います。
とかいって、また途中で放置しちゃうのかなぁ。
オセロのAIだって、いつかやろうと思ってから25年放置していたし(笑) 色々悩んだ挙句、ライフゲーム囲碁AIの強化の続きをやってみようと思ってます。
これが今一番、頑張らなくても成果がでそうなやつなので。 ライフゲーム囲碁AI強化は割とすんなり活動できてます。
リハビリしないとな。 ちょっと充電期間を頂こうと思います
気持ちばっかり急いてしまうので だらだらと棋譜を作り続けています。
250万件突破したけど、チェック対象の局面が大量に残っていて、また偽引き分け筋を
発見するために棋譜を作成する処理も組んでいて、まだまだ棋譜がスカスカな感じです。
500万件までやるとまだ何年かかかるのかなぁ(笑えない)
sqlite化して重くて使えなくなったいくつかの処理(棋譜内の矛盾チェックなど)については、
まったく進展せず、使用頻度を下げる事で逃げています。
上記の様に、引き分け筋の正当性チェックやら、引き分けから除外された局面が本当に
引き分けじゃないかのチェック対象がたくさんあって、30手目以後確定引き分け筋の
件数は1600〜2400件の間を行ったり来たりで、現在は2000件くらいです。 ご無沙汰です。535さんが書き込んだ日に書こうとしたら巻き添え規制でした
棋譜数276万件超えました。
ドロー筋は結構入り繰りありますが2200〜2400件くらいで推移しています。
久々に学習しようとしたら連続領域確保できないと怒られて、慌てて速度低下
覚悟の中間vector廃止しました。最後の手段はファイル掃き出しですが、その
ためにはオンファイルのソートユーティリティが必要です。
そのうち探します。
将棋については、頭の中で新機軸の方向性を思い描いていますが、未だに
盤面のデータ構造を決められずにいます。既存の奴を見て真似すれば良いの
ですが、やはり他人のソースを見るのに耐えられない状態ですorz こっちも巻き添え規制食らってます
スマホから書き込み
AMDが200$いったら50万円くらいのパソコン買いたいですね 久々です。棋譜297万件。あと少しで300万件。
そろそろドロー筋も出尽くしたかなと思って、既知のドロー筋が本当にドローなのか
重点チェックする処理を動かしていますが、凄く時間がかかるのと…。
ドローの可能性がある筋が更に1000件くらい増えてしまいました。
多分かなりの数が脱落していくと思いますが、予想外でした。
そろそろ終活始めないといつまで経っても終われないというのにorz うお、書き込めた。
ずーっと何か月も規制くらってました。 棋譜305万件。まだまだ落ち着いてくれません。
久々に評価関数の学習しようとしたらまたしても連続領域確保できませんエラー。
仕方無いので教師データをバイナリファイルに外だしして準備をすることにしましたが、
並び順のshuffleでスワップ発生しまくって進まないorz
シャッフルしないと過学習が起きやすくなるので、とりあえずバイナリファイル上で
シャッフルしてみるつもり。ダメなら2分割とか考えないと。
今夜はBookの再構築までにしておきます。
メモリーが倍あれば、まだしばらく大丈夫なんだけどなぁ。 すいません、教えてください。
勝率5割のAI同士(A,Bと呼ぶ)で並列に対戦を行うとき(並列数は有限)、
Aが勝つ場合は試合時間が1分でAが負ける場合は試合時間が10分のとき
短期的な勝率は5割から動くでしょうか?
また長期的な勝率は5割になるでしょうか? 無限時間を相手にした時に本来の確率通りになるのは自明ですね。
短い時間での試行だと、階段状になるので解析は難しいかも知れません。直観ではAが
勝った時には追加時間が入るようなものなのでAが有利になりそうではありますよね。
面倒なので勝手に問題を書き換えてみます。
「糞粘りするソフトAが有利にならず真の強弱を判定するためには、どのくらいの時間を
かけて対戦させ計測すればよいのか。」
時間を考慮に入れずに試行回数を決めて計測すれば解決する問題な気がします(汗
また、真の強弱を調べる場合に必要な試行回数は、母集団の推定ってやつなので、どこか
探せば出てくると思います。時間で区切る場合は、その試行回数を実行した時の「経過時間
の分布」ととらえる事もできますので、ここで問題を分割して、どのくらい試行時間を掛ければ
十分な試行回数が得られるのか問題ととらえなおすことができると思います。
実際の計算は…
この定理に関して、私は真に驚くべき証明を見つけたが、この余白はそれを書くには狭すぎる(笑) >無限時間を相手にした時に本来の確率通りになるのは自明ですね。
ありがとうございます。
ここ結構悩んでしまいました。自明なんですね。
数学的直感力が衰えてるのかなー 実をいうと囲連星のAI作成をまたやっていて、
LV3に開幕19連勝というとんでもない数字をたたき出したのですが
100戦もすると勝率5割ほどに落ちてきてしまい、
なぜこんなことが起こるのだろうと不思議に思っていたのです。
どうやら糞粘りのせいみたいですね。 囲碁AIの最強の一角であるKataGoを改造して囲連星やライフゲーム囲碁、タイルゲームのAIをつくるのチャレンジしてみようか悩み中 自明というほどの証明は僕にはありません(汗
開幕19連勝しちゃうとかなり期待しますよね。
やはり強さを確定するためにはそれなりの試行回数が必要という事なんでしょう。
開幕29連勝したお方は凄い事になってますし。
タイルゲームまたやってみようかな。
MCTSと親和性高そうだし。
min-Max系は自分の力では、これ以上高速化できない気がしています。 オセロの方は、評価関数は自己対局用にそこそこの奴ができればいいやと、Book構築
の方に力を入れています。ロジックで間違っていそうな筋を分岐させてみたり、ドローっ
ぽい棋譜はかなり厳しめに分岐させてチェックしてみたり、目視で怪しいところ見つけたら
手動で分岐させてみたり。でも、なんか賽の河原状態に陥っています。どこかで安定しだ
すと期待していたら逆で、どんどん宿題が積み上がっていく感じです。
気分転換に、以前一回諦めた、読み切り処理で正解分岐が複数あって、既に確定済の
筋以外の手を選ぶロジックを見直していました。半年〜1年くらい放置していた奴です。
今見たら何を悩んでいたのかというくらい、当時の問題があっさり解決しました。まあ、
読み切り速度が20〜30%遅くなってしまうのですが、分岐を作れるので教師データに
は良いかなと。
評価関数の学習は、またパンクしてしまったので、バイナリファイル上でシャッフルする
処理を書きましたが、処理時間が怖くてまだ試していません。いっそ、もう一度評価関数
をステージ分割してしまった方が良いのではないかと思い始めています。
やればやるほどZebraの評価関数の正確さに頭が下がる思いです。 ルールを理解して、盤面の内部表現と勝敗判定を考え始めたところで
うっちゃってますので、まだ何もしていません(汗 AMDの株がかなり上がったのでパソコン買っちゃいました!
https://imgur.com/a/5UZPyiN パソコンうらやましす。
メモリー128Gで32スレッドくらい欲しいなぁ。
評価関数は結局ステージ分割にしています。が、学習途中でEigenがコケる。
なんとなくステージ単位での件数オーバーっぽいので、更にステージ分割を
細かくしてみていますが、今日1日の作業がパーで、また丸1日くらいかかる
のかなと。
まだ原因特定できた訳ではないし、件数が大丈夫かも判然としないので、また
こけないか心配ではあります。 Katagoですが、Katagoで使われてるpythonスクリプトはTensorflow 1.15を想定していて
Tensorflow 1.15はCUDA 10.0を想定していて、
RTX 3070 TiはCUDA 10.0をサポートしてない
ということらしい。
詰んだかも orz orz orz orz orz 藤井先生、竜王までいってしまうか。
7冠当選確実ですねー GPUにはそんな相性問題があるのですか…
色々調べてやらないとダメですね。
コケる原因と思われるところを見つけました。
色々やった挙句、矛盾した盤面がありそうだという事になって、調べたらビンゴ。
これからヨタプロ書いて、問題の棋譜を見つけて削除するつもり。
デバッグ中にさらに色々評価関数のを見つけてしまいました。
評価関数って多少バグってても、それっぽく学習しちゃうんだよねorz。 多分解決。
棋譜の問題じゃなくてBook構築時の問題でした。
40手目までBook登録しているのですが、40手目以前に全滅した時の
終局判定が漏れていて、無いはずの矛盾した後続の盤面を作ってました。
普段は全く影響でないのですが、Bookまとめて読みだして処理をかける時
だけ出てくる奴です。
昨夜学習開始しましたが、まだ問題箇所を全部通過したわけではありません。
が、たぶん大丈夫だと思う。昼過ぎにはわかるはず。
Book再構築に1時間と、学習に丸1日以上かな。
明日の朝までには第一陣の学習が終わるかな?
まだ学習回数不足で評価値が安定していなので、バグが快勝していても、
しばらくは時間がかかりそうです。 NVIDIA製のDocker使うとRTX 3070 ti でも Tensorflow 1.15 使えるという記事がちらほらある。
ゴールは遠いなぁ。 とりあえず問題箇所全クリアは確認できました。
エポック10回で1日半かかるのが面倒。
せめて50エポックくらいしたい。
今週は学習週刊になりそう。 Dockerにがっぷり4つで取り組むのちょっとしんどいなぁ
ペースを落としてのんびり行くか。 なんかwindows insider programとかいうのに入らないといけないらしくかなり敷居が高い。
いったん退却するか? 将棋は最高7冠じゃなくて8冠なんですねー
叡王忘れてた 心の迷いから、途中まで学習して止めて、ちょこっと修正してを繰り返してますのでまったく
学習が進んでいません。Bookチェック用コンソールでの浅い探索がびっくりするほど遅く
なってしまい、原因を探したりなんやかんややっていたのが迷いの原因です。
最終的にステージ分割を止めて、8対称を4対称に落として教師データを半分にしたりして
学習再開しました。1エポック1時間半でとりあえず30回学習させてみるという事で仕上がり
は日曜日の夕方〜夜の予定。まるまる1週間パーになりました。
もともと件数オーバーでメモリ溢れ始めたのは、4対称だったのを8対称に変えてからだった
ような気がしてきました。また、ステージ分割も、昔1回トライして、速度低下が酷くてやめ
ちゃった事があったような記憶もうっすら残っています。なんつーか、こういう類の手戻りが多いorz
ただ、探索がステージ分割だけで遅くなるとも思えないです。浅い探索は単純なαβで、
オーダリングはヒューリスティックスオンリーだし、ProbCutもしていないです。分割により
評価値ゼロとなる末端が多くてβカットが減っているのかなと思っています。間違っていて
も値が入っていればβカットはされますから。
棋譜作成にランダム要素加えて、悪手変化後の局面もたくさん学習させないといかんのかな。 NVIDIAのドライバ色々入れたらなんかパソコンの調子悪くなったorz
もーやめてくれー なんか評価値がおかしかったのでチェックしていたら、末端ノードでの評価値の差分計算
がおかしくなっていた。もともとちゃんと動いていた箇所なので、何故変わっていたのか謎。
これも激遅の原因の一つではあると思うけど、まだ遅いんだよなぁ。 藤井先生はAIだと思うようになりました(汗
新人王とった伊藤匠4段もかなり強いね。これから期待です。
評価関数学習し始めたら、オプティマイザーでSMORMS3は学習開始直後の集束は
滅茶苦茶早いんだけど、汎化が上手く行かないので、momentumと併用していたのを
思い出して、今はmomentumで毎晩6エポックづつ学習させてます。結構よくなって
きたけど、まだまだかなぁ。このまま続けたら速さは戻りそうですが…
それならステージ分割してまた学習やり直しても良いのではないかと思ってみても
良いのかなという気がし始めています(汗
途中、棋譜をほぼ全部飛ばしそうなバグ出してました。
たまたま戻せましたが、危ない危ない。 中盤探索劇遅の原因わかりました。
static constな関数をstatic constexprに変更していたのが原因のようです。
色々原因探して、最後の最後にまさかと思って、戻してもたら速度問題解消。
constexprにしたらコンパイル時定数扱いになると思っていたのですが何故? 6x6オセロて完全解析されてるんですよね?
6x6タイルゲーム完全解析出来ないかなあ タイルゲームですが、現局面の勝率をモンテカルロでしらべて4割以上6割以下ならノードを展開し以下再帰的に繰り返す、というのを考えたのですが、あんまり枝刈りの効率が良くなくてガッカリしてます。 ヤフーオセロの鰻ちゃんとネバーさんは、元気にしているよ
共に、すごい人になりそうな人だよ どちらも能力あったね
かれはさんは、どこかですごい成功を収めると思う ヤフーオセロ、今はチャットはできないが、あ、この人だ!ってのはあるよ AMD株下がってきたT△T
まだ利確してませんorz KataGoを改造して囲連星のルールを適用することに成功しました。
まだ弱いですが自己学習を繰り返すことでとんでもなく強くなる可能性を秘めています。
一応、レベル0から1勝あげるとこまでは既にきています。
囲碁最強AIは囲連星でも最強になれるのか?!
おらワクワクしてきたぞ! deepmindのalphacodeは競技プログラミングレベルのコードを自動生成するらしいな
まじ恐ろしいな、、、 レベル3に勝ちました!
katagoは本物中の本物の様です!
これがシンギュラリティか。。。 長かった私の旅路もいよいよ終わる時が来たのかもしれませんね。。。しんみり https://www.youtube.com/watch?v=MK1Pixuhr5A
すみません!こういう動画みたいにアニメの顔を実写の人物の顔に合成するやり方誰かわかる方いませんか!faceswapを使ってみたらうまくいきません。 すでに俺が打っても横綱相撲の電車道で押し切られるんだが?
katagoヤバすぎる。。。 katagoを使った囲連星AIですがもうこれ以上つよくさせないでいいかな?って思い始めてます。
完全解析するまで強くさせる欲求は止まらないと思ってましたがわからんものですね。
あまりの強さにウンザリしかけてるw
ライフゲーム囲碁やタイルゲームにも応用出来るとは思いますが、なんか毒気を抜かれてしまいました。
ボードゲームAIはやはりアルファ碁が全てを終わらせてしまったのだと思います。 カタ碁を改造した囲連星AI 名付けてカタ囲連星ですが黒番でlv3と100戦対戦させて見ました
結果はカタ囲連星の100勝0敗でした
まさにアルファ碁級の強さですね カタ碁を改造した囲連星AI 名付けてカタ囲連星ですが黒番でlv3と100戦対戦させて見ました
結果はカタ囲連星の100勝0敗でした
まさにアルファ碁級の強さですね 白番でも100戦して見ました
結果はカタ囲連星の97勝3敗でした
lv3が意地を見せましたね、と言いたいところですがこれはルールの違いによるもので
具体的には7連ができる時の自殺手をカタ囲連星は禁手にしてるために起こった3敗でした
ルールを合わせれば100勝したと思います 白番でも100戦して見ました
結果はカタ囲連星の97勝3敗でした
lv3が意地を見せましたね、と言いたいところですがこれはルールの違いによるもので
具体的には7連ができる時の自殺手をカタ囲連星は禁手にしてるために起こった3敗でした
ルールを合わせれば100勝したと思います やっちまった…
うっかりBookのtableを壊してしまって、焦って削除したら棋譜まで全滅させてしまった。
棋譜だけでも吸いだせたらBook再構築できたのに…
バックアップが去年の11月で、およそ40万件分を喪失orz
手作業でいろいろ修正かけていたのに…
めげずに棋譜作成ロジックを色々いじって手修正の作業部分も自動化しましたが、
かなりテンション下がっています。
削除寸前の状態で356万棋譜に対して、30手読み切りドロー筋が3500件くらいに
なっていまして、まだ増えそうな雰囲気だったのに。 あっけないラスト ですが いれんせいは、 かいけつしました どうか かいはつをやめろと めいれいしてください。 ボス? カタ碁を使って6x6タイルゲームの必勝AI作成やってみようか悩み中
この際、宿題を全部片付けたい 今、katago改造してポン抜き碁のAI作ってます。 いまだにちょくちょくタイルゲーム遊んでるんだけど、こっちがこの作戦で勝てるなって繰り返してると
AIがその作戦の裏をかくような手を打ってくるようになるんだよな。
単純に完全解析の最善手を返すAIよりずっと長く楽しく遊べるんだな。
ボードゲームAIは完全解析だけが能じゃないってことだな。
深いわ。 データベース化だね。Q学習と言った方が良いのかな。
今、小学生の子供が任天堂Switchの世界のアソビ大全51やってるんだけど、その中
に、タイルゲームとかコネクト4があって懐かしい。それらゲームを見ながら、これなら
min-Maxでとか、これはモンテカルロかなとか、つい考えちゃいます。
子供がオセロの「つよい」に勝てなくて「やばい」のレベルができないと言っていたので、
自分のAIでソフト指しして勝ってあげましたが、驚きも尊敬もしてくれませんorz ここで聞いてもいいのか分からんけど、KGSで動く囲碁botの作り方を
初心者向けに解説してくれている場所ってありませんかね? AMD株まだ売ってなかったのですが、いまもうめちゃくちゃ値下がりしてます。
円安ドル高と相殺してもマイナスです。orz
利益が乗ってるうちに売ればよかったorz orz orz ryzen 7000シリーズ発売ですね。
買わないけど気になる。 大変ご無沙汰です。
先々週ノートPCが不調になり、タッチパッドと画面タッチが効かなくなりました。
マウスつなげるとそれなりに使えるという状態です。
で、ゲーミング用のノートPCを新規でポチってましたが、初期不良にて現在交換待ち。
暇なんで久々にネットを徘徊して情報収集しています。
引き分け手順数の定義も見つかりました。世間一般は最終盤面(リーフ)の数でした。
自分は30手目までの手順数(合流含む)でしたので、桁が違っていたのは当然かな。
自分のBookはリーフまでもっていないので比較できないですが。
新品PCが来たら色々はかどると良いなあと思いつつ、全く別の事をやりたい気分でもあります。 羽生さんタイトル100期くるか?
頑張れ!超がんばれ! 羽生さん来ましたね。
正直厳しいとは思いますが、最近の復調ぶりはすごいですね。
#とはいえドイツ戦みたいな事があるかもとちょっと期待
新品PCは液晶破損の初期トラブルでの交換ありましたが、一応導入完了。
Edgeと相性が悪いのかタブにマウスを持っていくとノイズが入って数秒固まるorz
プログラムについてはDB周りをかなりいじりました。現在大体移植終わって本番
テスト待ちですが、旧PCが気温の低下とともに復活してしまって(完全ではない)、
キリの良いところまで旧PCで棋譜づくり継続しようと思ったまま1ヵ月経過して
しまいました(汗。
あとスレッドのスケジューリングがいまいちわからない。ターボブーストみたいな
機能がない分、PCのスレッド数を抑えて加熱対策しているような動作にも見える。
CPUがAVX512対応なので、count leading zeroのSIMD版が使えるんじゃないかと
期待していたけど、残念ながらこの命令には対応していませんでした。
そろそろ時間があるときにDB含めて移行しないと。 Rustという言語を勉強してみようか思案中
ちょっとかじった感じでは結構難しそう
C/C++と同じくらい高速な言語らしい Rustの勉強、なかなか進まないけど可能性はすごい感じる。
モダンな雰囲気?が感じられるというか
cargoもなかなかよさげ 将棋のアプリ作ろうと思うのですが
駒の動きを再現するフレームワークや
駒の配置を入力すると、ここに詰みがあるかとかその詰め手順を出力するようなフレームワークもありますか? 羽生さんも切れ味がなくなったなあ。
オレでも勝てそう。
しかも居玉で負けてるでしょ。
オレでも居玉で戦うという超初歩的なミスはしないよ。 羽生せんせえええぇええええぇえええ
うおおおおおぉお 羽生さんがタイトルとるためには先手番で負けずに後手番で勝つ必要があるわけで
やっぱ道のりは険しいですねー 負けても次は勝って追い付く。
それが2回も続く。
これは追われてるほうはプレッシャーを強く感じる。
次は後手番が勝ちそうな雰囲気になってきたな。
流れは完全に森内。 第7局までもつれたら再振りごまですか。。。
あんまり振り駒で勝ったほうが勝つみたいにはなってほしくないですが。。。 Rustの勉強全然進んでなくて放置してたんですが、最近 Rust by ExampleというインタラクティブにRustの勉強できるサイト見つけて勉強やり直してます。 Rustで6x6タイルゲームのルール書きました。
あんまり情熱を注いでやり込むという感じではないですが細々続けてます。 藤井先生、決めましたね。
将棋というゲームのエンドロールが流れてますね。。。 藤井先生、決めましたね。
将棋というゲームのエンドロールが流れてますね。。。 藤井先生、決めたぽ。
将棋というゲームのエンドロールが流れてるぽ。 藤井先生、決めたぽ。
将棋というゲームのエンドロールが流れてるぽっぽ。