[過去ログ] 【オセロ,将棋】ボードゲーム【囲碁,War】 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
673
(1): 535 2016/12/02(金)22:02 ID:Vv9WnV3F(2/2) AAS
モンテカルロは良い枝をカットしないこともかなり重要とみた。
674: 310 2016/12/04(日)20:20 ID:E6FCgpFL(1) AAS
うーん。モンテカルロはFFOなんかで残り20手くらいから戦うと、結構まともな着手を
するんだけど、10〜30手目付近がわざとじゃないかというくらい悪い手ばかり選択する。
残り10手くらいまで行けば完璧。

序盤は次の1手が多すぎるのと、プレイアウトで回す回数が単純に多いので、ツリー部が
なかなか深くならないし、あまり簡単に深くするとすぐにメモリーオーバーフローしちゃうし
で難しい。

>>673
UCTではカットはしません。単純にプレイアウトの割り当ての順番がなかなか回ってこなく
なるだけです。良い手に優先的に割り当てさせるためには、やはりプレイアウトで良い手は
良いと、悪い手は悪いと評価できなきゃならんわけで。それが難しいからモンテカルロだと
言う矛盾。

まあ、オセロの場合は、伝家の宝刀評価関数があるので、プレイアウトを20手くらいで
打ち切って、評価値を返すとか…MPCみたいな事をして無駄な着手を回避させるか…
と、本末転倒な妄想をしてます(汗。良くなる点は、時間管理が易しくなるくらいかな(涙。
675: 310 2016/12/06(火)00:37 ID:zUbz1knV(1) AAS
モンテカルロが弱い理由を探ってます。

WZebraと対戦させると、一番顕著なのは、モンテカルロは辺に着手したがり、その結果
WZebraに内側に潜りこまれて選択肢が減っているという事です。流石に×とかCには
簡単には打ちませんが、序盤からあっさり中辺に出て行き、更にあっさり辺に打ちます。

相手もランダムに着手したとすると、辺の石は1方向からしか返せない(内側は4方向)
ので、プレイアウトでは残りやすくなると言う仮説を立ててみました。つまり全部で28石
ある辺の攻防が相対的に下手くそになるため、プレイアウトの結果が楽観的になりすぎ
ているのではないかと言う事です。

残り20手切ってくると、ツリー展開できているので、min-Max的に攻防できるけど、それ
より前の段階ではプレイアウトで、相手のミスを咎めるような手を打たないといけないと
言う事かなと思います。

これをどう次の1手の確率分布に表現するかですね。
676: 310 2016/12/11(日)01:06 ID:8cq3+Gjk(1/2) AAS
なんか袋小路に入ってます(汗

プレイアウトの改良は速度低下との戦いになり、効果が出ません。
結局、とにかく無駄をそぎ落とし、単純化してプレイアウト回数を稼いで、なおかつ
ツリー展開の閾値を下げて、ツリーに頼る形になりました。

が、ここでメモリーパンクとの戦いが始まります(涙
中盤の分岐が多い局面だと、あっという間にツリー部で8ギガくらい使ってしまいます。
更に処理を単純化してメモリー使用量削減に走る事に。

結局、40手目以後なら使えるけど、それ以前ではあまり精度が期待できないという、
当初やりたかった、少しマシな序盤・中盤探索という目論見は崩れてしまいました。

評価関数があるんだったらαβの方がマシという当たり前の結論に傾きつつあります(汗
677: 310 2016/12/11(日)23:57 ID:8cq3+Gjk(2/2) AAS
たった一晩で楽観してきました。

今までsoftmaxで確率分布を変えていましたが、あまり大きな差はついていないようだった
ので、この際、思いっきり割り切ってみました。1位に70%、2位に25%、残り5%で他の
手に均等割り。イメージとしては1σ、2σ、その他って感じです。ヒューリスティックは
αβのmoveorderのものを使用。

もちろんzebraにはぼろ負けですが、今までと違うのは、相手を囲んで着手可能位置を
減らしてしまう事が無くなりました。ちょっとした手ごたえを感じています。これをスタート
に、ヒューリスティックに終盤変化を組み込んだり、序盤は開放度にしてみたりして検証
しようかと思っています。プレイアウトの精度があがったら、無駄にツリー展開しなくて
済むので、メモリーにも優しくなれるかも。

また、敗勢での発狂モードや、勝勢での手抜きモードの原因は、勝敗が明らかになり、
手毎の勝率の差がなくなる事が原因です。プレイアウト回数が多いからか、評価値は
かなりデジタルに変化するので、25%、75%などを境目に、石差評価に変更すると、
ある程度回避できるんじゃないかと思います。
678: 310 2016/12/19(月)00:57 ID:V27xPT8O(1) AAS
地味に色々改良。素UCTに色々追加してます。
・uctの終盤にsolverを組み込んだ
・手の割り振りに全手均等な部分を作って読み抜けの可能性を減らした
の2点が主な追加点です

当初想定していたより結構強くなったと思います。

AI黒番30秒探索。zebra思考中にもMAX30秒探索で、zebraに対しては20石強負け
くらい。序盤1回間違えて、中盤ジワジワ差が広がって、40手前後で読み切りできず
に間違う感じ。序盤は定石で回避できると思いますが、中盤の間違いは2番手の手を
選んでしまいます。修正は難しい感じ。終盤はチューニングか、探索時間延長で対応
できないか検討。

テストで作った20手目で黒+12(zebra評価値)程度の盤面からは、zebraが間違える
のか、終盤に入るところまで、かなり押してまして、読み切りミスで22石差→16石差と
ぬるい手を打ちましたが、勝ち切る事ができるようになりました。

ここから先は、レーティングが欲しいなぁ。
オセロでAI使用OKなところないですかね?
679: 310 2016/12/22(木)01:29 ID:4YVdXlZ1(1) AAS
地味に色々改良した結果、あらかたボツにしてます(汗

発狂モード対策でスコア最大化を図ろうとしていましたが、極端なスコアが悪さしている
ようなので、結局勝率のみに限定しました。この時点で終盤はsolver任せに方針転換。

で、勝敗のみにした事で、solverの探索範囲を+-1のシングルウィンドウにできて
スピードアップしたのでプレイアウトのラスト7手くらいでも使用する事にしました。
プレイアウトでは、moveorder順の下位はバッサリカットしました。酷い手が混入する
とスコアが散らかるので。

uctのif分ネストがスパゲッティ化したので、処理順を大幅に見直したら、時々落ちるように
なってしまった。並列化が原因かそれともshared_ptrの使い方が悪いのか、散々調べた
結果、ちゃんと全体をリビルドすれば回避できる事が判明。俺の時間を返せorz

テストで使用している引分手順30手目から開始すると、たいていは負けてしまうけど、
希にzebraが認識していない勝利手順を見つけて勝つようになった。乱数の具合なので
再現性は低いけど、zebraの評価値にも間違いがある事を実感した。

ここのところ30手目〜40手目をターゲットに改善していたけど、それなりに成果が出た。
40手目以後はsolverを使用し、対局開始は定石DBを20手分くらい用意したら、まあまあ
なAIになるかなぁと思い始めました。ただ、1手30秒考えるのは長すぎるなぁ。

あと、正しい手順を見つけ勝率も上回って来ているのに、探索時間が足りずにプレイアウト
回数で負けて最善手が選ばれないケースが散見されます。ものの本だと、そういう時は
探索時間を延長するとか書かれていますので、対応してみようかと思っています。

というわけで、なんか行けそうな気がしてきた。
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が強化されていくのが実感
できてしまいました。
1-
あと 300 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.015s