[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2ch.scのread.cgiへ]
Update time : 04/23 07:31 / Filesize : 322 KB / Number-of Response : 801
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【オセロ,将棋】ボードゲーム【囲碁,War】



1 名前:名前は開発中のものです。 [03/07/10 00:10 ID:6FQp6G+O.net]
比較的地味なボードゲーム専用のスレが欲しくて立ててみました。

私はc言語で作ったデータベースを使って人間と対戦できる将棋かチェス
みたいなソフトを作りたいと思ってますが、グラフィックインターフェースの
作り方がわからなくてつっかえているレベルです。

679 名前:310 mailto:sage [2016/12/22(木) 01:29:32.37 ID:4YVdXlZ1.net]
地味に色々改良した結果、あらかたボツにしてます(汗

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

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

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

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

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

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

というわけで、なんか行けそうな気がしてきた。

680 名前:310 mailto:sage [2016/12/27(火) 01:58:53.16 ID:lSRXuhfg.net]
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 名前:名前は開発中のものです。 mailto:sage [2016/12/27(火) 06:12:54.86 ID:A0w16iJG.net]
Vectorとかで配布しては?

682 名前:310 mailto:sage [2016/12/28(水) 10:02:51.11 ID:8e16q4EG.net]
vectorは考えてないですが、どこかでソース晒しても良いかなと思っています。
しばし検討。

なおUCT探索の探索時間は30秒にしてます。微妙な時は10秒づつ探索延長します。
また、人間が長考すると、その分だけバックグラウンドで探索が進んで強くなります。
気が長い人におすすめです。

683 名前:名前は開発中のものです。 mailto:sage [2016/12/29(木) 00:29:19.19 ID:T+iok27x.net]
GGSってまだあるんだっけか
トッププログラムの開発者はみんなあそこで対戦しつつ改良してる

684 名前:310 mailto:sage [2016/12/30(金) 02:11:45.43 ID:iZpfxqhq.net]
>>683
GGS探したけど見つかりません。
オセロのAI自体、行き着くところまで行っちゃってるからなぁ。

コメントの整備をしていたら、細かいところが気になって、あちこち手を入れています。
手を入れながら、UCTの探索結果があるので、それでmoveorderすれば良い事に気が
つきまして。SOLVERが少し早くなったので、終盤探索は38手に格上げ。

しかし、テストプレイしていたら、SOLVERのバグ発見。終局まで打ち続けると、50手目
近辺で間違えます。並列探索部分で、negaScout的に再探索かかったあたりにバグが
ありそうという所まで絞り込みましたが、ちょっと厄介な感じ。

ソース晒す用に昔使ってたDTIのホームページを使えないか調べたら、サービスごと
終了してました(汗。

久々にオセロAIで検索したら、MLPでAIのテストをしている人がいました。評価関数では
なく、次の1手で使っているようです。比較的軽い構成なので、気が向いたらもう一度、
トライしてみようかと思います。

685 名前:310 mailto:sage [2016/12/30(金) 20:08:38.43 ID:iZpfxqhq.net]
バグ直りました。数日前に速度アップできると思いつきで直したところでした。
直ったは良いけど、何故バグるのか理解できないorz

686 名前:名前は開発中のものです。 mailto:sage [2017/01/01(日) 01:33:49.09 ID:AXNNcWXn.net]
個人的にはディープラーニングやって欲しい

687 名前:310 mailto:sage [2017/01/02(月) 09:01:41.61 ID:YMPtqKka.net]
いま、Bloogerにサイトを作ってやっつけで解説文を作ってます。
あらかたできたら公開します。

が、解説していると細かいバグを見つけて、直して確認が必要になるという…。

やっぱ次はディープラーニングですよね。Eigen使ったMLPで次の1手をやってみます。
DCNNももう一度トライしたいと思っていますが、貧弱なパソコン環境ではどうにもならない
かも知れない。



688 名前:535 mailto:sage [2017/01/06(金) 21:06:02.45 ID:/dmWmgCn.net]
ネット碁でアルファ碁が無双してるみたいですね。
60連勝?とか凄すぎw

689 名前:310 mailto:sage [2017/01/09(月) 14:10:27.74 ID:kUxHCmxW.net]
60連勝の相手が、マジトップ棋士だってんだから、あきれるしかないですね(笑

解説書きながらソース見てたら、色々直したくなってしまい、泥沼化しています(汗
強くなったと思ったら弱くなっていたというのの繰り返しです。

690 名前:535 mailto:sage [2017/01/15(日) 01:15:01.84 ID:FqCBSr/V.net]
TensorFlowで学ぶディープラーニング入門って本読んでます。
かなり易しく書こうとしてるのが伝わってくる本なんですがそれでも難しい。orz

691 名前:310 mailto:sage [2017/01/16(月) 13:21:19.22 ID:Cfoi8GBB.net]
カーネルサイズとかチャンネルとかフィルターのあたりですか?


僕の方は・・・モンテカルロだから間違えると思って、思考時間を増やしたり、末端ノードで
1回づつじゃなくて、100回づつプレイアウトするようにしたりして、プレイアウト回数を稼い
だところ、「同じところで同じように安定的に間違える」ようになってしまいまして(汗。

プレイアウトは適当でも、とにかくツリー展開させるか、それともプレイアウトである程度
正確な勝率を得るけど、ツリー展開は減らさないように努力するのか。その辺で、また
悩み始めてしまいまして。edaxの引き分けBOOKから何か情報が取れないかと頑張って
ますが・・・。そろそろ飽きてきちゃったんだよなぁ。

692 名前:535 mailto:sage [2017/01/16(月) 21:00:44.96 ID:UThQer2a.net]
専門用語はよくわかりませんが、付属のサンプルコードをなんとなく動かしてます。
行列と誤差関数を定義してやればtensorflowが勝手に最適化してくれるとか。

成果でないとめげてきますよね。
ここらで一発アルファ碁級のブレークスルーが欲しいですねw

693 名前:310 mailto:sage [2017/01/16(月) 22:06:12.04 ID:cVXIBPCK.net]
あれはやっぱマシンパワーが・・・

一旦計算できちゃってもそれなりの重さなんだけど、学習しようと思うと重さにめげます。
というか、やる気すら起きないレベルorz


とりあえず、実際の最善手順が、ヒューリスティックの何番目かを統計的に処理して、
プレイアウト関数の手のバラつきを表現しようかと思って、プログラム作ってEXCELで
集計して、それなりに計算が簡素にできる形に変形してなんてやりましたが、やった
所で、何番目を選ぶかはランダムではなくて理由があっての事なんだよなぁと…

ちっとマシなヒューリスティックとか言い出すと…できない事をしようとしている事に深く
思い至るわけで。

694 名前:310 mailto:sage [2017/01/17(火) 00:25:27.65 ID:SLwZ7IwS.net]
統計処理して作ったプレイアウト関数も結局ダメでしたorz
最後はやっぱりBOOK頼みになっちゃいます。

もう一回NNに行って次の1手計算させてみるべかな。

695 名前:535 mailto:sage [2017/01/17(火) 21:19:41.12 ID:wCDEMY6U.net]
モンテカルロ木探索ってわざと悪い手打ってる?ていうぐらい期待外れの手を打ちますねw
プレイアウトの質改善が必須か…

696 名前:310 mailto:sage [2017/01/17(火) 22:04:13.23 ID:SLwZ7IwS.net]
例えば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 mailto:sage [2017/01/21(土) 14:40:41.23 ID:7GkfgTKT.net]
プログラム作るなら単体テストは必須ですね…
後から後からバグが溢れてくる…



698 名前:535 mailto:sage [2017/01/21(土) 15:30:15.75 ID:7GkfgTKT.net]
机上デバッグはいやだお…T△T
辛すぎる…

699 名前:310 mailto:sage [2017/01/22(日) 23:15:41.71 ID:7cgxubHE.net]
思いっきり同感だけど、結局サボるというorz

実はモンテカルロやってるから見なかった事にしているけど、Solverにバグがあります。
発生する条件も薄々わかっています。いつの間にバグを仕込んだのか。

さて、プレイアウトのヒューリスティックですが、縦横斜めのラインで、その形が現れた
回数、着手された回数のデータベースを作って、プレイアウトの次の1手の時に、それ
ぞれの確率を縦横斜めで集計して、その高い順にsoftmaxで確率分布にして、着手を
選択させる形にしました。

結果は・・・。ヒューリスティックの次の1手としての精度はいまいちですが、それでも
上位3〜4位くらいには最善手が入ってる感じになります。でも、評価値が極端に出過ぎ
ている感じで、ダメダメな感じになりました。確率のバラつきが小さいように感じたので、
ちょっと修正してみましたがダメなので、思い切って累積確率50%でカットしてみました。
この辺で大体3〜4位までの着手になります。少しマシになったけど、やはりダメ。

softmaxの計算が重いため、プレイアウト回数が1/7くらいに減ってしまうんだけど、それを
補う精度が出ていない感じです。楽ちんなのでunordered_map使ってますが、もっと速度を
出そうと思うんなら、他の方法を考えた方が良いかも。

簡潔なプレイアウトで秒間プレイアウト数を稼いで、枝を伸ばす方向に逃げたい気持ちを
ぐっと抑えつつ、引き続いてニューラルネット系で次の1手を求めてみたいと思います。
更にスピード低下するので、いま以上に精度が出ないと・・・。

700 名前:535 mailto:sage [2017/01/23(月) 23:10:08.18 ID:ii9ofJgq.net]
黒番限定ですがLV2に勝ち越せる?というところまで来ました。
何をやっているかというとLV2とLV3を対戦させた棋譜を大量に集めて、
LV2に勝てる手順のDBを作ってナゾルということをやっていますw
まあほとんどチートみたいなものですが、棋譜を集めれば集めるほど
勝てるようになるのでなかなか面白いです。

白番だとLV2が盤の中央からゲームを始めないのでうまくいかなかったりしますw

701 名前:名前は開発中のものです。 mailto:sage [2017/01/23(月) 23:46:45.10 ID:ii9ofJgq.net]
勝利手順のDBからディープラーニングで評価関数を抽出することを考えていますが
今のところ全くうまくいく気配がありませんT△T

702 名前:310 mailto:sage [2017/01/26(木) 21:23:21.53 ID:foYEIc8+.net]
>>700
Buroさんは逐次的にBOOK学習やってました。
僕は論文が理解しきれなかったのと、それやると特定AI相手だけに強いAIが作れて
しまうので禁じ手にしちゃいましたが、オセロというゲームの底の浅さからすると、
それが正解かも知れない(汗

デバッグ兼ねてZebraと対戦していたら、ZebraのBOOKが強化されていくのが実感
できてしまいました。

703 名前:310 mailto:sage [2017/01/26(木) 21:32:27.07 ID:foYEIc8+.net]
さて、本日は非常にショックな事が判明しました。

次の1手を求めるNNを作って、大体できたのでAIに組み込んでました。
NNは以前にEigenで作ったものの流用改造。とりあえず学習結果が確認できる
ところまでやったら、コンパイルが通らない。C2059というエラー。前にも何回か
出ていて、ライブラリの順番いじると直るので放置していた奴。何かの名前が
組み込んだライブラリ間で衝突していると起きるらしい。それが途中からどうにも
直らなくなってしまった。

で、ようやく重い腰をあげて何が衝突しているのか調べたら、A1とかC1とかの
着手位置を表す#defineの定義が、Eigenの内部の型か何かの定義と被ってる。
こちらは#defineなのでnamespaceで回避できない。

楽に回避できる方法を色々考えたあげく、結局、C++良く知らなくてCとしてプログラム
書いていた頃から引きずって#defineを使っているのが悪いのだと気が付いて、
クラスとenumで対処するという、全面作り替えにする事にしてしまいました。

というわけで、修正に3日くらいかかりそうですorz

704 名前:名前は開発中のものです。 mailto:sage [2017/01/26(木) 21:36:49.48 ID:NsrLS1+v.net]


705 名前:535 mailto:sage [2017/01/26(木) 21:43:44.99 ID:NsrLS1+v.net]
>特定AI相手だけに強いAIが作れて
ディープラーニングが成功すれば汎用度もちっとは違うのかもですが。

706 名前:535 mailto:sage [2017/01/26(木) 21:54:02.30 ID:NsrLS1+v.net]
強い詰みルーチンが欲しいですねぇ。
DBでほぼ勝ちという局面にもっていってもポロッと落とすことが結構ある。

707 名前:310 mailto:sage [2017/01/26(木) 21:56:01.75 ID:foYEIc8+.net]
あ、もしかしてenumってunsigned __int64が使えないのか・・・



708 名前:535 mailto:sage [2017/01/26(木) 23:23:42.26 ID:NsrLS1+v.net]
DBは勝率で手を選ぶよりも累計勝利数で手を選んだほうが良いっぽい。
そのほうが勝利再現率が上がるっぽい。

709 名前:535 mailto:sage [2017/01/29(日) 01:07:10.63 ID:uZb/TXFd.net]
負けた手順に対して手動でDBを修正するという汎用性がみじんもない作業を始めましたw
なにかドカンと強くなる方法ないかなぁ

710 名前:310 mailto:sage [2017/01/29(日) 13:11:46.36 ID:rGbRSmBn.net]
enumで__int64使えますね。というか、どこかのバージョンから使えるようになってましたね。
何か裏ワザ的な使い方考え付かないかと思って試しましたが結局ダメで、前から気になって
いた箇所をクラス化しだしたら大規模改造になってしまいました。

オブジェクト指向を忠実に実行しようとすると、結局何度もライブラリ作り直す羽目になると
いう本末転倒な状態(汗


色々ドタバタしていたので、オセロ共通のクラスのみ修正完了。ロジック部分はこれから。

711 名前:535 mailto:sage [2017/01/30(月) 23:07:35.87 ID:nIJrclSx.net]
ファイル出力が思いのほか重い。
知識では知ってたけど今回、実感しました。
DB作るときは棋譜をまとめて読み込んで書きこみは1回だけとか工夫しないとだめですな。

712 名前:310 mailto:sage [2017/01/31(火) 01:06:15.90 ID:tF0OU/RM.net]
>>709
ドカンとは強くならないけど、やっている事から推測すると遺伝的アルゴリズムが
合ってそうな気がします。茨の道ですが(汗

>>711
いまどきはメモリが大きいので、全部読み込んで一括処理とか、思いのほか可能ですね。

713 名前:310 mailto:sage [2017/01/31(火) 01:17:50.59 ID:tF0OU/RM.net]
困った。3層MLPで次の1手を、
qiita.com/kanlkan/items/6bff417519ed7d5ce4da
を参考にして求めている(若干やり方が違う)のだけど、思ったように学習してくれない。

NNの計算どっかおかしい気がしてきたorz

714 名前:310 mailto:sage [2017/02/01(水) 15:57:52.90 ID:DrzIg7bz.net]
ひょんな事から学習できました。デバッグ用に学習データを減らしてテストをしようとしたら
学習できてしまいまして。件数を増やすとダメになる模様。

これは仮説ですが、多種多様な棋譜を学習させると、ネットワークの自由度が不足して、
ウェイト更新が相互に打ち消し合った結果、ウエイトがゼロ(勾配消失)に陥ってしまうと。
学習に失敗した時は、大半のテストの結果が、全て同じ確率(softmaxのため)となってい
ます。中身は見ていませんが、softmax関数を通す前はオールゼロとなっている事が十分
に想像できます。

今から思うと、NNで評価関数を作ろうとして失敗していた時も、同じ状態だったのかなと。


学習データを減らすと精度が落ちますので、ネットワークをより複雑かつ大規模にしない
といけないのかなぁと。結局、同じ問題(ネットワークを大規模化しなきゃいけないけど、
自前のパソコンでは計算が厳しい上に、結果を使用する方もタイムクリティカルなので
あまりややこしくしたくない)の周りをグルグルしはじめてしまいました(汗

715 名前:535 mailto:sage [2017/02/02(木) 23:55:47.04 ID:JZtX1mUx.net]
まとめて読むようにしたら3日かかったDB作成が数分で終了しましたw
しかしDBがかなり肥大化してしまいました。
読み込みに5秒くらいかかる。
しかもこの手法だとLV2には勝てるけどLV3には勝てないし。
LV2はパターン少ないからDBで勝利手順なぞれるけどLV3はパターンが多くてカバーできない(多分)。
そろそろ別の手を考えなければ。

716 名前:535 mailto:sage [2017/02/03(金) 20:14:00.97 ID:jkxdJ711.net]
DBを使ってモンテカルロ木探索の探索結果を永続的に蓄積するというのをちょっと思案中。
計算すればするほどDBが洗練されていく感じで。

717 名前:310 mailto:sage [2017/02/03(金) 20:39:47.64 ID:dv6j41bl.net]
>>716
同じ事妄想したけど、それなら後方枝刈付のmin-Maxの探索結果をひたすら
ため込んでいく方が容量的にも速度的にも有利で、それができないからモンテ
カルロだって事に思いいたりました(汗

min-Maxなら、いらない枝カットできるかと思いきや、相手がそこに打っちゃった
時の事を考えたら捨てられない事にも気づきました(汗汗

で、適当なところだけ保存して、残りは別途探索・・・って、これ定石DBやん!

というオチでした。



718 名前:名前は開発中のものです。 mailto:sage [2017/02/03(金) 20:45:51.93 ID:jkxdJ711.net]
ボツ案でしたか。
でもまあ、とりあえずDBを充実させる方向でやってみます。
他に案がないので。
ディープラーニングがうまくいけばなぁ。

719 名前:535 mailto:sage [2017/02/03(金) 20:49:10.94 ID:jkxdJ711.net]
今のところ黒番対LV2は2勝一敗ペースてな感じです。
もっと勝てるかと思ったけどそうでもないですね。

720 名前:310 mailto:sage [2017/02/03(金) 20:58:39.46 ID:dv6j41bl.net]
こちとらディープラーニングで完全にドツボってますorz

721 名前:535 mailto:sage [2017/02/04(土) 19:33:24.33 ID:neMma6zi.net]
ディープラーニングは盤面情報だけじゃなくてこちらでなにがしかの特徴量を計算してやって
その数値も食わせたほうがすこしはましになるんだろうか。

722 名前:310 mailto:sage [2017/02/04(土) 20:57:26.78 ID:ycMSfQXf.net]
オセロではBuroさんの評価関数と同じ特徴を入力にしたMLPで評価関数を作った
オセロプログラムがあります。vsOthaというソフトです。

今回はディープなので、できれば特徴量は自動抽出してもらいたいものではあります。
一応、黒白の盤面情報の他、着手可能位置は与えています。

と、ここまで書いて、着手可能位置を求めるように学習させられるのか、ふと気になった。
何らかの事前学習に使えそうな気がする。

やらずに悶々としているだけなのですが、DCNNの四角い窓ではオセロの特徴はうまく
抽出できないのではないかと思っていますが、他に方法が思いつかないのが悲しい。

723 名前:名前は開発中のものです。 [2017/02/05(日) 08:03:16.57 ID:36jlTAsU.net]
そうかそうか

724 名前:535 mailto:sage [2017/02/07(火) 20:48:43.68 ID:qiXxRrUf.net]
機械学習じゃだめだ、手書き評価関数しかない…
しばらくするといや、手書き評価関数じゃやっぱりだめだ、機械学習だ…
の無限ループw

725 名前:310 mailto:sage [2017/02/08(水) 21:46:39.89 ID:GrcF81sn.net]
昔mnistでオートエンコーダのテストした時のように、学習内容(ウェイト)をBMPにして
可視化してました。テストに時間がかかるので、色々すったもんだバグとりに時間が
かかってましたが、ようやくなんとか表示できるようになりました。で、とりあえず想定より
少な目の隠れ層4096個でテスト開始。

勾配ノイズ(焼きなまし)の設定値もでかすぎたので、設定値を自動計算するようにしたり。
NN復活当初うまく動かなかった原因がこれでした。

で、まだ学習途中なのですが、ウェイトデータ見ると192個(=64×3)毎に1ビットづつ
ずれるパターンに収れんしていっています。192といえば入力データのサイズで、
横に64個づつ並べたビットマップ画像に、まるで光子の回析実験のような縦じまが(汗
そんな周期性が生まれるはずがないので、どこかにバグがあるんじゃないかと。
表示するプログラムのバグかも知れないけど、1エポックに3時間かかるので、止めて
デバッグに入るか、それとも続行するかで悶々中…。

どっちにしても時間がかかるので、裏でDCNNをもう一度コーディング開始。
あまりにネストが深いのでミニバッチは一旦放棄してSGDで。
GoogleのTensorFlowがテンソルな意味が良くわかった。
DCNNだと元データが2次元で、更にチャンネルがある行列では次元が足りないorz

今最大の懸案は、とりあえず隠れ層4096でオートエンコーダの事前 学習しているけど、
それが終わり全体の学習にいって上手く行かなかった時、中間層を増やして再トライ
するか、それともDCNNに行ってしまうか。

726 名前:310 mailto:sage [2017/02/08(水) 21:47:47.17 ID:GrcF81sn.net]
>>724
そこは…絶対的に機械学習である!という信念が必要だと思います(汗

727 名前:535 mailto:sage [2017/02/09(木) 22:03:30.31 ID:qkkjChao.net]
>>726
そうですかw
まあそんな気もしますが、でも終盤の積みルーチンだけなら手書きでイケそうな気もするんですよねぇ
そこだけでもなんとかできれば…



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

729 名前:310 mailto:sage [2017/02/10(金) 23:52:07.84 ID:HUcinQI4.net]
3日かけて学習したオートエンコーダ型はやっぱりダメでした。
可能性すら見えなかった。

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

ちゃんと動くのかなぁ。

730 名前:名前は開発中のものです。 mailto:sage [2017/02/11(土) 10:06:04.43 ID:CnQo/DsP.net]
GGSはmimosaというソフトを使うと入れますよ

731 名前:310 mailto:sage [2017/02/13(月) 22:45:03.11 ID:d/p+PbrG.net]
>>730
そのmimosaのサイトがリンク切れで見つからないのです。

732 名前:310 mailto:sage [2017/02/14(火) 20:21:59.60 ID: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 mailto:sage [2017/02/15(水) 23:06:48.81 ID:DozmM7Z3.net]
色々細かく改造。やっぱライブラリがあると気が楽です(汗

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

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

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

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

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

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

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

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

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

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

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

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



738 名前:310 mailto:sage [2017/02/20(月) 20:09:54.18 ID:L40mCRWI.net]
追記。なんか格好良く書きすぎですね。

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

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

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

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

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

742 名前:名前は開発中のものです。 [2017/02/24(金) 21:43:59.65 ID:P/wI/gFl.net]
age

743 名前:535 mailto:sage [2017/02/26(日) 00:05:27.56 ID:TbeyqTpr.net]
やっと落ちてる場所見つかった。
ぬるぽだった

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

745 名前:310 mailto:sage [2017/02/27(月) 01:19:56.03 ID:kLJ7ziJk.net]
全く同感orz

746 名前:535 mailto:sage [2017/02/28(火) 21:58:57.62 ID:+JAecqpe.net]
ファイルに2Gの壁とかあんの?
2G以上のデータはどうやって受け渡せばいいんだ。

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



748 名前:535 mailto:sage [2017/03/02(木) 19:55:15.50 ID:ejFPCGdH.net]
がっつり連続対戦中。黒番対LV2だけ流し終わった。

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

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

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

749 名前:535 mailto:sage [2017/03/02(木) 20:08:53.54 ID:ejFPCGdH.net]
対LV2はかなり同じパターンで勝ってるな。
勝利手順DBにずっぽり嵌ってくれてる感じだ。
LV3は嵌ってくれない。

750 名前:535 mailto:sage [2017/03/02(木) 21:41:10.44 ID:ejFPCGdH.net]
序盤用DBはそこそこうまく動いているが
中盤〜終盤用のDBのせいで致命的に打ち手が狂ってるように見える。
LV3に勝てないのは多分これだな。

751 名前:535 mailto:sage [2017/03/02(木) 23:28:08.02 ID:ejFPCGdH.net]
ずいぶん昔に書いたコードにバグがあった。
ビビるくらい致命的な奴。
よく今まで動いてたな。

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

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

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

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

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

754 名前:535 mailto:sage [2017/03/05(日) 03:39:08.88 ID:LufQ1oMY.net]
コンパイラの問題じゃなくてライブラリを静的リンクするか動的リンクするかの違いみたいです。多分。
かなり早くなった^_^

755 名前:535 mailto:sage [2017/03/06(月) 18:17:26.36 ID:XCrs8w8i.net]
思考時間は試行回数に直結する
重いモンテカルロは一旦封印する

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

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

757 名前:535 mailto:sage [2017/03/14(火) 22:28:17.78 ID:KNe/k0R5.net]
LV1の棋譜はDBから削除したほうがいいみたい。
いいとこどりとはいかないか。



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

759 名前:535 mailto:sage [2017/03/18(土) 23:34:35.11 ID:VnDB8sqw.net]
手書き評価関数やっぱうまくいかないな。
LV0やLV1も実は結構強かったんだな。
反省。

760 名前:535 mailto:sage [2017/03/19(日) 00:56:20.04 ID:y6fifsqj.net]
やっぱ機械学習しかない。(無限ループ)

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

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

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

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

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

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

765 名前:535 mailto:sage [2017/03/22(水) 21:25:31.00 ID:rRrXmS1r.net]
もう一度MM法トライしてみるか…

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

とりあえず実装の参考にするならこれ。
sealsoft.jp/thell/learning.pdf

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

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

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

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

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



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

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

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

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

770 名前:名前は開発中のものです。 [2017/03/25(土) 15:51:24.00 ID:eEMcRod/.net]
自作アナログゲームを投稿・共有できる「紙ゲー.net」がオープン
www.moguragames.com/entry/kamigame-analog-game/

771 名前:535 mailto:sage [2017/03/25(土) 21:50:08.29 ID:S05KfsXi.net]
特徴量、用意できるって言ったけど、いざ作ろうとすると迷うw
あれもほしい、これもほしいとなって発散してしまう。

772 名前:310 mailto:sage [2017/03/25(土) 23:15:01.53 ID:8t9unId8.net]
特徴量の選択はね・・・

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

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

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

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

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

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

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

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

774 名前:310 mailto:sage [2017/03/28(火) 03:12:19.93 ID:Cq+qEzvW.net]
パスが伸びる原因は判明。

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

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

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

775 名前:535 mailto:sage [2017/03/29(水) 21:27:24.43 ID:a7v8cJOT.net]
MM法動きました!
でも全然強くないw
特徴量が悪いのか棋譜が足りないのか…

776 名前:310 mailto:sage [2017/03/29(水) 21:53:37.26 ID: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 mailto:sage [2017/03/31(金) 20:13:06.62 ID: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 mailto:sage [2017/04/01(土) 01:30:30.93 ID: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 mailto:sage [2017/04/01(土) 11:28:54.33 ID:Gu8vVrdS.net]
おおーZebra越えが見えてきましたか凄い!
こっちも頑張らねば…

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

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

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

781 名前:310 mailto:sage [2017/04/01(土) 14:20:36.16 ID: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 mailto:sage [2017/04/01(土) 16:16:54.26 ID: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 mailto:sage [2017/04/01(土) 17:37:16.14 ID:Wq4mpDtN.net]
もう1局やって引分。

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

784 名前:310 mailto:sage [2017/04/02(日) 18:48:15.03 ID:xuvwd7i8.net]
別のオープニングを試したところ、F5F6系や、F5D6C4G5系はZebraに勝てません。

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

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


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

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

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

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

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

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

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

786 名前:310 mailto:sage [2017/04/03(月) 20:41:47.20 ID:BqB2rFYT.net]
忘れていた。

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

787 名前:310 mailto:sage [2017/04/05(水) 01:14:25.59 ID:4SaLkpgr.net]
>>786
Zebraが間違えたのは14手目のB5だった模様。ここで引き分け手順から外れてます。

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

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

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

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



788 名前:535 mailto:sage [2017/04/05(水) 23:08:13.71 ID: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 名前:名前は開発中のものです。 mailto:sage [2017/04/08(土) 13:24:07.33 ID:mnzcHtDh.net]
2003年に立てられたスレが最近になって動いてる…w
がんばってくださいな。

790 名前:310 mailto:sage [2017/04/08(土) 17:26:32.31 ID: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 mailto:sage [2017/04/09(日) 05:10:12.89 ID:h/eXLfOt.net]
相手に守りの手を強要させることが出来る有利な状態をいかに保ってゲームを進めるか。
終盤の要になりそうです。

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

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


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

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

793 名前:535 mailto:sage [2017/04/10(月) 22:56:16.99 ID:Sai+9C2+.net]
もしかして>>310さんのAIは世界最強クラスってことですか?
凄すぎ…

794 名前:535 mailto:sage [2017/04/10(月) 23:19:01.03 ID:Sai+9C2+.net]
完成したら論文書いてwebで公開してくださいw
おねがいしますw

795 名前:310 mailto:sage [2017/04/11(火) 07:59:39.45 ID:KmgeOKfx.net]
>>793
いや・・・それはないです。

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

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

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


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

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

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

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

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

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

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



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

799 名前:535 mailto:sage [2017/04/21(金) 20:55:54.67 ID:ZLYvyeQY.net]
大分勝率上がってきた。
思考時間長いから数こなせないのが厳しいですね。

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

800 名前:535 mailto:sage [2017/04/21(金) 22:05:48.97 ID:ZLYvyeQY.net]
やっぱディープラーニング憧れるなぁ。
俺のAIにもブレークスルーを起こしてくれw






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<322KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef