0001名前は開発中のものです。03/07/10 00:10ID:6FQp6G+O
比較的地味なボードゲーム専用のスレが欲しくて立ててみました。
私はc言語で作ったデータベースを使って人間と対戦できる将棋かチェス
みたいなソフトを作りたいと思ってますが、グラフィックインターフェースの
作り方がわからなくてつっかえているレベルです。
なんか、3x3のフィルターは学習動くのに5x5のフィルターで学習させようとすると落ちる?
とりあえず、3x3のフィルターで進めてみます。
tensorflow固有の問題じゃないかもですがとにかくメモリが足らんですね。
今のマシンは16GBなんですが、可能なら128GBくらい積みたい気分。
やはりスレッドリッパー欲しい。金がないけど。
tensorflowに計算機占有されちゃうの意外と痛いですねorz
やはりスレッドリッパーしか…
でも金が…
局面の勝率計算させてるけど今正解との誤差が平均0.14くらいっぽい
勝率で平均0.14違ったら使い物にならんじゃないのか?
うーん。
並列処理すると、何使っても計算機資源占有されちゃいますよw
だからGPUに逃がしてCPUを空けようとしたりするんですよね。
最近扇風機で冷やすようにしてますが、扇風機無しだとクロック数が80%以下まで
下がってしまって、そういう時に限って、読み切り処理でバグがあるような結果が出て
います。理屈ではありえないんだけど。
スレッドリッパーでもi-7900Xでも、CPUの温度対策は大事になると思います。
強化学習は、適当にコーディングして結果からデバッグしているので時々不安になり
ますが、それなりに学習してくれているみたい。学習内容は同じく勝率で、これをアル
ファ碁で言うところのポリシーに使用してます。
強化学習のポリシーを導入した事で、遡りチェックも調子よく遡るようになり、最善手を
指している率が上がったように感じています。しょせん強化学習だし、まだ学習しはじめ
なので、精度は高くありませんが、使い方次第ではいける感じです。
強化学習続けたら、定石DBの代わりになるんじゃないかと期待。
しばらく学習フェーズになりますが、次はロールポリシーを改良したいかな。
損失がこれ以上下がらなそうなところまで来たので、
AIに組み込んでみようと思ったのですが、
tensorflowでの学習結果をどうやってC++にもってくればいいのかよくわからないというw
とりあえずググってみますが、見つかるかなぁ?
C++にもってくるの現状そんな簡単じゃないっぽいorz.
windows上でtensorflowをコードからビルドとかマジすか?
ウェイトデータをバイナリで持ってきて、フォワード計算を自分で書くってのじゃダメ?
パッケージに任せたい面倒くさいところって、バックワード部分だから。
自分の場合、mctsで並列処理していて、使用している行列パッケージのEigenも並列
計算していて、両方で並列化しちゃうとスレッド取り合って劇遅になっちゃうし、Eigenを
シングルスレッドで動かす時のオーバーヘッドが気になったので、AIで使用する時の
フォワード計算は自分で書きました。
うーんそれが一番妥当ですかね〜
ありがとうございます。
でもバグなく書けるか若干心配w
強化学習、ずっと学習続けていると、途中で弱くなっていく。
アルファ碁のやり方をまねていたけど、一旦超シンプルな方法に変えてみて、
とにかく施行回数を増やしてみます。
強化学習を使って、序盤の評価関数が作れないか検討開始。
あと、時々出ていた終盤探索のバグ。
今度はたぶん大丈夫だと思う。
何度目の大丈夫だって状態だけど(汗
学習率って何気に大事なパラメータですね。
速度がかなり違う。
もっと大胆に攻めた値にすべきかな?
学習率は大事だけど、今時はRMSPropとかADAMとかで
自動計算にしちゃうんじゃないの?
詳しいことはよくわかりませんが、最適化の関数名はAdamOptimizerとなっているのでそうなのかもしれませんね。
学習率のパラメータ渡すところも引数省略可能っぽいですね〜
自動計算のほうがいいんだろか?。
参考にした本には学習率設定してありましたのでマネしました。
それならAdamですね。Tensor Flowなら当たり前ですね。
学習率ってだけだったので、Optimizer無しの学習率だと思いました(汗
省略時引数はたぶんモデル発表者の提示した推奨値です。
まあ、パラメータをいじるかどうかは、個々人の好みとい事で。
フィルターの数も多けりゃ多いほど誤差が減るって単純なものでもないみたいですね。
多すぎると最適化が収束しなくなるっぽい。
フィルタ数は大きければ大きいほど良いのですが、学習に必要な時間が恐ろしく
長くなります。十分に多いフィルタ数で収束できる事を確認したうえで、だんだんと
減らして行くなんて作業になります。段数についても一緒。
ロースペックマシンだと1回試すのに下手すると数週間とかあり得るのです。
かといって、精度が出せないレベルの簡素なモデルで試しても、いつまでたって
も収束せずに、まだかなみたいな。モデルの複雑さが足りているかいないかが
わからない点が、困ったちゃんなのです。
さて、強化学習ですが、なんとなく学習しているようにも見えるし、最適解の周囲を
振動しているようにも見えます。ふと思い付いたのですが、最適化(SMORMS3って
奴を使用)をやめて、ただの学習率(もしくは、学習率の漸減)にした方が、動きが
素直になって良いのかも。
今のスピードは1時間に100万対戦。1億対戦するのに4日強かかるわけで。まだ
試行回数が足りていないかもしれないし、そもそもただの線形ではモデルが簡単すぎ
るのかもしれません。
というわけで、CNN使わずに線形でやっても同じ問題が起きまするorz
フィルタ数は大きければ大きいほど良いのですが、1回の学習に必要な時間が
フィルタ数に比例して長くなります。十分に多いフィルタ数で収束できる事を確認
したうえで、だんだんと減らして行くなんて作業になります。段数についても一緒。
これ、1サイクルの計算時間の話なので、収束しやすさについては、複雑さが
増すとさらに時間がかかる可能性あります。
ロースペックマシンだと収束できるか確認するのに下手すると1か月とかあり得ます。
かといって、精度が出せないレベルの簡素なモデルで試しても、いつまでたって
も収束せずに、まだかなみたいな。モデルの複雑さが足りているかいないかが
わからない点が、困ったちゃんなのです。
さて、強化学習ですが、なんとなく学習しているようにも見えるし、最適解の周囲を
振動しているようにも見えます。ふと思い付いたのですが、強化学習に限っては、
最適化(SMORMS3を使用)をやめて、ただの学習率(もしくは、学習率の漸減)に
した方が、動きが素直になって良いのかも。
今のスピードは1時間に100万対戦。1億対戦するのに4日強かかるわけで。まだ
試行回数が足りていないかもしれないし、そもそもただの線形ではモデルが簡単すぎ
るのかもしれません。
というわけで、CNN使わずに線形でやっても同じ問題が起きまするorz
あれ、2度書きになってしまった。
しかも内容が微妙に違うw
いやぁ、またやっちまった。
バリューの評価値計算が間違っているの気が付いて、リセットしようとしたら、
間違えてポリシーの強化学習の方をリセットしてしまった。またやり直しです。
ちなみに、ただの学習率ってのSGDですね。ようやく思い出した。
ついでなので、若干パラメータ変えて強化学習再開。
時間あたり試行回数は減るけど、トータルで少しは学習が速くなるはず。
CNNのフォーワード計算自前で書くの結構面倒くさいなぁ。
バグなく書けるかも心配だし。
うーん。
ここで足踏みしてます。
オライリー本のゼロから作るDeep Learningって本ではPythonでのコードが載ってた
けど、畳み込みのところをim2colとかいう関数で展開して、行列計算に落としこんでた。
im2colのソースを探したけど、見つからなくて放置してますが、あれが常道だと思います。
ポリシーの強化学習、遅々として進んでいます(汗
時々、テストでMCTS動かしてポリシーの学習値を見ているのですが、
学習対象の全48手のうち、後ろ12手分くらい、それっぽく濃淡がついてきてます。
このまま続けたら、もっと前の方まで学習してくれると期待しているのですが、ここ
からが分岐が多い箇所なので、どれくらい時間がかかるか想像がつかない。
で、ポリシーの強化学習の結果を使って、バリューの方も学習させていたのですが、
やはり無理がある事に思い至りました。バリューはバリューで別途強化学習をさせ
ないといけない模様。どちらかというとバリューの方が大事なので、このままポリシー
の学習を続けるか、一旦棚上げしてバリューの方に乗り換えるか、悩み中。
学習中のポリシーをMCTSに組み込んだところ、速度低下が著しい。メモリーのランダム
アクセスが原因だと思う。速度アップネタをいくつか模索してみたいと思いますが、
変更が重いので、いつやるかこちらも悩み中。
天頂7発売するらしいですね
これは買うしか無い
それに合わせてpcも買い換えるチャンスか?
悩ましい
tensorflowを捨ててC++で使いやすい別のフレームワークを探そうかと思案中
でもtensorflow捨てるの勿体ないなぁとも思う
ググったらtiny-dnnというのがヒットした。
ちょっと調べてみるか
C++なフレームワークってほとんどないです。
自分はtiny_dnnくらいしか見つけられなかったけど、あまりに学習に時間がかかった
ので放置です。やっぱ、それなりのPC環境無いとダメなんでしょうね。
自分といえば、やっぱりバリューが大事と言う結論に。
あわせてグチャグチャになっていた強化学習回りのソースの全面整理と、mcts時の
速度改善のために、ポリシーとバリューのウェイトをセットで扱うように変更。
先ほど、ようやくまともに学習するようになったと思います。そう思いたい(汗
これでまた1週間かなぁ。
バリューは記譜使って、多少は事前学習できるけど。
tiny-dnnパッと見なかなか良さげな感じだがネットの情報だけだとよくわからん。orz.
tiny-dnnの良い入門書籍ないかな〜
うお、examplesがビルド通らね〜
めんどくせ〜
コンパイラがC++14に対応してないといかんのか?
よくわからんorz.
std::threadがないとかなんとか。
うーん。コンパイラ変えなきゃダメかなぁ?
すいません。>>310さんはtiny-dnn動かせたんですよね?
コンパイラは何使ってますか? Visual Studio Communityの2017です。C++14対応してます。
GitHUBのtiny_dnnのページにC++14必須となってますね。
C++11あたりからC++がほとんど別物になっちゃったみたいですね。
自分は最近始めたばかりなので、詳しく知りませんが。
VC++ですか〜ありがとうございます。
しょうがない、乗り換えるかorz.
もしかしてインストールメッチャ時間かかる?
今日は一晩放置かな?
とりあえず、mnistのtest.cppはコンパイル通りました。
examplesのmain.cppは
main.cpp(305): error C2065: 'num_hidden_units': 定義されていない識別子です。
って言われた。
これからボチボチいろいろ動かしてみます。
そろそろスレ立ての季節ですね。
次スレどうします?
mnistは動かしたけど、examplesは文字通り構文サンプルとしてしか見てなかったかも。
995踏んだあたりで次スレ建てましょう。
>995踏んだあたりで次スレ建てましょう。
了解です。
>mnistは動かしたけど、examplesは文字通り構文サンプルとしてしか見てなかったかも。
なんかnum_hidden_unitsは定義されてるんですが定義される前に参照してるみたいですね。
順番入れ替えたらコンパイル通りました。
tiny-dnn 懇切丁寧な入門書籍が欲しいな…
かなり良さげなのにモチベーションがなかなか高まってこないorz.
解説無いですねぇ。
まあ、わかってればわかってるなりに使えるツールみたいになってますが、
自分はウェイトデータを保存して再利用みたいなところまでたどりついていない
のですが、テンソルの構造がいまいちわかっていなかったりして。
あ、urlが2chだとNGワードになっちゃうので、5chにしてみたけど、リンクできず。
というか、どうも.scの方にスレ作ってしまったかも。
このスレもメッセージ同期していたので、気が付かなかった。
なんかわけわからん。
スレたて乙です。
tiny-dnnの勉強全く進んでませんorz.
ぶっちゃけNNなんて、Deepが付いても大雑把じゃね?
あんなんで人間様に勝てるんかいな???
数学の回帰というのが、本質的に大雑把なんだから
10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 5212日 19時間 28分 26秒
10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php