- 1 名前:名前は開発中のものです。 [03/07/10 00:10 ID:6FQp6G+O.net]
- 比較的地味なボードゲーム専用のスレが欲しくて立ててみました。
私はc言語で作ったデータベースを使って人間と対戦できる将棋かチェス みたいなソフトを作りたいと思ってますが、グラフィックインターフェースの 作り方がわからなくてつっかえているレベルです。
- 518 名前:名前は開発中のものです。 mailto:sage [2016/09/02(金) 09:47:35.76 ID:+DjGOwAN.net]
- 事前学習じゃなくて、強化学習な手法を試したら良いのではないかな。
何をどうすれば良いのか、俺はわからんけど。
- 519 名前:名前は開発中のものです。 mailto:sage [2016/09/03(土) 00:54:14.21 ID:lICUKSF2.net]
- うおお線形回帰とか最小二乗化とかわかんねぇぇ
- 520 名前:名前は開発中のものです。 mailto:sage [2016/09/03(土) 20:21:58.46 ID:lICUKSF2.net]
- とりあえず自己対戦棋譜が1000局集まりそう。
まだ足りないかな? ここからどう学習させればいいのか…
- 521 名前:名前は開発中のものです。 mailto:sage [2016/09/03(土) 21:00:16.00 ID:DJdWXbUx.net]
- 自分も機械学習とか興味あって細々作ってるけど、とても難しい
学習以外の部分も難しくて辛かったけど、学習はなかなか思い通りにするのに苦労する とりあえずオンライン学習ってので、自分なりに色々やってみたけど やっとちょっと上手くいき始めたかなってところ ミスって学習やり直しとか何回もしてしまった
- 522 名前:名前は開発中のものです。 mailto:sage [2016/09/03(土) 22:28:55.42 ID:lICUKSF2.net]
- 今ブラッドリーテリーのモデルとやらを調べてる
数式ムズイT△T
- 523 名前:460 mailto:sage [2016/09/04(日) 01:59:20.91 ID:f4dqEnZp.net]
- >>520
オセロは今でこそ強いソフト同士の棋譜が手に入りますが、 初期は人が対局した棋譜(ISOなど)を残り十数手のみ修正して学習させていたようです。 マイナーゲームが何かによりますが、オセロみたく終盤で神のような読み切りが出来る場合は 自己対局の教師あり学習で適当なモデルでもかなり強くすることはできるかと思います。
- 524 名前:460 mailto:sage [2016/09/04(日) 02:00:39.37 ID:f4dqEnZp.net]
- レス番号間違えました。。>>523は>>517宛てです。。
- 525 名前:460 mailto:sage [2016/09/04(日) 02:14:06.21 ID:f4dqEnZp.net]
- 自己対局中は暇なので、GUIの拡大縮小対応に手を出してみようと思ってドツボにはまりました。。
C#って描画ほんと遅いですね。。フルスクリーンにするとリスケールも含めて150msecぐらいかかります。 1024x768くらいだと50msecなのでギリギリ許容範囲内かなぁ。 あとGUIの実装に合わせて定石の変化度をツールバーから選べるよう実装していたのですが、 変化度を上げると着手時になぜか頻繁に落ちることが判明。 調べると、定石の木構造を作る処理に壮大なバグがあり、 30万近くある定石のうち1万くらいしか読み込めておらず、 リストも頻繁に上書きされてめちゃめちゃ状態でした。バグというか実装になっていないレベル。。 変化度を弄った時の処理をほとんどテストしなかった数年前の自分を殴りたい。。 かなり昔のコードなので、もう修正をあきらめて再設計して一新しているところです。
- 526 名前:310 mailto:sage [2016/09/04(日) 17:00:43.77 ID:WEaBeSKk.net]
- 実際、開発中ってアドレナリン出てるから、ほとんどノーテストで行けるところまで
行っちゃって後で何やってるの俺?って事がしばしば(汗 というかここ数日も、非常につまらない確認漏れというか、毎回間違うswitch文でバグ 出しているのに気づかずに、これはメモリーリークか?それとも計算式が間違ったのか? みたいな状態になっていました・・・。 さて、今いじってるディープラーニングの仕組みは、かなり汎用性持たせて作ってます。 あまりに収束具合が悪いので、試しに、Buroさんモデルにしてみました。1層の活性化 関数無しにして、入力プログラムを流用するだけなので簡単です。でも、なかなか収束 しない。そこで、過去にどこまで収束したのか、残ってるログを探したところ・・・実際、 同じような感じ(1σ=約3.5石)でした・・・つまり、なんかできてると言えばできているし これで満足かといえば満足ではなしと。また、なまじデバッグでまじまじ評価値を見ちゃっ たため、これで本当に使えてるのか?状態です。 で、ミイラ取りがミイラになって、ディープラーニングの学習係数の最適化手法とか、 学習効率向上の方法を色々実装してました。勾配ノイズなる手法も入れてみました。 一体自分はどこに向かっているのだろうって状態です。
- 527 名前:460 mailto:sage [2016/09/05(月) 19:53:28.81 ID:5Av5ahUz.net]
- そういえば散々オセロソフトを開発しておきながらネット対戦のオセロを一回もやった事ないなと思い・・・
やってみると案外勝ててしまいました。 この形は有利不利とかイメージだけで打っていましたが、、人間のパターン認識も結構優秀ってことですかねw
- 528 名前:460 mailto:sage [2016/09/05(月) 20:11:21.05 ID:5Av5ahUz.net]
- >>526
ディープランニングはやはりなかなか曲者のようですな。 こちらも終盤の評価値が悪いところはよく見えて良いところは悪く見えるという平均化が起こっていてやばいです・・・ まずは次善手の割合を調整したのでどうなることやら。。 というかもうランダム数手をやめて、引き分けオープニングからの棋譜生成を重点的にやった方がいいのか考え中です。
- 529 名前:名前は開発中のものです。 mailto:sage [2016/09/05(月) 20:52:57.56 ID:A3E5Chzv.net]
- 学習始めたら速いPCが欲しくなってしまった
結果が出るまで時間掛かるなあ
- 530 名前:310 mailto:sage [2016/09/05(月) 22:33:11.28 ID:KkVISbKe.net]
- 上に書いた通り、線形回帰はディープラーニングに内包される計算手法ですので
(実際に最急降下法とバックプロパゲーション部分以外の計算式はほぼ同じ)、 学習率の設定にディープラーニングの最新の手法が使えるんじゃないかと思います。 学習率を外から与えるのではなく、初期値だけ与えて、後は誤差の具合を管理して 動的に変える。しかも、各重み毎に個別に学習率を変える。という発想です。 参考) postd.cc/optimizing-gradient-descent/#gradientdescentoptimizationalgorithms qiita.com/skitaoka/items/e6afbe238cd69c899b2a ※)数式で、ただの変数のように書いてますが、行列だったりベクトルだったり解読が必要です 自分はこの中で一番新しいSMORMS3を使用してみたところ、モーメンタム法の10倍 以上の速さ(学習回数)で収束するようになったと感覚的に感じています。大体30〜 50回も回せば収束してしまう感じです。実装&テストだけして確認していませんが、 AdamやRMSpropでもそん色ない程度には速くなると思います。 でも、早いPCで解決できるんなら、それに越した事はありませんねorz
- 531 名前:名前は開発中のものです。 mailto:sage [2016/09/05(月) 22:36:42.16 ID:omFelghI.net]
- remi coulomの書いたMM法のコード見つけたが難しくて読めないorzorzorz
頑張って読むか
- 532 名前:310 mailto:sage [2016/09/05(月) 22:41:44.52 ID:KkVISbKe.net]
- いかなディープラーニングでも評価関数をいきなり作るのは厳しい気がしてきてます。
ここはアルファ碁の学習の仕方にならって、最初は次の1手を学習させてみようかと。 で、今までは頭でわかったつもりになっていた、多クラス分類問題を調べてみると、 Softmax関数の微分(バックプロパゲーションで必要)がわからない事にあらためて 気が付きました。 幸い、Softmax関数の定義があるひな形プログラムがあったので、これから解読です。 人さまのプログラムを見ると、自分がいかにC++を知らないのか、思い知らされますorz
- 533 名前:460 mailto:sage [2016/09/07(水) 01:48:41.72 ID:UfwPrMcb.net]
- 自己対局ですが、8手読みの20マス空き完全読み設定だと、2日で大体20万局終わることが分かりました。
ここまで速いと10手読みの22マス空き読みにランクアップしてみたいところ。。 体感だと1/3くらい遅くなっているのですが、22マス空き読みだと偏りもひどくて、 1〜2日やってみないとなんとも言えない感じです。 2日で7万局程度終えられるなら、それでのんびりやろうかと思います。
- 534 名前:460 mailto:sage [2016/09/07(水) 03:02:28.63 ID:UfwPrMcb.net]
- 今しがた動かし中ですが、400局完了まで16〜17分でした。
1時間で1400局程度できそうなので、1か月で100万局くらい行けそうです。 とりあえずこのまま100万局集めようと思いますw あと、初手ラムダムをやめて最悪手が数%程度で打つよう、評価値によって着手確率を調整しました。 最悪手の絶対値の1.2倍をそれぞれの評価値に加算した後の総和を使って それぞれ加算した評価値を除算という古典的な方法ですが・・・ この方法だと絶対値が0に近いと悲惨な事が起こるので、絶対値は>=4にしています。
- 535 名前:名前は開発中のものです。 mailto:sage [2016/09/07(水) 23:27:08.71 ID:4MEE20eO.net]
- 誰かヘルプ!
このページのmm.tar.bz2の使い方わかる人いない? www.remi-coulom.fr/Amsterdam2007/ makeしてexe作るところまではできたんだけど README通りにmm.exe < input.dat > output.dat ってやってもoutput.datが空ファイルにしかならない。
- 536 名前:460 mailto:sage [2016/09/07(水) 23:57:41.97 ID:UfwPrMcb.net]
- >>535
とりあえずmm.exe < input.datでコンソールに何が出てきてるか見た方が良いかも。 Cygwinでやるとこんなの出てきました。 $ ./mm < input.dat .. Games = 2 Feature1 -0.89588 2.44949 0.0285792 Feature2 -0.867301 2.38048 0.15838 Feature2 -0.708921 2.0318 0.0737065 Feature2 -0.635214 1.88743 0.0358307 Feature2 -0.599384 1.821 0.0187057 ・・・(略)・・・ 0 1.49416 1 1.21426 2 0.586193 3 0.668003 4 2.13451 outputは下5行だけが出力されるみたいです。
- 537 名前:535 mailto:sage [2016/09/08(木) 00:10:42.63 ID:/oQCQhP8.net]
- >>536
おお、返信ありがとうございます。 mm.exe < input.datやってみましたが何も出ないです。 もしかしてinput.datはなにか編集しないといけないのでしょうか?
- 538 名前:535 mailto:sage [2016/09/08(木) 00:16:47.92 ID:/oQCQhP8.net]
- すいません。
makefileからコンパイルオプションを取り除いたところ結果が出力されました。 -O3がダメなのかなぁ。 ともかく、ありがとうございました。
- 539 名前:460 mailto:sage [2016/09/08(木) 00:21:28.75 ID:LcwQkLYi.net]
- >>537
input.datは全く編集せずにやりました。 Cygwin64bitだと動くのですが、環境によっては動かないんですかね・・・ gcc-5.4.0でビルドしましたが、コンパイラのバージョンの差異も原因かもです。
- 540 名前:460 mailto:sage [2016/09/08(木) 00:23:56.75 ID:LcwQkLYi.net]
- >>538
動いてよかったです。 最適化が悪さしていましたか。。-O1程度の方がいいかもですね。
- 541 名前:460 mailto:sage [2016/09/10(土) 21:06:28.42 ID:FA2ccDEd.net]
- >>534の読みを深くさせた自己対局棋譜ですが、15万程度集まったので
無理やり学習してWZebraと対局させてみたところ、黒持ちで+12、白持ちで+2でした! 次善手や序盤ランダムの考慮と読みを深くした効果が現れてて安心しました。。100万達成した時の結果が楽しみです。
- 542 名前:460 mailto:sage [2016/09/11(日) 09:03:13.98 ID:UepiTkRD.net]
- ついにBOOKの読み込みとアルファベータによる手の選択を実装できました。
まだ最善しか着手できないので、誤差率によるランダム着手も実装しようと思います。 ゼブラのExtra-Bookをそのまま使っているので、ゆくゆくは自力で構築できるシステムを 考えたいところ。。
- 543 名前:名前は開発中のものです。 mailto:sage [2016/09/11(日) 11:41:57.36 ID:dMHrH3w2.net]
- >>542
やっぱり最終目標は完全解析なんですか?
- 544 名前:460 mailto:sage [2016/09/11(日) 15:25:12.97 ID:UepiTkRD.net]
- >>543
いえ、さすがにそこまでは・・・w Edaxの作者が完全解析を先行してやってるみたいですし、そこは任せようかなと。 最終的にEdaxやMasterReversiと同等の評価関数やBOOKを作成できるレベルまで持っていきたいです。
- 545 名前:535 mailto:sage [2016/09/12(月) 21:36:16.05 ID:vkOlNla9.net]
- >>535です。
<number of gammas for this feature>というのがよくわからん。 とりあえず1にしとけばOKみたいな? input.dat色々いじってみたけど確かにそれっぽい値はに出る。
- 546 名前:310 mailto:sage [2016/09/12(月) 22:52:49.52 ID:5hD0Gf9W.net]
- >>460さん、着実に進んでいてうらやましい。
自分はというと、だんだんとオセロの事は忘れて、ディープラーニングのプログラムの 確認修正、機能追加に頭がスイッチしちゃってる感じです。むむむ。 C++スキルも微妙に上がってきていますので、オセロ側に戻る時も、もう1回1から 全部コーディングしなおした方が良いかもw。ほとんどCの状態から始まって、もう3回 くらい書き直しているので、そんなに時間かからないと思うし。 と、どんどん脱線していくのであった。 >>545さん そのプログラム見てないですが、γというと、たいてい何かの係数パラメータじゃないかと。
- 547 名前:535 mailto:sage [2016/09/12(月) 22:58:52.81 ID:vkOlNla9.net]
- >>546
返信ありがとうございます。 係数ですか。詳しい説明がどこにあるのかわからなくて。。。 プログラムって最初から書き直すほど洗練されていきますよねw
- 548 名前:535 mailto:sage [2016/09/14(水) 22:57:07.95 ID:lQtAf6dT.net]
- 本番のデータ使うと結果が表示されないorz
入力ファイルの形式なんか間違ってるんだろうけど 何間違ってるのかわからんorz
- 549 名前:535 mailto:sage [2016/09/15(木) 21:47:58.41 ID:NUOEmvbB.net]
- もしかして万が一だけど同じフィーチャーに属するガンマは同じチームになれないとかあるのか?
- 550 名前:535 mailto:sage [2016/09/15(木) 23:35:36.05 ID:NUOEmvbB.net]
- うお〜わかんねぇぇぇ
コード熟読しかないのか? 厳しいぃぃぃ
- 551 名前:310 mailto:sage [2016/09/16(金) 00:03:09.94 ID:44uFy3HE.net]
- featureってコンピュータの世界では、機能を意味するよね。
あと、もう一度読み返すと、γが複数形になってるので、 γの数であってγの値ではなさそう。 「この機能で使用するγの数」となるけど・・・ これだけだと正直なんのこっちゃだねw この機能が何を表すかどこかに書いてないの?
- 552 名前:名前は開発中のものです。 mailto:sage [2016/09/16(金) 07:31:01.43 ID:mrye4Vvn.net]
- もう一年くらい将棋をちまちま作ってるけど、なかなか強くならないな
最近ようやくアマ高段くらいには行った感じだ ランダムでただ指すところから始めて、先人の歴史を全部なぞるようにプログラムして来た みんなはゲームは違うだろうけど、もうその筋ではかなり強いレベルなの?
- 553 名前:460 mailto:sage [2016/09/16(金) 13:50:57.59 ID:gJ0b6G2+.net]
- 自己対局での棋譜生成ですが、10手読みだとまだまだ精度が落ちるようで、思いきって中盤16手読みの24手読みにしてみたところ…10分で35局…w
今日は出勤時間がせまっていたのもありこのままで生成していますが、 中盤14手読みか12手読み、22マス空き完全読みにした方が良さそうです。 ああ、PC10台くらい並べて棋譜生成したい…
- 554 名前:535 mailto:sage [2016/09/16(金) 21:02:11.49 ID:l6ih+FVI.net]
- >>551
返信ありがとうございます。 どこかに解説あるんですかね? ちょっと本気で探してみるか…
- 555 名前:名前は開発中のものです。 mailto:sage [2016/09/16(金) 21:22:13.05 ID:l6ih+FVI.net]
- www.remi-coulom.fr/Amsterdam2007/
の「囲碁の手のパターンのEloレーティングを計算する」をよみゃいいのかな? もしかして
- 556 名前:535 mailto:sage [2016/09/16(金) 22:26:17.01 ID:l6ih+FVI.net]
- 囲碁の手の特徴にパス、トリ、伸び、自己当たり、当たり、
盤端との距離、直前の手との距離、2手前の手との距離、モンテカルロオーナー などがあると書かれている。 feature=特徴?
- 557 名前:名前は開発中のものです。 [2016/09/17(土) 22:31:21.85 ID:mQ7ypIPZ.net]
- 下がりすぎ
上げるぜ
- 558 名前:460 mailto:sage [2016/09/18(日) 02:39:21.57 ID:6855FAgd.net]
- オセロオンラインというアプリに付属されている真・HAYABUSAと対戦してみました。
どうも定石がかなり充実しているようで、普通にやってると こちら側が記憶していないドロー進行に分岐されて負けます。。 しょうがないので野兎とか序盤から不利な定石に分岐して評価関数の勝負に入らせると、案外勝てましたw 評価チューニングがEdaxなどに比べると結構甘いようです。 とはいえ国産アプリでここまでチューニングされているとは思わなかったので驚いています。
- 559 名前:名前は開発中のものです。 mailto:sage [2016/09/18(日) 09:21:43.32 ID:u+E0nELs.net]
- おめでとうございます
ひょっとして物足りないと感じましたか? それなら次は PREMIUM・HAYABUSA に挑戦してみませんか? いまなら特別キャンペーン中につき(ry
- 560 名前:535 mailto:sage [2016/09/21(水) 00:02:39.39 ID:DjDR9tnr.net]
- すいませんが誰か俺のデータを>>535のmm.exeにかけてみてくれませんか?
まじで何が悪いのかさっぱりわからん。 環境の問題かも? thuploader.orz.hm/uploader/ のmy_input.zipが俺のデータです。 だれか親切な方よろしくお願いします。
- 561 名前:310 mailto:sage [2016/09/21(水) 01:01:30.09 ID:CFP8O8Vn.net]
- >>558
www.slideshare.net/uenokazu/20130906-hayabusa これですね。色々AIの特徴を説明してますが、まあLogistelloの 日本語解説みたいな感じで、皆さんのAIもほぼ同じ構造かなと 思います。 テレビ番組企画でEdaxと良い勝負するAIを短期間で開発したという のが開発経緯らしいので、恐らくEdaxをたたき台にして定石DBの 学習をしていると思います。 つまり、Edaxよりちょこっとだけ強ければよいと割り切った目標をたて、 目標がはっきりしている分、手間をかける箇所を、定石DBの対局学習に 集中したって感じだと思います。想像ですが。 で、これ読んだ時に、オセロAIの強さって結局は定石DBじゃんと、 結構真剣に思いまして・・・。まあ、それゆえ、オセロAIの開発者の多くが ドロー進行のリストアップに走ってしまったのかなぁと。
- 562 名前:535 mailto:sage [2016/09/21(水) 20:18:28.81 ID:DjDR9tnr.net]
- 環境が悪いのかと思い押し入れからノートPCを引っ張り出して走らせてみたところ
計算結果がNaNになってるっぽい。 駄目なのか?うーむ。
- 563 名前:460 mailto:sage [2016/09/22(木) 13:08:07.84 ID:aLXK2a2e.net]
- >>561
ほとんど考えずに打ってくるので、もしやと思い定石からわざと外してみたらいきなり10秒超の長考でした・・・w 本当にBOOKの精度がEdaxよりちょっと良いのでしょうね(逆に言うとそれだけ) 開発期間が短期間って制限があったらしいので、しょうがないのでしょうけどもったいない気もします。
- 564 名前:310 mailto:sage [2016/09/22(木) 20:43:51.38 ID:esximYO0.net]
- BOOK学習ってあんまり実装例見ないので、その点は評価しても良いかなと。
Buroさんの論文はあるので、自分もいずれは実装しようと思っています。 が、BOOK学習で、別のオセロプログラムとひたすら対局学習させると、そのプログラム 相手限定ならほぼ負けないBOOKが得られるんです。 EdaxのBookは引き分け進行のリストアップで、そこに記載されていない分岐は、基本は 分岐した方が負けるはずなのですが、分岐後は純粋に評価関数の読みの勝負になるの で、いかなEdaxでも間違える事があります。で、勝った手順、負けた手順をリストアップし ていき、負けたら勝つ手順が見つかるまで、ランダムな手番で別の分岐を探していく。 Edax側がBOOK学習をオフにすれば、間違えた箇所は何度対局しても同じ間違いをする ので、勝った手順になれば勝ちは確定し、負け手順は自分は打たないようになっていく。 要するに、そのプログラムの弱点を学習する事になるので、勝率が上がっていく。 EdaxのBookより精度が良いというのとはちょっと違う気がします。 とはいえ、Edaxとかの引分進行リストをパクっても意味が無いし、限られた時間で、パソコン ぶん回して引分進行を発見していっても、間に合わないしで、これしかやりようがないんだ とは思います。 実はこれに気が付いた時、BOOK学習+乱数着手(打たない箇所がない)で、自己対局を 延々と続けていくと、究極のBOOKができるんじゃないかと妄想してしまいましたが、よくよく 考えたら、それって全手順リストアップというか、完全解析大差ない事に気が付きました(汗
- 565 名前:535 mailto:sage [2016/09/22(木) 21:29:54.82 ID:kzrJOomn.net]
- RemiさんのMM法諦めるしかないのかなぁ
他の学習方法探すか…
- 566 名前:535 mailto:sage [2016/09/27(火) 23:07:26.38 ID:AU3JIk+S.net]
- いまいち手ごろな強化学習が見つからなかったので
モンテカルロ木探索をパターンに応用することにした。
- 567 名前:535 mailto:sage [2016/09/28(水) 22:21:31.56 ID:DgDU0GF3.net]
- とりあえずConnect 4のAI書いてるんだけどまあまあ強くなってきた。
Connect 4は完全ソルバが公開されてるので 先手でこれに一発入れるのが当面の目標。 Connect 4 完全ソルバ connect4.gamesolver.org/?pos=
- 568 名前:535 mailto:sage [2016/09/29(木) 20:34:59.17 ID:1GHOMTNV.net]
- 評価関数の基になるパターンが悪いせいで
一生学習しても完全ソルバに勝てない気がしてきました。
- 569 名前:535 mailto:sage [2016/09/29(木) 21:12:02.15 ID:1GHOMTNV.net]
- まあ、Connect 4は習作なので一定の成果が確認できたということで一旦休止します。
これから本番のゲームに着手します。 できたConnect 4のexeをアップしてみます。 fast-uploader.com/file/7030706137212/ Connect 4の経験がない人にはかなり強く感じるはずです。 遊んでみてください。
- 570 名前:535 mailto:sage [2016/09/30(金) 22:44:03.81 ID:Ol1OvzoR.net]
- 人為的なパターンを評価関数の基礎においてると
幾ら学習しても完全解析にたどり着かない可能性があるよね? 十分学習すれば完全解析にたどり着くと保証できる 出来るだけ効率の良いパターンセットてのは なんとか数学的に割り出せないだろうか。
- 571 名前:460 mailto:sage [2016/10/01(土) 15:19:39.34 ID:NwASWJgd.net]
- >>570
オセロしか開発したことがないのですが、connect4のノード数だと4兆程度だと聞きました。 オセロよりも合法手生成が簡単かつ常に7つなので、相当早い段階から完全読み出来そうです。 現在のAI同士を戦わせて数千から1万局程度の棋譜を作成すれば、 簡単なモデル(縦横斜めだけとか)でほぼ完ぺきな評価関数が線形回帰で 出来そうな気がするのですが、どうでしょうか。
- 572 名前:535 mailto:sage [2016/10/01(土) 16:21:13.92 ID:UW3pMcrq.net]
- レスありがとうございます。
線形回帰は試したことないですが縦横斜めのモデルで 勝率で重みを振って評価関数を作ったのが>>569です。 線形回帰で学習させれば>>569はもっと強くなるんですかね。 縦横斜めモデルは意外とイケてないんじゃないかというのが今の私の感触です。 あと初手から10手目位まではBOOK作ったほうが良いのかなぁとも思ったり。 終盤完全読みは今やってないですが、やってみる価値ありそうな気がします。
- 573 名前:535 mailto:sage [2016/10/01(土) 22:20:23.15 ID:UW3pMcrq.net]
- ちょっと思いついたんで、縦横斜めのパターンに加えて、
盤面の空マスの情報をパターンに加えて再学習させてみます。 もしかしてこれなら完全ソルバに一発入るかも?
- 574 名前:460 mailto:sage [2016/10/02(日) 00:33:37.72 ID:jNeryq9p.net]
- >>572
完全読みは深くすればするほど線形回帰で有利になってくるのでオススメです。 オセロでも20手読みの棋譜と22手読みの棋譜では2手違いなのに強さが段違いでしたので・・・
- 575 名前:535 mailto:sage [2016/10/02(日) 00:38:22.45 ID:8lzQrfNi.net]
- レスありがとうございます。
オセロでも20手も読めるのか! Connect 4ならもっと読めないとダメですね〜 線形回帰はちょっと調べてみます。
- 576 名前:名前は開発中のものです。 mailto:sage [2016/10/02(日) 01:27:36.48 ID:8lzQrfNi.net]
- 完全読みかなり厳しいorz
なぜオセロは20手も読めるんだろう? よほど実装がいいのか?
- 577 名前:460 mailto:sage [2016/10/02(日) 04:03:56.40 ID:jNeryq9p.net]
- >>576
オーダリングはしてますか?オーダリング無しだと20手は厳しいと思います。 オセロは最後あたりだと数マスしか無くなるので合法手が1手しかないとかも頻出するのですが connect4は最後まで7つあるので、20手はちょっと難しいかもですね。。
- 578 名前:名前は開発中のものです。 mailto:sage [2016/10/02(日) 18:53:33.45 ID:8lzQrfNi.net]
- すいません。
オーダリングとはよさそうな枝を先に読むってことでしたっけ? なぜそれで計算量が削減できるんでしたっけ? 最終的に全部読むなら結局同じのような… 素人考えですが。
- 579 名前:名前は開発中のものです。 mailto:sage [2016/10/02(日) 19:09:19.16 ID:8lzQrfNi.net]
- 完全ソルバと対戦させると誤った学習をしてしまってるように見えます。
悪い手を良い手と思ってる。 うーん。 学習量が足りないだけなんだろうか?
- 580 名前:310 mailto:sage [2016/10/02(日) 20:32:53.90 ID:n86BxDyi.net]
- >>578
αβ刈りしているでしょ。 最初に読んだ手でα値が最高値になる。 次の手を1段読んだ時、それを超える手が出ないので、全ての手がβカットの対象となる。 本当に一番良い手を選べるんなら、そもそも読む必要がないけど、何らかのヒューリスティック な基準でよさそうな手から読むと、それが正解だった時に、βカットが大量発生して、実際に 読む事になるノード数が激減する。 αβ刈りみたいな方法は、後ろ向き枝刈と言って、完全読み切りに必要が無い手を読まずに 済ます手法。
- 581 名前:名前は開発中のものです。 mailto:sage [2016/10/02(日) 20:59:00.22 ID:8lzQrfNi.net]
- レスありがとうございます。
αβですか〜。 実はあれ、私、理解してないんですよね。 説明読むとなんとなくわかった気になるんですけど いまだ実装できたことない。orz MinMaxなら実装できるんですけどね。
- 582 名前:名前は開発中のものです。 mailto:sage [2016/10/02(日) 21:29:32.92 ID:8lzQrfNi.net]
- αβが最高に上手く働けばMinMaxの倍の深さ読めるんでしたっけ?
それなら20手行けそうですね。
- 583 名前:535 mailto:sage [2016/10/03(月) 00:03:31.42 ID:5qtC3pHr.net]
- 完全ソルバでいろいろ試してるんですが、
Connect 4って思ったよりずっと底の浅いゲームのような気がしてきましたw □□□□□□□ □□□○□□□ □○□●□○□ □●□○□●□ □○□●□○□ □●□○□●□ この配石が必勝法の骨格のようです。 ここさえ押さえればあとは自動的に勝つる。
- 584 名前:310 mailto:sage [2016/10/03(月) 01:55:16.80 ID:alBluDZI.net]
- >>582
深さはなんとも言えないけど、オセロで言えば、αβだけでノード数は1/100くらいに なるってどこかのサイトに出ていたかな。1/100だとアバウト2〜4手くらい深く読めるはず。 置ける箇所が結構絞られるゲームなので置換表入れたら更にいけるかもしれない。 あとはビットマップの実装だね。 ゲームの規模的には(ネットチラ見だけど7兆パターンって書いてあった)完全解析を ターゲットにしても良い気がする。軽はずみ発言だけど。
- 585 名前:310 mailto:sage [2016/10/03(月) 02:02:27.60 ID:alBluDZI.net]
- ちなみに。当方、Sparse正則化付AutoEncoderの実装に不安が付きまとった挙句、
MNISTという手書き数字認識のテストで動作確認をするという遠回りな事をしてます。 というか、何をしたら認識率改善するのかという事を考えて、色々といじって時間を 食ってました。 結果、オセロの方が盤面は狭いけど、良く現れる状態の数と、その特徴の複雑性が 圧倒的に違うので、やはり畳み込みのような、盤面の特徴の解釈の仕方を外から 与える方向に行く必要がありそうだという事になりました。 いままでも薄々気づいていたんですが。 ただ、画像解析や囲碁のように隣接するノードとの関係性からスタートしても意味がなさ そうなので、その辺の工夫をしてみようと思っています。
- 586 名前:535 mailto:sage [2016/10/03(月) 22:00:29.42 ID:5qtC3pHr.net]
- 完全解析はできるに越したことはないですが、
Connect 4やってるのは勉強の意味あいが強いので Connect 4以外では通用しないようなヒューリスティックで強くなるのは 出来るだけ避けたいです。 理想的には汎用的な手法で完全解析レベルまでもっていきたいですね。 αβもそろそろ片づけなければいけない宿題ですね。
- 587 名前:460 mailto:sage [2016/10/04(火) 00:53:57.08 ID:OTRn7xTU.net]
- コネクト4、軽く実装してみましたが(ほとんどオセロの流用)
単純アルファベータ、置換無しオーダリング無し、 評価関数が連続している数だけ考慮・・・だと8手涛ヌみは一瞬ですbェ、12手読みはbキでにきついでbキね。。 末セ日評価関数を給lめてみてとりbえず8手読みで535さんのAIと対戦してみる予定ですw
- 588 名前:535 mailto:sage [2016/10/04(火) 21:18:36.22 ID:dRd+Ucp+.net]
- おお!楽しみですね。
ありがとうございます。 工夫無しの8手読みなら勝ちたいですねw ちなみに私のAIは結構思考時間が長いのでw 統計といえるほどの試合数はこなせないと思いますが期待しちゃいます。 よろしくお願いします。
- 589 名前:460 mailto:sage [2016/10/05(水) 00:36:10.60 ID:JvSO0BT6.net]
- >>588
結果ですが、ぼこぼこにされましたw ヒューリスティックだとやはり限界ありますね〜
- 590 名前:460 mailto:sage [2016/10/05(水) 11:21:34.44 ID:WWXbBFqc.net]
- オセロは大体やることはやったので、そろそろ将棋か囲碁に着手してみようかと思っています。
ルールの実装が楽なのは囲碁なのかな… 自身が囲碁を打ったことがないのでルールから調べないとですがw
- 591 名前:310 mailto:sage [2016/10/05(水) 12:08:04.26 ID:Iif/OHnc.net]
- やっぱ囲碁行きたいですよね。
昔調べた感じでは、日本ルールと中国ルールで勝敗の判定が微妙に違って、日本 ルールだと曖昧なところがあるので、AI開発は中国ルールでしているみたいです。 ルールの実装は着手禁止点が少なくて拍子抜けするくらいですが、その先が・・・ 色々と一筋縄ではいかないようです。 オセロの評価関数ですが、AutoEncoderの限界を感じ、DCNNの実装を始めていますが、 バックプロパゲーションがスパゲッティでわけわからん状態になっています。しばらくは 紙と鉛筆で考える必要がありそうです。DCNNがある程度できたら、僕も囲碁に行って みようかな。 その前にConnect4に脱線してみたい気も(汗
- 592 名前:535 mailto:sage [2016/10/05(水) 19:29:25.92 ID:KcSrUkxH.net]
- >>589 >>590
ん。IDが違いますね。 >>589は偽物ですかね?
- 593 名前:535 mailto:sage [2016/10/05(水) 19:48:59.89 ID:KcSrUkxH.net]
- >>591
囲碁は終局判定させるのも結構難しいみたいですね。 セキの判定とか。 Connect 4は易しすぎず難しすぎずいい塩梅のゲームだと思います。 完全解析も狙えますしw
- 594 名前:460 mailto:sage [2016/10/05(水) 21:34:13.58 ID:JvSO0BT6.net]
- >>592
同一ですよ! スマホから書き込んだのでID変わってしまいました
- 595 名前:535 mailto:sage [2016/10/05(水) 21:53:19.85 ID:KcSrUkxH.net]
- ん〜そっちのID使って同一って言われても。
>>590のIDで書き込みお願いします。
- 596 名前:名前は開発中のものです。 mailto:sage [2016/10/05(水) 22:05:36.36 ID:KcSrUkxH.net]
- まあ、こんな過疎スレでわざわざ嘘をついて騙るひともいない気もしますが…
- 597 名前:名前は開発中のものです。 mailto:sage [2016/10/05(水) 22:31:22.88 ID:KcSrUkxH.net]
- >>590の書き込み時間からすると学校や職場から書き込んだ可能性もありますね。
とすると>>590のIDでは今は書きこめないかもしれませんね。
- 598 名前:460 mailto:sage [2016/10/06(木) 20:28:59.44 ID:1mBat3Ee.net]
- 460の名前があるものは偽物ではないので大丈夫です・・・
コテ付けた方がいいかもですけど、まぁこの人数ですし、そこまでする必要もないかなと思いますー 囲碁ですが、ネットから集めた棋譜をざっと見てみましたが、投了がほとんどなんですね・・・ 中押し勝ち?はて・・・?となって調べるくらいルールを理解していないという;; 投了だとするとロジスティック回帰でないとあんまり良い精度は出なさそう・・・? というより一般的な機械学習のアプローチで良いのかも微妙ですね。 やはりディープランニングなのでしょうか。。。腰が引けますw
- 599 名前:535 mailto:sage [2016/10/06(木) 21:04:20.88 ID:/7+JrWaw.net]
- >>598
ん〜そうですか。 それは失礼しました。
- 600 名前:310 mailto:sage [2016/10/06(木) 22:11:43.15 ID:2nbHwrUk.net]
- >>598
投了は将棋用語で「参った」です。むしろ中押し勝ちと同じ意味です(汗 将棋の場合、詰まれるまで粘る事はみっともないこととされているので、 入玉とか千日手、反則負けなどの特殊なケースを除けば全て投了です。 囲碁は、逆に終局まで打つ事があって、「数え碁」と呼ぶみたいです。 この間のアルファ碁vsセドルの試合見て覚えました(笑) オセロのように必ず最後まで打って、得点差がはっきりと出るゲームの 方が珍しいのかも知れません。 オセロみたいなmin-Max+評価関数は既にダメ認定されてます。 アルファ碁までは、MTCS(モンテカルロツリーサーチ)が主流で、 モンテカルロ系には評価関数はありません。着手順決定のための ヒューリスティックが大事になります。 アルファ碁の登場で、一気にディープラーニングにシフトしていますが、 基本骨格はMTCSです。着手順のヒューリスティックに「次の1手を返す DCNN」と、評価値たるモンテカルロの勝率に、補助的に「勝率を返す 評価関数としてのDCNN」を組み合わせているようです。
- 601 名前:310 mailto:sage [2016/10/08(土) 22:22:06.53 ID:wBSLMo4h.net]
- あ、MTCSじゃねー。MCTSだ。
>>600書きながら、Q-Learningなるものの存在を思い出して、調べ始めたら、 やっぱりDQN(ブロック崩しで有名になった奴)はQ-Learning+DeepLearning だった。 興味津々だけど、どんどん発散しちゃうなぁ。
- 602 名前:535 mailto:sage [2016/10/10(月) 19:51:24.57 ID:WonRpXhk.net]
- なんかモチベーションあがらんなぁ
三連休まるまるさぼってしまった。
- 603 名前:名前は開発中のものです。 mailto:sage [2016/10/10(月) 22:22:05.27 ID:WonRpXhk.net]
- 将棋電王戦あったみたいですね。
- 604 名前:名前は開発中のものです。 mailto:sage [2016/10/10(月) 22:38:31.22 ID:WonRpXhk.net]
- 優勝はポナンザか。
一発勝負のトーナメントなのに強え。
- 605 名前:名前は開発中のものです。 mailto:sage [2016/10/10(月) 23:10:57.87 ID:WonRpXhk.net]
- ん?
一発勝負じゃないのか?
- 606 名前:310 mailto:sage [2016/10/13(木) 11:06:43.08 ID:f6Nd8WJL.net]
- ここ数日、気分転換でConnect4やってました。
ビットマップ方式の置換表付αβのオーダリング無し。リーチ状態のみ後方枝刈。 完全解析ができそうか確認してました。 全42手でルートから30手くらい置換表適用すると、序盤はかなり良いペースで探索 してくれますが、数時間で置換表パンク。置換表を20手くらいまでにとどめると、びっくり するほど速度低下。手順の前後で簡単に同形が生じるので、置換表が肝なのは確か。 というか、手順前後の同形を排除する仕組みが作れればメモリ節約可能になる。 けど、それを一般化した処理が置換表なので、全てカバーしなくても3手以内くらいで 排除すれば状況はかなり改善するかも知れない。 あと、パンク前も探索が進むにつれて徐々にnpsが低下していきます。原因不明。 書きながら気づいたのですが、置換表のハッシュ値はオセロのものを流用しています。 Connect4はビット数が少ないので、ハッシュ衝突が頻発して、格納効率が低下して 領域拡張が頻繁におきて、探索速度も落ちている可能性があります。 というわけで、現段階では置換表周りを工夫しないと完全解析は厳しそうです。 一方で、空26箇所くらいの終盤探索なら実用的な速度が出そうな感触です。 >>569の完全ソルバは、評価値表示機能があるけど、あの表示の仕方だと、証明数 探索みたいな手法を使っているのかなぁ。ほぼノータイムで最善手のみ着手してくる ので。完全ソルバの出現で終わっちゃってるゲームなんでしょうね。 で、このゲームってMCTSの練習台にちょうど良いのではないか?とふと思いついて しまいまして・・・。更に脱線しようかなと思います。Playout関数は作りましたが、ツリー 展開の仕方に疑問があり、まだ調べ中です。
- 607 名前:名前は開発中のものです。 mailto:sage [2016/10/13(木) 21:15:41.15 ID:XMNeJMFS.net]
- 310氏もConnect 4 参戦か〜
- 608 名前:535 mailto:sage [2016/10/13(木) 21:53:14.86 ID:XMNeJMFS.net]
- 名前書き忘れた。
終盤26手読み行けそうというのは流石ですな。 完全解析ってConnect 4だと簡単そうに見えますがこれが意外と手強いんですよね〜
- 609 名前:310 mailto:sage [2016/10/15(土) 13:58:53.52 ID:iZ3eY/zy.net]
- NPS低下問題はやはりハッシュ衝突のようで、ちょこっと直したら解消しました。
Connect4は手順前後しても同じ形になる事が多いゲーム(DAG問題多発)なので、 置換表を上手く使わないと、7兆種類あると言われている盤面を何度も重複探索して しまう事になります。が、置換表探索と登録のオーバーヘッドは結構大きく、メモリ パンクでスワップ多発の問題も起きます。 今の設定だと残り27手探索くらいなら難しい問題で1分程度で解けそうです。 NPSは20メガくらい。が、メモリパンクや重複探索の問題があるので、その速度を もとに完全解析に要する期間を推計するのは無理っぽい感じです。 というわけで、完全解析はこの辺にして、MCTSの方に行きます。
- 610 名前:535 mailto:sage [2016/10/15(土) 20:55:10.85 ID:jn3cHMWR.net]
- >>609
多分純粋なMCTSだけではあまり強くならず、 プレイアウトになにがしかの工夫を入れる必要が出てくると見てます。 逆にプレイアウトさえ改良できればMCTSはびっくりするくらい強くなる。 しかしそれでも完全ソルバには届かない。みたいな感じだと思います。
- 611 名前:310 mailto:sage [2016/10/15(土) 21:29:59.48 ID:iZ3eY/zy.net]
- MCTS(UCT)多分できました。STL様様です。
探索時間1秒で40万プレイアウト。 playout部をnegamax的に書いたので、ちょっと混乱しました。 まだ終局判定とかいい加減で、引分近辺で落ちる可能性あります。 オセロでも1秒で10万プレイアウト以上いけるんじゃないかなぁ。 探索時間固定できるのでオセロ序盤〜中盤で使えるかも。 >>535さんのプログラムはもうダウンロードできないですね。
- 612 名前:535 mailto:sage [2016/10/15(土) 21:54:42.38 ID:jn3cHMWR.net]
- 秒速40万プレイアウト!?すげぇぇぇぇ
1プレイアウト=1手てことですか? 1プレイアウト=1局てことですか?
- 613 名前:535 mailto:sage [2016/10/15(土) 22:17:47.78 ID:jn3cHMWR.net]
- 460氏もオセロで10000Knps〜15000Knpsとか言ってるし、まじか〜
やっぱ本気でやってる人達は違うのかな…
- 614 名前:535 mailto:sage [2016/10/15(土) 23:46:45.43 ID:jn3cHMWR.net]
- NPSは20メガって書いてありますね…
すいません。
- 615 名前:310 mailto:sage [2016/10/16(日) 01:32:06.03 ID:KTdXBWLt.net]
- プレイアウトなので1局です。色々ごにょごにょはありますが、ランダム着手で、
とりあえず勝負がつくまで打ちます。これで1プレイアウト。 速度が出るのはビットマップとBMI命令などのX64命令を使ってるからだと思います。 が、Perfect Solverに先手で勝てません(汗。5手目に必ず間違えます。 評価値を眺めても、当たり前のように、正解(真ん中列)が最下位になります。 パラメータをそこそこいじってみましたが、状況は変わらないです。 一本道には弱いって事かなぁ。 とはいえ、自分がやると、さっくりと負けてしまいます(汗
- 616 名前:310 mailto:sage [2016/10/16(日) 13:25:18.14 ID:KTdXBWLt.net]
- mobility周りにバグがあって直したところ、1秒読みでPerfect Solverに先手で勝ちました。
昨夜は120秒読みでも同じ手順で負けていました。 とはいえ、乱数が絡むので引き分ける事もあります。 まだ若干問題があります。1本道を交互に着手していくと自動的に勝ちが確定する盤面 なのに、評価が引き分けになっています。プレイアウトの終局判定で何かの条件が抜け ていて、勝ちと判定されていない感じです。 直したらまた勝てなくなったりして(汗 C++の診断ツールを今回初めて使ってみました。 関数ごとの使用時間がわかるようで、速度アップの検討に重宝します。 が、どうもUCB1の計算で使うsqrtとlogを使ってる箇所でCPUを9割くらい使っている 感じです。見方が良くわからないけど、多分そういう状況。速度アップ難しい。
- 617 名前:535 mailto:sage [2016/10/16(日) 16:43:19.50 ID:Ts0NTtMt.net]
- 一秒読みで完全ソルバに勝とかまじか〜
やっぱ積み上げてきた基礎力が違うんだろうな〜
- 618 名前:310 mailto:sage [2016/10/16(日) 17:19:15.26 ID:KTdXBWLt.net]
- どもです。評価値問題は治りました。
乱数じゃなくて、ある手順で引き分けな手を選んでしまう事が判明したので探索時間 を延ばしてみたら、逆に序盤で負け手順を選んでしまうようになりました(汗。 ツリー部の地平線臭い感じなのかなぁ。 というわけで、たまたま選んだ1秒が良かっただけかも知れませんorz MCTSも理論的には探索回数を∞にすると、最善手を必ず導き出す事は保証されて いるらしいのですが、中途半端な回数の時は保証されていないんですよね。
|

|