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

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

私はc言語で作ったデータベースを使って人間と対戦できる将棋かチェス
みたいなソフトを作りたいと思ってますが、グラフィックインターフェースの
作り方がわからなくてつっかえているレベルです。
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割まできました。
そろそろ自己対局は一旦打ち切りかな。
完全ソルバとやらせてみよう。
877535
垢版 |
2017/06/28(水) 22:15:10.75ID:aRb2YNw2
だめだ、5手目で間違える。
やっぱ自己対局じゃ完全解析までたどり着かないかなぁ。
878535
垢版 |
2017/06/29(木) 23:11:55.06ID:VtwtdSs0
Connect4,対人だとなかなか強いんですが、
それでも全然勝てないってわけでもないですねぇ。
自分でプレーして一回勝ってしまった。
まだまだですね。
879535
垢版 |
2017/07/01(土) 00:13:06.32ID:A/qufpQM
http://web.mit.edu/sp.268/www/2010/connectFourSlides.pdf
前半は読みやすくてわかりやすいけど後半一気に難しくなって結局理解できてない。
880310
垢版 |
2017/07/01(土) 02:11:20.40ID:HltHgVcC
終盤探索とりあえずのところまで完成。

盤面の持ち方をちょっと変えて__mm128iにしてみた。
パスの処理を変えてみた。
これで、FFO#40で時間計測。

YBWCで1200msくらい
置換表までで、1800msくらい
negascoutまでで、2200msくらい

