【オセロ,将棋】ボードゲーム【囲碁,War】 at GAMEDEV
【オセロ,将棋】ボードゲーム【囲碁,War】 - 暇つぶし2ch727:535
17/02/09 22:03:30.31 qkkjChao.net
>>726
そうですかw
まあそんな気もしますが、でも終盤の積みルーチンだけなら手書きでイケそうな気もするんですよねぇ
そこだけでもなんとかできれば…

728:535
17/02/10 19:40:14.89 M6OFVkZO.net
黒番だとDBのせいで対LV1よりも対LV2のほうが勝率いいみたいw
めちゃくちゃ歪んだAIになってしまったw。

729:310
17/02/10 23:52:07.84 HUcinQI4.net
3日かけて学習したオートエンコーダ型はやっぱりダメでした。
可能性すら見えなかった。

というわけで、開き直ってDCNN開始。
前回はオセロ専用で展開形を作ってましたが、それではmnistなどでテストできない
ので、max_poolingも含めて、本格的にちゃんとしたものを作ってみました。
とはいえ、まだ畳み込み層の誤差逆伝播の解釈が正しいか、自信はありません。
また、テストで動かしたところ、なんかすごく重い印象です。

ちゃんと動くのかなぁ。

730:名前は開発中のものです。
17/02/11 10:06:04.43 CnQo/DsP.net
GGSはmimosaというソフトを使うと入れますよ

731:310
17/02/13 22:45:03.11 d/p+PbrG.net
>>730
そのmimosaのサイトがリンク切れで見つからないのです。

732:310
17/02/14 20:21:59.60 lpq90WbI.net
自作ライブラリにDCNNのレイヤーを書いたのですが、あまりの計算時間にデバッグ中に
めげて、試しにtiny_dnnというC++専用のNNライブラリを入れてみましたところ、自作の
10倍以上の速度で・・・こちらに乗り換えです。

