X



【オセロ,将棋】ボードゲーム Part2【囲碁,War】
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
垢版 |
2017/10/15(日) 17:34:58.03ID:RaMh0le2
比較的地味なボードゲーム専用のスレが欲しくて立ててみました。

前スレ
【オセロ,将棋】ボードゲーム【囲碁,War】
http://mevius.2ch.net/test/read.cgi/gamedev/1057763418/
0511535
垢版 |
2018/11/21(水) 22:15:48.48ID:YJjwR4VH
windowsは一旦保留にしてLinuxに走るのが正解だろうか?
0512535
垢版 |
2018/11/22(木) 23:20:13.56ID:ak7z/rHD
ネイティブリナックスをデュアルブートにするかVMWareでいくか。
なんかwindows10とlinuxのデュアルブートは罠があるらしくちょっと怖い。
0513535
垢版 |
2018/11/23(金) 15:43:50.93ID:uREb6qVe
うーん、やっぱAQ無理かもorz.
もっと簡単そうなのに逃げるべきだろうか?
とほほ
0514名前は開発中のものです。
垢版 |
2018/11/24(土) 05:53:44.23ID:quW8CQIk
同一HDD 内で、Windows10・Linux のデュアルブートは、素人では元に戻せない。
だから、日経Linux では、仮想OS を使うように書いてある。
Virtual Box が多いかな

Ruby できるなら、Vagrant, Chef から使うのもよい

漏れは、WSL・Ubuntu16.04 を使っている。
ただし、WSL はGUI なし。コマンドのみ

開発用だから、本番では使えないし、Docker なども使えないけど、
WSLは単なるアプリだから、遊ぶには気楽
0515535
垢版 |
2018/11/24(土) 20:30:54.02ID:CNsuI7eC
うーん、今後の方向性が定まらないorz.
最終的にはwindowsでやりたいからそこも悩みどころ。
0516名前は開発中のものです。
垢版 |
2018/11/24(土) 23:59:56.87ID:MjnwrHjN
ボードゲームスレだよな?なんの話してんの?
0517310
垢版 |
2018/11/25(日) 09:01:51.50ID:Mml0PIJf
Iterative Widening何とかできた。平均的に高速化できていると思う。

FFOについては相変わらず>>495さんと比較して速度は半分くらいかな。

一方で記譜作成的には倍速になったイメージ。細かく4σまでWideningして
いる事で、仮探索の誤答が減った事が効いています。

 仮探索で増える時間
   > 仮探索が正解した時に減る時間 + 誤答した時に増える時間

Iterative Wideningで、仮探索時間の削減と正答率の向上の両方が実現できた
感じです。この辺、課題盤面との相性がある話なので、統計的に計ろうとすると
かなり面倒です。というか、統計的に計るためには、前提となる評価関数をロック
しなきゃなりませんが、現在記譜作成しながら評価関数学習させてますので、
前提が常に動いてしまいます。

