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

■ このスレッドは過去ログ倉庫に格納されています
1名前は開発中のものです。
垢版 |
03/07/10 00:10ID:6FQp6G+O
比較的地味なボードゲーム専用のスレが欲しくて立ててみました。

私はc言語で作ったデータベースを使って人間と対戦できる将棋かチェス
みたいなソフトを作りたいと思ってますが、グラフィックインターフェースの
作り方がわからなくてつっかえているレベルです。
777310
垢版 |
2017/03/31(金) 20:13:06.62ID:Hurb1/nC
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の本を読んでいたら、プレイアウトの精度の検証に、プレイアウト結果盤面を
統計的に処理して、終局予想図を出す方法と、重要な手を見つけるクリティカリティと
言う概念の説明がありました。この辺使って、プレイアウトの弱点探してみます。
778310
垢版 |
2017/04/01(土) 01:30:30.93ID:Wq4mpDtN
直すところが無くなってきたのでパラメータ調整。
たまたまだと思いますが、初めて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にあった模様で、一度も中盤探索していません。
779535
垢版 |
2017/04/01(土) 11:28:54.33ID:Gu8vVrdS
おおーZebra越えが見えてきましたか凄い!
こっちも頑張らねば…
780310
垢版 |
2017/04/01(土) 12:57:37.15ID:Wq4mpDtN
あ、たまたま4月1日の投稿ですが、嘘ではありませぬ(^^;
Zebraがエイプリルフールしてくれたのかも知れませんが。

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

でも、流石に思考時間1分はやり過ぎですよね。
あと、Zebraの中盤探索と勝負したいのですから、ZebraもBookを切った方が良いかな。
781310
垢版 |
2017/04/01(土) 14:20:36.16ID:Wq4mpDtN
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の序盤の精度は凄いですね。

次はどうしよう。
強化学習を調べているんだけど、いまいちどう応用したら良いのかがわからない。
782310
垢版 |
2017/04/01(土) 16:16:54.26ID:Wq4mpDtN
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秒探索でこれって、ものすごく強くなってる気がしてきた。
783310
垢版 |
2017/04/01(土) 17:37:16.14ID:Wq4mpDtN
もう1局やって引分。

強化学習って、プレイアウト同士対局させながら、確率的勾配効果法で
1件づつ更新を繰り返す形で良いのかなぁ。
784310
垢版 |
2017/04/02(日) 18:48:15.03ID:xuvwd7i8
別のオープニングを試したところ、F5F6系や、F5D6C4G5系はZebraに勝てません。

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

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


あと、相手パスの時にもおかしくなるバグを発見。今夜は、ここを調査。
785310
垢版 |
2017/04/03(月) 20:36:38.16ID:BqB2rFYT
パスがおかしくなる奴は、やはりデバッグルーチン限定で、かつ直すと本処理にも
大きな修正が必要になるので、当該デバッグ処理を削除して対処。

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

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

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

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

あと、終盤40手以降はほぼ間違えないので、Solverを削除してしまいました。
また、できれば、最終的には定石も無しにしたくなって来ました。
目指せピュアMCTS。
786310
垢版 |
2017/04/03(月) 20:41:47.20ID:BqB2rFYT
忘れていた。

>>782の22手目は、Zebraの当初予想はG4でしたが、このターンに達した時に、
A6に変わりました。そこでここで強制的にG4を打たせて続行してみましたが、
+4でこちらのAIが勝利しました。Zebraが間違えたのは、もう少し前の場所の
可能性があります。
787310
垢版 |
2017/04/05(水) 01:14:25.59ID:4SaLkpgr
>>786
Zebraが間違えたのは14手目のB5だった模様。ここで引き分け手順から外れてます。

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

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

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

で、結局、評価関数の良し悪しという話に逆戻りorz
評価関数から脱却するためにMCTS始めた頃が懐かしい・・・
788535
垢版 |
2017/04/05(水) 23:08:13.71ID:laANBz/U
最新の対戦結果です。
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
2017/04/08(土) 13:24:07.33ID:mnzcHtDh
2003年に立てられたスレが最近になって動いてる…w
がんばってくださいな。
790310
垢版 |
2017/04/08(土) 17:26:32.31ID:cxbXAKoL
色々グチャグチャと改良(改悪)してましたが、一旦整理して、結局かなりシンプルな
形に落ち着きました。定石も無しにしましたので、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論文のお蔭です。

次ステップで強化学習とか考えていたけど、まだ何からどうすれば良いのかわからない(汗
791535
垢版 |
2017/04/09(日) 05:10:12.89ID:h/eXLfOt
相手に守りの手を強要させることが出来る有利な状態をいかに保ってゲームを進めるか。
終盤の要になりそうです。
792310
垢版 |
2017/04/09(日) 20:11:13.36ID:3mOyIMJx
評価関数の評価値計算でmin-Maxの時にやっていたのに、今回はやっていなかった
手抜き箇所を修正し、速度アップを図りました。
プレイアウトの速度が劇的に速くなりました。

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


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

1手20秒設定でやっていますが(他にバックグラウンド探索あり)、10秒でも実用になるかなぁ。
MCTSなオセロとしては、ある程度できちゃった気がする。
793535
垢版 |
2017/04/10(月) 22:56:16.99ID:Sai+9C2+
もしかして>>310さんのAIは世界最強クラスってことですか?
凄すぎ…
794535
垢版 |
2017/04/10(月) 23:19:01.03ID:Sai+9C2+
完成したら論文書いてwebで公開してくださいw
おねがいしますw
795310
垢版 |
2017/04/11(火) 07:59:39.45ID:KmgeOKfx
>>793
いや・・・それはないです。

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

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

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


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

ブログ作って解説でも作ろうかと準備していましたが、試しに開設したブログサービスでは
アップロードができなかったので、一旦閉鎖しました。どこか良いところないかな。
796535
垢版 |
2017/04/13(木) 22:33:44.03ID:vVAZxoH8
いろいろ試してみてるけどなんか勝利手順DBを充実させるのが一番手っ取り早く強くなる気がする。
いま12万局分棋譜あるけど100万局くらいまで増やしてみるか…
もっと計算リソースが欲しい。
797310
垢版 |
2017/04/18(火) 01:24:07.08ID:Ohai0OaC
評価関数のエポックを更に進めたら180エポック近辺から勝てなくなってきました。
もしかしてたまたま間違ったところが、zebraの弱点をついていたのかも知れないし、
評価関数の値にメリハリがついてきて、逆に見落としが起きやすくなったのかも
知れないし。過学習かも知れないし。

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

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

今の速度だと35手目から読み切らないといけない。今の速度だと時間の予測が難し
いというか、軽く1時間はかかりそう。
798535
垢版 |
2017/04/19(水) 21:59:17.68ID:WjbK3YLE
Ponanzaがディープラーニング取り込みに成功したとかなんとか。
ハードもものすごいものを用意するそうですね。
799535
垢版 |
2017/04/21(金) 20:55:54.67ID:ZLYvyeQY
大分勝率上がってきた。
思考時間長いから数こなせないのが厳しいですね。

25局目
黒(airandom.dll)の勝利回数: 8
白(ai-lv3.dll)の勝利回数: 17
800535
垢版 |
2017/04/21(金) 22:05:48.97ID:ZLYvyeQY
やっぱディープラーニング憧れるなぁ。
俺のAIにもブレークスルーを起こしてくれw
801310
垢版 |
2017/04/23(日) 20:02:43.30ID:Kquj3Rxt
色々係数調整したらめっちゃ弱くなって焦ってあちこちいじってました。
最初の調整の方向が逆だった模様で、反対に振ったら少し良くなりました。

過学習っぽい問題を何とかしたくて、ポリシーネットが作れないか、もう一度挑戦してます。
線形Softmaxでまた色々やっていたのですが、今まで上手く行かなかった理由が判明。
特徴を圧縮するのに…反転させたり回転させたりしていたので、盤面位置がわからなく
なった投入データに対して、盤面との対応ができてる教師データと整合性が取れなく
なっていたと…いまさら気づきまして…学習部分を全面的に作り直しとなっています。
なんて馬鹿な事をしていたんでしょう(涙

つまり、これが原因だったら、MLPも使えるかもって事です。
流石にDCNNは関係ないですが。
802535
垢版 |
2017/04/24(月) 23:38:10.10ID:Jt3D6fnV
もう一回connect4に立ち返ってみるかな…
気分を変える意味でも…
803535
垢版 |
2017/04/25(火) 21:31:44.16ID:I7r6uvd5
あ〜なんか新しいことすんの億劫だな。
プログラミングは少し充電期間をおいて本でも読もうかな。
2017/04/27(木) 01:15:37.14ID:KUFXWb0v
中学生が羽生さんに勝っちゃったとかでえらい盛り上がってるね
805310
垢版 |
2017/04/27(木) 22:32:29.06ID:gagL5fDM
億劫な時ありますね。アイデアが枯渇した時とか、陥りがちです。
しばらく放置するとアイデアが出て来たりします。


さて、線形Softmaxなポリシーネットですが、色々やって何とか計算開始しました。

回転同形の処理を真面目にやったらメモリーパンクでスワップしてしまってボツ。
仕方がないので、エポック事に回転同形をランダムに作る事に。

計算にものすごい時間がかかるので、ミニバッチサイズをミニとはとても言えない
ほどでかくして時短。お蔭で6時間越え→50分程度になりました。もっとでかくすると
更に時短できるかな。

序盤の盤面は重複が多く、学習に悪影響がありそうなので、%指定してカット。
(そのうち、同一盤面同一次着手は1件に集約しようかと思っています。)

こんな感じで現在2エポック目ですが、57%くらいの一致率という極めて優秀な成果が
出てきています。

それでも着手不能箇所が確率1位になっちゃったりするので、使用時に着手可能位置
のみ計算するようにしました。これで多少は一致率が上がるはず。
806310
垢版 |
2017/04/27(木) 22:33:06.57ID:gagL5fDM
藤井4段凄いですね。
コンピュータ将棋で鍛えたからかな。
なんか新しい手を打ってるみたいですね。
2017/04/28(金) 07:46:25.71ID:cnKbVTYz
ニュースを見て藤井猛が勝利したのかと
勘違いした俺…
ニュースにならねえよ!
808535
垢版 |
2017/04/29(土) 00:08:17.53ID:knMl9lYg
ニューラルネットワーク自作入門という本を買ってきました。
平易に書こうとしてるのが伝わってくる本ですね。
平易に書くの最近の流行りなんですかね?
809310
垢版 |
2017/05/03(水) 15:03:32.93ID:v36x8qrF
最近はもっぱらポリシーとバリューの両評価関数のテストです。

ポリシーの方は線形ソフトマックスで大丈夫そう。大体50%の正答率になります。
MLP版もコーディングはしてますが、まだテストまで至っていません。

バリューの方は、ステージ分割なしのMLP版を試してます。
計算に時間がかかりすぎて調整が進みません(汗


頭の片隅には、いつかはDCNNというのが残っています。
以前やった時に、畳み込みフィルタ演算の展開形を考えた事あります。
その時は、汎用性が無いという理由で、あまり乗り気じゃなかったのですが、
今となっては、そのまま進めればよかったかなと思う次第。
2017/05/04(木) 17:16:11.41ID:Hvuj7SvG
pona負けたとかなんとか
811310
垢版 |
2017/05/05(金) 01:52:31.91ID:Orwfb9MI
世界コンピュータ将棋選手権ですね。
8勝1敗同率で、elmoに直接対決で負けた関係で予選2位通過みたいですね。

将棋は電王戦くらいしか見てなかったので、マシン制限があると思ったら、
こっちは凄いですね。CPU1092(Xeon)にGPU128基ですか…。
やっぱディープラーニングすると、それなりのマシンパワーがいるのよね。
しかも最速マシンは20億NPSとか言っているみたい(笑うしかない)。
812310
垢版 |
2017/05/05(金) 02:46:05.76ID:Orwfb9MI
で、Ponanza Chainerに対する半可通っぽい疑問。

アピール文章読んだけど、ディープラーニングは評価関数ではなく、
ポリシーネットに相当する次の1手導出に使われているっぽい。
何故バリューじゃなくてポリシーなのか?

で、αβ系探索でポリシーとなるとオーダリングに使うくらいしか思いつかない。
将棋ってオーダリングに良いヒューリスティックスないのかな?
YBWCのPV決定だと縦に並んじゃうから、並列にする意味がない。
確率の高い手は次の段でPVの数を増やしたりするのかな?
2017/05/05(金) 08:17:59.66ID:cViTmSg9
将棋(やチェス)だとYBWCよりもLazy SMPが流行ってるみたいですね
Ponanza Chainerはそれのクラスタ版のeXtreme Lazy Smpらしいですが。
814310
垢版 |
2017/05/05(金) 08:31:32.47ID:Orwfb9MI
>>813
どうもです。早速見てみました。

自分のPCは2コアの擬似4コアなので恩恵なさそうです(汗

つか、並列化についてはPPLにお任せしちゃってるので、あまり要点が
わかっていないかも。

しかし、GPS将棋のクラスタすげーと思っていた時代は、一瞬で過去の
ものになってしまったのですねぇ。
815310
垢版 |
2017/05/05(金) 17:24:07.29ID:Orwfb9MI
elmo優勝でPonanzaが2位みたいですね。
なんか、将棋も強くなるスピードが尋常じゃない感じ。

目標設定して(前年比9割勝利とか)、マシンパワーとか確実性が
ある所にも、資源を振り向けて達成しているみたいにも見えますが。
816名前は開発中のものです。
垢版 |
2017/05/05(金) 17:48:22.87ID:hWowcZg5
ディープラーニングと将棋の相性が悪いてことだろうか?
elmoとやらは既存アルゴリズムなんですよね?
2017/05/05(金) 18:47:05.96ID:hWowcZg5
elmoて公開されてるんです?
すごいなー
ソース読んでみようかなー
818310
垢版 |
2017/05/05(金) 20:43:38.31ID:Orwfb9MI
>>816
自己対局で作った自作定石のDB積んでるみたいです。

ディープラーニングの使う場所は、オーダリングくらいしかなさそうなので、
実はオーバーヘッドとの兼ね合いが微妙じゃないかと疑ってます。
2017/05/06(土) 09:18:07.29ID:ODpfq25G
自分もディープラーニングっぽいので将棋作ろうとしたけど
能力も価値も違う駒が複数あるから、それをどうするかで悩んで止まった
そのまま探索に掛けるわけにもいかず
ようするに駒割をどうするかわからなかった
一致率自体は普通に上げられるんだけどね
2017/05/06(土) 09:20:21.30ID:bJnH/Q0z
そもそも将棋って、同種のゲームの中でAIにやらせるのは一番難しいくらいなんでしょ?
もっと簡単なゲームからやってみては。
821310
垢版 |
2017/05/06(土) 09:41:02.64ID:eGOwqfr/
>>816
相性が悪いというより、効果を出し切れるところまで行かなかったのかも知れませんね。
Ponanzaは2位とはいえ、他の人には全部勝っているわけで、弱くなったわけではないと
思います。

elmoは予選で1敗しているので、予選時にponanzaに勝ったのまぐれかもと思っていたけど
直接対決2連勝で、決勝は全勝なので、やはりelmoの1年間での進歩が凄いかと。

1年間という時間制約の中で、レート向上の目標を200くらいとして、それを何で達成
するかと考えた時に、ディープラーニングを使わなくても同じくらいの向上はできたのかも
知れませんね。

とはいえ、今年は十分に活用しきれなかったけど、適用の仕方を煮詰める事で、来年から
はボーナスのレート向上が見込めるとか、そういう事はあるかも知れませんね。
822535
垢版 |
2017/05/08(月) 22:06:30.07ID:bLY5QORw
ディープラーニングやり直してみました。
与えられた局面の勝率を学習させて、一手読みで打たせてみました。
局面が均衡しているときは結構いい手を返すみたいですが、
不利に傾くと全然おかしい手を打ち始めます。
学習させた棋譜に偏りがあるんだろうか?
どちらかに不利に傾いた局面も学習させるべき?
823310
垢版 |
2017/05/08(月) 23:27:34.27ID:Byk3wJkT
悩ましいところですね。偏った棋譜を学習させるべきか、否か。

相手も弱いから、偏った棋譜になるわけで、そういう時にも問題が起きないように
探索と組み合わせるわけで。そう考えたら、そのままで良いのかも知れないし、
やってみないとわからないかも。自分的には、MCTSにおいてモンテカルロの
問題(隘路の騙し構造)に対して、先に避けるために、選択肢を偏らせるモノだと
認識していますので、拮抗している時に正しい手を返せばよいかと思っています。


自分は、Buroさんの特徴量をベースにしたMLPで評価関数作っているのだけど、
傾向としては線形回帰と変わらない印象です。与えている元データの偏りなのか、
それとも特徴量の選択の問題なのか、悩み中です。DCNNで特徴量抽出まで
やらせたいと、をもう一度試そうかなと言う機運になってます。

ただ、頭の中に、ワンチップマイコンで学習外だしというのがチラついていまして、
そこに入り込むと数か月、下手したら半年はとられるなぁと悶々中。

そうそう。アルファ碁のバリューネットの勝率ですが、割引率を考えたら…
という点に思い至りまして。普通勝率の評価関数はロクなもんじゃないのですが、
強化学習とセットなら、ありかもとちょっと思っています。
824310
垢版 |
2017/05/15(月) 09:41:45.01ID:hagdu+z8
オライリーさんのところのディープラーニング本(Pythonで学ぶ奴)を読んでみました。
自分で実装する人には、なかなか良いです。Python知らないですが、説明だけで結構
おなか一杯になります。

オライリー本で、畳み込み演算の実装(行列に落とし込む)の良い方法がわかりました。
自分が以前やって放置した展開形よりもっと良い方法があるんですね。ちと畳み込む気
が湧いてきました。

現在MLP版のポリシーネットを学習させていますが、テストデータに対して60%越え
まで来ました。一方で入力データサイズが89万(特徴)×16万(ミニwバッチ)とか
わけわからん事になっていて、もう畳み込んでも処理量大差ないんじゃないかと思って
いたところですので、学習限界が見えたら、畳み込みに行ってみようかと思います。

あと、やっぱり強化学習ですね。既存データで学習していても埒があかない気が強くして
きました。
825535
垢版 |
2017/05/15(月) 22:23:31.10ID:1z5ugcc4
ディープラーニング黒石を1、空点を0、白石を-1を入力として学習させたけど、
黒石かそうでないかの01データと空点かそうでないかの01データと白石かそうでないかの01のデータ
と3つに分けて食わせたほうがいいんだろうか?
826310
垢版 |
2017/05/16(火) 09:54:31.52ID:Vk+2t4O7
>>825
問答無用で後者です。
827535
垢版 |
2017/05/16(火) 21:15:39.88ID:3NTvf1qj
>>826
うーんそうなんですか。なんかそんな気はしましたが。。。
まあぼちぼちやりなおしてみます。
ありがとうございます。
828535
垢版 |
2017/05/17(水) 22:57:33.27ID:2rHwBE7R
今すごくいい勝ち方した。
必勝形を意識した連続攻撃。
こういうのが毎回打てればなぁ。

(;SZ[19]
;B[jj];W[ik];B[ij];W[hk];B[jk];W[gk];B[kl];W[hi]
;B[ji];W[jm];B[kh];W[km];B[jg];W[jl];B[kf];W[li]
;B[je];W[id];B[jf];W[jd];B[jh])
829310
垢版 |
2017/05/19(金) 20:14:05.97ID:skXdWaLK
結局、tiny_dnnでDCNNを組んでテスト開始。
ウィンドウサイズ3で、Conv7層+fullcon2層構成。
隠れ層のチャンネル数は暫定で32。
入力は自分・相手・空白・着手可能位置の64×4個。

入力データをDCNN用に展開すると、メモリーに収まりきらずに盛大にスワップ。
BITBOARDの64ビットデータ(unsigned int64)が、32ビット(float)×64個のvectorに
膨らんでしまうのが原因です。

仕方がないので、ファイルを適当なサイズごと読み込みながら、中間バッチを作って、
それを順次学習する形にしました。

で、中間の時間を計ってみたところ、1エポック分学習するのに数日という予想に。

全く非実用的です。どうしよう。
830535
垢版 |
2017/05/19(金) 20:21:41.55ID:z5dIsNlN
310氏は今のノート捨ててデスクトップでいい奴組むべきw
831310
垢版 |
2017/05/21(日) 16:44:31.83ID:kUdqCG8C
ちょこっと直して学習して様子を見てとかやってるうちに、学習しない時間かかると
言う酷い状況に陥りました。最初にテストで1バッチやった時は18分で35%程度の
正答率だったのに。いまでは1バッチ1時間の癖にNaNになったり、正答率3%程度に
落ち着いちゃったり。いわゆる勾配消失になってる模様です。学習進めば進むほど、
勾配消失も進むので、活性化関数をLeaky_ReLUとかにしなきゃいけないかも。

で、段々と強化学習方向に逃げはじめました。
かなり小さいDCNNで学習できるかテストするつもりで、強化学習のプログラム書き
はじめました。まあ、学習するにも、余計時間かかりそうですが。

マジで、デスクトップ欲しいです・・・
832535
垢版 |
2017/05/24(水) 20:50:33.25ID:NHCMa7e2
中盤で攻めがつながるうち回しが欲しいなぁ。
上手く探索したらかなり枝刈出来そうな気もするが、
それは手書き評価関数を書くのと変わらん難しさという。
833535
垢版 |
2017/05/25(木) 21:07:01.59ID:nz71uY7p
うあああああ、なんかおかしいと思ったらデータ読み込んでなかったw
全然変な手を打つと思ったらそういうことかーorz orz orz
834535
垢版 |
2017/05/26(金) 21:03:34.78ID:B39N4gaL
バグが治ったらLV3にいい線まで迫ってきた凄い!

18局目
黒(airandom.dll)の勝利回数: 9
白(ai-lv3.dll)の勝利回数: 9

19局目
黒(ai-lv3.dll)の勝利回数: 12
白(airandom.dll)の勝利回数: 7

思考時間がめちゃくちゃ長いのが当面の課題ですね〜
835535
垢版 |
2017/05/27(土) 01:33:58.68ID:vCz7BcHT
多分、あと二つくらい良い特徴量さえ見いだせればLV3に勝つる。
良い特徴量さえあれば!
836310
垢版 |
2017/05/27(土) 20:17:57.81ID:TGXtrM6M
強化学習に大きく方向転換。

最初、ポリシーネットを模して学習しようとしたけど、出力がソフトマックスの時
負け側の教師データをどうするのか不安があったので、まずは普通にQ学習で
勝率を学ぶ事にしました。

ざっと作ったところでデバッグに時間がかかりまして、ようやく多分ちゃんと学習して
いるんじゃないかと思うところまで来ました。が、初期の学習をしないでランダム初期化
のまま開始してしまいましたので、学習はしているみたいだけど、実用レベルの学習
をするまで、どれくらいかかるのか、想像もつきません(汗

100回対戦して、1エポック学習するのに、大体8〜10分くらい。控えめに見て
1000万対戦としても、10万分。つまり2か月強必要です。アルファ碁は初期値を
学習した上で追加の強化学習が確か数千万対戦だから、年単位でも足りないかも(笑)

手を完全に固定(ランダム要素排除)した状態で学習により勝つ方向に遷移する事
は確認しましたが、最初の方をランダムにしたりε-greedyしたりして局面が偏らない
ようにしてから、1万対戦しても勝率が良くなる気配が無いので、まだすごく不安です。
837310
垢版 |
2017/05/28(日) 21:36:00.20ID:354vTA35
ちょっと学習データの保管期限長くしたら100ゲーム14分になった。

あと、テストゲームで動くはずのない側(学習していない方)の手が変わったので
変だなと確認したら、バグ発見。後手番になっても、先手のAIを使用していた(汗

数万ゲーム行っていたのに、また一から学習しなおし。
どうせ適当に構成しているので、少しネットワークを簡素にしてみるかな。
838535
垢版 |
2017/05/30(火) 22:08:02.05ID:rOaQFKPq
囲連星における将棋で言うところの詰めろと必至を計算するルーチンが欲しい。
かなり切実に。
839310
垢版 |
2017/05/30(火) 23:20:25.76ID:rROdfu2T
バグ取りしながら、色々いじったら、バグとる前に別のバグを仕込んで・・・
と、長らくデバッグしてましたが、ようやくいじりたくなるところが収束し、バグが
とれて、学習が進むようになりました。

100ゲームプレイして学習のサイクル1回が4分弱になりましたので、
結構気持ちが楽になりました。とりあえず1週間くらい学習させてみます。

一通りできたら、ポリシーの方にもトライしてみようと思います。
840535
垢版 |
2017/06/01(木) 22:33:27.70ID:COhqrYJ6
棋譜から詰めろと必至になったパターンを抽出してDBを作ってみようかな。
841535
垢版 |
2017/06/02(金) 22:15:50.82ID:uf6z9S1Y
簡単に2手連打で必勝形ならば詰めろ、ということで仮組みしてみた。
どんな感じかな。

今度AMDからでるスレッドリッパーが気になってしょうがない。
842535
垢版 |
2017/06/03(土) 00:14:49.53ID:976t+GmL
詰めろルーチンなかなかいい感じ?
石の流れが良くなった気がする。

そろそろシチョウルーチンも書かないとだな。
843535
垢版 |
2017/06/03(土) 18:55:22.80ID:976t+GmL
現在LV3と対戦中ですがなかなかいい感じです。

13局目
黒(airandom.dll)の勝利回数: 9
白(ai-lv3.dll)の勝利回数: 4

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

白番でもうちょっと勝ちたいですねぇ
あと対戦にめちゃめちゃ時間かかるのがどうにも。
844535
垢版 |
2017/06/04(日) 20:33:26.28ID:55DsrXcK
黒番対LV3大きく勝ち越せるかと思ったけど、その後追いつかれちゃってがっかりして対戦止めちゃいました。
もう一工夫必要ですね。
845535
垢版 |
2017/06/05(月) 00:12:02.90ID:7uLLK55W
気を取り直してLV1,LV2と対戦中
なかなかいい感じ

19局目
黒(airandom.dll)の勝利回数: 19
白(ai-lv1.dll)の勝利回数: 0

17局目
黒(airandom.dll)の勝利回数: 16
白(ai-lv2.dll)の勝利回数: 1
846535
垢版 |
2017/06/05(月) 19:22:25.72ID:7uLLK55W
引き続き対戦中
なかなかいい感じ

40局目
黒(airandom.dll)の勝利回数: 39
白(ai-lv1.dll)の勝利回数: 1

37局目
黒(airandom.dll)の勝利回数: 36
白(ai-lv2.dll)の勝利回数: 1
847310
垢版 |
2017/06/05(月) 19:52:31.59ID:PVR4/NQn
強化学習にトライ中。
最初の勝敗をQ学習する方法は目に見えて学習できていそうだったのですが、
ネットワークが小さすぎたのか、比較的早い段階で飽和。ネットワークを深くして
再試行しようかと思ったのですが、せっかくなのでポリシーの学習にトライ。

しかし、Q学習と違って、学習が上手く進みません。
初期値問題かと思って、最初に教師あり学習をさせてみましたが、やはり勝率が
上がらないというか、30%近辺に落ち込んだまま浮かんでも50%くらいにしか
ならない感じ。このまま続けたら、どこかで戻ってくるのか。100対局の強化学習
で30分かかるので、どうしようかと。

Q学習の方は、比較的簡単に、対象のAIに勝てるようになっていて、世代の追加が
順調に進んでいました。ポリシーだと何故ダメなのか考えれば考えるほど、頭が
混乱してます。
848310
垢版 |
2017/06/06(火) 20:05:14.75ID:6owNcmqA
バグ見つけた。簡単かつ破壊力があるやつ。
教師あり学習の一致率が試行回数少ないのに85%とかになっていて
おかしいとは思っていたんだけど。教師付学習も強化学習も同じバグ。
自分の盤面のところに、次の着手(要するに教師データ)を入れてた。

というわけで、教師付学習からやり直しています。
雰囲気的には、今のネットワークで一致率50%近くまで行きそうです。

あと、GitHUBでAlpha Goクローンを作っているプロジェクトを発見。
解説ページで評価関数部分を結構細かく解説してくれています。

そこで、ポリシーネットの負けた側について「学習率をマイナス」にして
学習すると書かれていて(@o@)。こんなスマートな方法があったとは
やられました。
849535
垢版 |
2017/06/06(火) 20:11:39.11ID:7GjyRXFQ
>GitHUBでAlpha Goクローンを作っているプロジェクトを発見。

URLくだしあ
850535
垢版 |
2017/06/06(火) 20:40:01.38ID:7GjyRXFQ
https://github.com/Rochester-NRT/RocAlphaGo
これかな。
851310
垢版 |
2017/06/06(火) 20:47:41.56ID:6owNcmqA
それだす。

一致率は45%で頭打ち。
時間かけずに一致率上げる工夫方面に転進します。
852535
垢版 |
2017/06/06(火) 21:12:36.87ID:7GjyRXFQ
>>851
ありがとうございます。

LV1とLV2,ホントは100戦づつしたかったけど時間かかりすぎるから止めました。
でもまあ手ごたえありの結果ですねぇ。
LV1とLV2は卒業といってもいいかも。

54局目
黒(airandom.dll)の勝利回数: 51
白(ai-lv1.dll)の勝利回数: 3

60局目
黒(airandom.dll)の勝利回数: 58
白(ai-lv2.dll)の勝利回数: 2
853535
垢版 |
2017/06/09(金) 22:02:57.35ID:N9z2bSO/
黒番対LV3で難解なコウ争いの末、辛くも勝利!
地力がついてきた!
それにしてもLV3の粘りには驚かされますね。

(;SZ[19]
;B[jj];W[ji];B[ki];W[ik];B[ii];W[jl];B[jh];W[hi]
;B[hh];W[gh];B[kk];W[gg];B[jg];W[kf];B[jf];W[je]
;B[ie];W[hj];B[id];W[hg];B[ig];W[ih];B[hf];W[ge]
;B[hh];W[ij];B[ic];W[ih];B[ke];W[ji];B[lf];W[kl]
;B[kg];W[jk];B[fg];W[lm];B[mn];W[kj];B[gf];W[lk]
;B[jd];W[mk];B[mf];W[ml];B[nm];W[nf];B[if];W[of]
;B[kf])
854535
垢版 |
2017/06/09(金) 23:50:44.20ID:N9z2bSO/
シチョウルーチン組んでたら根本的なルール部分にバグ発見。
出現頻度は低い奴だけどまだこんなバグ残ってんのかとビビった。
855310
垢版 |
2017/06/10(土) 16:27:27.71ID:PCeXyVVE
こちらはかなり迷走中。精度を求めるとCNN時間がかかりすぎ。

やっぱり、Buroさんの評価関数の特徴を入力にして、畳み込み演算を使用しない方向で
進めるのが吉ではないかと思い始めています。最終的にオセロAIの中で実用的な速度で
答えが出せるものでないと使い物にならないので。

Buroさん特徴型でポリシーが作れるか。
バリューに相当する勝率ネットワークを作った時、その勝率が使い物になるのか?
それらを強化学習で強化できるのか。

この辺に目標を切り替えます。

ちなみに、今のはBuroさん型評価関数の、評価値(終局時の石数差の予想)を、適当な
線形変換で−1〜1の勝敗の確率っぽい数字とみなして使用していますので、そこの
精度はよくなるのではないかと期待。
856535
垢版 |
2017/06/10(土) 23:26:39.00ID:L+AkmAT7
思考時間短縮策を考えているんですが、
まだ強さが十分じゃないのに思考時間短縮を考えるのは悪手な気もする。
でも思考時間かかりすぎると統計とれないし悩ましい。
857535
垢版 |
2017/06/11(日) 21:28:22.80ID:SJZps56X
やっぱハードを強化するしか…
AMDのスレッドリッパーあたり行っちゃうか?
858310
垢版 |
2017/06/11(日) 23:00:35.72ID:8gFXyRd+
Buroさん特徴型で2層パーセプトロン型のポリシー作って学習開始。
1エポック目でテストデータに対して正答率48%超え(汗
当然ながらスピードも速い。

やっぱBuroさん凄い。
859535
垢版 |
2017/06/12(月) 20:43:30.74ID:b/m4vK+x
序盤、いままでDBから一番勝利数の高い手を選んで打ってたけど、
それだと布石が限られちゃうからランダムで第二候補も打つようにしたら
若干勝率下がったような気がする。
まあしょうがないか。
860535
垢版 |
2017/06/13(火) 21:33:01.28ID:Vwv80HwJ
囲碁プログラムなんかだとKGS行くとモンテカルロ350プレイアウト位でも結構強いプログラムあるんだけど、
なんでそんな少ない回数で強さを出せるのか謎すぎる。
861535
垢版 |
2017/06/17(土) 23:55:21.58ID:RoY4moNt
あ〜アイディア湧かね〜
とりあえず LV3 vs LV3の棋譜取 回せるだけ回すか。
スレッドリッパーがあれば今の4倍速で棋譜収集できそうだが…
862535
垢版 |
2017/06/21(水) 20:57:42.26ID:jKeRi7uh
プロファイル取ろうとするとメッチャ時間かかる。
マルチスレッドだと特に時間かかるんだろうか?
プロファイル無しなら2分もかからんのにもう30分くらい走らせてる気がする。
863535
垢版 |
2017/06/21(水) 21:22:11.95ID:jKeRi7uh
将棋、連勝記録らしいですね。一位タイ?とかなんとか
864310
垢版 |
2017/06/22(木) 17:10:28.77ID:nCVESNnQ
昨日の大雨が原因か、ノートパソコンがダメっぽいです。サーフェースなので、SSDの中身が取り出せるか微妙。多分アウト。

という訳で、ソース全滅を半ば覚悟してます(>_<)

しばらく立ち直れないかも。
865535
垢版 |
2017/06/22(木) 19:16:22.69ID:1hrbCk1w
あちゃーご愁傷さまです
まあこれはあれですね
ハイスペックデスクトップを買えという
神のお告げですね
866310
垢版 |
2017/06/22(木) 21:45:09.96ID:qlJt6F9H
bitlockとかいうセキュリティ保護状態になったのですが、そんな設定してないのです。解除には、解除コードが必要なのですが、そんなの設定してないし。ディスク初期化すれば復活するとの事なので、諦めて初期化しちゃいました。

ビットハックしまくったコードなので、再度コーディングするの面倒です。

ソース保管のためにも、別のPC買うべかなぁ。
867535
垢版 |
2017/06/22(木) 23:51:29.79ID:OkW8ZbGj
そこはGitとか使えばいいんじゃないですかね〜
まあ公開するか金払うかしないとダメですが。
868535
垢版 |
2017/06/23(金) 00:39:34.50ID:IGj3LUd/
SSE4.2はセーフだけどAVXはアウト。
おかしなメモリ番地を見に行って落ちてしまう。
CPUは命令に対応してるはずだが?
もしかしたら囲連星の本体の制限なんだろうか?
よくわからん。
869535
垢版 |
2017/06/23(金) 21:17:34.43ID:IGj3LUd/
俺のAIのレベルが上がれば上がるほどLV3の水準の高さに驚かされる。
いつか絶対超えてやる
870535
垢版 |
2017/06/25(日) 22:16:20.21ID:f6fx6Sdx
ちょっと気分を変えてConnect4やってるんですが、
棋譜から学習というのは半永久的に完全解析までにはたどり着かないような気がしてます。
やはり完全解析には超強力な前向き枝刈が必要なのかなと。
一回ちゃんとConnect4の完全解析、勉強してみようかなぁ。
871310
垢版 |
2017/06/25(日) 22:19:41.68ID:rGuWTts8
地道にオセロライブラリ再構築中。

ビットボード回りのビットハックな処理部分は大体できて、着手までできるようになった。
ついでにちょっとだけ改良になりそうな変更を加えた。

ネットで調べていたらmobility関数は、もう少し性能アップしそうな方法があったけど、
ソースコピペではうまく動かなかったので後回し。

ところで、非常に大きな問題があります。
この数年で、多くのオセロ関係サイトが閉鎖されていまして…。
記譜データが集められなくなりました。
50万記譜計画も、EdaxのPVBOOKもアクセス不能です。

MCTSだと評価関数なしでもプレイはできるのですが、そこから記譜を
作るしかないのかなぁ。

つか、オセロやめて、いっそ囲碁に…。
872535
垢版 |
2017/06/25(日) 22:41:07.34ID:f6fx6Sdx
おお〜囲碁ですか。
打倒Masterですよ!!
873310
垢版 |
2017/06/26(月) 23:49:18.52ID:GJUXvwb3
藤井君凄かったね。
abemaの解説でも言ってたけど、互角のまま進行していたのに、
気が付いたら圧勝の情勢になるとか、AIチックな差し回しだよね。

じわじわとライブラリ構築中。
オセロ専用ライブラリはほぼ完成。

明日から終盤読み切り処理に取り掛かります。
874535
垢版 |
2017/06/26(月) 23:59:45.84ID:EmG0vEj8
結局オセロですか。ちょっと残念w
まあ、結局自分の情熱が湧くものをやらないとですよね。
ライブラリほぼ完成とか流石に仕事速いですね。
875535
垢版 |
2017/06/28(水) 00:10:44.15ID:aRb2YNw2
Connect4やってます。
自己対局棋譜を取りまくってDBを作成。
勝利数の多い手を高い確率で着手するようにします。
いま40万局棋譜集めてDBなしAIに対してDBありAIで勝率8割りくらい。
やっぱDBの効果はConnect4でも有効のようだ。
でも先手で完全ソルバに一発入るまでにはいくかどうか?
行ったら楽しいけど。
876535
垢版 |
2017/06/28(水) 21:56:23.76ID:aRb2YNw2
DBありの勝率9割まできました。
そろそろ自己対局は一旦打ち切りかな。
完全ソルバとやらせてみよう。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況