【オセロ,将棋】ボードゲーム Part2【囲碁,War】 at GAMEDEV
[2ch|▼Menu]
1:名前は開発中のものです。
17/10/15 17:34:58.03 RaMh0le2.net
比較的地味なボードゲーム専用のスレが欲しくて立ててみました。
前スレ
【オセロ,将棋】ボードゲーム【囲碁,War】
スレリンク(gamedev板)

2:535
17/10/16 21:32:43.84 nZcg7vL7.net
ここって書きこみないと落ちちゃうとかあるんでしたっけ?
とりあえず、スレたて乙です。

3:535
17/10/16 22:46:32.02 nZcg7vL7.net
どこかにtiny-dnnのまとまったドキュメントないですかね〜
とりあえずvec_tというのが何者かわからないorz.

4:名前は開発中のものです。
17/10/16 22:57:12.10 hLbjq5wm.net
どもです。
強化学習ですが、まだまだ時間がかかりそうで、業を煮やして学習率あげたら、
バリューが発散してやり直し(汗
ちょっと工夫を加えて、強化学習を数回したら、MCTSで自己対戦して記譜作成。
記譜を見て学習の進捗を計りながら、過去に採取した記譜で軽く教師付き学習
させて、学習の方向性を補正しつつう、後半部分の精度を少しづつ上げて、強化
学習がはかどるようにしようとしてます。
というわけで、純粋な強化学習ではなくなってしまった。

5:535
17/10/16 23:09:26.31 nZcg7vL7.net
名前はどうしましょうかね〜
新スレだし310,535を名乗るのもなんですね…

6:名前は開発中のものです。
17/10/16 23:10:47.72 hLbjq5wm.net
>>3
日本語紹介記事
URLリンク(qiita.com)
作者の実装ノート
URLリンク(github.com)
英語
URLリンク(github.com)
URLリンク(tiny-dnn.readthedocs.io)
こんなの見てました。
vec_tについては、3番目のwikiのData-Format
> URLリンク(github.com)
に、vector<double>であると書かれています。
なんちゃらparserってのは、外部のデータをtiny_dnnの内部形式である、
vec_tやlabel_tに変換するユーザ関数で、用途に合わせて自分で書かなけ
ればならないものです。入力データが2次元であっても、左上から右下に
一列のベクトルとしてセットして、縦横の情報はレイヤー定義で与えます。

7:535
17/10/16 23:18:52.91 nZcg7vL7.net
おお、ありがとうございます。
読んでみます。

8:535
17/10/19 00:44:02.75 NEwsyYTL.net
気が散ってほかのことをしてしまうorz.
先延ばし先延ばしにしてしまうorz.

9:535
17/10/19 00:44:48.21 NEwsyYTL.net
IDがNEWSや!

10:名前は開発中のものです。
17/10/19 15:52:29.71 ETYZ9m/m.net
アルファ碁ZEROだそうな。
自己対局の強化学習のみだそうな。
レート5000越えだそうな。
囲碁AIやらなくてよかった・・・

11:535
17/10/19 17:50:51.04 9y30JekY.net
旧アルファ碁に100戦100勝て
宇宙やばいってレベルじゃねーぞ?

12:名前は開発中のものです。
17/10/20 15:58:45.15 AyXCD9Rq.net
掲示板情報を総合するとMCTSなんだけどRolloutを使っていないという事らしい。
現在出張中なので、論文ダウンロードを躊躇しているけど、読みたいなぁ。
自分のオセロでは、スピードを稼ぐためにRolloutにヒューリスティックスな次の1手
を使用しているけど、自己対戦見ていると序盤良い感じで来ていると、Rolloutが間違
えて、負け手順に入る事が多い。それで、Rolloutせずに(したふり)Valueの遡りだけ
でQ値を計算したらどうかと思っていたんだけど、そういう事なのかなぁ。Rolloutを
省略しちゃうと、ものすごいスピードアップするので、探索が深くなるんだよなぁ。
先にやっちゃえばよかった(汗

13:535
17/10/20 22:03:42.47 NnxpZZEA.net
すいません、310じゃなくてもいいのでなんかコテつけてくれませんか?
どうせ2人しかいないからわかるっちゃわかるけどw

14:310
17/10/20 22:21:51.68 AyXCD9Rq.net
あ、つけ忘れ失礼。
Rollout無し版を試してますが、何故か最近静まっていた終盤読み切りのエラーが(汗
撲滅していたはずなんですが・・・

15:名前は開発中のものです。
17/10/24 00:38:25.07 lvcSYEt0.net
Rollout無しのMCTSは圧倒的な探索深さを実現できるかわりに、今までRolloutで
修正かけていた評価値の誤りがダイレクトに出て、読み間違いは相変わらずです。
強化学習が進めば治るはずですが、SGDでは遅々として学習が進まないので、
optimizerをSMORMS3に戻して、一旦記譜学習を増やしてみました。やはり学習速度
が圧倒的に違います。そして、このやり方でも大丈夫っぽいです。
どうも遠回りしていたようです(汗

16:535
17/10/25 20:54:40.99 atHU9A83.net
なんだろう、このtiny-dnnの得体のしれぬハードルの高さは…
パッと見、すごくよさげに見えるのに全然前に進めない。
なんだろう…なんだろう…

17:535
17/10/26 00:13:05.87 vVm7O/8N.net
とりあえず、mnistのやつは正解をlabel_tで渡すみたいだけど
局面の勝率を正解にしたい場合はどうすればいいんだろう?
ラベルと勝率じゃデータ構造違うよね多分?
それとも同じなんだろうか…

18:535
17/10/26 00:16:30.06 vVm7O/8N.net
内積とると考えれば勝率を一次元のベクタと見なせばつじつまが合うのか?

19:名前は開発中のものです。
17/10/26 09:53:53.13 43FvyXwK.net
>>17
mnistは、分類器(他クラス分類)なので、活性化関数はsoftmaxになり、教師データ
はlabel_tで与えます。別にvec_tでも良いですが、例えば3という答えに対して、
label_tは{3}なのに対し、vec_tは{0,0,0,1,0,0,0,0,0,0}などとなって冗長なので、label_tが
用意されているわけです。他にも、誤差の計算方法が違うなんてのもあります。
一方、ゲームの勝敗予想は2値分類問題なので、活性化関数はsigmoidで、教師
データはvec_tとして、勝利を{1}、敗北を{0}として与えて学習させます。
オセロには引き分けがあるので、引き分けは{0.5}としてみましたが、勝率50%と引き
分けでは意味がまったく違うのが悩みの種です。2人ゼロ和完全情報ゲームでは
勝率50%というのは理論上存在しないのですが、強化学習の途中などでは生じます
からね。
なお、tiny_dnnでは2値分類や回帰の学習には入力データも教師データもともにvec_t
で与えてfitを用い学習します。mnistのような他クラス分類でlabel_tで教師データを与え、
学習をする時はtrainを使用します。

20:名前は開発中のものです。
17/10/26 09:55:34.54 43FvyXwK.net
× 他クラス分類
○ 多クラス分類
ですね。IMEのアホたれ(汗

21:535
17/10/26 21:09:13.33 vVm7O/8N.net
おおーありがとうございます。
trainの代わりfitってのがあるんですね。
ドキュメント読もうとしても英語ということを差し引いても
気が散っちゃって目が滑っちゃってどうにも駄目です。
試してみます。

22:名前は開発中のものです。
17/10/26 22:02:22.81 /MbW7Vlw.net
CNNの例題は大抵が多クラス分類問題ですからね。
説明がfit中心になりがちです。
つか、僕もかなり目が滑りました(汗

23:535
17/10/26 23:07:10.48 vVm7O/8N.net
うお、コンパイル通ったけど不正終了するorz
ネットワークの形が不整合起こしてるのかなぁ

24:535
17/10/26 23:47:16.17 vVm7O/8N.net
動いた!
入力の形がおかしかったみたい。

25:535
17/10/27 00:51:01.21 DjbLG1y4.net
cross_entropyだと動くのにmseだと落ちる
完全に意味不明

26:535
17/10/27 01:02:07.81 DjbLG1y4.net
cross_entropyでも動かなくなったw
なんなのwww
もう寝る

27:名前は開発中のものです。
17/10/27 01:02:52.52 3GgMcLzr.net
その辺まで来ると記憶があやふやに(汗
でも落ちた記憶はないかなあ。
URLリンク(tiny-dnn.readthedocs.io)
この辺の参考にしてcatchしてエラーの内容表示してみました?

28:名前は開発中のものです。
17/10/27 01:34:38.06 3GgMcLzr.net
rollout無しにして探索速度がかなり上がったのですが、10手目近辺には
ツリーの深さが50手まで達してしまいまして、今度はスワップとの闘いに
なりつつあります。探索幅をケチればスワップは回避できるのですが、
そうすると読み漏れが・・・。
8ギガ程度じゃこの速度を活かせません(汗

29:310
17/10/27 09:09:34.47 InThdIzI.net
あれれ。また名前が消えていた(汗
お分かりの通り、今のところ名無しは310です。

30:535
17/10/27 21:44:23.84 DjbLG1y4.net
なんかキャッチできたみたいです。
bad allocation
だそうです。
いまはmain全体をtryでくくっているのでどこで例外が出ているのかよくわからないですね。
まずはそこの絞り込みですかね。

31:535
17/10/27 22:06:52.63 DjbLG1y4.net
なんかスタックオーバーフローっぽい。

32:535
17/10/27 22:12:35.89 DjbLG1y4.net
盤面のデータをvectorに突っ込んで返す関数があるのですが、
盤面のデータがでかすぎるってことみたいですね。どうやら

33:535
17/10/27 22:13:39.78 DjbLG1y4.net
>>27
解決したみたいです。
ありがとうございました。
助かりました。

34:535
17/10/27 22:45:06.44 DjbLG1y4.net
スタックオーバーフローじゃなくて32bitだとメモリが足りないってことみたい。
64bitでコンパイルしたら正常に動いたみたいです。

35:535
17/10/27 23:11:51.03 DjbLG1y4.net
動いてるように見えるけどエポックが進んでも損失が変わらない。。。
何を間違えてるんだろう?

36:535
17/10/28 01:11:42.69 MUiBaiII.net
ネットワーク少し複雑にしたら激遅になったorz.
も〜ムカつく。

37:535
17/10/28 01:24:04.86 MUiBaiII.net
ん、これシングルスレッドで動いてるん?
マルチスレッドに出来るのかな…
もう今日は寝ます。

38:310
17/10/28 13:51:26.14 rt9aGKVT.net
ネットワーク1段増やすだけで信じられないくらい遅くなりますよね。
最初に十分に深くして学習させて、だんだん減らしながら適切な深さを
求めたいんだけど、この速度低下を考えると、本当に学習できるのか
わからないままだんだん深くしていくしか無いというのが萎える点です。
スレッドについては、リソースモニターで確認するとわかりますね。
ヘッダのどこかに並列化の設定があったはずです。
コンパイラがVSならOpenMPのオプションを設定します。
コンパイラのオプションの方もOpenMPの設定をお忘れなく。

39:535
17/10/28 22:22:00.33 MUiBaiII.net
一応マルチスレッドで動いてるみたいですけど、CPUが50%位しか行かないですね。
あと、エポックが進んでも損失が変わらない原因がさっぱりわからないorz.

40:535
17/10/28 23:21:37.85 MUiBaiII.net
畳み込み層の設定がおかしいみたい。
畳み込み層外したら損失減った。

41:310
17/10/28 23:37:15.46 rt9aGKVT.net
CPU使用率はそんなもんかも。
ヘッダの話、Eigenとごっちゃになってるかも。
強化学習ですが、徐々に進んでいます。もっと早くSMORMS3にしとけば良かった。
終盤読み切りのソート順に評価値を使用しているのですが、目に見えて速度が
上がってきています。また自己対局の精度も上がってきたようで、遡りチェックで
30手まで何度か行きました。逆に記譜収集の方は、スコアのばらつきが無くなって
きて、記譜的に良い事なのか不安。
というわけで、手ごたえを感じつつ、現状に合わせて若干設定変更。

42:535
17/10/29 00:36:11.21 zJx7nuOS.net
なんか畳み込みにこだわらなくても全結合でも結構いい線いきそうな?
まあ試しに全結合で進めてみるか。

43:535
17/10/29 18:55:23.53 zJx7nuOS.net
AIに組み込んでみましたが全く強くなってないですw
そういえば、ライフゲーム囲碁はDBつかっても強くならないんだったww
囲連星に転進するか…

44:535
17/11/01 00:19:41.19 M72WSH0d.net
囲連星のDB全部vec_tに変換したらメモリパンクした^^
学習しないな俺w
マジでスレッドリッパーに128GB積みたい気分

45:535
17/11/01 00:42:51.08 M72WSH0d.net
データ減らしたら動き始めました。
でも遅いな〜こりゃそう簡単には終わらんぞorz.
まあ今晩一晩流してみますが…

46:310
17/11/01 01:06:46.90 FDjtq7R7.net
バラして部分づつ学習する手もあるかも。
あ、元データはランダムに並び替えた方が良いですよ。
わかってると思いますが。

こちらは、しばらく強化学習していたら、それなりに学習が進んだ結果、
対戦相手側の手のばらつきが足りなくなって、局所解に陥ってた感じ。
急きょばらつきを広げて学習再開させたところです。
バリューの方は地道に損失が減っているんだけど、ポリシーの損失が
増えてきた。ポリシーはsigmoidがあるので、ウェイトが絶対値でとてつも
なく大きくなって、なかなか修正しきれない状況になってるかもしれない。
一旦リセットすべきか悩み中。

47:535
17/11/01 19:51:55.33 M72WSH0d.net
1エポック5000秒、しかも損失があんまり減っていかないorz
これはかなり厳しい

48:535
17/11/01 20:00:50.18 M72WSH0d.net
ネットワークの大幅な簡素化が必要か?
でも今のネットワークでも損失が減っていかないところを見るとそれも望み薄かなぁ

49:310
17/11/01 20:13:34.50 A50hx8cn.net
たぶん、損失の減り方は最初はゆっくりだと思います。
「特徴抽出しながら」誤差修正していってますから。
僕と同じ悩みですね。
ネットワークの大幅簡素化の結果、最終的に線形回帰まで戻ってしまいました(汗
もっとも、オセロはBuroさんの特徴抽出があったから線形回帰まで戻れたのですが。
スリッパとGPUが呼んでます(笑)
でも、もしかしたらAMDよりINTELの方が良いかもしれない。
高いけど。

50:535
17/11/01 23:16:09.92 M72WSH0d.net
簡素化してみました。
1エポック650秒位。
損失はあんまり減っていかない。
うーん。

51:535
17/11/01 23:18:55.84 M72WSH0d.net
>>49
買うとしてもZen+まで待ちます。

52:535
17/11/02 20:54:58.92 PGhNTWut.net
60エポック回したけど損失減らずorz
くそ〜どうすりゃいいのさ

53:535
17/11/02 21:57:25.36 PGhNTWut.net
ライフゲーム囲碁は結構損失減ったのになぜ囲連星はあんまり損失が減らないんだろう?
入力のサイズがでかいのは確かにあるけど。

54:535
17/11/02 22:35:50.49 PGhNTWut.net
石を中央寄せにして19x19の盤面を9x9くらいに削ってみるか…

55:535
17/11/02 23:58:27.26 PGhNTWut.net
お、損失ちょっと減った。
これで一晩回してみるか

56:535
17/11/03 20:29:00.55 MdRaqfZr.net
うーん。学習率がでかすぎるっぽい?

57:535
17/11/03 20:40:20.21 MdRaqfZr.net
ユニット数少な目段数多めがいいみたい?

58:535
17/11/03 21:52:31.44 MdRaqfZr.net
ミニバッチサイズも何気に速度に影響ありですねぇ
ここでもパラメータいじりの沼か。。。

59:535
17/11/04 20:21:38.30 N2Ul/N+d.net
あかん、まったく使い物にならないっぽい。orz
学習が足りないだけなのか根本的に無理筋なのか。。。

60:535
17/11/04 21:18:12.47 N2Ul/N+d.net
勝率予想だからダメなのか?
次の一手予想のほうがいいんだろか?
うーん。

61:535
17/11/04 22:07:45.27 N2Ul/N+d.net
あとは畳み込み試してないか…
畳み込みに賭けるか…

62:535
17/11/05 00:31:37.24 BZBdQob/.net
お、畳み込み動いた。
後はどれだけ損失が減ってくれるかだな…

63:310
17/11/05 01:04:52.45 BooXEMcV.net
同じ道をたどってますね(汗
こちらは、MCTSで構築したツリーを使って、完全読み切りが速くならないか
試していますが、謎のバグのオンパレードでかなり戦線縮小。一応、それなり
に動作するレベルまで撤退してテストしていますが、なんとなく速度アップは
している模様。
ただ、バグの過程で置換表データに変なものが混じったらしく、学習させると
異常終了になります。記譜は1700件くらい集まっているので、一旦全消去して
しまいました。

64:310
17/11/05 17:40:16.26 BooXEMcV.net
ツリー探査がおかしくなる状態を確認。
けど、カーっとなって即座に終了してしまったので、詳細判明せず。
なんとなく症状は見えたので、しばらく目視デバッグします。
というか、これにより直近に遡りチェックやった記譜の正確さに不安が生じてます。
やけに遡りチェックが簡単に通るなぁと思っていたけど、これが原因かもしれない。
というわけでタイムアウトまで行った記譜を50件ほど再チェックしなきゃならん。
全部で54時間くらいかかる予想。今週はまるまるパーになりそうです。
その分、良質な置換表データが補えるんだけど。

65:310
17/11/05 17:50:28.12 BooXEMcV.net
計算間違い。全部で80時間くらいだorz

66:535
17/11/05 20:13:01.98 BZBdQob/.net
畳み込み駄目でしたorz
くそ〜ディープラーニングからは一時撤退するか…

67:310
17/11/05 23:36:09.29 BooXEMcV.net
ぬがーーーーーーーーーーーー!
バグって、記譜データがすべて上書きされて消えてしまったorz
ツリー利用探索のデバッグ用にput処理にエラートラップ仕掛けた時に
やっちゃいました。
学習済のデータが残っているのだけが救いだ・・・。
ここから記譜作ると、そこそこ精度が良い記譜になるはずなのが救いだ…。

68:535
17/11/06 20:40:50.16 opZqsFg1.net
バックアップ取れしw
一回コード全飛ばししてるでしょうに。

69:535
17/11/06 21:50:55.01 opZqsFg1.net
アルファ碁Zeroの手法まねできないかなぁ
でも論文読んでもわかんねぇだろうなぁ
ていうかGoogleがライブラリとして公開してくんねかなぁw(他力本願)

70:310
17/11/07 15:06:28.24 8EOI4Ksy.net
>>68
おっしゃる通りですorz
評価関数の方は要所要所でコピー残していたのに、記譜はなめてました。
>>69
ライブラリ公開されても、実行できる環境構築の方がハードル高いかなと。
論文はいまだに読んでいませんが、rollout無し(バリューネットに100%依存)
はうまく機能しています。圧倒的にツリー探索性能がアップしているため、評価関数
の精度の低さを、力技でカバーしている感じですが。
とはいえまだ30手以前の評価値はでたらめに近い状態なので頻繁に間違えます。
強化学習でここまで治るのにどれくらいの時間がかかるのかは不明。後ろの方の
精度が上がらないと、前の方は間違った学習を繰り返すことになりますので。
後ろの方の評価関数がそこそこまともになったので、読み切り処理や遡りチェックの
時間はかなり早くなりました。タイムアウト1時間設定で時々空白31マスまで遡れる
ようになってきています。

71:535
17/11/09 21:31:59.52 H3GhZh8x.net
とりあえず、ディープラーニングは一時中断します。
囲連星の序盤のDBは非常にうまく動いてるので、
終盤もDBを生かせないか検討中です。
それと同時にLV3 vs LV3の棋譜取も再開しました。
データは多いほどいいので。
あと310さんの遡りチェックというワードが気になってます。
例えば囲連星の終盤DB作るときにどこから勝負ありの状態になったか
チェック出来たらどうだろう。とか考えています。

72:535
17/11/10 23:45:05.32 8vC+UsNi.net
天頂7買ってみました。
9段に5子置きで勝てましたが4子で勝つのは相当厳しそう。
天頂6より「あ〜そこ大きそうだよね」ってところを的確に打ってくるみたいです。

73:535
17/11/12 20:00:47.41 UqBtKmZ3.net
終盤DBの試作、作ってみましたがあんまり上手く動いてないみたい。
データが終局までの手数しかないのがまずいのかも。

74:535
17/11/12 21:02:51.28 UqBtKmZ3.net
将棋電王戦あったみたいですね。
ポナンザは優勝ならずみたいですね。

75:310
17/11/12 22:19:15.47 Uu7EAeJ9.net
しばらく出張してました。
終盤DBといえばチェスですかね。
遡りチェックは詰みを回避できるかチェックになるのかなぁ。
オセロだと何にも考えずに終局の石差でやっちゃうので。
言われてみて気付いたけど、ゲームの種類によって結構違う考えが必要なんですね。
最近、藤井四段に触発された友人の影響で将棋を始めました。
負けたくないので、3手詰め問題解いていると、どうやってプログラムしようか
とか雑念が沸いてきてしまいます(汗

76:310
17/11/12 22:31:15.55 Uu7EAeJ9.net
MCTSのツリーを使ったオーダリングは、たぶんバグが取れたと思います。
が、なんか別のところで意味不明の動作をして、速度が出せませんorz
また、テストの際に半日経っても終了しなかった盤面を使ってしまい、
何度もやり直しをしていたために、強化学習が滞ってしまいました。
これ曲者過ぎるので、今夜一晩解かせてパスしたい。
朝までにとけなかったらどうしよう。

77:535
17/11/13 23:59:34.34 0hUAGldi.net
試しにMCTSとか必至ルーチンとか重い処理全部取っ払ってみたけど思ったより弱くならなかった。
思ったよりってだけで弱いことは弱いけど。

78:535
17/11/14 00:20:44.53 7RkiqcHt.net
LV1,LV2にも負け越すみたい。
やっぱ弱いわw
勝負が十数秒でつくのは面白いけど。

79:310
17/11/14 00:31:34.47 ZeqYQGfh.net
重い局面は6〜7時間くらいかけてクリアしました。
MCTSの速度が出ない問題は、解消というか、原因不明のまま別の方法で回避。
parallel_forの問題かと思っていたけど、shared_ptrの方の問題だったっぽい。
遡りチェックの時、PVは探索せずに、その他の手をチェックしていくので、他の手
にも探索を振り向けたかったのですが、単純に1手先の局面からUCTを実行すると
10万プレイアウトくらいで突然数十秒宇固まったようになって、それを何度も繰り
返す結果、まったくツリー探索が進まないという症状です。UCT探索の方に1回目
だけランダムに着手する関数を作って、そちらを呼び出したところ、固まらなくなり
ました。
ようやくまともにツリーをオーダリングに再利用できるようになったのですが、要所
要所で極端に探索が遅くなって、逆に時間がかかります。
今しばらく調査が必要な模様。

80:535
17/11/14 00:38:47.74 7RkiqcHt.net
途中経過
70局目
黒(airandom.dll)の勝利回数: 29
白(ai-lv2.dll)の勝利回数: 41
61局目
黒(ai-lv2.dll)の勝利回数: 53
白(airandom.dll)の勝利回数: 8
58局目
黒(airandom.dll)の勝利回数: 18
白(ai-lv1.dll)の勝利回数: 40
46局目
黒(ai-lv1.dll)の勝利回数: 26
白(airandom.dll)の勝利回数: 20

81:535
17/11/14 08:46:58.91 7RkiqcHt.net
途中経過
311局目
黒(airandom.dll)の勝利回数: 97
白(ai-lv2.dll)の勝利回数: 214
275局目
黒(ai-lv2.dll)の勝利回数: 237
白(airandom.dll)の勝利回数: 38
259局目
黒(airandom.dll)の勝利回数: 114
白(ai-lv1.dll)の勝利回数: 145
213局目
黒(ai-lv1.dll)の勝利回数: 144
白(airandom.dll)の勝利回数: 69

82:310
17/11/14 23:35:06.48 ZeqYQGfh.net
MCTSのツリーを使用する奴は、どうも挙動が変なのですが原因不明なので後回し。
アルファ碁Zeroでは、強化学習に軽い探索を取り入れたというのを見かけたので、
想像で真似してみる事にしました。
序盤はランダム着手。そこから5手読みの中盤探索を入れて、残り10手完全読み。
評価関数はValueを使用。たぶん、学習はマシになると思います。
もっと精度が上がったら、3手読みにしてスピードアップしたいです。
今はまだ結構ボロボロなので、これで我慢。

83:535
17/11/15 00:08:07.85 hR/pxKTk.net
丸一日回してみました。
1000局くらい軽くいくだろうと思ってたけど意外と時間かかってますね。
これはこの辺にしておきます。
533局目
黒(airandom.dll)の勝利回数: 175
白(ai-lv2.dll)の勝利回数: 358
475局目
黒(ai-lv2.dll)の勝利回数: 407
白(airandom.dll)の勝利回数: 68
450局目
黒(airandom.dll)の勝利回数: 198
白(ai-lv1.dll)の勝利回数: 252
365局目
黒(ai-lv1.dll)の勝利回数: 252
白(airandom.dll)の勝利回数: 113

84:310
17/11/17 23:19:33.73 0nQ3gtJu.net
浅い探索付き強化学習は結構有効に機能しているようです。
学習の速度が明らかに上がったし、精度も良くなっているようで、テスト盤面の
誤差が結構減りました。ただ、そろそろ飽和したか、局所解に入ったような印象。
で、色々考えたあげく、線形回帰ではこの辺が限界かもしれないという事で、
評価関数をmlpにしてみました。valueの方がうまく学習しなかったので、回帰型
ではなくsigmoid出力にして0〜1の数字を石差に変換かけてます。
強化学習は、回帰版の評価関数の結果をそのまま利用してます。
そろそろそこそこ使えそうな誤差になってきたようだし、強化学習は自分に対して
行った方が良いはずなので、全面的にmlpに移行しちゃおうか悩み中。

85:535
17/11/17 23:58:50.71 8tEb8SWm.net
やっぱ思考時間短いといろいろいいんだよなぁ。
モンテカルロは確かにある程度強さ出せるけど
遅いのどうやって克服していいかわからんし。
悩ましい。

86:310
17/11/18 20:23:37.47 TwYSqk9E.net
やっぱスピードは万能ですよねぇ。
モンテカルロですが、評価関数ができたら、アルファ碁Zero方式で(汗
緩やかに読み筋を絞り込みながら、有望な手を深読みする形になります。
mlp版を試していますが、中間層を64にしたら、学習は良いのですが、
モンテカルロが劇遅になりました…。今、中間層8で強化学習していますが、
なんか早々と線形回帰と同様に飽和状態になってしまった模様。
速度的には8が限界な気がする。
途中まで線形回帰の強化学習記譜で学習させていて、同じような癖がついて
しまったのかもしれないので、今晩一晩まっさらから学習させてみようかな。

87:310
17/11/19 15:23:45.94 O7LFJYCP.net
あちゃー。
学習がいまいち変に感じていたのは、これは恥ずかしくて言えないレベルの
仕様ミスでした。あれ?と思って、良く考えずに念のため追加したコードが
数か所。ことごとく悪さしていました。
数日損をしたなぁ。

88:310
17/11/20 22:18:43.00 /GG7G9SR.net
ぎゃー。
評価関数に入れるデータの変換テーブルに間違い見つけた。
評価関数がいまいち収束しなかったのはこれが原因かも。
もともとの線形回帰版の時代から隠れていたものなので、
線形回帰版も計算し直しです。
というわけで、数日パーどころか1か月単位でパーですorz

89:310
17/11/20 22:23:13.40 /GG7G9SR.net
申し遅れましたが、これにて評価関数は最初から計算しなおしです。
幸い、記譜が60件+遡り時の訂正前分100件ほどの合計160件と、
置換表から拾ったものが10万件単位でありますので、最近得ていた
感触だと、これをベースに強化学習で補えそうだというのが、
唯一の救いです。

90:535
17/11/21 23:12:52.06 orTiLUyu.net
やっぱアルファ碁ゼロは理想形なんだよなぁ。
全てが理想的すぎる。
まあ必要計算資源があれですが。。

91:535
17/11/23 19:54:22.22 5nKVQF7K.net
アルファ碁ゼロには興味あるが詳細情報は意外とWebで探すの大変ですね。
かといってネイチャー買うのも金もかかるし読んでも多分理解できないからなぁ。
でも終盤DBとかやってても全然成果あがらなさそうだし生きてて辛い。

92:535
17/11/23 21:16:22.89 5nKVQF7K.net
囲碁ソフトにLeela Zeroというオープンなフリーソフトがあるそうな。
何か参考になるだろうか?

93:310
17/11/23 21:17:40.34 A/JPNP9D.net
アルファ碁ゼロの論文はまだ読んでませんが、アルファ碁の正常進化ですよ。
自分はDeep Learningのところは「しかと」しているので、MCTSの進化形として
とらえてみると、まあ想像ですうが、当たり前の事を当たり前にやっただけかなぁ
と思っています。
それより大問題が…
また、評価関数の入力データ作るための変換に間違いを見つけてしまいました。
前回どころではない大きな間違いで、良くこの評価関数でそこそこ収束していたなぁ
というレベルの間違いでした。ソース喪失して書き直していたところから仕込まれて
いたんだと言う事で。
なんか入力いい加減でもそこそこな評価関数ができちゃう事にびっくり。
今度こそ大丈夫と信じて・・・

94:535
17/11/24 22:55:40.11 QoCCcG2C.net
なんかleela zeroのreadme読んでみたけど、一般人が買えるハードウェアだと
アルファ碁zeroの強さを再現するのに1700年トレーニングしなきゃならんとかw
は〜絶望するわ。

95:535
17/11/24 23:04:07.44 QoCCcG2C.net
結局、仮に大金つっこんでスレッドリッパーとか買ったとしても到底無理ってことじゃん。
まあ、まったくの無駄になるとは思わないけど。

96:535
17/11/24 23:04:57.72 QoCCcG2C.net
なんかIDにCがいっぱいあるな。

97:310
17/11/25 00:38:47.57 Dx7Nr2Ji.net
もういっちょ間違い発見orz
ソース喪失後焦って数日でパーッと書いて、そのまま学習させて、そこそこ
収束していたから放置していたのを思い出してきた。今度は全部チェックした。
しかし、いい加減な評価関数でも、結構収束していたってのが凄いな。
そこはかとなく表現力不足を感じていたのはその辺が原因かなぁ。
記譜と置換表データで1から学習させるのに、一気に500回学習させたら、
思いっきり過学習になってしまった。現在、強化学習で解きほぐし中。
回帰の方はほぼほぐれたけど、MLPの方はまだ時間がかかりそう。

98:310
17/11/25 00:54:30.38 Dx7Nr2Ji.net
>>95
某スレをウォッチしていたら、前から気になっていた事を指摘していた人がいた。
スレッドリッパーはAVX2命令の中に遅いものがあって、一つ下のインテルの奴の
方が、この手の計算は速いらしい。
あと、GPUをどう使うかだね。
けど学習だけならTensor Flowにやらせちゃえばよいのだろうけど、学習データを
使うところまで行ったら、GPU使った非同期並列処理とか考えなきゃならないし。
CUDAだっけ?GPU専用にコード書かないといけないし。
なんか道筋というか、そこまでやってる自分の姿がイメージしきれない(汗
その前に詰将棋を解くプログラム開発してそう(笑)

99:535
17/11/25 01:01:08.99 ekS5f4AB.net
某スレってどこですか?
GPGPUはもうちょっとハードル下がってほしいですねぇ
CPUよりも何十倍も速くなるケースもあるらしいし興味ありますね
CUDAをごりごり書くのは難しそうですがライブラリとかに期待。

100:310
17/11/25 01:26:03.49 Dx7Nr2Ji.net
コンピュータ囲碁か何かのスレです
この1か月くらいのカキこのどこかにありました(汗

101:535
17/11/25 23:11:08.18 ekS5f4AB.net
ちょっと目先を変えて9路囲連星やってみようかな。
9路なら序盤DBだけで押し切れそうな気がするw。

102:535
17/11/25 23:33:24.64 ekS5f4AB.net
310さんみたいに既存コード全捨てでやってみようかなぁ?
もう一度まっさらな気持ちになって…

103:535
17/11/25 23:53:52.98 ekS5f4AB.net
まっさらな状態から書いてみようとしたけど、
めんどくさくなってすぐ昔のコード確認しちゃうw
駄目すぎるw

104:310
17/11/26 13:10:07.09 kav93n5u.net
ソース喪失以外の時は、結構コピペしていますよw
書き直しの時は、たいていあちこちで使用しているクラスの構造変え
たりする類の後戻りが難しい変更加える時なので、中の関数は一緒です(汗
新しい評価関数は、だいぶ落ち着いてきましたが、遡り28手くらい
でタイムアウトになります。並べ替えに使っているので精度が上がる
と速度が速くなるのです。前は29手、調子が良い時は30手くらい
まで行っていたので、まだ精度が追い付いていないみたいです。
これでしばらく強化学習の具合見ながら待つだけになっちゃいました。
5×5の囲碁くらいならCNNで評価関数作れないかなぁとか、詰将棋を
作るならBitboardを2バイトに拡張しなきゃとか、悪い虫が疼き始めて
います。

105:535
17/11/26 21:08:25.02 wxjv7tgm.net
後のコード書きやすいように柔軟性のある設計にするかゴリゴリの最適化を目指すか悩み中w

106:535
17/11/26 21:53:28.37 wxjv7tgm.net
ああ、最適化の誘惑に駆られるw

107:310
17/11/26 22:28:47.97 kav93n5u.net
僕が読んだ本では、
最適化するな。アルゴリズムを考えろ。
アルゴリズムなら桁単位で速度アップし、過去に行った最適化は無駄になる。
と言うよな事がトップに書いてあって、それ以来(自分の)読みやすさ優先にしている。
BITBOARDのAVX2命令とか、その辺でいくつかの関数のみ、ゴリゴリにしている。
とはいえ、その辺も一応アルゴリズムの範疇かなぁ。
演算子のオーバーロードとか関数で隠ぺいしているしね。
問題は、最初にクラスの構造とかあんまり考えてないので、あとでごちゃごちゃに
なってしまう事。それで何度か書き直ししている。

108:535
17/11/26 22:35:57.72 wxjv7tgm.net
まあ、そのセオリーは私もどこかで聞いたことありますがw
アルゴリズムでの改善が行き詰まると結局泥臭い最適化に手を出すことにww
すでに一回実装したことのあるプログラムだしある程度勘所というか見通しは立つかなーと

109:535
17/11/27 23:15:23.55 jINzvSI7.net
勢いでコード書きなおしてるけどテストするのが


110:面倒くさいw 言ってもしょうがないけどw



111:310
17/12/01 20:29:48.04 ONM9KZwZ.net
またしても問題発覚。
タイムアウトなどでキャンセルしたとき、探索途中の中途半端な評価値の置換表
が作成されている模様。対象の特定はできないため、置換表データをいったん
削除して、全データに対して再度遡りチェックを実施する


112:魔ナ、置換表データを 再作成する事にしました。 むむむ。 評価関数はそれなりの精度になっているので、それなりの速度ではチェックできる はずですが、またしても…って感じでがっかりです。 同一評価値で変化がある分、記譜は多少は膨れるはずなので、そちらに期待。



113:535
17/12/05 23:23:49.29 CujvIJMm.net
9路囲連星、一応ルールと簡単なモンテカルロAIはちゃんと動いたっぽいです。
ここからどう展開するか。

114:310
17/12/05 23:36:41.89 5HB6IIYO.net
とりあえず軽く遡りチェック完了。28〜30まで遡ると時間かかるので当面25前後まで。
もっとも誤着手なしタイムアウト無しだと30手だろうと遡れちゃうから、28手あたりの
適度なところで止めちゃいましたが。
で、置換表データ激減。いままで間違ったものを相当学習に取り込んでいたっぽい。
あと、MCTSのツリーの末端(以後終盤探索しているので数値確定)の評価が時々
狂う問題がありまして、いつもではなかったので目をつぶってましたが、暇だった
ので着手。原因不明なれど、二重更新問題っぽかったので、ツリー部分のコード
を整理してみたところ、何故か治ってしまった模様。
本当に直っていたら自己対局の精度も少し良くなるはず。
つか、羽生永世7冠誕生ですね。
記譜みてみましたが、何が何だかわけわからんけどw

115:310
17/12/05 23:43:42.63 5HB6IIYO.net
Buroさん型特徴の評価関数もそろそろ限界っぽいのと、今のままだと強化学習にも
かなり時間がかかるので、新しいパソコンが欲しくなってきました。やはりCNNに行く
しかないかもという事で。
ものは試しにi9-7980でパソコン組んだら幾らになるのか、ネットで見積もってみた
のですが…そっと閉じてしまいました(汗
クロック数とか見ると、10コア20スレッドくらいの奴が、一番よさそうな気がするんだ
けど、どうなんだろう。

116:535
17/12/06 00:45:59.31 D/I5x6A8.net
メモリも山盛り積みたいですよね〜
GPGPUも考えられるし。

117:535
17/12/06 21:27:03.05 D/I5x6A8.net
アルファ将棋爆誕w

118:310
17/12/06 21:37:40.75 fJiMVswg.net
今見たorz
夢想段階にあったものをことごとく圧倒的な力量でやられてしまふ。
そのうち、5分でオセロ作ったよとか言われるんだろうなぁ。
学習と評価の実行が完全に二分された今となっては、
学習に使用するハード性能は正義だと思い知らされる。

119:535
17/12/06 21:39:44.94 D/I5x6A8.net
グーグルのアルゴリズムはマジ万能なんですかね〜?
必要マシンパワーがあれですが、ムーアの法則が解決するでしょう。

120:535
17/12/06 21:49:23.90 D/I5x6A8.net
そんなに万能ならライブラリとして公開してくれw
囲連星とライフゲーム碁を学習させたいww

121:535
17/12/06 22:03:23.36 D/I5x6A8.net
いっそ完全解析してくれたら諦めつくんですけどねw

122:535
17/12/06 22:49:40.35 D/I5x6A8.net
9路囲連星のDB作りはじめました。
何日かぶん回そう。

123:310
17/12/06 23:02:24.56 fJiMVswg.net
non-MonteCalroなツリー探索(勝手にそう呼んでる)は、MCTSがロールアウト
関数さえ作れれば万能なように、完全情報ゲームでは万能だと思う。
あと強化学習による評価関数の作成も。
ただ、まだAlpha碁Zeroの論文読んでないからわからないけど、CNNの入力
については、人間が介在しているかもしれない。少なくともアルファ碁の段階
では、ちょっと特殊な入力データを用意していた。
それと、完全情報ができない以上、強さの地平線を広げたに過ぎないのも確か。
それを実現するために圧倒的なマシンパワーを使っているわけで。そのマシン
パワーを前提に、それを完全に活かせるアルゴリズムにしたってところが、評価
ポイントなのかもしれない。
かなり悔し紛れな評価だけどorz

124:535
17/12/06 23:52:04.64 D/I5x6A8.net
ガンガンツリー展開して全部DBに突っ込んでたら意外と早くメモリがパンクした。
相変わらず学習しない俺w
しょうがないからDBに入れるのは序盤だけにするか。

125:310
17/12/07 00:22:37.97 EKyZH2pF.net
Googleがやらかしてから、後だしで俺も考えていたとか悔しいので、
前から思っている事をボソっと書いとく。
十分に深いDCNNの場合、表現の自由度が高いから、強化学習を繰り返す
事で過学習になる事が、起こりうる局面の大半を内部に保持する事につな
がっていて、実は汎化性能ガン無視で良いのではないか。起こりにくい局面の
評価値はグチャグチャでも構わないという事で。
と思っていたりする。

126:535
17/12/07 00:55:58.10 +QWWXInu.net
修正してみたけど、8プロセス並列で動かすと意外とまだメモリがきついな。
しょうがないから1プロセスだけで流すか。

127:535
17/12/07 01:11:55.19 +QWWXInu.net
うーん、なんか同じ局面しか選ばなくなっちゃう。
これは致命的な欠陥だなぁ。
どうしよう?

128:535
17/12/07 01:18:35.82 +QWWXInu.net
駄目だ分からん。
諦めて今日は寝よう。

129:535
17/12/07 20:11:24.86 +QWWXInu.net
あ〜ツリーのノードに親ノードポインタ入れてなかったわw
変だと思ったw。
でも対称局面合流させちゃってるから親が一意にならないな。。。
どうしよう。。

130:535
17/12/07 20:23:43.87 +QWWXInu.net
親ポインタは諦めてほかの方法でごまかそうw

131:535
17/12/07 21:27:59.88 +QWWXInu.net
なんか、UCTって初期の探索で間違った結果出ると挽回するの凄い大変なのかね?
それこそ修正に指数的な試行が必要になっているような…

132:535
17/12/07 21:35:42.53 +QWWXInu.net
おっと、なんか挽回してきたw
それはそうとして、メモリが欲しいですねぇ。1TBくらい

133:535
17/12/07 22:05:33.83 +QWWXInu.net
うーん、局所解にずっぽり嵌ったっぽいorz
地力で脱出してくれないかな〜

134:310
17/12/07 22:57:44.09 JixNNylG.net
>>129
大変です(汗

135:535
17/12/07 23:14:30.29 +QWWXInu.net
うおお、メモリ消費がじわじわ増えてきてる。
今晩一晩耐えられるかは微妙なラインだなぁ。

136:535
17/12/08 21:44:38.57 rkwPxGLh.net
あれえ、おかしいな。
かなり学習いい感じで進んだと思ったのに、公式AIに全く歯が立たない。
やっぱ読めてない局面に分岐されると無力なのかなぁ

137:535
17/12/08 21:55:53.54 rkwPxGLh.net
DBだけじゃ無理か。
期待が高かっただけにガックリ。

138:535
17/12/08 22:03:23.60 rkwPxGLh.net
ここでヒューリスティックに走るかDBの更なる肥大化に走るかCNNとかに手を出すか。
分岐点やな。

139:535
17/12/09 11:22:20.19 L/Fjd2gI.net
当たりの石をつがないなぁなぜか。
ロールアウトで当たりの石を抜く確率と当たりの石をつぐ確率増やすか。

140:535
17/12/09 19:05:03.36 L/Fjd2gI.net
キター!初勝利!
最終的にはアルファ碁みたいに100戦100勝したいな。
(
;FF[1]GM[1]SZ[9]
;B[de];W[dg];B[ef];W[cc];B[eg];W[fd]
;B[ec];W[eh];B[ed];W[ch];B[eb];W[fe]
;B[ee];W[ea];B[fa];W[hh];B[da];W[ac]
;B[ea])

141:535
17/12/09 20:29:04.06 L/Fjd2gI.net
酷いバグ発見w
8近傍求める関数間違ってたw

142:名前は開発中のものです。
17/12/09 21:36:39.83 L/Fjd2gI.net
ロールアウトの着手確率いじったら黒番の勝率5%だと…?
何が起こってるんだ…

143:535
17/12/09 22:53:03.29 L/Fjd2gI.net
着手不能点を着手候補にしてたw
だからか。

144:535
17/12/10 21:26:16.30 ecwKDJmF.net
局所解に落ち込むとなかなか抜け出せないのでUCB1のバイアス係数を思いっきり上げてみた。
これで局所解抜けてくれればいいが…

145:310
17/12/10 22:11:20.32 3vDAj4sl.net
MLP版の評価関数がNaN地獄


146:に落ちてた。 何回かやり直したけど、結構簡単にNaN地獄に落ちるので、一旦仕切り直しで、 線形回帰な評価関数に注力する事にしました。 MCTSでテストすると、途中まで割と見知ったオープニングになってきているけど、 評価値自体はあんまり安定していない感じ。まあ、相対関係があっていれば、 絶対値はずれていても関係ないといえば関係ないけど。 しばらく強化学習を続けながら、ちっと別な事を考えてみます。 というか、Alpha Zeroの強化学習の回数が、思ったより少ないなぁと思ったけど、 自分がこれまでにやった回数を概算で考えてみたら、桁が2〜3くらい少なかったorz やっぱマシンパワーは正義だなぁ。



147:535
17/12/10 22:51:07.98 ecwKDJmF.net
今晩一晩ながして局所解抜け出せなかったら別の方法考えなきゃな…
zen+が超絶スペックという噂が流れてますが、デマリークともいわれていて、
本当だったらいいなあと思っている今日この頃。

148:535
17/12/11 21:43:28.43 fAOHhVpN.net
お、局所解抜けてる。
DBがTXTで1GB行っちゃったてへぺろ。

149:535
17/12/11 21:49:20.78 fAOHhVpN.net
お、凄い、いい感じの勝ち方した。
これの凄さが分かってくれる人がどれだけいるかわからないが…
(
;FF[1]GM[1]SZ[9]
;B[ee];W[eg];B[df];W[fd];B[dc];W[dg]
;B[fe];W[ge];B[gd];W[gf];B[fc];W[cd]
;B[ed];W[cc];B[cg];W[ch];B[bg];W[fg]
;B[gc];W[gh];B[bh];W[hh];B[ai];W[ba]
;B[fd])

150:535
17/12/11 22:02:11.19 fAOHhVpN.net
白番でも勝てるかもと思ったがそんなに甘くなかったw

151:535
17/12/11 22:20:09.34 fAOHhVpN.net
うあああ、白番で惜しいところまで行ってバグで不正終了w
とりあえずバグとらなきゃorz

152:535
17/12/11 22:31:43.51 fAOHhVpN.net
うーんまだまだだなぁ。
>>146はたまたまかorz.

153:535
17/12/12 19:50:54.43 sU/cgenP.net
新しいパソコン欲しいな〜
現実的な線でいってもメモリ64GBくらい積みたい。

154:535
17/12/12 23:05:56.72 sU/cgenP.net
DB作成をマルチスレッド化したいな〜
でもMCTSのマルチスレッド化って結構難しんだよな〜

155:310
17/12/13 00:38:18.63 oWC3TnL7.net
MCTSのマルチスレッド化は簡単だと思う…
マルチコンピュータは難しいけど。
強化学習がなんかおかしい感じだったので、記譜学習で上書きしたら
かなり過学習になってしまった。強化学習で戻せばよいかと思ったけど
なんかなかなか戻らないorz
強化学習どっかおかしいのかもしれない。

156:535
17/12/13 20:33:14.21 6thdoy0s.net
えーそうですか?
排他制御とかしたら性能出なさそう

157:535
17/12/13 21:57:53.75 3yqEn+ak.net
ID違うと思うけど535です。
DBがTXTで1.7GBに。
実行時7GB程になりました。
std::mapを別のコレクションに変えたらメモリ使用量減らないかな〜?

158:535
17/12/13 22:15:01.22 3yqEn+ak.net
unordered_mapにしてみたけどあんま変わんないやorz

159:310
17/12/14 00:19:28.11 9pKHf6s7.net
排他制御は、まあ普通にしてますけど、PPLのcritical_sectionでlockしたり、
int型ならatomic<int>していたりで、並列ライブラリにお任せです。
またVirtual Lossという方法があって、ツリーを下っていく時は、先に負けた事にして
降りて行って、末端から戻ってくる時に正しい勝敗に置き換える事で、並列探索
の各スレッドが同じ枝に集中しないようにして、排他がかかる可能性を減らしてます。
あとは、排他制御が必要な領域を細かい単位に分割する事ですかね。
#と思って、ソース見たらVirtual Drawになっていた(汗
あ、そうか。DB化しているって事は、合流ありだし、盤面をキーにしなきゃならないから
そうなるとちょっとややこしいのかな?
自分は合流無視で、各ノードに盤面情報を保持していません。直前着手のみ持って
いて、ノードをたどる時に盤面情報を更新しながら降りていきます。着手もBITBOARD
の64bitは無駄なので、char型にしちゃってます(内部的にはintなんだろうけど)。

160:535
17/12/14 21:56:41.20 IX7WwuCO.net
PPLなんてのがあるんですね。
頭の片隅に入れておきます。
とりあえず、子ノードへのポインタが結構メモリを食ってるような気がします。
これを無くして毎回子局面を計算するようにしてメモリ節約するという手もありますがあんまりやる気がしないなぁ。

161:310
17/12/15 10:32:05.09 +7BwQo/4.net
PPLはVC++専用の並列処理ライブラリです。
Intel TBBとかと中身はほぼ同じだと思います。
かなり抽象されていて、わかりやすいです。
自分はこれなしでは並列化できません(汗

ツリー構造だと子ノードへのポインタが一番大事な情報になっちゃいますね。
その場合ポインターと直前着手があれば盤面情報は不要になります。
一方で、ハッシュテーブル構造だと、子ノードポインタ不要で、キー(と衝突検出)
のために盤面情報が必須になります。
DB化するんならハッシュテーブルとかの方が向いていますよね。
自分はMCTSでツリーを作ったり消したりなので、ツリー型にしています。
shared_ptr使って、不要になったノードはシステム任せで自動的に削除して貰って
います。ハッシュテーブルだと、そう簡単にはいきませんね。

162:310
17/12/17 00:21:31.98 qILmYkkQ.net
ノートPCの冷却用(動作周波数に結構影響する)にUSB扇風機使ってましたが、
結構サイズでかくて持ち運び面倒だし、ノートPCのUSBポートに刺していると
安全装置が働いてしまうので、別途電源取っていました。
で、どうせ強化学習回しておくだけで暇だったので、専用のクーリングファンを
自作してみました。
タカチのアルミケースをぴったりサイズに切り欠いて、USBコネクタと5Vの
クーリングファンをセット。ノートPCに装着するとファンが回って冷却開始。
製作時間1時間程度。材料費は3000円くらい。
雑に作った割にはうまくできた。

163:310
17/12/17 02:09:30.95 qILmYkkQ.net
EigenのSparseMatrixのサイズ制限を変える方法が見つかりました。
現在、簡易版と詳細版の2種類の評価関数を学習していますが、
これにより詳細版を完全にBuroさんモデルにする事ができるように
なりました。
というわけで、詳細版は再度学習し直しです。
簡易版は、多少癖があるようだけど、そこそこまともになっています。
一方、詳細版は何度もやり直し中(汗

164:535
17/12/17 19:24:13.96 QB4rs7DZ.net
DBはメモリの勝負になる。
やはりCNNなどでメモリを圧縮する必要がある。

165:535
17/12/17 20:37:59.85 QB4rs7DZ.net
うお、試行回数0回のデータ削除したらメッチャメモリ使用量減ったw
これで当分DBで押せるww

166:535
17/12/18 21:48:20.69 2VaG9uC3.net
ちょっとづつ良くなってるとは思うけど今一歩だな〜
もうちょっとヒューリスティック入れたほうがいいかな〜

167:310
17/12/19 00:06:06.27 jyMFUoq3.net
気が付いたらTensorFlowがWindows対応になってるね。
New PC欲しい病再発の兆し・・・

168:535
17/12/19 22:55:01.32 BAiqwtex.net
とりあえず、ヒューリスティックのアイディアが2つあるんだが、
下手に手を加えないでDB肥大化で押したほうが、
真の棋理に近づくのかもしれないなどとも思ったり。
悩ましい。

169:535
17/12/20 00:23:35.05 S+Iz2Vgy.net
ヒューリスティック一個仮組みしてみたけど上手くいかないや。
がっかりorz.

170:535
17/12/20 22:02:26.64 S+Iz2Vgy.net
ちなみに仮組したヒューリスティックの内容は
適当な回数プレイアウトして7連が一番多くできたところ付近にしぼって
モンテカルロ木を展開するというもの。

171:535
17/12/21 20:13:56.96 TDrdSCuN.net
序盤はそんなに悪くないんだけど終盤がなぁ
やっぱ9路でも必至、詰めろルーチンいるなぁ

172:535
17/12/21 20:14:37.01 TDrdSCuN.net
でも遅くなるの見えてるからちょっとなぁ。

173:535
17/12/22 21:57:55.17 fGil/O5L.net
なんか落ちるバグがあるな。
そういえば直してなかった。
は〜

174:310
17/12/23 09:08:48.88 V4gvcHPy.net
ノードを完全読み切りまで展開した時に、末端ノードの評価が狂う時があるという
バグが以前ありました。おそらく並列処理による2重更新問題だろうと言う事で、
UCT探索の排他部分を強化して対応していましたが、ここにきてまた発生。
昨日原因が判明しました。まさかの、浮動小数点誤差の問題でした。
スコアの合計値と、試行回数を持っていて、合計値÷試行回数で平均スコアを
計算しているのですが、合計値が3500万を超えたあたりで+2をしてもfloat的
には、その2差を表現できる精度が無くなって、少しづつ合計値が不足していく
状態になっていました。
とりあえずfloatをdoubeにしてみましたが、案の定メモリーを消費する速度が大幅
増加してしまいました。小数点以下1桁もあれば十分なのでintに10倍値を持つ
ようにしてみようかなぁと思っています。

175:310
17/12/24 00:22:00.25 XlhSPCGK.net
intに変更。桁溢れが無ければ、これで大丈夫だと思います。
ついでに速度アップしている分だけ、自己対局の探索時間を短くしました。
評価関数を簡易版・詳細版2種類使っていましたが、詳細版も十分に学習
できたようなので、詳細版一本に絞りました。というか、そろそろ追い抜いた
と思えるようになってきました。とはいえ自己対局の評価値を見ていると
30手目以後はそこそこまともな感じですが、序盤はまだデタラメかなぁ。
完全読み切りですが、30手より前に遡る事がなかなかできません。評価関数
の精度のためか、残り28手あたりから急激に読み切り時間がかかるようになり
ます。評価関数の精度が悪いのでオーダリングが正しくできていないからでは
無いかと想像しています。強化学習で補えるかと思っていますが、まだまだの
ようです。
現在、記譜学習は完全読み切りができている盤面しか使用していませんが、
せめてMCTS探索が始まって以後の盤面も学習に使用してみようか悩み中。
これ以上の精度を求めると、やはりDLに行かざるを得ないですね。
今の探索でもツリーがメモリー内に収まるギリギリに係数を設定しているので
探索延長が起きるとあっという間にスワップ開始になってしまいます。
というわけで大きなメモリーが欲しい今日この頃です。

176:535
17/12/25 21:28:02.81 iTZFwLsg.net
すっごい微妙な駆け引きができるようになって会心の勝利!
と思いきや勝利目前でバグが出てパス2回した後エラーはいて落ちたorz
くそくそくそくそ!
いい加減直さなきゃだけど再現性低いからバグ潰すの難しいんだよなぁ
(
;FF[1]GM[1]SZ[9]
;B[ee];W[dc];B[de];W[ce];B[ge];W[df]
;B[hc];W[fg];B[gd];W[gf];B[cf];W[eg]
;B[gg];W[gh];B[cd];W[fe];B[fd];W[dd]
;B[ff];W[hg];B[be];W[cg];B[];W[gg]
;B[];W[dg])

177:535
17/12/26 21:57:37.38 vTaELiqs.net
勝利が目前に近づくとパスする。
マジ原因がわからんorzorzorz
ログでも仕込むか?

178:535
17/12/26 22:08:58.18 vTaELiqs.net
石を取って必勝形になる形だとパスするのか?
条件絞り込みがムズイ。
とりあえず、ログかなぁ?

179:535
17/12/27 20:40:10.55 SLxZ+o46.net
ログ仕込んだら計ったように再現しなくなったwwww
しばらく対局しまくるしかないか

180:535
17/12/27 21:31:50.30 SLxZ+o46.net
バグの原因わかりました。
ノードに盤面情報登録し忘れてるパスがあった。
これで落ちずに連続対戦できるようになるかな。

181:535
17/12/27 22:15:38.79 SLxZ+o46.net
連続対戦上手く動いてるっぽいです。
今のところ黒番で8勝2敗
かなりいい感じ。

182:535
17/12/27 22:57:18.00 SLxZ+o46.net
黒番で13勝7敗
だいぶ追い上げられたorz
でも連続対戦ちゃんと動いてるようで嬉しい。

183:310
17/12/28 00:14:18.22 p44JRClR.net
やっぱりintでオーバーフローしてた(汗。仕方無いのでint64で。doubleでも
メモリーサイズは一緒だけど、intの方がオーバーフローがわかりやすい。
あと、効果あるかわからないけど、置換表再利用回りをちょっと機能追加。
途中でゲーム終了になった時のスコアカウントですが、FFO計算をチェックに
使っている関係で空白マスを勝者総取りにしています。しかし、学習の時には
空白マスを含めない方が回帰の計算的には良いのではないかなと思い始め
ています。MCTS的には終局判定を入れてあり正しく終局時スコアを返すので、
あくまで学習時だけの話です。
ただ、記譜を経由していればスコア再計算で良いのですが、置換表に溜まって
いる盤面情報では、アメリカルールのスコアを割り出しようが無いという…。

184:535
17/12/30 18:56:09.79 YPjfi6f/.net
実家に帰省しました。
DB作成を流しっぱなしにしてきたので
正月あけどれくらいデータ取れてるか楽しみ

185:名前は開発中のものです。
17/12/31 18:54:54.44 /rN76OKL.net
簡単にお金が稼げる方法興味ある人だけ見てください。
グーグル検索⇒『来島のモノノリウエ』
G32792G4ML


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

394日前に更新/260 KB
担当:undef