nodeカウントを入れると15%くらいスピードダウンする(汗
そこから逆算して、200万nps以上出てる。
まあ結構な速度になりました。

偶数理論も作ってみましたが、空白マスを連続する単位で分離するオーバーヘッド
が大きく、採用すると70万nps程度に落ちてしまう。この処理の良い方法が見つから
ないため、いまだに偶数理論は使っていません。むむむ。

現在、素のMCTSに着手してます。
これができたら、対局集めて、EigenでMLPのライブラリ作って、評価関数(仮)作成。
評価関数をもとにPUCTにアップグレードして強化学習という予定です。

まだ先は長い(汗
881310
垢版 |
2017/07/01(土) 02:18:02.59ID:HltHgVcC
>>877
自己対局だと局所解にはまっちゃう時ありますよね。

DBの内容がわからないので、以下頓珍漢かもしれませんが。

解消法としては、開始後数手については、ランダム着手にする。
途中でε-greedyみたいに、ランダムな着手を挟む。

こういった方法で、局所解から外れたところも学習対象に入れる工夫があります。

気持悪いやり方だけど、5手目だけif分で強制的に直して修正済み自己対戦データ
を蓄えて学習するという方法もあります。
882535
垢版 |
2017/07/01(土) 18:28:17.34ID:A/qufpQM
ランダム着手をまぜるのはいいかもしれませんね。
ありがとうございます。
アルファ碁もやってる手法なんでしたっけ?
883535
垢版 |
2017/07/01(土) 23:24:59.13ID:A/qufpQM
局所解を避けつつ有望な局面を多く調べるというのはまさにMCTSでやってることなんじゃ?
一回駄目出し食らった案ですが、モンテカルロ木をDBに保存して無限に成長させるという案がどうしても忘れられない。
局面数が大きくなるゲームだと木が大きくなりすぎて駄目ですがConnect4なら…
884535
垢版 |
2017/07/02(日) 00:25:04.48ID:iRJ6TibI
完全ソルバで遊んでるんですが、Connect4って思ったよりゲームバランス良いゲームなのかも。
先手が圧倒的優位かとおもってたけど、後手が完璧に打ってくるとき、
先手も正解が一手しかないという局面が結構あるんですね。
意外と奥が深い。
885310
垢版 |
2017/07/03(月) 20:45:11.36ID:rpYi4lNg
MCTS自己対戦させながらデバッグ。そろそろバグはなくなりましたが…

勝っていると緩んで、負けているとギャンブルする癖と、お互いに緩みあっている間に
引き分けに収束してしまう事から、そのままでは記譜に使えない事を自覚中。

とはいえ、記譜を真面目にZebraで並べて見てしまうと、疑問手だらけで、そこを直したく
なって、強化学習にならなくなってしまいますね。

序盤はMCTSで探索し、残り20手で終盤探索して後半中心の評価関数をまず作る事かな。

もともと、前半の何手かはランダム着手して、オープニングの種類が偏らないようにしよう
かと思っていましたが、この調子だと、最初の40手はランダム着手にして、残り20手を
読み切りにした方が、記譜数が稼げる気がしてきました(汗
886535
垢版 |
2017/07/03(月) 22:52:12.07ID:NTU08E7X
40手もランダムに打たせるんですか?うーん。
にわかには信じられないですが偏らないようにするためには有効なんですかね〜
887310
垢版 |
2017/07/06(木) 23:41:11.66ID:uY9At7Gi
終盤20手の盤面集めなので、ばらけた方がよいし、ランダム着手の方が速いかなと。

とはいえ、今はMCTS5秒読み+残り20マス完全読みで記譜集めしてます。
1譜3分弱で、今のところ重複記譜なしで、700譜くらい集まったところです。

さっきまで藤井四段のabemaTVにCPUを15%くらい持っていかれていました(汗

改良したいところはあちこちありますが、とりあえずニューラルネットのライブラリに専念。
optimizerをどうやって作ったか、まったく思い出せない(汗
888310
垢版 |
2017/07/08(土) 20:32:28.67ID:bOmPmg/w
ニューラルネットの計算でけました。たぶん。
頭が行列に切り替わるまでが憂鬱なんだよなぁ。

optimizerは計算式なぞるだけで楽勝でした。が、理解しないまま行列計算
に置き換えているので、何が何だかわからなくて、忘れちゃうんでしょうね。


続いて、tiny_dnnのstl的なインターフェースに憧れて、ミニバッチの処理
とかのインターフェースに凝りだしてしまった。

本当はレイヤー階層定義のところも凝りたかったのだけど、今のところ
MLPレベル(2層)までしかやらないと自分に言い聞かせて自粛中。

学習データは1200局くらい集まりましたが、全滅の時の完全読み切り
の手順取得処理にバグがあって、無限ループ入り。せっかくの全滅に
至る記譜が採れませんでした。無念。
889535
垢版 |
2017/07/09(日) 21:54:20.93ID:DDYaMcZG
>モンテカルロ木をDBに保存して無限に成長させる
これやってます。
5手目は正解できるようになったようですが、まだまだ完全ソルバには勝てません。
メモリはそんな簡単に爆発しないみたいだけど、木が大きくなるにつれ速度がかなり遅くなる。
UCBの計算が遅いのだろうか?
890310
垢版 |
2017/07/10(月) 00:58:02.21ID:NRizRRec
自分のはロールアウト関数がボトルネックなので、木が深くなると速度が上がっていき
ます。MCTSの設定も、どんどん深く行く方向で調整してます。UCBの計算は普通に
cmathのlogとかsqrtとか使ってます。


結局、今日は一日、ニューラルネットのライブラリのインターフェースをしこしこと
作って直して、してました。template使いまくりです。
まだやりたい事があるのですが、今の状況では不要だし、泥沼に入りそうなので、
いったんこの辺で。

記譜は1500超えたので、明日から終盤の評価関数作ってみる予定。
できたようなら、MCTSの探索方法を変えて、更に良い記譜を集めるか、それとも
置換表付き完全読み切りのバグを探すか。
891535
垢版 |
2017/07/10(月) 22:57:52.54ID:Ioy9WIYD
きたああああああぁぁぁぁあああああ!!
完全ソルバに勝利!!!!

http://connect4.gamesolver.org/?pos=44444222242555777711776655625636363333111

この勝利を引くために数十回リトライしましたw
892535
垢版 |
2017/07/10(月) 23:09:01.53ID:Ioy9WIYD
ちなみにDBは初期曲面のプレイアウト回数が約36万回になりました。
少なそうに見えるかもだけどDBつくるのに結構時間かかってる。

囲連星にも応用したいな〜
893535
垢版 |
2017/07/10(月) 23:24:06.47ID:Ioy9WIYD
DBの木の深さは一番深いところで37。
結構、深いところまで読んでるんじゃないでしょうか。
もちろん、途中で読んでない局面に分岐されると困ってしまうんですが…
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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