【オセロ,将棋】ボードゲーム Part3【囲碁,War】
・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タイルゲームのルール書きました。
あんまり情熱を注いでやり込むという感じではないですが細々続けてます。 藤井先生、決めましたね。
将棋というゲームのエンドロールが流れてますね。。。 藤井先生、決めましたね。
将棋というゲームのエンドロールが流れてますね。。。 藤井先生、決めたぽ。
将棋というゲームのエンドロールが流れてるぽ。 藤井先生、決めたぽ。
将棋というゲームのエンドロールが流れてるぽっぽ。