現在オーバーヘッドが嫌で、ノード数をとっていません。並列化するとロック
の待ち時間で数%〜10%くらい速度が落ちちゃうからです。ノード数をとれば
純粋な速度比較がしやすいのですが、悩みどころです。
0518535
垢版 |
2018/11/25(日) 22:15:31.15ID:MnTu6mxc
なんも進展がないのでとりあえず昔作った19路囲連星AIをビルドする環境を新マシンに構築しました。
リハビリの意味でもしばらくこれいじってようかな。
0519名前は開発中のものです。
垢版 |
2018/11/26(月) 11:23:16.87ID:3TlDlboD
オンラインボードゲームって作れば流行ると思うんだけど、誰もやらないってことはサーバの維持費の方が高くなるんかね?
0521535
垢版 |
2018/11/26(月) 22:59:02.56ID:PdBnQCC1
気持ちだけ焦るけど、何も進まないというorz
とりあえず、結果だけ求めるのは謹んで、
地道に愚直にディープラーニングの勉強するのが正解だろうか?
0522310
垢版 |
2018/11/27(火) 09:45:52.43ID:IL6H1udh
自分の場合、プログラムいじるネタが欲しくて、ヘウレーカ!って感じを味わいたくて、
続けているだけだからなぁ(汗

目標でかすぎるとか、期限切りすぎると、焦って嫌になるだけだよ。

オセロなんて、既にやってる人ほとんどいないから、ちょうど良いのだw
今の目標は、60歳になるまで続ける事w
0523535
垢版 |
2018/11/27(火) 18:36:07.13ID:oxbu/SRL
そうですね
結局自分のペースで一歩一歩進んでいくしかないですよね
ありがとうございます
0524535
垢版 |
2018/11/27(火) 20:02:14.21ID:DriHkSnO
これからどうしようかなぁ。
以前、途中までうまくいきかけた9路囲連星を移植したalpha zero クローンのコードを読み解くのやってみようかなぁ。
それとももっと本とか読んで理論の基礎から固めていくべきだろうか。
0525名前は開発中のものです。
垢版 |
2018/11/27(火) 21:15:20.03ID:8ndts6Rn
loser_sのブログ読んだけど、重大発表やばすぎだろ
0526535
垢版 |
2018/11/28(水) 22:14:06.77ID:h+t1ldhF
VMWareのubuntuで9路囲連星のalphazeroクローン動かしてみたらなんかメモリリークする。
前のマシンではメモリリークなかったのに?
OSとかpython とかCUDAのバージョンが変わったせいだろうか?
うーん、解決する気力がいまいち湧いてこないorz
0527535
垢版 |
2018/11/28(水) 22:31:22.70ID:h+t1ldhF
やっぱ出来ればwindows & C++ で行きたいなぁ。
うーん。
0528535
垢版 |
2018/11/28(水) 22:44:28.01ID:h+t1ldhF
悶々としつつ19路囲連星AIでLV3と対戦させたら素晴らしい勝ち方した。
(;SZ[19]
;B[jj];W[ji];B[ii];W[hi];B[ih];W[ik];B[ki];W[jl]
;B[hh];W[ij];B[jh];W[lh];B[gg];W[ff];B[fg];W[gi]
;B[kg];W[eg];B[lg];W[hg];B[hf];W[jg];B[jf];W[km]
;B[ig];W[hj];B[fh];W[ln];B[mo];W[lj];B[hg];W[mj]
;B[jg])
自然な流れからのダブル必勝形。
こういうのがたまにあるから止められないんだよなぁ。
0529535
垢版 |
2018/11/29(木) 20:09:22.49ID:vNqglcEX
ふーむ。ダブル必勝形で勝負ありかと思ったら白にも粘り筋があって意外と奥が深い。
でも正しく打てばたぶん黒の勝ち。
0530535
垢版 |
2018/11/30(金) 20:09:22.21ID:QHRZJCgT
やっとこさ週末か。でもどうせ進まない予感orz
せめてなにかこれだという方針が定まらないと。

焦っちゃダメと頭では分かっていてもついww
0531535
垢版 |
2018/11/30(金) 20:59:59.07ID:QHRZJCgT
理想を言えばwindows & C++ & reinforcement learning
その線で探ってみるか
0532535
垢版 |
2018/12/01(土) 19:46:42.48ID:1G6ID0fa
まだまだ方向が定まらないけど、来るべき時のために今のうちに棋譜集めを始めるべきだろうか?
無駄になるかもしれないけど、何もしないよりはいいよね?
0533535
垢版 |
2018/12/01(土) 20:48:59.14ID:1G6ID0fa
16プロセス並列棋譜取り
なかなか圧巻ですな

ファンがうるさいけど
0534535
垢版 |
2018/12/01(土) 23:10:46.72ID:1G6ID0fa
全コア使い切っちゃうとほかの作業がしづらいorz
開発用と計算ぶん回す用で2台欲しいwww
ありえないけど。
0535310
垢版 |
2018/12/02(日) 10:27:19.04ID:YQiXDU8o
使用コア数制限するパラメータないの?

自分のは並列化処理に使用コア数カウンタ入れて、同時並列数を制限している。
もっとも常に4コアで4多重マックスで動かしているけどorz。16コアなら1つくらい
他のプロセスに空けても、あんま速度低下なさそうでうらやましい。


今現在は記譜作成がメインなので、気が向かない時もほっとけば棋譜を訂正しながら
勝手に学習して、少しづつ速度アップしてくれている。気が向かない時に焦らずに済む
のでお勧め(^^;

一時速度アップに燃えていたけど、1勝9敗以上の比率で速度アップに失敗して(まあ
そんなもんなんだけど)、今は停滞期間中w
0536535
垢版 |
2018/12/02(日) 21:28:29.33ID:tVJh9ePf
>>535
その手がありましたねww
作業中は12プロセス位にしとくか

なにはなくとも棋譜取りだけはコツコツつづけます。
一日で多分3〜4000局くらい取れるはず。

ちなみに今これ見てるけど速攻挫折しそうorz
https://github.com/HerveFrezza-Buet/RLlib
0537535
垢版 |
2018/12/03(月) 20:43:08.98ID:M6xR0Sx+
一日回して4652局
思ったより取れてる。
0538535
垢版 |
2018/12/03(月) 23:14:26.77ID:M6xR0Sx+
平日まとまった時間が取れなくてもちょっとづつでも進んでいかないとねぇ。
まあ、棋譜取りしてるだけでもいくらか気がまぎれるけど。
100万局目指すか。
0539535
垢版 |
2018/12/08(土) 23:40:47.79ID:BUSkl7iI
RLlibやっとサンプルがコンパイルできた
ここまで長かった
つかリンクオプションで-lgslつけなきゃいけないとかずっぽり嵌ったわ
0540310
垢版 |
2018/12/09(日) 13:20:20.42ID:j5g2lrg3
まったりと記譜取りしてても仕方ないので、速度アップできないか色々あがいてました。

久々にプロファイラで確認したところflip関数が30%、mobility関数が8%ほどでした。
Edaxのソース見つけたので禁断の答え合わせ。flip関数は一つ昔のタイプなので、
恐らく自分の方が早い。mobilitiy関数は少し早そうなので、考え方を導入。でも誤差
範囲の効果しかなかった。

速度計測ルーチンを作って、並列単体速度比が1.2程度しか無い事が判明。
並列処理で排他待ちしそうなところに無駄がないかチェックしたところ、ほぼ全部無駄
だった事が判明(汗。無駄箇所を全て削除したけど、誤差範囲(汗

後方枝刈(ヒューリスティックスなオーダリング)が気になるので、ノード採取してみた。
やはり2割程度速度ダウンするので、プリプロセッサで普段は切り離す事に。

その他もろもろ誤差範囲の改良を積み上げた結果、なんとなく1〜2割は速度アップ
した気がしますが、並列処理の効率が悪いのと、後方枝刈の工夫が足りていないの
2か所が、これからの課題かなと思います。

あれ?なんか、ループしてmin-Max探索の高速化に目的が戻ってきている(笑)
0541535
垢版 |
2018/12/09(日) 15:16:13.02ID:jd/NSaBy
んあ?RLlibって強化学習のライブラリではあるけどalpha zeroとは直接関係ないのか?
全部無駄だった?
www
0543535
垢版 |
2018/12/09(日) 21:08:44.25ID:jd/NSaBy
g++ にfilesystemってヘッダがないorz
とりあえずいまVSインストールしてる
0544535
垢版 |
2018/12/09(日) 21:40:01.98ID:jd/NSaBy
動いたっぽい。
久しぶりに一歩進んだ気分。
0545535
垢版 |
2018/12/10(月) 22:15:43.67ID:wVpZGnnS
なんか非合法手を選んでしまうみたいなんだが?
うーんなんだろ?
0546535
垢版 |
2018/12/12(水) 22:24:55.51ID:eFK7VQKv
他人のコードに頼るのやめて自力実装に走るべきだろうか?
他人のコードってなによりいまいち情熱が湧いてこない。

でも他人のコードも読めるようにならないと先はないんだろうなぁ。
我流じゃすぐ限界迎えそう。

悩ましい。
0547535
垢版 |
2018/12/14(金) 00:02:46.12ID:52LN5bpq
まただよ(再起動)
windows10でも変わらずか…
0548535
垢版 |
2018/12/14(金) 22:52:23.39ID:52LN5bpq
コーディングは進まないけど棋譜だけは溜まっていきます。
今、LV3 vs LV3の棋譜が61950局分溜まってます。
ファンがうるさいから夜中は回してないから日中だけなのにこのペース。
8コアはさすがといったところか。
アルファ碁Leeが16万局分の棋譜を使ったらしいからとりあえずその辺目指すか。
0549310
垢版 |
2018/12/18(火) 00:10:23.05ID:4TPQUuZQ
FFOテスト(#40−#49)、色々誤差範囲の改良を加えてじわじわスピードアップ
していたけど、ある日突然20%くらい悪化。元に戻せるところは戻したけど、
結局ダメで、裏で評価関数の学習し続けた結果、途中経過でたまたま探索が
悪化するところにはまってしまったと言う事かなぁと。

実際、悪化しているの#49だけで他は改善していたし、学習都度表示している
FFO問題の8手読みの次の一手の合否が、14/20から11/20に悪化している。

こういうのあると、速度アップで何を信じて良いのかわからなくなるよね…
0550310
垢版 |
2018/12/18(火) 00:14:29.31ID:4TPQUuZQ
という問題もありながら、ノード数表示して、>>492さんの結果と比較すると、
ノード数に圧倒的な差が。NPSは速いけど、それ以上にノード数が多い。
枝刈の差というにはあまりに大きな差で、一桁近い差です。

これ、Iterativeな手法で生じる置換表探索の差じゃないかと思う。
自分のは置換表の動作が遅いので、あまり深い探索まで置換表を適用できず、
読切において後ろの方は置換表が無い(そもそも使用していない)事で、何度も
再探索しているからかなと。

concurrent_unordered_mapを使っているけど、自前でハッシュDB作った方が
良いかもと思い始めた。そこで速度アップすると、置換表適用深度を深くできる。

こういう時、自前で作る人はチェーンハッシュ使っているのかな?
0551535
垢版 |
2018/12/18(火) 23:29:10.84ID:N5ttC8SJ
昔自前でハッシュ作ったことありますが素朴な実装だとさほど性能出なかった記憶がありますね。
自分の場合STLでいいじゃんみたいな結果でした。
テーブルのサイズをでかくすると意外と巡回が遅くなるみたいな。
0552535
垢版 |
2018/12/19(水) 21:16:40.83ID:REA/9P4B
スマホでconnect4のパーフェクトソルバーをちょくちょく遊んでるのですが
パターンをかなり覚えて7割くらい勝てるようになりました
囲碁とかも真の棋理が明らかになった方が
逆に人間がコンピュータに勝てるようになるかもしれませんね
0553310
垢版 |
2018/12/19(水) 22:48:18.33ID:T2sH1fj1
ハッシュの構想し始めましたが、確かに自分が作って早くなる保証はないですね。
インターフェースを既存のstlに合わせようとか思って調べ始めたら面倒になりました。

で、色々見ていたら、そのまんま効率化できそうな使い方を見つけた。
有れば読み込んで更新、無ければ追加の方法です。

あとバケットサイズとか個数とか、その辺を調べていった方が早くなるかも。

並列処理だとtry_emplaceが使えないのね。これが使えたらきっと早くなるのに。
0554535
垢版 |
2018/12/20(木) 23:32:19.98ID:zB5frbtZ
また再起動してる。。。
まあいいけど、もう諦めぎみ。

なんか仕事が急に忙しくなってますますコーディングから遠ざかってますが、
棋譜だけは地味に溜まってます。今82889局分溜まってます。

並列化ハッシュってどんななんですかね。そういえば知らない。
0555310
垢版 |
2018/12/21(金) 00:04:37.10ID:kvniGc89
いや。まぁ。バケットか中のレコードか、どちらかの単位で排他かけるだけです。
Hash関数がきちんとばらけさせてくれたら、基本的にあんまり排他で捕まる事は
無いので、それほど気にしなくてもパフォーマンスに影響ないかなぁと。実際に
concurrent_unordered_mapの配列用意して、適当にハッシュでばらけさせて格納
してみたら(つまり、同じmapじゃなければ排他はおきない)、排他で遅くなっている
訳ではない事が確認できています。

と言いながら、iteratorとか考えだすと、何を並列セーフにして、何をアンセーフに
するかみたいな事で悩んじゃいます。

先日の続きでmax_load_factorとかbacketサイズとかいじってみましたが、
パフォーマンスにほとんど影響がないです。というか、どうせ後で逐次的に拡張する
くらいならと、backetサイズを増やしても性能は上がらないし、max_load_factorを
増やしても、性能が落ちるだけだったり…。

棋譜作成だけなら並列化レベルをもう1段上げて、4記譜同時作成とかすれば、
個々の読み切りはシングルスレッドに下げられて、ただのunordered_mapが使えるし
その方が棋譜作成的には速度アップしそうな気がしてきた(汗

FFO的には別処理になるけど。
0556535
垢版 |
2018/12/22(土) 00:08:33.74ID:w0ekMTPt
採りためた棋譜をもとに序盤DBを更新してみましたが、
確かにうち筋は変わってる気がしますが強くなってるかはよくわからないというorz
まあ序盤DBは誤魔化しみたいなものだから期待しすぎもよくないか。
0557535
垢版 |
2018/12/22(土) 00:42:25.73ID:w0ekMTPt
序盤DB更新で強くなってるか統計とってみたいけどモンテカルロが遅すぎてそれもままならないというorz
やはりモンテカルロに代わる何かを実装しなければ…
0558535
垢版 |
2018/12/26(水) 00:12:59.86ID:2Tvqp++w
棋譜USBメモリにコピーしたらめっちゃ時間かかるorz
130MBくらいなのにUSBメモリってやっぱ遅いんだな。
0559310
垢版 |
2018/12/26(水) 00:20:29.39ID:Rkthqh0l
4記譜並列作成実装してみました。ただいま本番状態でテスト中。
並列処理の基本は、なるべく上位の層で並列化すべしでした。

現状、並列探索の速度は、シングル探索の2倍程度です。
1つ1つの探索には時間が2倍かかるけど、4つ並列なので、トータルでは
半分の時間で処理できるので、実質2倍みたいな。

探索中のオーバーヘッドはほぼ無いはずで、待ち合わせロスくらいなので、
大量に一気に処理する分には、ほぼ無視できるかなと。

これやると、スレッドの数がモロに効いてくるんで…48並列くらいできたら…
0560535
垢版 |
2018/12/26(水) 00:30:44.15ID:2Tvqp++w
310さんはintel派なんでしたっけ?
AMDでもzen2はかなりコスパいいものが来ると思いますが…
0561535
垢版 |
2018/12/26(水) 00:40:17.50ID:2Tvqp++w
試しにSSDに棋譜コピーしてみたらかなり速いw
やっぱそうなのか。
0562310
垢版 |
2018/12/26(水) 03:07:45.74ID:Rkthqh0l
あれれ。思ったほど速度が出ない…というか、単体の速度が半分どころか、
1/4くらいになっているイメージ…。深さが深いものほど遅いという事は、
置換表周りかなぁ。

棋譜作成する対象によって速度が結構変わるので、評価しづらい。

メモリー配置等の問題も考えないといかんような気がしてきた。

いかん。夜も更けていく…。

>>561
なんか、フラッシュメモリー自体は書き込みが遅くて、SSDだとその辺を並列
化とかキャッシュとかで回避しているらしいです。USBメモリーは、その辺真面目
にやっているもの(高価)と、そうじゃないもの(安価)で差があるけど、それでも
SSDには敵わないとか。
0563535
垢版 |
2018/12/26(水) 21:06:48.31ID:2Tvqp++w
明日か明後日あたりで棋譜10万局分溜まりそう
深層学習のプログラム、組みたいなぁ
でも難しいんだよなぁ
0564310
垢版 |
2018/12/27(木) 00:00:43.02ID:APLuuq5f
悩ましい。

シングルmin-Maxの並列動作と、パラレルmin-Maxのシングル動作。
どうも速度的には大差ない感じ。
2倍くらい速度出ると思ったのに…。

スレッド数が増えたら差が出てくるのかなぁ。
0565535
垢版 |
2018/12/27(木) 20:54:08.52ID:gYB4tQZF
10万局いきました。
0566535
垢版 |
2018/12/27(木) 21:18:27.23ID:gYB4tQZF
多分俺が世界で一番囲連星LV3の計算を回した人だろうなw
0567310
垢版 |
2018/12/27(木) 22:00:15.50ID:APLuuq5f
色々あがいた挙句、そこそこ時間がかかる26手空きを、それぞれで解いてみた。

並列探索で6分。シングル単独動作で12分。シングル4並列動作で18分。
やはり、シングルも4並列する事でなにがしかのオーバーヘッドがあるようです。

単純計算だと並列探索6分を4個で24分に対して、シングル18分で4つ解ける
事から33%の速度アップが見込める事になるけど、体感そこまでの効果が感じ
られないというか、時間がかかる問題では更に差が大きくなっていて、そいつらに
足を引っ張られている印象。

そのうえで、裏でゴソゴソやりながら計算させる時に色々弊害があるので、
CPUの増強を決断するまで放置しようかと思います。

色々あがいた結果か、並列探索ですこーし速度アップした感じ。
10%行くかいかないか。
0568535
垢版 |
2018/12/27(木) 22:05:17.88ID:gYB4tQZF
よくわからんがハイパースレッディングって単純に性能2倍になるわけではないということではなくて?
0569310
垢版 |
2018/12/27(木) 23:06:53.59ID:APLuuq5f
もちろんそうなんだけど、排他待ちを要するデータも、待ち合わせロスも
無いので、もうちょっと性能出るんじゃないかと思っていたのです。


あと、うまく説明できないけど、ノード数が多い探索は、ノード数比以上に
時間がかかっている気がしています。まだ感覚の話ですが。
0570535
垢版 |
2018/12/28(金) 20:37:08.10ID:HWMCAOZD
LV3は強いんだけど詰み状態から詰みを逃してる棋譜が散見される。
直せるもんなら直したほうがいいんだろうけどかなり大変だろうな
0571310
垢版 |
2018/12/29(土) 09:40:46.33ID:hnomLa8j
んー。シングル並列動作で6時間かかっても解けずに諦めた盤面とを見つけて、
パラレルで解いたら1時間40分だった。空きマス26だと通常1分程度なんだけど、
時々こういう時間がかかる盤面がある。今までテストが面倒なので、10分以内に
終わりそうな奴でテストしていたけど、もしかしたら探索ノードが多い奴ほど、
シングル並列動作での速度低下が大きいのかも知れない。

時間がかかる奴ほど、シングル・パラレル比が悪化するなら、今考えている大体
3倍程度ってのは成り立たなくなって、もっと悪い事になる。それなら感覚的に
合致する。普通に流れている時には、シングル並列で高速化できそうな手ごたえ
があるんだけど、時間がかかる盤面が来ると急速に逼塞していって、なかなか
回復しないという感じ。

パフォーマンスモニタにらみながら、unordered_mapのメモリアロケーションの方法
を想像してみた。初期確保件数指定(倍々で自動追加される)してみたけど、溢れて
もいないのにダラダラとメモリー使用量が増えていく。もしかしたらOSにメモリーを
貰いに行く動作が排他待ちになっているのかも知れない。どうやって検証しよう。
やっぱ自前置換表作るしかないのかなぁ。
0572310
垢版 |
2019/01/01(火) 10:13:37.88ID:y24geaJt
あけおめです。

ヒープをダラダラと確保するのが気になったので、色々いじりました。

ordering用のvectorを、配列にしてスタックに。ついでにクラス化してメンテ性アップ。
少しだけ速度アップした気がする。

自前ハッシュテーブル型の置換表を作ってみた。
最初に大きく領域確保して、溢れた時以外領域確保しないようにした。
基本、余計な機能は実装していないので、処理は軽いはずなんだけど…
極ほんの少しだけ速度ダウンした感じ…

記譜作成はunordered_map版で実行しながら、改良をしてみたいと思います。
とはいえ、ソース的にはあんまり改良の余地がないんだよなぁ。

速度がそん色ないところまで行けたら、シングル版の並列での速度低下が
メモリー確保が原因か検証できるかなぁ。
0573310
垢版 |
2019/01/05(土) 09:07:42.68ID:KwyVlHZX
チェーン型でハッシュを組んでましたが、テーブルがあふれると結局ダラダラと
メモリー獲得し始めるので、オープンアドレス型に変更して、まとめて領域を追加
するようにしました。

この辺、もう趣味の世界ですね。
何をしても、速度は上がりも下がりもしない(汗

やっぱり探索ノードを減らす工夫が重要ですね。
0574535
垢版 |
2019/01/05(土) 21:26:02.72ID:TXR2vHHf
自己対戦のみで強くなるアルファゼロは理想ですが実装が難しそうなので
せっかく棋譜も集めてるので教師あり学習をやってみようかと思案中。
0575535
垢版 |
2019/01/06(日) 00:55:45.70ID:6f3tqt5A
とりあえず、棋譜データからmin-max探索して黒有利の局面か白有利の局面かの2択を学習させようかな。とか思ってます。
そろそろ寝るか。。。
0576535
垢版 |
2019/01/06(日) 02:33:16.90ID:6f3tqt5A
寝るタイミングを逸してしまったw
プログラミングってこれがあるから怖いよねw
0577535
垢版 |
2019/01/06(日) 02:46:46.55ID:6f3tqt5A
なんか100兆局くらい棋譜を集めると序盤DBだけでもかなり押せるんじゃないかなぁ。
そんな感じ。

いかん、寝なければww
0578名前は開発中のものです。
垢版 |
2019/01/06(日) 03:01:38.94ID:aGENq217
質の悪い棋譜ばかり100兆局集めてもあんまり強くならない気がするのですがどうなんでしょう
質のいい棋譜がそれだけ集まればいいですがそれはほぼ不可能ですし…
0579535
垢版 |
2019/01/06(日) 03:14:04.86ID:6f3tqt5A
そうはいってもLV3の棋力はかなり高い。
囲碁将棋でいえばアマチュア3段くらいには相当するはず。
0580535
垢版 |
2019/01/06(日) 03:18:59.57ID:6f3tqt5A
波があるからアマチュア3段は言い過ぎだったかなw
でもまあ強い時はかなり強い。
0581310
垢版 |
2019/01/06(日) 14:23:08.43ID:a93oWf/5
置換表一時調子が良かったのですが、修正加えたら崩壊。
なんとなく読み取りが変な感じなんだけど、どこがおかしいのか全くわからず。

>>578
棋譜たくさん集めて序盤DB作ったら、その序盤DBのMax手順以外の手について
は、分岐した以後の盤面だけで学習させると序盤の穴が埋まるというか、間違った
盤面でぼやっとした学習するの避けられるかも。

今、序盤についてはそのやり方で学習させてます。
0582535
垢版 |
2019/01/06(日) 20:12:44.73ID:6f3tqt5A
とりあえず、昔作ったTINY-DNNのプログラムを引っ張り出してきて学習プログラムを仮組したが絶望的に遅いorz
グラボ使えればちっとは違うんだろか?うーむ。
0583310
垢版 |
2019/01/06(日) 20:34:20.52ID:a93oWf/5
オープンアドレスうまく動くようになりました。
ここに愚痴ると、直後に原因がわかる罠w

この数日の葛藤は何だったんだ。
0584310
垢版 |
2019/01/06(日) 20:36:40.74ID:a93oWf/5
>>582
Tiny-DNNはGPU対応していないんじゃないかなぁ。
結局、DCNNはGPUで処理しないと無理っつー気がする。
0585535
垢版 |
2019/01/06(日) 20:44:29.63ID:6f3tqt5A
>>584
あ〜やっぱそうなんですかねぇ。
GPUも結構いいの買ったのでぜひ活用したいところではあります。
0586535
垢版 |
2019/01/06(日) 22:23:00.36ID:6f3tqt5A
明日は仕事なのでハマらないうちに切り上げようww
社会人として自制しなければwww
0587535
垢版 |
2019/01/07(月) 20:55:27.41ID:4rY/alBf
学習回しても損失が全く減らない。。。
そういやそんなのあったな。orz
0588535
垢版 |
2019/01/07(月) 23:12:38.14ID:4rY/alBf
なんかネットワーク初期化忘れてたみたいw
初期化したら損失減ったw

ちょっと希望が出てきた。
0589535
垢版 |
2019/01/08(火) 23:12:12.87ID:1omQC7Mg
損失減ることは減るんだけどホントにちょっとづつしか減っていかない。
ネットワークの形状が悪いんだろうか?学習率だろうか?
うーん、深みにはまりそうorz
0590310
垢版 |
2019/01/09(水) 20:33:25.82ID:9GUGdavc
学習の速度はオプティマイザに依存します。

普通のSGDだと、あちこちぐるぐる回ったり、平野トラップで立ち往生したり、
局所最適解から抜け出せなくなったり。また、SGDは学習率(α)を大きくすると、
簡単に発散しちゃったりしますので、学習率を低めにして1000回とか学習する
事になります。それでも上記の問題で、なかなか収束しなかったり、うまく学習
できなかったりします。

そういうものなのです。昔は、初期値(乱数設定しているはず)を変えてみたりして
トライ&エラーしてましたが、今なら別のオプティマイザ(RMSpropやADAM)を試す
べきかと思います。それでも数百回は学習を繰り返さないといけないと思います。


久々に検索したら結構種類が増えてた。
https://qiita.com/ZoneTsuyoshi/items/8ef6fa1e154d176e25b8
自分は線形回帰モデルですが、SMORMS3を使って効率化を図っています。
それでも、数百回学習しないと損失は落ち着いてきません。
0591310
垢版 |
2019/01/09(水) 22:31:13.85ID:9GUGdavc
置換表ですが、結局のところ、ハッシュのビット数を増やしてチェーン接続があまり
生じないようにし、メモリーをある程度のサイズでまとめて確保する、チェーン型
ハッシュに落ち着いています。

普段速度計測に使っているFFO#40-49ではconcurrent_unordered_map版より若干
遅いのです。が、どうも残り28手(現在はそのあたりをチェック中)では、自作チェーン
ハッシュの方が早いというか、ノード数が増えた時に速度低下が少ないように感じて
おり、現在は自作置換表を使っています。

とはいえ、29手や30手まで行った暁にはチェーン接続が多発し始めて速度低下が
始まると思われるので、対策を考えて行きたいと思います。28手が終わるまでまだ
一カ月くらいかかるので、幸か不幸か時間はたっぷりあります(--;

今のところチェーンの代わりに2分木を置いて、ハッシュが衝突したときの速度低下を
O(n)からO(log(2)n)にしてみようかと考えています。
0592535
垢版 |
2019/01/09(水) 23:20:11.40ID:ED/1LPLd
ふーむ。要素が少ない時はリストやツリーは遅く、配列が圧倒的に早いという認識でしたが。
0593535
垢版 |
2019/01/12(土) 00:34:20.08ID:I11IVt9R
あれ、序盤DBに棋譜を追加したら全然おかしな手を打つようになっちゃった。
棋譜がまずいのかな?
0594535
垢版 |
2019/01/12(土) 01:02:50.64ID:I11IVt9R
くそ〜強いAI(自我があるとかではないよ)作りてぇなぁ
0595535
垢版 |
2019/01/12(土) 01:39:38.14ID:I11IVt9R
三連休とはいえそろそろ寝なければな。
生活のリズム崩すのはいくない。
0596535
垢版 |
2019/01/12(土) 21:33:08.59ID:I11IVt9R
質にばらつきのある棋譜から良いデータを抽出する方法はあるのだろうか?
0597535
垢版 |
2019/01/12(土) 22:30:56.75ID:I11IVt9R
うーんせっかく3連休なのに捗らないな。
これだというアイディアが湧くまでこねくり回すしかないか。
0598535
垢版 |
2019/01/13(日) 22:01:49.93ID:vPz6niN1
結局アルファゼロという正解がある限りその呪縛から逃れるのはかなり難しいorz
うーん。
0599535
垢版 |
2019/01/14(月) 21:36:22.16ID:yfXkG3lc
やっぱグラボも活用したいなぁ。
でも難しいんだよなぁ。
とくにウィンドウズだと。
0600535
垢版 |
2019/01/16(水) 00:51:29.20ID:ecOlQUBV
昨日一日学習回して損失が初期値の2/3位になった。
この辺が限界かなぁ
それともぞうきんを絞るようにまだまだ損失減るんだろうか?
0601310
垢版 |
2019/01/18(金) 00:47:06.53ID:YI61Q9H1
NN系は学習してるんだかわからない時があるよね。
とことんまで回すと今度は過学習も怖くなってくるし。


こちらは、自作concurrent_mapクラスができました。
ハッシュキーは二分木で、ハッシュ値は64bit。
配列ハッシュキー版と同様に、削除もiteratorも無し。
すこーし速度があがったかなぁ程度。
衝突時の処理はチェーン式。流石に64bitだとキーの衝突が無い。

棋譜訂正は時間がかかるので、暇つぶしが必要な状態。
二分木を赤黒木に変えてみようかと思い始めています(汗。

本当はヒューリスティックスの改良の方が効果あるんだろうなぁ。
0602535
垢版 |
2019/01/18(金) 22:51:46.73ID:glnAkAuX
今週は残業がひどかったorz
でも土日は休める。
0603310
垢版 |
2019/01/19(土) 09:03:58.77ID:/dbSBJQm
赤黒木を検討してますが、これ並列処理だと木全体をロックしないと
いかんのではないかと…。置換表のように追加の頻度が高いケース
では、排他待ちでパフォーマンス出ないかも。

まあ、やってみるしかないけれど。
0604535
垢版 |
2019/01/19(土) 11:25:42.95ID:R+TIxYAB
赤黒木とかめっちゃむずかしいやつですやん。
さすがですな。
0605535
垢版 |
2019/01/19(土) 19:50:28.36ID:R+TIxYAB
ん、なんか学習したネットワークがすべてのデータに対して同じ結果を返してるっぽい?
0606535
垢版 |
2019/01/19(土) 19:58:01.80ID:R+TIxYAB
学習開始時のネットワークの重みの初期化をミスってるんだろうか
うーん。
0607535
垢版 |
2019/01/19(土) 20:54:13.90ID:R+TIxYAB
tiny-dnn以外のGPU使えるライブラリで重みだけ学習してアプリケーションからはtiny-dnnを使うというのもあるのだろうか
0608535
垢版 |
2019/01/20(日) 02:28:47.86ID:O7gh4nMQ
全く同じ結果ではなく微妙に違う結果を返してるのは確認できたけど。
単に学習量がたりてないのかなぁ。
0609535
垢版 |
2019/01/20(日) 15:00:24.16ID:O7gh4nMQ
やっぱり全く同じ結果返してる??
混乱してきたorz
0610535
垢版 |
2019/01/20(日) 15:40:18.18ID:O7gh4nMQ
層が多すぎたのが悪かったみたい?
層減らしたら違う値になった。
■ このスレッドは過去ログ倉庫に格納されています

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