<基礎学習>10/22 【完成】cartpole問題を強化学習で攻略する7 (+雑記)
以下の記事の続きです。
kurupical.hatenablog.com
cartpoleについては、以下の記事を参照ください。
kurupical.hatenablog.com
1.やったこと
Q-Tableの更新のされかたをデバッグしながら、Q-Tableが-1〜1の間に収まらなくなったらバグとみなしていろいろなパラメータをチューニングしていました。
デバッグをするうちに1行明らかなバグを発見したので修正しました。
そして動かしてみました。
3回やって3回とも、1000epoch以内に学習が完了(timestep>195)しました!
(グラフが見づらいですが、右上のところで赤線が195を超えています)
唐突なゲームクリアに唖然としました。
クリア後も動かし続けると…
Q-Tableの値が発散(-1〜1の間にならない)し、再びアホになります。
Q-Tableの出力値を制限することでうまくいくのかもしれません。
(出力層の活性化関数にSigmoid関数を使うとか)
僕の半分くらいの時間で学習が完了したという記事もあります(以下)が、もうこれでゲームクリアでいいでしょう。
www.mochitam.com
長い戦いでした。
2.感想
多分、途中で発見した2個のバグが学習できない原因のほとんどだったと思います。
ですが、そのバグにたどり着くまでにかなり余計な回り道をしてしまいました。
その余計な回り道が、結果的にかなり勉強になったのでよかったです。
3.今後やりたいこと
せっかくあと1ヶ月ニートなので…
3-1.このチャレンジのまとめ
1本の記事でまとめたいです。
「DeepLearning/TensorFlowを知っている人が、DQNでソースコードを書けるまで」
というテーマでsかね。
3-2.AIや機械学習に関する知識
AIや機械学習に関して、浅く深く知識をつけていきたいです。 ジャンルで言えば
- 画像認識
- 時系列分析
- 強化学習
はやりましたが
は全然やっていないので、勉強したいです。
あとは、機械学習といえばコレ!らしい本
を読破したいです。(これはかなり厳しそうですが)
3-3.AIや機械学習に必要な前提知識
周辺知識が足りない気がしています。
ココらへんの勉強もしてみたいです。
特に統計学。
全部はできないので、優先順位をつけてやっていきたいですね。
4.雑記
4-1.GitHubソース公開
GitHubにソース公開しています。 github.com
4-2.誤差逆伝播vs遺伝アルゴリズム
遺伝アルゴリズムについて、以下スライドで勉強しました。
読んで思ったのが、DeepLearningの重み付け調整に、誤差逆伝播の代わりに遺伝アルゴリズム使ったらどうなるんだろう?ということです。
だれか試してみてください。笑
4-3.AlphaGoやばい
AlphaGoは「プロ棋士の定石をベースにしてそこから強くしていく」のですが、AlphaGo Zeroは「自分対自分の対戦を繰り返すことで強くしていく」らしいです。
AlphaGo Zeroはたった72時間学習しただけで、AlphaGoを超えたそうです。
すごすぎます!
ゲームにおける強化学習は、もはや人間の知見すら不要ということですね…。