GA将?開発日記~王理のその先へ~

ネタ勢最強を目指して絶賛開発中。

GAN、お勉強中

 とりあえずこの本買って、コードを写経してみました。

 んで、1Epochと100Epochで生成される画像の質にどの程度差が出るのか検証。こういう↓結果になりました。

1Epoch


100Epoch

 初期はほぼデタラメですが、100Epochだと何となくそれらしい画像が出来ていますね。

 GeForce GTX 960使うと1時間で30Epoch程度進むので、今度は500Epoch程度やらせてみますか。

 んで、それと並行して将棋の局面を生成する為のネットワーク構造も検討してみます。

今更GANなるものに手を出そうとしています

qiita.com

 こういうのをチョット弄って、Generatorが学習初期局面を生成し、そこからPGLeaf等で自己対局・強化学習する感じで検討中。

 Generatorの出力は「本将棋5五将棋で有り得そうな局面」にすると何の意味もないので*1、Discriminatorに相当する自己対局部分で「形勢判断を間違えた局面」を多く生成する様にしてみようと思います。

 具体的には、「生成された局面ではDiscriminatorが優勢(OR 劣勢)と判断したが、対局してみたら負けた(OR 勝った)」場合を「正例」としてはどうかと考えています。

 こうすれば、Discriminator(≒評価関数)の穴を効率良く埋められないかなぁ、と。

 そう言えばGAN将棋さんもGANを使う予定だったらしいけど、どういう風に使ってたんでしょうねぇ。気になります。

*1:そんな事するなら、既存の棋譜から局面引っ張ってこりゃ良いだけの話

2in1の存在意義がよくわからん

 例えばこんなの。

www.lenovo.com

 キーボード欲しいならノートPCで良くない? タッチスクリーン搭載モデルもあるし。

 キーボード不要ならタブレットで良くない? 軽いし。

 なんてーか、凄く中途半端感があって、いまいちどういう層が購入しているのか分からん。

PGLeaf Vier再実装中

 まず、学習方策と挙動方策を分けて、学習方策の方は重点サンプリングを用いてOff-Policyで学習する様にした。

 挙動方策の報酬は「基本報酬は勝敗に応じて+1/-1/0」「サブ報酬として対局中の予測勝率と実際の勝敗に応じたボーナス」としてみた。

 サブ報酬の方は、予測勝率と勝敗の差が大きいほど大きな値を与える様にしたので、逆転勝ち・負けの場合はサブ報酬が大きくなるはず。

 んで、例によって三目並べモードで実験してみたら、正しく収束する時は数秒で済むけど、そうでない場合は1分かけてもNG。

 困った…

探査自体を強化学習問題として解く論文(多分)

強化学習による探索行動の学習

 強化学習における探査*1を、ε-GreedyやSoftmaxの様な乱数を用いる手法ではなく、過去の経験・知識をもとに実現した論文(だと思う)。

 論文ではグリッドワールドや迷路を題材にし、意図した通りの結果が実験的に得られたと書かれている。

 論文の手法をそのままGA将?に適用するのは難しそうだが、考え方自体は非常に面白いので、なんとかして真似てみようと思う。

*1:論文では「探索」と記載されているが、αβ探索との混同を避ける為、本記事では「探査」で統一する

PGLeaf Vierはひとまず白紙撤回

 Replay Buffer使うとなんか学習が不安定になるし、私は無理してReplay Buffer使いたい訳ではないので、プラン再考中。

 んで、今後どうするかなぁ…

 とりあえず「自己対局時のランダム性が不足しているらしい」というのは分かってるんで、そこを何とかしないといけないんですが、単純に温度上げるとそれはそれで悪影響出てくるし…

 やっぱ、REINFORCEベースじゃなくて、報酬の予測値を学習する関数近似器を導入するのが手っ取り早い?

PGLeaf Vier開発開始

medium.com

 Experience Replayを使いたかったので、上記のサイトを参考に実装。

 現時点での構成は「REINFORCEベースのPGLeaf+Experience Replay+重点サンプリング」ですが、最終的にはもっと色々拡張する予定。

強化学習 (機械学習プロフェッショナルシリーズ)

強化学習 (機械学習プロフェッショナルシリーズ)

 んで、今日買ってきたMLPシリーズの「強化学習」に、関数近似を用いた方策勾配法の初見の手法が載っていたので、次はそれを実装する予定。

 現在は三目並べモードでデータ収集中なんで、それが終わってから(多分2時間後)改良しますかね。

 …あ、その前に不要なコードとかの整頓しとかないと、スパゲッティコードになっちゃう。