[過去ログ] 【オセロ,将棋】ボードゲーム【囲碁,War】 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
680: 310 2016/12/27(火)01:58 ID:lSRXuhfg(1) AAS
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回程度は
ミスをしちゃう感じです。
プレイアウトはもう少し詰められそうだけど、まあこの辺が潮時かなぁ。
次は何しようかな。
681: 2016/12/27(火)06:12 ID:A0w16iJG(1) AAS
Vectorとかで配布しては?
682: 310 2016/12/28(水)10:02 ID:8e16q4EG(1) AAS
vectorは考えてないですが、どこかでソース晒しても良いかなと思っています。
しばし検討。
なおUCT探索の探索時間は30秒にしてます。微妙な時は10秒づつ探索延長します。
また、人間が長考すると、その分だけバックグラウンドで探索が進んで強くなります。
気が長い人におすすめです。
683(1): 2016/12/29(木)00:29 ID:T+iok27x(1) AAS
GGSってまだあるんだっけか
トッププログラムの開発者はみんなあそこで対戦しつつ改良してる
684: 310 2016/12/30(金)02:11 ID:iZpfxqhq(1/2) AAS
>>683
GGS探したけど見つかりません。
オセロのAI自体、行き着くところまで行っちゃってるからなぁ。
コメントの整備をしていたら、細かいところが気になって、あちこち手を入れています。
手を入れながら、UCTの探索結果があるので、それでmoveorderすれば良い事に気が
つきまして。SOLVERが少し早くなったので、終盤探索は38手に格上げ。
しかし、テストプレイしていたら、SOLVERのバグ発見。終局まで打ち続けると、50手目
近辺で間違えます。並列探索部分で、negaScout的に再探索かかったあたりにバグが
ありそうという所まで絞り込みましたが、ちょっと厄介な感じ。
ソース晒す用に昔使ってたDTIのホームページを使えないか調べたら、サービスごと
終了してました(汗。
久々にオセロAIで検索したら、MLPでAIのテストをしている人がいました。評価関数では
なく、次の1手で使っているようです。比較的軽い構成なので、気が向いたらもう一度、
トライしてみようかと思います。
685: 310 2016/12/30(金)20:08 ID:iZpfxqhq(2/2) AAS
バグ直りました。数日前に速度アップできると思いつきで直したところでした。
直ったは良いけど、何故バグるのか理解できないorz
686: 2017/01/01(日)01:33 ID:AXNNcWXn(1) AAS
個人的にはディープラーニングやって欲しい
687: 310 2017/01/02(月)09:01 ID:YMPtqKka(1) AAS
いま、Bloogerにサイトを作ってやっつけで解説文を作ってます。
あらかたできたら公開します。
が、解説していると細かいバグを見つけて、直して確認が必要になるという…。
やっぱ次はディープラーニングですよね。Eigen使ったMLPで次の1手をやってみます。
DCNNももう一度トライしたいと思っていますが、貧弱なパソコン環境ではどうにもならない
かも知れない。
688: 535 2017/01/06(金)21:06 ID:/dmWmgCn(1) AAS
ネット碁でアルファ碁が無双してるみたいですね。
60連勝?とか凄すぎw
689: 310 2017/01/09(月)14:10 ID:kUxHCmxW(1) AAS
60連勝の相手が、マジトップ棋士だってんだから、あきれるしかないですね(笑
解説書きながらソース見てたら、色々直したくなってしまい、泥沼化しています(汗
強くなったと思ったら弱くなっていたというのの繰り返しです。
690: 535 2017/01/15(日)01:15 ID:FqCBSr/V(1) AAS
TensorFlowで学ぶディープラーニング入門って本読んでます。
かなり易しく書こうとしてるのが伝わってくる本なんですがそれでも難しい。orz
691: 310 2017/01/16(月)13:21 ID:Cfoi8GBB(1) AAS
カーネルサイズとかチャンネルとかフィルターのあたりですか?
僕の方は・・・モンテカルロだから間違えると思って、思考時間を増やしたり、末端ノードで
1回づつじゃなくて、100回づつプレイアウトするようにしたりして、プレイアウト回数を稼い
だところ、「同じところで同じように安定的に間違える」ようになってしまいまして(汗。
プレイアウトは適当でも、とにかくツリー展開させるか、それともプレイアウトである程度
正確な勝率を得るけど、ツリー展開は減らさないように努力するのか。その辺で、また
悩み始めてしまいまして。edaxの引き分けBOOKから何か情報が取れないかと頑張って
ますが・・・。そろそろ飽きてきちゃったんだよなぁ。
692: 535 2017/01/16(月)21:00 ID:UThQer2a(1) AAS
専門用語はよくわかりませんが、付属のサンプルコードをなんとなく動かしてます。
行列と誤差関数を定義してやればtensorflowが勝手に最適化してくれるとか。
成果でないとめげてきますよね。
ここらで一発アルファ碁級のブレークスルーが欲しいですねw
693: 310 2017/01/16(月)22:06 ID:cVXIBPCK(1) AAS
あれはやっぱマシンパワーが・・・
一旦計算できちゃってもそれなりの重さなんだけど、学習しようと思うと重さにめげます。
というか、やる気すら起きないレベルorz
とりあえず、実際の最善手順が、ヒューリスティックの何番目かを統計的に処理して、
プレイアウト関数の手のバラつきを表現しようかと思って、プログラム作ってEXCELで
集計して、それなりに計算が簡素にできる形に変形してなんてやりましたが、やった
所で、何番目を選ぶかはランダムではなくて理由があっての事なんだよなぁと…
ちっとマシなヒューリスティックとか言い出すと…できない事をしようとしている事に深く
思い至るわけで。
694: 310 2017/01/17(火)00:25 ID:SLwZ7IwS(1/2) AAS
統計処理して作ったプレイアウト関数も結局ダメでしたorz
最後はやっぱりBOOK頼みになっちゃいます。
もう一回NNに行って次の1手計算させてみるべかな。
695: 535 2017/01/17(火)21:19 ID:wCDEMY6U(1) AAS
モンテカルロ木探索ってわざと悪い手打ってる?ていうぐらい期待外れの手を打ちますねw
プレイアウトの質改善が必須か…
696: 310 2017/01/17(火)22:04 ID:SLwZ7IwS(2/2) AAS
例えば40手目くらいの盤面で、UCTの選択基準であるところの実行回数で次の1手を
並べると、トータルではzebraの完全読みの良い手から順に並んでくるんだけど、ところ
どころ順位が入れ替わるんだよね。その入れ替わる場所が、1位と2位とかだと−2して
しまうし、時々−10くらいの手を選んでしまったりする。
囲碁のプレイアウトをちょっと調べたら、やっぱり盤面のパターンを評価して、次の
1手の順位を決めて、点数に応じて着手確率を変えたり、あからさまに悪い手はカット
するみたいな事をしている。そちらの知見では、良いプレイアウトなら回数は少なくて
も何とかなるみたいな話になってる。
今の相手着手可能数ベースで、edaxのpvbook_2009の最善手順を評価すると、1位の手
が選ばれている確率は42%くらいで、2位で17%と、思いのほか手が散っているんです。
これ、同点1位は、ソート順で2位以下にするのではなく1位にまとめるようにしてあるから、
マッチング率が想像していたより悪いって事になります。
別の方法で次の1手ヒューリスティックを作って、一致率を例えば75%〜80%くらいに
までできないかなぁと思いまして。結局、もうしばらくモンテカルロを継続する事にしました。
NNに行く前に、縦横斜めのパターンでベースとなる一致率を作ってみようかなと思います。
697: 535 2017/01/21(土)14:40 ID:7GkfgTKT(1/2) AAS
プログラム作るなら単体テストは必須ですね…
後から後からバグが溢れてくる…
698: 535 2017/01/21(土)15:30 ID:7GkfgTKT(2/2) AAS
机上デバッグはいやだお…T△T
辛すぎる…
699: 310 2017/01/22(日)23:15 ID:7cgxubHE(1) AAS
思いっきり同感だけど、結局サボるというorz
実はモンテカルロやってるから見なかった事にしているけど、Solverにバグがあります。
発生する条件も薄々わかっています。いつの間にバグを仕込んだのか。
さて、プレイアウトのヒューリスティックですが、縦横斜めのラインで、その形が現れた
回数、着手された回数のデータベースを作って、プレイアウトの次の1手の時に、それ
ぞれの確率を縦横斜めで集計して、その高い順にsoftmaxで確率分布にして、着手を
選択させる形にしました。
結果は・・・。ヒューリスティックの次の1手としての精度はいまいちですが、それでも
上位3〜4位くらいには最善手が入ってる感じになります。でも、評価値が極端に出過ぎ
ている感じで、ダメダメな感じになりました。確率のバラつきが小さいように感じたので、
ちょっと修正してみましたがダメなので、思い切って累積確率50%でカットしてみました。
この辺で大体3〜4位までの着手になります。少しマシになったけど、やはりダメ。
softmaxの計算が重いため、プレイアウト回数が1/7くらいに減ってしまうんだけど、それを
補う精度が出ていない感じです。楽ちんなのでunordered_map使ってますが、もっと速度を
出そうと思うんなら、他の方法を考えた方が良いかも。
簡潔なプレイアウトで秒間プレイアウト数を稼いで、枝を伸ばす方向に逃げたい気持ちを
ぐっと抑えつつ、引き続いてニューラルネット系で次の1手を求めてみたいと思います。
更にスピード低下するので、いま以上に精度が出ないと・・・。
700(1): 535 2017/01/23(月)23:10 ID:ii9ofJgq(1/2) AAS
黒番限定ですがLV2に勝ち越せる?というところまで来ました。
何をやっているかというとLV2とLV3を対戦させた棋譜を大量に集めて、
LV2に勝てる手順のDBを作ってナゾルということをやっていますw
まあほとんどチートみたいなものですが、棋譜を集めれば集めるほど
勝てるようになるのでなかなか面白いです。
白番だとLV2が盤の中央からゲームを始めないのでうまくいかなかったりしますw
701: 2017/01/23(月)23:46 ID:ii9ofJgq(2/2) AAS
勝利手順のDBからディープラーニングで評価関数を抽出することを考えていますが
今のところ全くうまくいく気配がありませんT△T
702: 310 2017/01/26(木)21:23 ID:foYEIc8+(1/3) AAS
>>700
Buroさんは逐次的にBOOK学習やってました。
僕は論文が理解しきれなかったのと、それやると特定AI相手だけに強いAIが作れて
しまうので禁じ手にしちゃいましたが、オセロというゲームの底の浅さからすると、
それが正解かも知れない(汗
デバッグ兼ねてZebraと対戦していたら、ZebraのBOOKが強化されていくのが実感
できてしまいました。
703: 310 2017/01/26(木)21:32 ID:foYEIc8+(2/3) AAS
さて、本日は非常にショックな事が判明しました。
次の1手を求めるNNを作って、大体できたのでAIに組み込んでました。
NNは以前にEigenで作ったものの流用改造。とりあえず学習結果が確認できる
ところまでやったら、コンパイルが通らない。C2059というエラー。前にも何回か
出ていて、ライブラリの順番いじると直るので放置していた奴。何かの名前が
組み込んだライブラリ間で衝突していると起きるらしい。それが途中からどうにも
直らなくなってしまった。
で、ようやく重い腰をあげて何が衝突しているのか調べたら、A1とかC1とかの
着手位置を表す#defineの定義が、Eigenの内部の型か何かの定義と被ってる。
こちらは#defineなのでnamespaceで回避できない。
楽に回避できる方法を色々考えたあげく、結局、C++良く知らなくてCとしてプログラム
書いていた頃から引きずって#defineを使っているのが悪いのだと気が付いて、
クラスとenumで対処するという、全面作り替えにする事にしてしまいました。
というわけで、修正に3日くらいかかりそうですorz
704: 2017/01/26(木)21:36 ID:NsrLS1+v(1/4) AAS
乙
705: 535 2017/01/26(木)21:43 ID:NsrLS1+v(2/4) AAS
>特定AI相手だけに強いAIが作れて
ディープラーニングが成功すれば汎用度もちっとは違うのかもですが。
706: 535 2017/01/26(木)21:54 ID:NsrLS1+v(3/4) AAS
強い詰みルーチンが欲しいですねぇ。
DBでほぼ勝ちという局面にもっていってもポロッと落とすことが結構ある。
707: 310 2017/01/26(木)21:56 ID:foYEIc8+(3/3) AAS
あ、もしかしてenumってunsigned __int64が使えないのか・・・
708: 535 2017/01/26(木)23:23 ID:NsrLS1+v(4/4) AAS
DBは勝率で手を選ぶよりも累計勝利数で手を選んだほうが良いっぽい。
そのほうが勝利再現率が上がるっぽい。
709(1): 535 2017/01/29(日)01:07 ID:uZb/TXFd(1) AAS
負けた手順に対して手動でDBを修正するという汎用性がみじんもない作業を始めましたw
なにかドカンと強くなる方法ないかなぁ
上下前次1-新書関写板覧索設栞歴
あと 293 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.011s