で、tiny_dnnでmnistやって感度をつかんだところで、オセロの盤面を変換する処理を
書いて、小手調べに簡単なネットワークで動かそうとしてみたところ・・・盤面データの
変換の段階でメモリーが溢れて盛大にスワップ開始(^^;

5000,000盤面×100マス(Padding含む)×4チャンネル×4バイト(float)でデータだけで
8Gbytes。自分のパソコンのメモリーは8Gで、空いているメモリーは5Gちょいとメモリー
不足が判明しました。

いまどきのパソコンはメモリーでかいから一括でも大丈夫とか言って、このざまです(笑)。

tiny_dnnは全データ一括で渡して指定エポック回してくれる仕組みなのですが、仕方ない
ので、入力データを分割して、自分でループ回します。

α碁のハード環境がうらやましいorz

733:310
17/02/15 23:06:48.81 DozmM7Z3.net
色々細かく改造。やっぱライブラリがあると気が楽です(汗

簡単なネットワークの初期の学習の具合では正答率50%くらいが上限な印象だったので、
ネットワークを複雑にしてみました。で、1エポック8時間以上かなぁ。

もっとハードを・・・って真剣に思いますorz

734:名前は開発中のものです。
17/02/17 23:21:12.85 ZDoCs64T.net
AMDが今度発売するcpuが結構いいかもしれない

735:310
17/02/19 20:31:51.68 PM1ZzNLK.net
DCNNで学習させてるのですが、あまりに時間がかかるので、裏でもう一度
アルファ碁の論文を。日本語解説ページがいくつかできていて助かります。

で、読んでいたら、ロールアウトポリシーなる線形Softmaxでプレイアウトの
手を選択していると・・・。つまりはオセロ評価関数のような特徴を渡して、線形
回帰の代わりに出力をSoftmaxで確率分布にしたものです。
ロールアウトポリシーは棋譜との一致率が25%程度だけど、計算が圧倒的
に速く、このばらけ具合がちょうど良いとの事。

むむむ。アルファ碁はプレイアウトの手の選択にDCNN使ってないのねorz

日本語解説のおかげで、MCTS部の構造もようやくわかった。
いくらマシンが早くても無理だろと思っていた計算も、これなら何とかなりそう
レベルの構造に落とし込まれていて、納得しました。

でも、実はまだインプットに何を食わせているのかが、よくわからない(汗

736:535
17/02/19 22:19:16.15 FX6EUVR+.net
ついにアルファ碁論文まで…
英語かつ有料記事ということで私は手を出せずにいましたが日本語サイトもあるんですか。
ちょっとググってみるか…

737:310
17/02/20 20:05:00.30 L40mCRWI.net
論文自体はだいぶ前にダウンロードしてたんですが(汗
MCTSやらない段階では、やはり理解は難しかったと思います。
DCNN部分の投入データあたりは囲碁の知識が必要だったりしますので、
まだよくわからない点が多いです。

で、MCTS的な視点から眺めると、巷の解説とは違うところにフォーカスが
あたったりします。強化学習使ったRL PolicyはValue netの事前学習で
使っていますが、プレイアウトの手の選択では線形Softmax、ノードの分岐
では教師付学習のものを使用しているなど、工夫が見られまして。オセロ
は既に評価関数があるので、無理やりDCNNしなくても応用が効くのでは
ないかと思ったりします。

とはいえ、今学習中の奴は、学習終わるまで1ヶ月くらいかかりそうではあり
ますが、どこまで手の一致率が高められるか、見てみたい気もしています。

738:310
17/02/20 20:09:54.18 L40mCRWI.net
追記。なんか格好良く書きすぎですね。

ちょうど今MCTSで悩んでいる箇所に見事な回答を与えている点に感動。
日本語で読めたので、そこに速攻で気づく事ができたという事で。

とはいえ、アルファ碁の線形SoftmaxによるRollout関数の入力データは、
囲碁の特性がわからない事から、意味不明な事もまだあり、いずれにして
もそのままでは使え無さそうで、オセロに合わせて別途考えるしかなさそうです。

739:535
17/02/23 20:58:02.50 ONUfwXLw.net
連続対戦してると突然落ちるバグがあるっぽいが意図的に再現できない。
どうデバッグすりゃいいんだ。orz.

740:名前は開発中のものです。
17/02/23 23:03:49.03 ONUfwXLw.net
再現した!
けど一回再現させんのに1時間かかるw

741:535
17/02/24 21:40:56.21 sIjNtQpy.net
コアダンプの吐かせ方がわからん。T△T
デバッグオプション付けてulimit -c unlimitedだけじゃだめなんか。
ちな環境はcygwin。

742:名前は開発中のものです。
17/02/24 21:43:59.65 P/wI/gFl.net
age

743:535
17/02/26 00:05:27.56 TbeyqTpr.net
やっと落ちてる場所見つかった。
ぬるぽだった

744:535
17/02/26 23:30:45.62 TbeyqTpr.net
特徴量とか便利すぎる言葉考えたやつ誰だよ。
いつでも特徴量が効率よく計算できるとは限らんだろうが。
マジムカつく。

745:310
17/02/27 01:19:56.03 kLJ7ziJk.net
全く同感orz

746:535
17/02/28 21:58:57.62 +JAecqpe.net
ファイルに2Gの壁とかあんの?
2G以上のデータはどうやって受け渡せばいいんだ。

747:名前は開発中のものです。
17/03/01 12:15:45.60 jElZYckW.net
「29歳既婚、2年前に会社を辞めた。ボードゲーム作りを始めて3700万円を
売り上げたけど何か聞きたいことはある?」回答いろいろ
URLリンク(labaq.com)
日本ボードゲーム界の異端児に聞く!ボードゲームデザイナーとして生きていくには?
URLリンク(bodoge.hoobby.net)
QRコード・クトゥルフ神話・24世紀などユニークすぎるデザインてんこ盛りのサイコロ「Dice Empire」レビュー
URLリンク(gigazine.net)
ボードゲームの展示イベント「ゲームマーケット」の成長記録からこれからの
市場に必要なことを妄想してみた。6年間の来場者数推移(2016年4月時点調べ)
URLリンク(bodoge.hoobby.net)
ボードゲーム市場がクラウドファンディングの出現で急成長を遂げ市場規模を拡大中
URLリンク(gigazine.net)
実際のところ、自作ボードゲームってどれぐらい売れるもんなの?
URLリンク(roy.hatenablog.com)
ゲームマーケット2016春にて初参加サークルさんに作成数アンケートをとってきました
URLリンク(hidarigray.blog35.fc2.com)
カフェも急増 ボードゲームにアラサーがハマる理由
URLリンク(style.nikkei.com)
ボードゲームのオリジナルオーダー制作
URLリンク(www.logygames.com)

748:535
17/03/02 19:55:15.50 ejFPCGdH.net
がっつり連続対戦中。黒番対LV2だけ流し終わった。

100局目
黒(airandom.dll)の勝利回数: 73
白(ai-lv2.dll)の勝利回数: 27

なお他のレベルも平行して回してるけどいま黒番対LV3に1勝54敗中w

なんでこんなに差がでるのかなぁ。

749:535
17/03/02 20:08:53.54 ejFPCGdH.net
対LV2はかなり同じパターンで勝ってるな。
勝利手順DBにずっぽり嵌ってくれてる感じだ。
LV3は嵌ってくれない。

750:535
17/03/02 21:41:10.44 ejFPCGdH.net
序盤用DBはそこそこうまく動いているが
中盤~終盤用のDBのせいで致命的に打ち手が狂ってるように見える。
LV3に勝てないのは多分これだな。

751:535
17/03/02 23:28:08.02 ejFPCGdH.net
ずいぶん昔に書いたコードにバグがあった。
ビビるくらい致命的な奴。
よく今まで動いてたな。

752:310
17/03/03 01:05:23.13 0ijSS6CX.net
次の1手もDCNNもなんか上手くいかないので、アルファ碁の原点に戻りました。
アルファ碁のMTCSとしての特徴は、各ノードで評価関数を動かして、そのノードに
点をつけて勝率と50%混合する事で、ノードの選択に事前に差をつけてしまう事に
あります。これによって、負けが多いけど1手だけ良い手があるルートを正しく評価
する可能性を高めていると解釈しています。

で、評価関数はオセロでは線形和で確立されているので、昔の奴をと思ったのですが、
どうせならMLPのライブラリ使ってしまえばEigenが使えるので信頼性高い上に、学習
率の最適化でモーメンタムどころかSMORMS3が使えるようになります。インプットが
とても疎なので、EigenのSparseMatrixを使って高速化を図ります。

早速作って学習させてみたところ…僕の記憶が確かなら以前のプログラムの数十倍
くらいの速度で動いています(汗。これなら100エポックくらい楽勝。

今は評価値を計算させていますが、一旦できたら、次のステップで勝率を計算させられ
ないかなぁと。ただ、評価値がある程度正確なら、勝率ではなく平均スコアでプレイアウト
しても良いのかなと思っています。

753:535
17/03/04 22:29:00.76 ZrhUKe4E.net
DB初期化に35秒かかる。
コンパイラを64bit版に変えると11秒になる。
なぜこんなに差が…
ちなみに囲連星本体が32bitプログラムだからコンパイラ変えられないT△T
なんとかならんか?

754:535
17/03/05 03:39:08.88 LufQ1oMY.net
コンパイラの問題じゃなくてライブラリを静的リンクするか動的リンクするかの違いみたいです。多分。
かなり早くなった^_^

755:535
17/03/06 18:17:26.36 XCrs8w8i.net
思考時間は試行回数に直結する
重いモンテカルロは一旦封印する

756:310
17/03/10 01:25:20.88 4qfAid0y.net
評価関数の作り直しを始めたら、計算してはやり直しの繰り返しです。
計算速度が上がったので、比較的気楽に再計算できちゃうのがいかん。

勝率の計算もしてみましたが、結果は似たようなものでした。
いずれにせよ、もう少し精度を上げたいなぁ。

757:535
17/03/14 22:28:17.78 KNe/k0R5.net
LV1の棋譜はDBから削除したほうがいいみたい。
いいとこどりとはいかないか。

758:535
17/03/15 21:45:36.14 gknDrLfY.net
囲連星のルールは囲碁と共通部分があるから囲碁AIを参考にするのが良いと思っていたが
7連を作れば勝ちというのは王様を詰ませれば勝ちという将棋のゲーム性に近いものがあるのかもしれない。
将棋AIの手法も調べてみるべきか?

759:535
17/03/18 23:34:35.11 VnDB8sqw.net
手書き評価関数やっぱうまくいかないな。
LV0やLV1も実は結構強かったんだな。
反省。

760:535
17/03/19 00:56:20.04 y6fifsqj.net
やっぱ機械学習しかない。(無限ループ)

761:535
17/03/21 22:23:02.18 xGpFrIPp.net
特徴量と棋譜は用意できる。
棋譜の勝者の着手に対してどの特徴量が優先的に選択されたか?を計算したい。
どうすればいいかな?

762:名前は開発中のものです。
17/03/22 00:39:02.37 /GDSNvuJ.net
優先的とか無いでしょ
評価関数は全ての特徴量に対応する評価点を合計するだけ
その各評価点の絶対値が大きくて評価値に割と大きな影響を与えるとかゼロに近いとかはあるけど

763:310
17/03/22 09:25:05.89 sNSr7O3Z.net
>>761
それを統計的に処理して求めるのが線形回帰。
収束アルゴリズムは最急降下法を使用するのが普通。

特徴量あり1、無し0で特徴量並べたベクトルを食わせて、
荷重値であるウェイトを同数用意して内積計算。
出て来たスカラ値が、教師データに合うようにウェイトを収束計算させる。

出て来たウェイトが対応する各特徴量の重要度を表す。

764:535
17/03/22 20:48:28.79 rRrXmS1r.net
自力で線形回帰を実装するのはしんどそう。
なにかいいライブラリないですか?
>>535のMM法が動いてくれれば話は早かったのになぁ

765:535
17/03/22 21:25:31.00 rRrXmS1r.net
もう一度MM法トライしてみるか…

766:310
17/03/23 17:35:49.51 xjqriUpX.net
線形回帰というか、最急降下法自体はたいした事ないよ。
ひたすらループ回して、答えを出して、教師データとの差に比例して
ウェイトを調整するだけ。ニューラルネットになるとバックプロパゲーション
が出てくる(これも似たようなものだけど)違いがあるけど。

とりあえず実装の参考にするならこれ。
URLリンク(sealsoft.jp)

GitHUBとかで探すとなんかあるかも。裏ワザではMLPのライブラリ落として
来て、1層の活性化関数無しの全結合層で計算させるって手もある。

767:310
17/03/23 17:40:46.97 xjqriUpX.net
こちらは、線形回帰の評価関数を作り直して、勝率と石差の2つ用意して、
アルファ碁っぽくMCTSに組み込んでみました。

で、テスト開始したらやたらと落ちる。
線形回帰の計算にEigen(行列パッケージ)を使用していたんだけど、こいつ
が並列処理に対応していないのが原因臭い。

というわけで、学習部分と、MCTSで使う評価関数を切り分けて、評価値を
求める時はEigenを使わないように改造中です。

果たして強くなっているのか。

768:535
17/03/23 20:11:41.72 rddo+SDA.net
>>766
ありがとうございます。
さらっと読んでみました。
いい感じの文章ですね。
なんとなくイメージは掴めましたが、実際実装するのは結構大変そうな気がします。
まずはMM法でやり直してみて、駄目だったら手を出してみます。
すいません。

769:310
17/03/25 10:29:51.08 8t9unId8.net
学習時と使用時の評価関数の切り分け。簡単にやるつもりだったのに、
バグ一杯出してデバッグで大変な事に。

デバッグが行き詰ると、気になっていた箇所を綺麗に直して手を動かし
続けたくなるんだけど、つい計算結果に影響が出てしまうところまで
手を入れてしまい、結局また再度学習しなおしです。

一応バグは解消したと思っていますが・・・
この土日に確認まで行けるか微妙。

770:名前は開発中のものです。
17/03/25 15:51:24.00 eEMcRod/.net
自作アナログゲームを投稿・共有できる「紙ゲー.net」がオープン
URLリンク(www.moguragames.com)

771:535
17/03/25 21:50:08.29 S05KfsXi.net
特徴量、用意できるって言ったけど、いざ作ろうとすると迷うw
あれもほしい、これもほしいとなって発散してしまう。

772:310
17/03/25 23:15:01.53 8t9unId8.net
特徴量の選択はね・・・

実際にその特徴量を使って統計処理(線形回帰でもMLPでもDCNNでも何でも可)して
みて、結果の精度に効くものを残して、効かないもの(ウェイトがゼロになるとか、外して
も精度が変わらないとか)を外して、結果的に決まるものじゃないかと思います。

そういう意味じゃ、仮説検証でトライアンドエラーしないといかん。

オセロではBuroさんが論文書いてくれているので、皆それをベースに小修正程度で、
ほぼ同じ精度のものができちゃいますが、そういう先行者がいないゲームだと、自分で
やらないといけないので大変だと思います。

DCNNで「特徴量を自動的に決めてくれる」ってのに、皆が胸熱になったのは、そういう
事です。自分はオセロに応用しようとして、失敗して、後回しにしちゃいましたが。

773:310
17/03/27 01:55:55.89 n7C1rJ6D.net
アルファチックなMCTSオセロですが、とりあえず途中まで学習してテストしたところ・・・。

終局しているのに両者パスでツリーが伸びて行ってしまう(汗
何度チェックしても原因不明。ブレークポイントでチェックすると、あり得ない場所で
ボードデータが書き換わっているように見えますが…。並列探索が原因かと思い、
シングル動作にしてみましたが、それでも同じ。かなり重症です。

が、それを除くと、途中までテストした感じでは、最善手を打てている模様。
まだ序盤なのにツリー成長が尋常ではなく、終局までツリーができています。
不要な手をカットする仕組みとして、十分すぎる性能になっています。
とはいえ、勝率判定はそれほど正確ではないので、変な局面に誘導されると、
読み抜けが問題になってくるかも知れません。

もしかしたら、終局後もパスでツリーが伸びている問題は、これまでもあったけど、
終盤完全読みにしていて見えなかっただけかも知れません。

774:310
17/03/28 03:12:19.93 Cq+qEzvW.net
パスが伸びる原因は判明。

着手後の盤面を返す関数で、合法手じゃない着手を要求された時を
エラーにせず、元の盤面をそのまま返していたため、手が進まなくなって
いたのが原因だった。

が、そもそも合法手以外の手を渡すはずがないから、エラートラップして
いなかっただけで・・・

まだ根本原因にはたどり着けず。

775:535
17/03/29 21:27:24.43 a7v8cJOT.net
MM法動きました!
でも全然強くないw
特徴量が悪いのか棋譜が足りないのか…

776:310
17/03/29 21:53:37.26 4lOT7Sa+.net
大体バグがとれました。

Zebraの学習モードと対局。
F5-D6から10手目までは定石使用。その後40手目まで新AIで手を分析。
途中数回-2の手を打つものの、そのまま終盤まで行き、-4~-6くらいで安定。
40手前に負け趨勢が判明(勝率30%くらいかな?)するとご乱心モード入り(汗

というわけで、Zebraレベルまで、もう少しという感じです。

評価関数を使用したプレイアウトは、重すぎる上に結果も散々で、結局のところ
以前の角評価付相手着手可能数ヒューリスティックで3手を選択し、75%20%
5%で振り分けるものを使用しています。評価関数型の方は多分softmaxで
使うexpの計算が重いと思うので、テーブル化を検討してみようかと思います。

一番の改善点は・・・。評価関数で悪いと評価された手には、プレイアウトを割り当て
ないので、とにかくツリー展開が縦深します。30秒思考で12~14手目には、一番
読んでいる枝は終局に達しています。これで、モンテカルロの偶然がかなり減って
いる印象です。また、余計な横枝が伸びていないので、メモリーにも優しいです。

2手ほど間違えるのは、ツリー展開の初期値で与える評価値の誤差が原因と思います。
ここは、今の評価関数では、これ以上精度出せないので、何か手を考える必要あり。

あと、いくつかの定数調整かな。

777:310
17/03/31 20:13:06.62 Hurb1/nC.net
expの計算は重さの原因ではありませんでした。やはり単純に評価関数が重い模様。
プレイアウトはヒューリスティックのsoftmax版に変更。

ツリーの初期の評価値は、数手読む事で精度アップを図ってみましたが、3手も読む
とかなり時間がかかって、プレイアウト回数が1/10以下になってしまうので、バランス
見て2手読みにしてみましたが、これで強さが変わるのか不明。

10~15手目で1回。35手前後で1回づつ間違えて、負けを確信したところで乱心。
試しに15手まで定石DBを使うようにしてみたところ、35手目まで引き分けで行けました。
やはり35手目で間違えて-6。むむむ。

40手までの棋譜。
F5 D6 C3 D3 C4 F4 C5 B5 B4 B3
E7 C6 B6 E6 F6 D7 C8 A6 C7 E3
F3 G4 G3 E2 H3 G5 G6 F7 E8 B7
F2 B8 D1 F1 A8 A7 A5 D8 A4 A3

35手目のA8以下を、A5 A4 E1 C1 A8 A7としていれば引分でした。
評価の順番はA8/E1/A5と、正解を3番手に予想しています。
Zebraの中盤20手読みでもE1と間違える局面で24手読みだと正解するみたいです。

実をいうと、途中で邪魔が入って放置している間に、バックグラウンド探索で1000万
プレイアウトの上限に2回達しています。強さ図る時はバックグラウンド探索を止めない
と意味ないかも。

囲碁AIの本を読んでいたら、プレイアウトの精度の検証に、プレイアウト結果盤面を
統計的に処理して、終局予想図を出す方法と、重要な手を見つけるクリティカリティと
言う概念の説明がありました。この辺使って、プレイアウトの弱点探してみます。

778:310
17/04/01 01:30:30.93 Wq4mpDtN.net
直すところが無くなってきたのでパラメータ調整。
たまたまだと思いますが、初めてZebraの中盤24手読みと引き分けました。

こちらの設定は、バックグラウンド探索無しの1手1分(相手も30秒考えるという想定)
定石10手まで。完全読み切りルーチンなし。

F5 D6 C3 D3 C4 F4 C5 B5 B4 B3
D7 C6 B6 E6 F6 G5 G6 E3 A5 E7
F3 G4 E2 C2 H4 H3 H6 H5 C7 D8
G3 H7 A3 A4 A6 H2 F8 F7 C1 D2
C8 E8 F2 D1 F1 B1 E1 G1 B2 A1
A2 B8 A8 B7 A7 G2 H1 H8 G7 G8

ちなみにZebra側は全てBookにあった模様で、一度も中盤探索していません。

779:535
17/04/01 11:28:54.33 Gu8vVrdS.net
おおーZebra越えが見えてきましたか凄い!
こっちも頑張らねば…

780:310
17/04/01 12:57:37.15 Wq4mpDtN.net
あ、たまたま4月1日の投稿ですが、嘘ではありませぬ(^^;
Zebraがエイプリルフールしてくれたのかも知れませんが。

今回はZebra側は、全部Book上で打っていたので、思考時間実質ゼロです。
Bookを変化させるにして、最初にZebra側がBook評価で-0.5くらいの手を選んで
くれたので、緩まずに終盤まで行ったのかも知れません。

でも、流石に思考時間1分はやり過ぎですよね。
あと、Zebraの中盤探索と勝負したいのですから、ZebraもBookを切った方が良いかな。

781:310
17/04/01 14:20:36.16 Wq4mpDtN.net
ZebraをBook無しにして対戦したら、中盤で読み勝って+2勝ちになりました。

以下棋譜。
F5 D6 C3 D3 C4 F4 C5 B3 C2 E3
D2 C6 B4 B5 F2 E6 F3 C1 A3 A4
A5 A6 A7 D1 B6 E2 E7 D7 F1 E1
A2 G1 F7 G5 G4 G6 F6 H3 E8 C8
D8 G3 B8 B7 H5 H7 G2 H1 H6 G8
B1 A1 A8 C7 G7 H4 B2 H8 H2 F8

Zebra設定:白番、中盤24手探索、Book未使用、中盤変化せず
当方設定:黒番、10手目まで引分定石使用、思考時間1分、バックグラウンド探索なし
注)昨夜評価関数の学習を少し進めました。多分誤差範囲です。

Zebraの解析によれば23手目あたりで間違えてくれたみたいです。

こちらは10手までは定石使っておかないと、かなり滅茶苦茶な手を打ってしまったり
しますので、Zebraの序盤の精度は凄いですね。

次はどうしよう。
強化学習を調べているんだけど、いまいちどう応用したら良いのかがわからない。

782:310
17/04/01 16:16:54.26 Wq4mpDtN.net
1分探索では申し訳ないので、10秒探索+バックグラウンド探索にしてみました。

F5 D6 C4 D3 C3 F4 C5 B3 C2 E3
D2 C6 B4 B5 F2 E6 F3 C1 A3 A4
A5 A6 A7 D1 B6 E2 F1 E1 A2 G1
E7 D7 F7 G5 G4 G6 F6 H3 E8 C8
D8 G3 B8 B7 H5 H7 G2 H1 H6 G8
B1 A1 A8 C7 G7 H4 B2 H8 H2 F8

若干違うけど、ほとんど同じような進行で+2勝ち。
確認していないけど、手順前後で同じ終局図になっている気がする。

ちなみに23手目A7は、自分の手番でした。解析結果も、Zebra側が見落とした手
を発見している形になっています。恐らく、その手前の22手目のA6辺りで見落とし
が起きているのだと思います。

こちらが間違えていないという点は評価できるけど、Zebraを中盤変化させて色々な
パターンを試す必要ありそう。

まだ半信半疑だけど、10秒探索でこれって、ものすごく強くなってる気がしてきた。

783:310
17/04/01 17:37:16.14 Wq4mpDtN.net
もう1局やって引分。

強化学習って、プレイアウト同士対局させながら、確率的勾配効果法で
1件づつ更新を繰り返す形で良いのかなぁ。

784:310
17/04/02 18:48:15.03 xuvwd7i8.net
別のオープニングを試したところ、F5F6系や、F5D6C4G5系はZebraに勝てません。

試しにF5D6C4G5系を調べてみたところ、ツリー展開がなかなか深まらない様子で、
有望と評価される分岐が多すぎるのかと思います。最後はやけになって、1分読み
+要所でバックグラウンド放置探索で無理やりツリーを伸ばしたところ、途中経過で
Zebra評価値が-4まで行ったところから何と+4まで回復しました。

やはりポイントはツリーの深さであり、余計な枝を探索しない、ポリシーネットの精度
が重要になると。多分。


あと、相手パスの時にもおかしくなるバグを発見。今夜は、ここを調査。

785:310
17/04/03 20:36:38.16 BqB2rFYT.net
パスがおかしくなる奴は、やはりデバッグルーチン限定で、かつ直すと本処理にも
大きな修正が必要になるので、当該デバッグ処理を削除して対処。

F5D6C4G5系をテストプレイしていてわかったのは、中盤ことごとく読みがZebraと
一致しない事。一致しないだけなら良いけど、そこがところどころ悪手になってるっぽい。
読みが一致しないと、事前に読んでいない枝で探索する事になり、浅い探索のまま
間違いが連鎖する感じ。Zebraの着手は、こちらAIが予想は評価値順で3番目以降に
なっている。

これ、ロールポリシーが決めるプレイアウト割り当ての優先順位の問題か、それとも
プレイアウトの精度の問題か、はっきりしませんが、要するに評価値が間違っている
=弱いという事ですね。

で、この2点について、もう1ステップ先に進んでみようかと思います。

プレイアウトについては、強化学習で良いヒューリスティックを作れないか検討。
ロールポリシーについては、与えている棋譜のバラつきが原因かも知れないので、
強化学習の棋譜から自動生成する事を検討。

あと、終盤40手以降はほぼ間違えないので、Solverを削除してしまいました。
また、できれば、最終的には定石も無しにしたくなって来ました。
目指せピュアMCTS。

786:310
17/04/03 20:41:47.20 BqB2rFYT.net
忘れていた。

>>782の22手目は、Zebraの当初予想はG4でしたが、このターンに達した時に、
A6に変わりました。そこでここで強制的にG4を打たせて続行してみましたが、
+4でこちらのAIが勝利しました。Zebraが間違えたのは、もう少し前の場所の
可能性があります。

787:310
17/04/05 01:14:25.59 4SaLkpgr.net
>>786
Zebraが間違えたのは14手目のB5だった模様。ここで引き分け手順から外れてます。

定石無しにしようと書いておきながら、少なくとも引分とわかっている盤面情報を活用
して、探索の省略ができないかと、あちこちに組み込んでみましたが、効果は不明。

効果がわからないというより、毎晩こつこつと評価関数のエポック数を稼いでいたところ、
どうも過学習に近い状況に陥っているみたいで、手の選択が変わってきて、むしろ、
どんどん弱くなりつつあります。むむむ。

一旦変な手を選んでしまうと、Zebraにしっぺ返しを食らって、せっかく読み貯めた
プレイアウトの大半がボツになり、短いツリーで手を選択するうちに、どんどん
間違った手を打っていく模様。結果的に勝った時は、ツリーがどんどん伸びて行く
のと対照的です。

で、結局、評価関数の良し悪しという話に逆戻りorz
評価関数から脱却するためにMCTS始めた頃が懐かしい・・・

788:535
17/04/05 23:08:13.71 laANBz/U.net
最新の対戦結果です。
LV2に白番で勝ち越したようです。
しかし、LV1に黒番で負け越している。
あとLV1とLV3で白番のほうが勝率がいいのが謎。
真面目に長連対策してないのが弱点になっているのだろうか?
それにしてもLV3強すぎる。
LV1との対戦も100戦やる予定でしたが途中で固まってしまったようです。

100局目
黒(airandom.dll)の勝利回数: 2
白(ai-lv3.dll)の勝利回数: 98

100局目
黒(ai-lv3.dll)の勝利回数: 92
白(airandom.dll)の勝利回数: 8

100局目
黒(airandom.dll)の勝利回数: 77
白(ai-lv2.dll)の勝利回数: 23

100局目
黒(ai-lv2.dll)の勝利回数: 45
白(airandom.dll)の勝利回数: 55

86局目
黒(airandom.dll)の勝利回数: 41
白(ai-lv1.dll)の勝利回数: 45

83局目
黒(ai-lv1.dll)の勝利回数: 7
白(airandom.dll)の勝利回数: 76

789:名前は開発中のものです。
17/04/08 13:24:07.33 mnzcHtDh.net
2003年に立てられたスレが最近になって動いてる…w
がんばってくださいな。

790:310
17/04/08 17:26:32.31 cxbXAKoL.net
色々グチャグチャと改良(改悪)してましたが、一旦整理して、結局かなりシンプルな
形に落ち着きました。定石も無しにしましたので、2手目以後は考えます。プレイアウト
に時間がかかるので、序盤は考える時間が長すぎです。点数ベースの評価関数を弄り
倒して勝率っぽい数字をでっちあげる事で、勝率の評価関数を使わなくなりました。

今のところ対Zebraは勝ったり負けたりで、強さ的には匹敵するところまで行けたかなと。
両者定石無しなので、純粋にAI部の強さ比較という事で良いのかなぁと自負。

たまにはAI白番(Zebra黒)の棋譜を。自作AIの+2勝ちです。

F5 D6 C4 D3 C3 F4 C5 B3 C2 E3
D2 C6 B4 A3 G4 F3 E6 F7 B5 A4
A6 B6 G3 F6 E7 F8 D7 C7 G6 H5
D8 C1 H6 H4 E8 C8 G5 H7 B1 A1
B2 E2 A2 H3 F1 D1 G7 H8 G8 A5
A7 F2 E1 G1 H1 B7 G2 H2 B8 A8

MCTSじゃあまり強くならないと思っていたのが、ここまで来れて正直本人がびっくり。
アルファ碁のNature論文のお蔭です。

次ステップで強化学習とか考えていたけど、まだ何からどうすれば良いのかわからない(汗

791:535
17/04/09 05:10:12.89 h/eXLfOt.net
相手に守りの手を強要させることが出来る有利な状態をいかに保ってゲームを進めるか。
終盤の要になりそうです。

792:310
17/04/09 20:11:13.36 3mOyIMJx.net
評価関数の評価値計算でmin-Maxの時にやっていたのに、今回はやっていなかった
手抜き箇所を修正し、速度アップを図りました。
プレイアウトの速度が劇的に速くなりました。

最低でも10万プレイアウト貯め無いと、変な答えを返す(だろう)という事で、最大試行
回数の手が最低プレイアウト数を超えていない時は探索延長していました。そのため
序盤で探索延長頻発していましたが、今回の改造でほぼ延長無しになりました。


あと、評価関数のステージ分割を細かくしまして、再計算を開始。

1手20秒設定でやっていますが(他にバックグラウンド探索あり)、10秒でも実用になるかなぁ。
MCTSなオセロとしては、ある程度できちゃった気がする。

793:535
17/04/10 22:56:16.99 Sai+9C2+.net
もしかして>>310さんのAIは世界最強クラスってことですか?
凄すぎ…

794:535
17/04/10 23:19:01.03 Sai+9C2+.net
完成したら論文書いてwebで公開してくださいw
おねがいしますw

795:310
17/04/11 07:59:39.45 KmgeOKfx.net
>>793
いや・・・それはないです。

オセロの場合、定石DBの学習が強さに直結するので、定石DBを持っていないAIは
かなり不利というか、対戦したら勝ち目ありません。何回も対戦するうちに苦手な定石
に誘導されちゃうので、勝ち目なしは確信しています。

また、アルゴリズムの優越比較という意味で、Zebraの定石DBも無しにしましたが、
Zebraの中盤も一昔前のレベルで、決して強くはないという評価をWEBで見た事が
あります。今回Zebraを使用したのは、対戦中に学習モードに切り替える事でどこで
間違えたかがわかりやすいからです。Edaxとはまだ対戦させません。

ただ、個人的に思い込みたいレベルでいうなら、MCTS系のオセロAIでは最強クラス
なんじゃないかなぁと(願望)。なにせ、いまどきオセロAIを開発している人はいないし、
ましてモンテカルロ系で試そうなんて人もいなさそうですから。言ったもの勝ち(汗


アルファ碁の論文のDeepでNeural networkではない部分を適用する事で、min-Maxで
なければ存在価値がないところまで行き着いていたオセロAIでもMCTSで結構強くなれる
事が証明できたかなぁと。本当にアルファ碁様様です。

ブログ作って解説でも作ろうかと準備していましたが、試しに開設したブログサービスでは
アップロードができなかったので、一旦閉鎖しました。どこか良いところないかな。

796:535
17/04/13 22:33:44.03 vVAZxoH8.net
いろいろ試してみてるけどなんか勝利手順DBを充実させるのが一番手っ取り早く強くなる気がする。
いま12万局分棋譜あるけど100万局くらいまで増やしてみるか…
もっと計算リソースが欲しい。

797:310
17/04/18 01:24:07.08 Ohai0OaC.net
評価関数のエポックを更に進めたら180エポック近辺から勝てなくなってきました。
もしかしてたまたま間違ったところが、zebraの弱点をついていたのかも知れないし、
評価関数の値にメリハリがついてきて、逆に見落としが起きやすくなったのかも
知れないし。過学習かも知れないし。

評価関数をブラッシュアップするには、負け手順を棋譜化して、学習データに投入
しなきゃならん。

ところが、負け確定後に例の自爆モードが作動してしまいます。棋譜として使えるよう
にするために、ソルバーを復活させました。ついでに色々やってたら、見なかった事
にしていたバグもとれました。ついでだからと偶数理論を実装したのですが、かえって
遅くなってしまった。他の人はどういう実装しているのだろう。

今の速度だと35手目から読み切らないといけない。今の速度だと時間の予測が難し
いというか、軽く1時間はかかりそう。

798:535
17/04/19 21:59:17.68 WjbK3YLE.net
Ponanzaがディープラーニング取り込みに成功したとかなんとか。
ハードもものすごいものを用意するそうですね。

799:535
17/04/21 20:55:54.67 ZLYvyeQY.net
大分勝率上がってきた。
思考時間長いから数こなせないのが厳しいですね。

25局目
黒(airandom.dll)の勝利回数: 8
白(ai-lv3.dll)の勝利回数: 17

800:535
17/04/21 22:05:48.97 ZLYvyeQY.net
やっぱディープラーニング憧れるなぁ。
俺のAIにもブレークスルーを起こしてくれw


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch