X



【オセロ,将棋】ボードゲーム Part2【囲碁,War】
■ このスレッドは過去ログ倉庫に格納されています
0002535垢版2017/10/16(月) 21:32:43.84ID:nZcg7vL7
ここって書きこみないと落ちちゃうとかあるんでしたっけ?
とりあえず、スレたて乙です。
0003535垢版2017/10/16(月) 22:46:32.02ID:nZcg7vL7
どこかにtiny-dnnのまとまったドキュメントないですかね〜
とりあえずvec_tというのが何者かわからないorz.
0004名前は開発中のものです。垢版2017/10/16(月) 22:57:12.10ID:hLbjq5wm
どもです。

強化学習ですが、まだまだ時間がかかりそうで、業を煮やして学習率あげたら、
バリューが発散してやり直し(汗

ちょっと工夫を加えて、強化学習を数回したら、MCTSで自己対戦して記譜作成。
記譜を見て学習の進捗を計りながら、過去に採取した記譜で軽く教師付き学習
させて、学習の方向性を補正しつつう、後半部分の精度を少しづつ上げて、強化
学習がはかどるようにしようとしてます。

というわけで、純粋な強化学習ではなくなってしまった。
0005535垢版2017/10/16(月) 23:09:26.31ID:nZcg7vL7
名前はどうしましょうかね〜
新スレだし310,535を名乗るのもなんですね…
0006名前は開発中のものです。垢版2017/10/16(月) 23:10:47.72ID:hLbjq5wm
>>3
日本語紹介記事
https://qiita.com/nyanp/items/11c6bb6fb539486c5069

作者の実装ノート
https://github.com/tiny-dnn/tiny-dnn/wiki/%E5%AE%9F%E8%A3%85%E3%83%8E%E3%83%BC%E3%83%88

英語
https://github.com/tiny-dnn/tiny-dnn/wiki
http://tiny-dnn.readthedocs.io/en/latest/how_tos/How-Tos.html

こんなの見てました。

vec_tについては、3番目のwikiのData-Format
> https://github.com/tiny-dnn/tiny-dnn/wiki/Data-Format
に、vector<double>であると書かれています。

なんちゃらparserってのは、外部のデータをtiny_dnnの内部形式である、
vec_tやlabel_tに変換するユーザ関数で、用途に合わせて自分で書かなけ
ればならないものです。入力データが2次元であっても、左上から右下に
一列のベクトルとしてセットして、縦横の情報はレイヤー定義で与えます。
0007535垢版2017/10/16(月) 23:18:52.91ID:nZcg7vL7
おお、ありがとうございます。
読んでみます。
0008535垢版2017/10/19(木) 00:44:02.75ID:NEwsyYTL
気が散ってほかのことをしてしまうorz.
先延ばし先延ばしにしてしまうorz.
0009535垢版2017/10/19(木) 00:44:48.21ID:NEwsyYTL
IDがNEWSや!
0010名前は開発中のものです。垢版2017/10/19(木) 15:52:29.71ID:ETYZ9m/m
アルファ碁ZEROだそうな。
自己対局の強化学習のみだそうな。
レート5000越えだそうな。

囲碁AIやらなくてよかった・・・
0011535垢版2017/10/19(木) 17:50:51.04ID:9y30JekY
旧アルファ碁に100戦100勝て
宇宙やばいってレベルじゃねーぞ?
0012名前は開発中のものです。垢版2017/10/20(金) 15:58:45.15ID:AyXCD9Rq
掲示板情報を総合するとMCTSなんだけどRolloutを使っていないという事らしい。
現在出張中なので、論文ダウンロードを躊躇しているけど、読みたいなぁ。

自分のオセロでは、スピードを稼ぐためにRolloutにヒューリスティックスな次の1手
を使用しているけど、自己対戦見ていると序盤良い感じで来ていると、Rolloutが間違
えて、負け手順に入る事が多い。それで、Rolloutせずに(したふり)Valueの遡りだけ
でQ値を計算したらどうかと思っていたんだけど、そういう事なのかなぁ。Rolloutを
省略しちゃうと、ものすごいスピードアップするので、探索が深くなるんだよなぁ。

先にやっちゃえばよかった(汗
0013535垢版2017/10/20(金) 22:03:42.47ID:NnxpZZEA
すいません、310じゃなくてもいいのでなんかコテつけてくれませんか?
どうせ2人しかいないからわかるっちゃわかるけどw
0014310垢版2017/10/20(金) 22:21:51.68ID:AyXCD9Rq
あ、つけ忘れ失礼。

Rollout無し版を試してますが、何故か最近静まっていた終盤読み切りのエラーが(汗
撲滅していたはずなんですが・・・
0015名前は開発中のものです。垢版2017/10/24(火) 00:38:25.07ID:lvcSYEt0
Rollout無しのMCTSは圧倒的な探索深さを実現できるかわりに、今までRolloutで
修正かけていた評価値の誤りがダイレクトに出て、読み間違いは相変わらずです。

強化学習が進めば治るはずですが、SGDでは遅々として学習が進まないので、
optimizerをSMORMS3に戻して、一旦記譜学習を増やしてみました。やはり学習速度
が圧倒的に違います。そして、このやり方でも大丈夫っぽいです。

どうも遠回りしていたようです(汗
0016535垢版2017/10/25(水) 20:54:40.99ID:atHU9A83
なんだろう、このtiny-dnnの得体のしれぬハードルの高さは…
パッと見、すごくよさげに見えるのに全然前に進めない。
なんだろう…なんだろう…
0017535垢版2017/10/26(木) 00:13:05.87ID:vVm7O/8N
とりあえず、mnistのやつは正解をlabel_tで渡すみたいだけど
局面の勝率を正解にしたい場合はどうすればいいんだろう?
ラベルと勝率じゃデータ構造違うよね多分?
それとも同じなんだろうか…
0018535垢版2017/10/26(木) 00:16:30.06ID:vVm7O/8N
内積とると考えれば勝率を一次元のベクタと見なせばつじつまが合うのか?
0019名前は開発中のものです。垢版2017/10/26(木) 09:53:53.13ID:43FvyXwK
>>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を使用します。
0021535垢版2017/10/26(木) 21:09:13.33ID:vVm7O/8N
おおーありがとうございます。
trainの代わりfitってのがあるんですね。
ドキュメント読もうとしても英語ということを差し引いても
気が散っちゃって目が滑っちゃってどうにも駄目です。

試してみます。
0022名前は開発中のものです。垢版2017/10/26(木) 22:02:22.81ID:/MbW7Vlw
CNNの例題は大抵が多クラス分類問題ですからね。
説明がfit中心になりがちです。
つか、僕もかなり目が滑りました(汗
0023535垢版2017/10/26(木) 23:07:10.48ID:vVm7O/8N
うお、コンパイル通ったけど不正終了するorz
ネットワークの形が不整合起こしてるのかなぁ
0024535垢版2017/10/26(木) 23:47:16.17ID:vVm7O/8N
動いた!
入力の形がおかしかったみたい。
0025535垢版2017/10/27(金) 00:51:01.21ID:DjbLG1y4
cross_entropyだと動くのにmseだと落ちる
完全に意味不明
0026535垢版2017/10/27(金) 01:02:07.81ID:DjbLG1y4
cross_entropyでも動かなくなったw
なんなのwww

もう寝る
0028名前は開発中のものです。垢版2017/10/27(金) 01:34:38.06ID:3GgMcLzr
rollout無しにして探索速度がかなり上がったのですが、10手目近辺には
ツリーの深さが50手まで達してしまいまして、今度はスワップとの闘いに
なりつつあります。探索幅をケチればスワップは回避できるのですが、
そうすると読み漏れが・・・。

8ギガ程度じゃこの速度を活かせません(汗
0029310垢版2017/10/27(金) 09:09:34.47ID:InThdIzI
あれれ。また名前が消えていた(汗
お分かりの通り、今のところ名無しは310です。
0030535垢版2017/10/27(金) 21:44:23.84ID:DjbLG1y4
なんかキャッチできたみたいです。
bad allocation
だそうです。

いまはmain全体をtryでくくっているのでどこで例外が出ているのかよくわからないですね。
まずはそこの絞り込みですかね。
0031535垢版2017/10/27(金) 22:06:52.63ID:DjbLG1y4
なんかスタックオーバーフローっぽい。
0032535垢版2017/10/27(金) 22:12:35.89ID:DjbLG1y4
盤面のデータをvectorに突っ込んで返す関数があるのですが、
盤面のデータがでかすぎるってことみたいですね。どうやら
0033535垢版2017/10/27(金) 22:13:39.78ID:DjbLG1y4
>>27
解決したみたいです。
ありがとうございました。
助かりました。
0034535垢版2017/10/27(金) 22:45:06.44ID:DjbLG1y4
スタックオーバーフローじゃなくて32bitだとメモリが足りないってことみたい。
64bitでコンパイルしたら正常に動いたみたいです。
0035535垢版2017/10/27(金) 23:11:51.03ID:DjbLG1y4
動いてるように見えるけどエポックが進んでも損失が変わらない。。。
何を間違えてるんだろう?
0036535垢版2017/10/28(土) 01:11:42.69ID:MUiBaiII
ネットワーク少し複雑にしたら激遅になったorz.
も〜ムカつく。
0037535垢版2017/10/28(土) 01:24:04.86ID:MUiBaiII
ん、これシングルスレッドで動いてるん?
マルチスレッドに出来るのかな…

もう今日は寝ます。
0038310垢版2017/10/28(土) 13:51:26.14ID:rt9aGKVT
ネットワーク1段増やすだけで信じられないくらい遅くなりますよね。
最初に十分に深くして学習させて、だんだん減らしながら適切な深さを
求めたいんだけど、この速度低下を考えると、本当に学習できるのか
わからないままだんだん深くしていくしか無いというのが萎える点です。

スレッドについては、リソースモニターで確認するとわかりますね。

ヘッダのどこかに並列化の設定があったはずです。
コンパイラがVSならOpenMPのオプションを設定します。

コンパイラのオプションの方もOpenMPの設定をお忘れなく。
0039535垢版2017/10/28(土) 22:22:00.33ID:MUiBaiII
一応マルチスレッドで動いてるみたいですけど、CPUが50%位しか行かないですね。
あと、エポックが進んでも損失が変わらない原因がさっぱりわからないorz.
0040535垢版2017/10/28(土) 23:21:37.85ID:MUiBaiII
畳み込み層の設定がおかしいみたい。
畳み込み層外したら損失減った。
0041310垢版2017/10/28(土) 23:37:15.46ID:rt9aGKVT
CPU使用率はそんなもんかも。
ヘッダの話、Eigenとごっちゃになってるかも。

強化学習ですが、徐々に進んでいます。もっと早くSMORMS3にしとけば良かった。

終盤読み切りのソート順に評価値を使用しているのですが、目に見えて速度が
上がってきています。また自己対局の精度も上がってきたようで、遡りチェックで
30手まで何度か行きました。逆に記譜収集の方は、スコアのばらつきが無くなって
きて、記譜的に良い事なのか不安。

というわけで、手ごたえを感じつつ、現状に合わせて若干設定変更。
0042535垢版2017/10/29(日) 00:36:11.21ID:zJx7nuOS
なんか畳み込みにこだわらなくても全結合でも結構いい線いきそうな?
まあ試しに全結合で進めてみるか。
0043535垢版2017/10/29(日) 18:55:23.53ID:zJx7nuOS
AIに組み込んでみましたが全く強くなってないですw
そういえば、ライフゲーム囲碁はDBつかっても強くならないんだったww

囲連星に転進するか…
0044535垢版2017/11/01(水) 00:19:41.19ID:M72WSH0d
囲連星のDB全部vec_tに変換したらメモリパンクした^^
学習しないな俺w

マジでスレッドリッパーに128GB積みたい気分
0045535垢版2017/11/01(水) 00:42:51.08ID:M72WSH0d
データ減らしたら動き始めました。
でも遅いな〜こりゃそう簡単には終わらんぞorz.
まあ今晩一晩流してみますが…
0046310垢版2017/11/01(水) 01:06:46.90ID:FDjtq7R7
バラして部分づつ学習する手もあるかも。
あ、元データはランダムに並び替えた方が良いですよ。
わかってると思いますが。


こちらは、しばらく強化学習していたら、それなりに学習が進んだ結果、
対戦相手側の手のばらつきが足りなくなって、局所解に陥ってた感じ。
急きょばらつきを広げて学習再開させたところです。

バリューの方は地道に損失が減っているんだけど、ポリシーの損失が
増えてきた。ポリシーはsigmoidがあるので、ウェイトが絶対値でとてつも
なく大きくなって、なかなか修正しきれない状況になってるかもしれない。

一旦リセットすべきか悩み中。
0047535垢版2017/11/01(水) 19:51:55.33ID:M72WSH0d
1エポック5000秒、しかも損失があんまり減っていかないorz
これはかなり厳しい
0048535垢版2017/11/01(水) 20:00:50.18ID:M72WSH0d
ネットワークの大幅な簡素化が必要か?
でも今のネットワークでも損失が減っていかないところを見るとそれも望み薄かなぁ
0049310垢版2017/11/01(水) 20:13:34.50ID:A50hx8cn
たぶん、損失の減り方は最初はゆっくりだと思います。
「特徴抽出しながら」誤差修正していってますから。

僕と同じ悩みですね。
ネットワークの大幅簡素化の結果、最終的に線形回帰まで戻ってしまいました(汗
もっとも、オセロはBuroさんの特徴抽出があったから線形回帰まで戻れたのですが。

スリッパとGPUが呼んでます(笑)
でも、もしかしたらAMDよりINTELの方が良いかもしれない。
高いけど。
0050535垢版2017/11/01(水) 23:16:09.92ID:M72WSH0d
簡素化してみました。
1エポック650秒位。
損失はあんまり減っていかない。
うーん。
0051535垢版2017/11/01(水) 23:18:55.84ID:M72WSH0d
>>49
買うとしてもZen+まで待ちます。
0052535垢版2017/11/02(木) 20:54:58.92ID:PGhNTWut
60エポック回したけど損失減らずorz
くそ〜どうすりゃいいのさ
0053535垢版2017/11/02(木) 21:57:25.36ID:PGhNTWut
ライフゲーム囲碁は結構損失減ったのになぜ囲連星はあんまり損失が減らないんだろう?
入力のサイズがでかいのは確かにあるけど。
0054535垢版2017/11/02(木) 22:35:50.49ID:PGhNTWut
石を中央寄せにして19x19の盤面を9x9くらいに削ってみるか…
0055535垢版2017/11/02(木) 23:58:27.26ID:PGhNTWut
お、損失ちょっと減った。
これで一晩回してみるか
0056535垢版2017/11/03(金) 20:29:00.55ID:MdRaqfZr
うーん。学習率がでかすぎるっぽい?
0057535垢版2017/11/03(金) 20:40:20.21ID:MdRaqfZr
ユニット数少な目段数多めがいいみたい?
0058535垢版2017/11/03(金) 21:52:31.44ID:MdRaqfZr
ミニバッチサイズも何気に速度に影響ありですねぇ
ここでもパラメータいじりの沼か。。。
0059535垢版2017/11/04(土) 20:21:38.30ID:N2Ul/N+d
あかん、まったく使い物にならないっぽい。orz
学習が足りないだけなのか根本的に無理筋なのか。。。
0060535垢版2017/11/04(土) 21:18:12.47ID:N2Ul/N+d
勝率予想だからダメなのか?
次の一手予想のほうがいいんだろか?
うーん。
0061535垢版2017/11/04(土) 22:07:45.27ID:N2Ul/N+d
あとは畳み込み試してないか…
畳み込みに賭けるか…
0062535垢版2017/11/05(日) 00:31:37.24ID:BZBdQob/
お、畳み込み動いた。
後はどれだけ損失が減ってくれるかだな…
0063310垢版2017/11/05(日) 01:04:52.45ID:BooXEMcV
同じ道をたどってますね(汗

こちらは、MCTSで構築したツリーを使って、完全読み切りが速くならないか
試していますが、謎のバグのオンパレードでかなり戦線縮小。一応、それなり
に動作するレベルまで撤退してテストしていますが、なんとなく速度アップは
している模様。

ただ、バグの過程で置換表データに変なものが混じったらしく、学習させると
異常終了になります。記譜は1700件くらい集まっているので、一旦全消去して
しまいました。
0064310垢版2017/11/05(日) 17:40:16.26ID:BooXEMcV
ツリー探査がおかしくなる状態を確認。
けど、カーっとなって即座に終了してしまったので、詳細判明せず。
なんとなく症状は見えたので、しばらく目視デバッグします。

というか、これにより直近に遡りチェックやった記譜の正確さに不安が生じてます。
やけに遡りチェックが簡単に通るなぁと思っていたけど、これが原因かもしれない。
というわけでタイムアウトまで行った記譜を50件ほど再チェックしなきゃならん。
全部で54時間くらいかかる予想。今週はまるまるパーになりそうです。

その分、良質な置換表データが補えるんだけど。
0065310垢版2017/11/05(日) 17:50:28.12ID:BooXEMcV
計算間違い。全部で80時間くらいだorz
0066535垢版2017/11/05(日) 20:13:01.98ID:BZBdQob/
畳み込み駄目でしたorz
くそ〜ディープラーニングからは一時撤退するか…
0067310垢版2017/11/05(日) 23:36:09.29ID:BooXEMcV
ぬがーーーーーーーーーーーー!
バグって、記譜データがすべて上書きされて消えてしまったorz

ツリー利用探索のデバッグ用にput処理にエラートラップ仕掛けた時に
やっちゃいました。

学習済のデータが残っているのだけが救いだ・・・。
ここから記譜作ると、そこそこ精度が良い記譜になるはずなのが救いだ…。
0068535垢版2017/11/06(月) 20:40:50.16ID:opZqsFg1
バックアップ取れしw
一回コード全飛ばししてるでしょうに。
0069535垢版2017/11/06(月) 21:50:55.01ID:opZqsFg1
アルファ碁Zeroの手法まねできないかなぁ
でも論文読んでもわかんねぇだろうなぁ
ていうかGoogleがライブラリとして公開してくんねかなぁw(他力本願)
0070310垢版2017/11/07(火) 15:06:28.24ID:8EOI4Ksy
>>68
おっしゃる通りですorz

評価関数の方は要所要所でコピー残していたのに、記譜はなめてました。

>>69
ライブラリ公開されても、実行できる環境構築の方がハードル高いかなと。

論文はいまだに読んでいませんが、rollout無し(バリューネットに100%依存)
はうまく機能しています。圧倒的にツリー探索性能がアップしているため、評価関数
の精度の低さを、力技でカバーしている感じですが。

とはいえまだ30手以前の評価値はでたらめに近い状態なので頻繁に間違えます。
強化学習でここまで治るのにどれくらいの時間がかかるのかは不明。後ろの方の
精度が上がらないと、前の方は間違った学習を繰り返すことになりますので。

後ろの方の評価関数がそこそこまともになったので、読み切り処理や遡りチェックの
時間はかなり早くなりました。タイムアウト1時間設定で時々空白31マスまで遡れる
ようになってきています。
0071535垢版2017/11/09(木) 21:31:59.52ID:H3GhZh8x
とりあえず、ディープラーニングは一時中断します。
囲連星の序盤のDBは非常にうまく動いてるので、
終盤もDBを生かせないか検討中です。
それと同時にLV3 vs LV3の棋譜取も再開しました。
データは多いほどいいので。

あと310さんの遡りチェックというワードが気になってます。
例えば囲連星の終盤DB作るときにどこから勝負ありの状態になったか
チェック出来たらどうだろう。とか考えています。
0072535垢版2017/11/10(金) 23:45:05.32ID:8vC+UsNi
天頂7買ってみました。
9段に5子置きで勝てましたが4子で勝つのは相当厳しそう。
天頂6より「あ〜そこ大きそうだよね」ってところを的確に打ってくるみたいです。
0073535垢版2017/11/12(日) 20:00:47.41ID:UqBtKmZ3
終盤DBの試作、作ってみましたがあんまり上手く動いてないみたい。
データが終局までの手数しかないのがまずいのかも。
0074535垢版2017/11/12(日) 21:02:51.28ID:UqBtKmZ3
将棋電王戦あったみたいですね。
ポナンザは優勝ならずみたいですね。
0075310垢版2017/11/12(日) 22:19:15.47ID:Uu7EAeJ9
しばらく出張してました。

終盤DBといえばチェスですかね。
遡りチェックは詰みを回避できるかチェックになるのかなぁ。
オセロだと何にも考えずに終局の石差でやっちゃうので。
言われてみて気付いたけど、ゲームの種類によって結構違う考えが必要なんですね。

最近、藤井四段に触発された友人の影響で将棋を始めました。
負けたくないので、3手詰め問題解いていると、どうやってプログラムしようか
とか雑念が沸いてきてしまいます(汗
0076310垢版2017/11/12(日) 22:31:15.55ID:Uu7EAeJ9
MCTSのツリーを使ったオーダリングは、たぶんバグが取れたと思います。
が、なんか別のところで意味不明の動作をして、速度が出せませんorz

また、テストの際に半日経っても終了しなかった盤面を使ってしまい、
何度もやり直しをしていたために、強化学習が滞ってしまいました。

これ曲者過ぎるので、今夜一晩解かせてパスしたい。
朝までにとけなかったらどうしよう。
0077535垢版2017/11/13(月) 23:59:34.34ID:0hUAGldi
試しにMCTSとか必至ルーチンとか重い処理全部取っ払ってみたけど思ったより弱くならなかった。
思ったよりってだけで弱いことは弱いけど。
0078535垢版2017/11/14(火) 00:20:44.53ID:7RkiqcHt
LV1,LV2にも負け越すみたい。
やっぱ弱いわw
勝負が十数秒でつくのは面白いけど。
0079310垢版2017/11/14(火) 00:31:34.47ID:ZeqYQGfh
重い局面は6〜7時間くらいかけてクリアしました。

MCTSの速度が出ない問題は、解消というか、原因不明のまま別の方法で回避。
parallel_forの問題かと思っていたけど、shared_ptrの方の問題だったっぽい。
遡りチェックの時、PVは探索せずに、その他の手をチェックしていくので、他の手
にも探索を振り向けたかったのですが、単純に1手先の局面からUCTを実行すると
10万プレイアウトくらいで突然数十秒宇固まったようになって、それを何度も繰り
返す結果、まったくツリー探索が進まないという症状です。UCT探索の方に1回目
だけランダムに着手する関数を作って、そちらを呼び出したところ、固まらなくなり
ました。

ようやくまともにツリーをオーダリングに再利用できるようになったのですが、要所
要所で極端に探索が遅くなって、逆に時間がかかります。
今しばらく調査が必要な模様。
0080535垢版2017/11/14(火) 00:38:47.74ID:7RkiqcHt
途中経過

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
0081535垢版2017/11/14(火) 08:46:58.91ID:7RkiqcHt
途中経過

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
0082310垢版2017/11/14(火) 23:35:06.48ID:ZeqYQGfh
MCTSのツリーを使用する奴は、どうも挙動が変なのですが原因不明なので後回し。

アルファ碁Zeroでは、強化学習に軽い探索を取り入れたというのを見かけたので、
想像で真似してみる事にしました。

序盤はランダム着手。そこから5手読みの中盤探索を入れて、残り10手完全読み。
評価関数はValueを使用。たぶん、学習はマシになると思います。

もっと精度が上がったら、3手読みにしてスピードアップしたいです。
今はまだ結構ボロボロなので、これで我慢。
0083535垢版2017/11/15(水) 00:08:07.85ID:hR/pxKTk
丸一日回してみました。
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
0084310垢版2017/11/17(金) 23:19:33.73ID:0nQ3gtJu
浅い探索付き強化学習は結構有効に機能しているようです。
学習の速度が明らかに上がったし、精度も良くなっているようで、テスト盤面の
誤差が結構減りました。ただ、そろそろ飽和したか、局所解に入ったような印象。

で、色々考えたあげく、線形回帰ではこの辺が限界かもしれないという事で、
評価関数をmlpにしてみました。valueの方がうまく学習しなかったので、回帰型
ではなくsigmoid出力にして0〜1の数字を石差に変換かけてます。
強化学習は、回帰版の評価関数の結果をそのまま利用してます。

そろそろそこそこ使えそうな誤差になってきたようだし、強化学習は自分に対して
行った方が良いはずなので、全面的にmlpに移行しちゃおうか悩み中。
0085535垢版2017/11/17(金) 23:58:50.71ID:8tEb8SWm
やっぱ思考時間短いといろいろいいんだよなぁ。
モンテカルロは確かにある程度強さ出せるけど
遅いのどうやって克服していいかわからんし。
悩ましい。
0086310垢版2017/11/18(土) 20:23:37.47ID:TwYSqk9E
やっぱスピードは万能ですよねぇ。

モンテカルロですが、評価関数ができたら、アルファ碁Zero方式で(汗
緩やかに読み筋を絞り込みながら、有望な手を深読みする形になります。

mlp版を試していますが、中間層を64にしたら、学習は良いのですが、
モンテカルロが劇遅になりました…。今、中間層8で強化学習していますが、
なんか早々と線形回帰と同様に飽和状態になってしまった模様。

速度的には8が限界な気がする。

途中まで線形回帰の強化学習記譜で学習させていて、同じような癖がついて
しまったのかもしれないので、今晩一晩まっさらから学習させてみようかな。
0087310垢版2017/11/19(日) 15:23:45.94ID:O7LFJYCP
あちゃー。

学習がいまいち変に感じていたのは、これは恥ずかしくて言えないレベルの
仕様ミスでした。あれ?と思って、良く考えずに念のため追加したコードが
数か所。ことごとく悪さしていました。

数日損をしたなぁ。
0088310垢版2017/11/20(月) 22:18:43.00ID:/GG7G9SR
ぎゃー。

評価関数に入れるデータの変換テーブルに間違い見つけた。
評価関数がいまいち収束しなかったのはこれが原因かも。

もともとの線形回帰版の時代から隠れていたものなので、
線形回帰版も計算し直しです。

というわけで、数日パーどころか1か月単位でパーですorz
0089310垢版2017/11/20(月) 22:23:13.40ID:/GG7G9SR
申し遅れましたが、これにて評価関数は最初から計算しなおしです。

幸い、記譜が60件+遡り時の訂正前分100件ほどの合計160件と、
置換表から拾ったものが10万件単位でありますので、最近得ていた
感触だと、これをベースに強化学習で補えそうだというのが、
唯一の救いです。
0090535垢版2017/11/21(火) 23:12:52.06ID:orTiLUyu
やっぱアルファ碁ゼロは理想形なんだよなぁ。
全てが理想的すぎる。
まあ必要計算資源があれですが。。
0091535垢版2017/11/23(木) 19:54:22.22ID:5nKVQF7K
アルファ碁ゼロには興味あるが詳細情報は意外とWebで探すの大変ですね。
かといってネイチャー買うのも金もかかるし読んでも多分理解できないからなぁ。
でも終盤DBとかやってても全然成果あがらなさそうだし生きてて辛い。
0092535垢版2017/11/23(木) 21:16:22.89ID:5nKVQF7K
囲碁ソフトにLeela Zeroというオープンなフリーソフトがあるそうな。
何か参考になるだろうか?
0093310垢版2017/11/23(木) 21:17:40.34ID:A/JPNP9D
アルファ碁ゼロの論文はまだ読んでませんが、アルファ碁の正常進化ですよ。
自分はDeep Learningのところは「しかと」しているので、MCTSの進化形として
とらえてみると、まあ想像ですうが、当たり前の事を当たり前にやっただけかなぁ
と思っています。

それより大問題が…
また、評価関数の入力データ作るための変換に間違いを見つけてしまいました。
前回どころではない大きな間違いで、良くこの評価関数でそこそこ収束していたなぁ
というレベルの間違いでした。ソース喪失して書き直していたところから仕込まれて
いたんだと言う事で。

なんか入力いい加減でもそこそこな評価関数ができちゃう事にびっくり。
今度こそ大丈夫と信じて・・・
0094535垢版2017/11/24(金) 22:55:40.11ID:QoCCcG2C
なんかleela zeroのreadme読んでみたけど、一般人が買えるハードウェアだと
アルファ碁zeroの強さを再現するのに1700年トレーニングしなきゃならんとかw
は〜絶望するわ。
0095535垢版2017/11/24(金) 23:04:07.44ID:QoCCcG2C
結局、仮に大金つっこんでスレッドリッパーとか買ったとしても到底無理ってことじゃん。
まあ、まったくの無駄になるとは思わないけど。
0096535垢版2017/11/24(金) 23:04:57.72ID:QoCCcG2C
なんかIDにCがいっぱいあるな。
0097310垢版2017/11/25(土) 00:38:47.57ID:Dx7Nr2Ji
もういっちょ間違い発見orz

ソース喪失後焦って数日でパーッと書いて、そのまま学習させて、そこそこ
収束していたから放置していたのを思い出してきた。今度は全部チェックした。

しかし、いい加減な評価関数でも、結構収束していたってのが凄いな。
そこはかとなく表現力不足を感じていたのはその辺が原因かなぁ。

記譜と置換表データで1から学習させるのに、一気に500回学習させたら、
思いっきり過学習になってしまった。現在、強化学習で解きほぐし中。
回帰の方はほぼほぐれたけど、MLPの方はまだ時間がかかりそう。
0098310垢版2017/11/25(土) 00:54:30.38ID:Dx7Nr2Ji
>>95
某スレをウォッチしていたら、前から気になっていた事を指摘していた人がいた。
スレッドリッパーはAVX2命令の中に遅いものがあって、一つ下のインテルの奴の
方が、この手の計算は速いらしい。

あと、GPUをどう使うかだね。
けど学習だけならTensor Flowにやらせちゃえばよいのだろうけど、学習データを
使うところまで行ったら、GPU使った非同期並列処理とか考えなきゃならないし。
CUDAだっけ?GPU専用にコード書かないといけないし。

なんか道筋というか、そこまでやってる自分の姿がイメージしきれない(汗

その前に詰将棋を解くプログラム開発してそう(笑)
0099535垢版2017/11/25(土) 01:01:08.99ID:ekS5f4AB
某スレってどこですか?
GPGPUはもうちょっとハードル下がってほしいですねぇ
CPUよりも何十倍も速くなるケースもあるらしいし興味ありますね
CUDAをごりごり書くのは難しそうですがライブラリとかに期待。
0100310垢版2017/11/25(土) 01:26:03.49ID:Dx7Nr2Ji
コンピュータ囲碁か何かのスレです
この1か月くらいのカキこのどこかにありました(汗
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況