[過去ログ]
【オセロ,将棋】ボードゲーム【囲碁,War】 (1002レス)
【オセロ,将棋】ボードゲーム【囲碁,War】 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
693: 310 [sage] 2017/01/16(月) 22:06:12.04 ID:cVXIBPCK あれはやっぱマシンパワーが・・・ 一旦計算できちゃってもそれなりの重さなんだけど、学習しようと思うと重さにめげます。 というか、やる気すら起きないレベルorz とりあえず、実際の最善手順が、ヒューリスティックの何番目かを統計的に処理して、 プレイアウト関数の手のバラつきを表現しようかと思って、プログラム作ってEXCELで 集計して、それなりに計算が簡素にできる形に変形してなんてやりましたが、やった 所で、何番目を選ぶかはランダムではなくて理由があっての事なんだよなぁと… ちっとマシなヒューリスティックとか言い出すと…できない事をしようとしている事に深く 思い至るわけで。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/693
694: 310 [sage] 2017/01/17(火) 00:25:27.65 ID:SLwZ7IwS 統計処理して作ったプレイアウト関数も結局ダメでしたorz 最後はやっぱりBOOK頼みになっちゃいます。 もう一回NNに行って次の1手計算させてみるべかな。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/694
695: 535 [sage] 2017/01/17(火) 21:19:41.12 ID:wCDEMY6U モンテカルロ木探索ってわざと悪い手打ってる?ていうぐらい期待外れの手を打ちますねw プレイアウトの質改善が必須か… http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/695
696: 310 [sage] 2017/01/17(火) 22:04:13.23 ID:SLwZ7IwS 例えば40手目くらいの盤面で、UCTの選択基準であるところの実行回数で次の1手を 並べると、トータルではzebraの完全読みの良い手から順に並んでくるんだけど、ところ どころ順位が入れ替わるんだよね。その入れ替わる場所が、1位と2位とかだと−2して しまうし、時々−10くらいの手を選んでしまったりする。 囲碁のプレイアウトをちょっと調べたら、やっぱり盤面のパターンを評価して、次の 1手の順位を決めて、点数に応じて着手確率を変えたり、あからさまに悪い手はカット するみたいな事をしている。そちらの知見では、良いプレイアウトなら回数は少なくて も何とかなるみたいな話になってる。 今の相手着手可能数ベースで、edaxのpvbook_2009の最善手順を評価すると、1位の手 が選ばれている確率は42%くらいで、2位で17%と、思いのほか手が散っているんです。 これ、同点1位は、ソート順で2位以下にするのではなく1位にまとめるようにしてあるから、 マッチング率が想像していたより悪いって事になります。 別の方法で次の1手ヒューリスティックを作って、一致率を例えば75%〜80%くらいに までできないかなぁと思いまして。結局、もうしばらくモンテカルロを継続する事にしました。 NNに行く前に、縦横斜めのパターンでベースとなる一致率を作ってみようかなと思います。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/696
697: 535 [sage] 2017/01/21(土) 14:40:41.23 ID:7GkfgTKT プログラム作るなら単体テストは必須ですね… 後から後からバグが溢れてくる… http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/697
698: 535 [sage] 2017/01/21(土) 15:30:15.75 ID:7GkfgTKT 机上デバッグはいやだお…T△T 辛すぎる… http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/698
699: 310 [sage] 2017/01/22(日) 23:15:41.71 ID:7cgxubHE 思いっきり同感だけど、結局サボるというorz 実はモンテカルロやってるから見なかった事にしているけど、Solverにバグがあります。 発生する条件も薄々わかっています。いつの間にバグを仕込んだのか。 さて、プレイアウトのヒューリスティックですが、縦横斜めのラインで、その形が現れた 回数、着手された回数のデータベースを作って、プレイアウトの次の1手の時に、それ ぞれの確率を縦横斜めで集計して、その高い順にsoftmaxで確率分布にして、着手を 選択させる形にしました。 結果は・・・。ヒューリスティックの次の1手としての精度はいまいちですが、それでも 上位3〜4位くらいには最善手が入ってる感じになります。でも、評価値が極端に出過ぎ ている感じで、ダメダメな感じになりました。確率のバラつきが小さいように感じたので、 ちょっと修正してみましたがダメなので、思い切って累積確率50%でカットしてみました。 この辺で大体3〜4位までの着手になります。少しマシになったけど、やはりダメ。 softmaxの計算が重いため、プレイアウト回数が1/7くらいに減ってしまうんだけど、それを 補う精度が出ていない感じです。楽ちんなのでunordered_map使ってますが、もっと速度を 出そうと思うんなら、他の方法を考えた方が良いかも。 簡潔なプレイアウトで秒間プレイアウト数を稼いで、枝を伸ばす方向に逃げたい気持ちを ぐっと抑えつつ、引き続いてニューラルネット系で次の1手を求めてみたいと思います。 更にスピード低下するので、いま以上に精度が出ないと・・・。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/699
700: 535 [sage] 2017/01/23(月) 23:10:08.18 ID:ii9ofJgq 黒番限定ですがLV2に勝ち越せる?というところまで来ました。 何をやっているかというとLV2とLV3を対戦させた棋譜を大量に集めて、 LV2に勝てる手順のDBを作ってナゾルということをやっていますw まあほとんどチートみたいなものですが、棋譜を集めれば集めるほど 勝てるようになるのでなかなか面白いです。 白番だとLV2が盤の中央からゲームを始めないのでうまくいかなかったりしますw http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/700
701: 名前は開発中のものです。 [sage] 2017/01/23(月) 23:46:45.10 ID:ii9ofJgq 勝利手順のDBからディープラーニングで評価関数を抽出することを考えていますが 今のところ全くうまくいく気配がありませんT△T http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/701
702: 310 [sage] 2017/01/26(木) 21:23:21.53 ID:foYEIc8+ >>700 Buroさんは逐次的にBOOK学習やってました。 僕は論文が理解しきれなかったのと、それやると特定AI相手だけに強いAIが作れて しまうので禁じ手にしちゃいましたが、オセロというゲームの底の浅さからすると、 それが正解かも知れない(汗 デバッグ兼ねてZebraと対戦していたら、ZebraのBOOKが強化されていくのが実感 できてしまいました。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/702
703: 310 [sage] 2017/01/26(木) 21:32:27.07 ID:foYEIc8+ さて、本日は非常にショックな事が判明しました。 次の1手を求めるNNを作って、大体できたのでAIに組み込んでました。 NNは以前にEigenで作ったものの流用改造。とりあえず学習結果が確認できる ところまでやったら、コンパイルが通らない。C2059というエラー。前にも何回か 出ていて、ライブラリの順番いじると直るので放置していた奴。何かの名前が 組み込んだライブラリ間で衝突していると起きるらしい。それが途中からどうにも 直らなくなってしまった。 で、ようやく重い腰をあげて何が衝突しているのか調べたら、A1とかC1とかの 着手位置を表す#defineの定義が、Eigenの内部の型か何かの定義と被ってる。 こちらは#defineなのでnamespaceで回避できない。 楽に回避できる方法を色々考えたあげく、結局、C++良く知らなくてCとしてプログラム 書いていた頃から引きずって#defineを使っているのが悪いのだと気が付いて、 クラスとenumで対処するという、全面作り替えにする事にしてしまいました。 というわけで、修正に3日くらいかかりそうですorz http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/703
704: 名前は開発中のものです。 [sage] 2017/01/26(木) 21:36:49.48 ID:NsrLS1+v 乙 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/704
705: 535 [sage] 2017/01/26(木) 21:43:44.99 ID:NsrLS1+v >特定AI相手だけに強いAIが作れて ディープラーニングが成功すれば汎用度もちっとは違うのかもですが。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/705
706: 535 [sage] 2017/01/26(木) 21:54:02.30 ID:NsrLS1+v 強い詰みルーチンが欲しいですねぇ。 DBでほぼ勝ちという局面にもっていってもポロッと落とすことが結構ある。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/706
707: 310 [sage] 2017/01/26(木) 21:56:01.75 ID:foYEIc8+ あ、もしかしてenumってunsigned __int64が使えないのか・・・ http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/707
708: 535 [sage] 2017/01/26(木) 23:23:42.26 ID:NsrLS1+v DBは勝率で手を選ぶよりも累計勝利数で手を選んだほうが良いっぽい。 そのほうが勝利再現率が上がるっぽい。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/708
709: 535 [sage] 2017/01/29(日) 01:07:10.63 ID:uZb/TXFd 負けた手順に対して手動でDBを修正するという汎用性がみじんもない作業を始めましたw なにかドカンと強くなる方法ないかなぁ http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/709
710: 310 [sage] 2017/01/29(日) 13:11:46.36 ID:rGbRSmBn enumで__int64使えますね。というか、どこかのバージョンから使えるようになってましたね。 何か裏ワザ的な使い方考え付かないかと思って試しましたが結局ダメで、前から気になって いた箇所をクラス化しだしたら大規模改造になってしまいました。 オブジェクト指向を忠実に実行しようとすると、結局何度もライブラリ作り直す羽目になると いう本末転倒な状態(汗 色々ドタバタしていたので、オセロ共通のクラスのみ修正完了。ロジック部分はこれから。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/710
711: 535 [sage] 2017/01/30(月) 23:07:35.87 ID:nIJrclSx ファイル出力が思いのほか重い。 知識では知ってたけど今回、実感しました。 DB作るときは棋譜をまとめて読み込んで書きこみは1回だけとか工夫しないとだめですな。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/711
712: 310 [sage] 2017/01/31(火) 01:06:15.90 ID:tF0OU/RM >>709 ドカンとは強くならないけど、やっている事から推測すると遺伝的アルゴリズムが 合ってそうな気がします。茨の道ですが(汗 >>711 いまどきはメモリが大きいので、全部読み込んで一括処理とか、思いのほか可能ですね。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/712
713: 310 [sage] 2017/01/31(火) 01:17:50.59 ID:tF0OU/RM 困った。3層MLPで次の1手を、 http://qiita.com/kanlkan/items/6bff417519ed7d5ce4da を参考にして求めている(若干やり方が違う)のだけど、思ったように学習してくれない。 NNの計算どっかおかしい気がしてきたorz http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/713
714: 310 [sage] 2017/02/01(水) 15:57:52.90 ID:DrzIg7bz ひょんな事から学習できました。デバッグ用に学習データを減らしてテストをしようとしたら 学習できてしまいまして。件数を増やすとダメになる模様。 これは仮説ですが、多種多様な棋譜を学習させると、ネットワークの自由度が不足して、 ウェイト更新が相互に打ち消し合った結果、ウエイトがゼロ(勾配消失)に陥ってしまうと。 学習に失敗した時は、大半のテストの結果が、全て同じ確率(softmaxのため)となってい ます。中身は見ていませんが、softmax関数を通す前はオールゼロとなっている事が十分 に想像できます。 今から思うと、NNで評価関数を作ろうとして失敗していた時も、同じ状態だったのかなと。 学習データを減らすと精度が落ちますので、ネットワークをより複雑かつ大規模にしない といけないのかなぁと。結局、同じ問題(ネットワークを大規模化しなきゃいけないけど、 自前のパソコンでは計算が厳しい上に、結果を使用する方もタイムクリティカルなので あまりややこしくしたくない)の周りをグルグルしはじめてしまいました(汗 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/714
715: 535 [sage] 2017/02/02(木) 23:55:47.04 ID:JZtX1mUx まとめて読むようにしたら3日かかったDB作成が数分で終了しましたw しかしDBがかなり肥大化してしまいました。 読み込みに5秒くらいかかる。 しかもこの手法だとLV2には勝てるけどLV3には勝てないし。 LV2はパターン少ないからDBで勝利手順なぞれるけどLV3はパターンが多くてカバーできない(多分)。 そろそろ別の手を考えなければ。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/715
716: 535 [sage] 2017/02/03(金) 20:14:00.97 ID:jkxdJ711 DBを使ってモンテカルロ木探索の探索結果を永続的に蓄積するというのをちょっと思案中。 計算すればするほどDBが洗練されていく感じで。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/716
717: 310 [sage] 2017/02/03(金) 20:39:47.64 ID:dv6j41bl >>716 同じ事妄想したけど、それなら後方枝刈付のmin-Maxの探索結果をひたすら ため込んでいく方が容量的にも速度的にも有利で、それができないからモンテ カルロだって事に思いいたりました(汗 min-Maxなら、いらない枝カットできるかと思いきや、相手がそこに打っちゃった 時の事を考えたら捨てられない事にも気づきました(汗汗 で、適当なところだけ保存して、残りは別途探索・・・って、これ定石DBやん! というオチでした。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/717
718: 名前は開発中のものです。 [sage] 2017/02/03(金) 20:45:51.93 ID:jkxdJ711 ボツ案でしたか。 でもまあ、とりあえずDBを充実させる方向でやってみます。 他に案がないので。 ディープラーニングがうまくいけばなぁ。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/718
719: 535 [sage] 2017/02/03(金) 20:49:10.94 ID:jkxdJ711 今のところ黒番対LV2は2勝一敗ペースてな感じです。 もっと勝てるかと思ったけどそうでもないですね。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/719
720: 310 [sage] 2017/02/03(金) 20:58:39.46 ID:dv6j41bl こちとらディープラーニングで完全にドツボってますorz http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/720
721: 535 [sage] 2017/02/04(土) 19:33:24.33 ID:neMma6zi ディープラーニングは盤面情報だけじゃなくてこちらでなにがしかの特徴量を計算してやって その数値も食わせたほうがすこしはましになるんだろうか。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/721
722: 310 [sage] 2017/02/04(土) 20:57:26.78 ID:ycMSfQXf オセロではBuroさんの評価関数と同じ特徴を入力にしたMLPで評価関数を作った オセロプログラムがあります。vsOthaというソフトです。 今回はディープなので、できれば特徴量は自動抽出してもらいたいものではあります。 一応、黒白の盤面情報の他、着手可能位置は与えています。 と、ここまで書いて、着手可能位置を求めるように学習させられるのか、ふと気になった。 何らかの事前学習に使えそうな気がする。 やらずに悶々としているだけなのですが、DCNNの四角い窓ではオセロの特徴はうまく 抽出できないのではないかと思っていますが、他に方法が思いつかないのが悲しい。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/722
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 280 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.018s