[過去ログ]
【オセロ,将棋】ボードゲーム【囲碁,War】 (1002レス)
【オセロ,将棋】ボードゲーム【囲碁,War】 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
677: 310 [sage] 2016/12/11(日) 23:57:52.07 ID:8cq3+Gjk たった一晩で楽観してきました。 今までsoftmaxで確率分布を変えていましたが、あまり大きな差はついていないようだった ので、この際、思いっきり割り切ってみました。1位に70%、2位に25%、残り5%で他の 手に均等割り。イメージとしては1σ、2σ、その他って感じです。ヒューリスティックは αβのmoveorderのものを使用。 もちろんzebraにはぼろ負けですが、今までと違うのは、相手を囲んで着手可能位置を 減らしてしまう事が無くなりました。ちょっとした手ごたえを感じています。これをスタート に、ヒューリスティックに終盤変化を組み込んだり、序盤は開放度にしてみたりして検証 しようかと思っています。プレイアウトの精度があがったら、無駄にツリー展開しなくて 済むので、メモリーにも優しくなれるかも。 また、敗勢での発狂モードや、勝勢での手抜きモードの原因は、勝敗が明らかになり、 手毎の勝率の差がなくなる事が原因です。プレイアウト回数が多いからか、評価値は かなりデジタルに変化するので、25%、75%などを境目に、石差評価に変更すると、 ある程度回避できるんじゃないかと思います。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/677
678: 310 [sage] 2016/12/19(月) 00:57:35.60 ID:V27xPT8O 地味に色々改良。素UCTに色々追加してます。 ・uctの終盤にsolverを組み込んだ ・手の割り振りに全手均等な部分を作って読み抜けの可能性を減らした の2点が主な追加点です 当初想定していたより結構強くなったと思います。 AI黒番30秒探索。zebra思考中にもMAX30秒探索で、zebraに対しては20石強負け くらい。序盤1回間違えて、中盤ジワジワ差が広がって、40手前後で読み切りできず に間違う感じ。序盤は定石で回避できると思いますが、中盤の間違いは2番手の手を 選んでしまいます。修正は難しい感じ。終盤はチューニングか、探索時間延長で対応 できないか検討。 テストで作った20手目で黒+12(zebra評価値)程度の盤面からは、zebraが間違える のか、終盤に入るところまで、かなり押してまして、読み切りミスで22石差→16石差と ぬるい手を打ちましたが、勝ち切る事ができるようになりました。 ここから先は、レーティングが欲しいなぁ。 オセロでAI使用OKなところないですかね? http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/678
679: 310 [sage] 2016/12/22(木) 01:29:32.37 ID:4YVdXlZ1 地味に色々改良した結果、あらかたボツにしてます(汗 発狂モード対策でスコア最大化を図ろうとしていましたが、極端なスコアが悪さしている ようなので、結局勝率のみに限定しました。この時点で終盤はsolver任せに方針転換。 で、勝敗のみにした事で、solverの探索範囲を+-1のシングルウィンドウにできて スピードアップしたのでプレイアウトのラスト7手くらいでも使用する事にしました。 プレイアウトでは、moveorder順の下位はバッサリカットしました。酷い手が混入する とスコアが散らかるので。 uctのif分ネストがスパゲッティ化したので、処理順を大幅に見直したら、時々落ちるように なってしまった。並列化が原因かそれともshared_ptrの使い方が悪いのか、散々調べた 結果、ちゃんと全体をリビルドすれば回避できる事が判明。俺の時間を返せorz テストで使用している引分手順30手目から開始すると、たいていは負けてしまうけど、 希にzebraが認識していない勝利手順を見つけて勝つようになった。乱数の具合なので 再現性は低いけど、zebraの評価値にも間違いがある事を実感した。 ここのところ30手目〜40手目をターゲットに改善していたけど、それなりに成果が出た。 40手目以後はsolverを使用し、対局開始は定石DBを20手分くらい用意したら、まあまあ なAIになるかなぁと思い始めました。ただ、1手30秒考えるのは長すぎるなぁ。 あと、正しい手順を見つけ勝率も上回って来ているのに、探索時間が足りずにプレイアウト 回数で負けて最善手が選ばれないケースが散見されます。ものの本だと、そういう時は 探索時間を延長するとか書かれていますので、対応してみようかと思っています。 というわけで、なんか行けそうな気がしてきた。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/679
680: 310 [sage] 2016/12/27(火) 01:58:53.16 ID:lSRXuhfg uctの探索部分がある程度できたので、とりあえずDOS窓ベースでゲームとして成り立つ ようにしました。edax-pvbook_2009.wtbから作った40手分の定石DBをつけて、終盤探索 は40手目からsolverで。multi probe cutできないので、FFO#40で1.3秒程度の性能です。 その他諸々。探索時間延長とか。タイマーを作り直してプログレスバーつけたり。 WZebraの20手読み、定石DB変化大相手に、まれに勝ちます。直接対決はまだして ませんが、以前自分が作ったmin-Max版よりちょっと弱いくらいかなという感触です。 モンテカルロは乱数がらみで、ナチュラルに変化しちゃうので、5〜10手に1回程度は ミスをしちゃう感じです。 プレイアウトはもう少し詰められそうだけど、まあこの辺が潮時かなぁ。 次は何しようかな。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/680
681: 名前は開発中のものです。 [sage] 2016/12/27(火) 06:12:54.86 ID:A0w16iJG Vectorとかで配布しては? http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/681
682: 310 [sage] 2016/12/28(水) 10:02:51.11 ID:8e16q4EG vectorは考えてないですが、どこかでソース晒しても良いかなと思っています。 しばし検討。 なおUCT探索の探索時間は30秒にしてます。微妙な時は10秒づつ探索延長します。 また、人間が長考すると、その分だけバックグラウンドで探索が進んで強くなります。 気が長い人におすすめです。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/682
683: 名前は開発中のものです。 [sage] 2016/12/29(木) 00:29:19.19 ID:T+iok27x GGSってまだあるんだっけか トッププログラムの開発者はみんなあそこで対戦しつつ改良してる http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/683
684: 310 [sage] 2016/12/30(金) 02:11:45.43 ID:iZpfxqhq >>683 GGS探したけど見つかりません。 オセロのAI自体、行き着くところまで行っちゃってるからなぁ。 コメントの整備をしていたら、細かいところが気になって、あちこち手を入れています。 手を入れながら、UCTの探索結果があるので、それでmoveorderすれば良い事に気が つきまして。SOLVERが少し早くなったので、終盤探索は38手に格上げ。 しかし、テストプレイしていたら、SOLVERのバグ発見。終局まで打ち続けると、50手目 近辺で間違えます。並列探索部分で、negaScout的に再探索かかったあたりにバグが ありそうという所まで絞り込みましたが、ちょっと厄介な感じ。 ソース晒す用に昔使ってたDTIのホームページを使えないか調べたら、サービスごと 終了してました(汗。 久々にオセロAIで検索したら、MLPでAIのテストをしている人がいました。評価関数では なく、次の1手で使っているようです。比較的軽い構成なので、気が向いたらもう一度、 トライしてみようかと思います。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/684
685: 310 [sage] 2016/12/30(金) 20:08:38.43 ID:iZpfxqhq バグ直りました。数日前に速度アップできると思いつきで直したところでした。 直ったは良いけど、何故バグるのか理解できないorz http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/685
686: 名前は開発中のものです。 [sage] 2017/01/01(日) 01:33:49.09 ID:AXNNcWXn 個人的にはディープラーニングやって欲しい http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/686
687: 310 [sage] 2017/01/02(月) 09:01:41.61 ID:YMPtqKka いま、Bloogerにサイトを作ってやっつけで解説文を作ってます。 あらかたできたら公開します。 が、解説していると細かいバグを見つけて、直して確認が必要になるという…。 やっぱ次はディープラーニングですよね。Eigen使ったMLPで次の1手をやってみます。 DCNNももう一度トライしたいと思っていますが、貧弱なパソコン環境ではどうにもならない かも知れない。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/687
688: 535 [sage] 2017/01/06(金) 21:06:02.45 ID:/dmWmgCn ネット碁でアルファ碁が無双してるみたいですね。 60連勝?とか凄すぎw http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/688
689: 310 [sage] 2017/01/09(月) 14:10:27.74 ID:kUxHCmxW 60連勝の相手が、マジトップ棋士だってんだから、あきれるしかないですね(笑 解説書きながらソース見てたら、色々直したくなってしまい、泥沼化しています(汗 強くなったと思ったら弱くなっていたというのの繰り返しです。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/689
690: 535 [sage] 2017/01/15(日) 01:15:01.84 ID:FqCBSr/V TensorFlowで学ぶディープラーニング入門って本読んでます。 かなり易しく書こうとしてるのが伝わってくる本なんですがそれでも難しい。orz http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/690
691: 310 [sage] 2017/01/16(月) 13:21:19.22 ID:Cfoi8GBB カーネルサイズとかチャンネルとかフィルターのあたりですか? 僕の方は・・・モンテカルロだから間違えると思って、思考時間を増やしたり、末端ノードで 1回づつじゃなくて、100回づつプレイアウトするようにしたりして、プレイアウト回数を稼い だところ、「同じところで同じように安定的に間違える」ようになってしまいまして(汗。 プレイアウトは適当でも、とにかくツリー展開させるか、それともプレイアウトである程度 正確な勝率を得るけど、ツリー展開は減らさないように努力するのか。その辺で、また 悩み始めてしまいまして。edaxの引き分けBOOKから何か情報が取れないかと頑張って ますが・・・。そろそろ飽きてきちゃったんだよなぁ。 http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/691
692: 535 [sage] 2017/01/16(月) 21:00:44.96 ID:UThQer2a 専門用語はよくわかりませんが、付属のサンプルコードをなんとなく動かしてます。 行列と誤差関数を定義してやればtensorflowが勝手に最適化してくれるとか。 成果でないとめげてきますよね。 ここらで一発アルファ碁級のブレークスルーが欲しいですねw http://mevius.5ch.net/test/read.cgi/gamedev/1057763418/692
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
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 296 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.022s