<基礎学習>10/16-18 cartpole問題を強化学習で攻略する5
以下の前回記事の続きです。
kurupical.hatenablog.com
cartpoleについては以下をご参照ください。
kurupical.hatenablog.com
やったこと
- 割引率の変更(0.95→0.99)
※割引率とは、「将来報酬の期待値をどの程度評価するか」です。
結果
timestep(赤線)がゲームクリアである200に一瞬届きました。
「ゲームクリア水準(timestep>195)ならば学習を終了し、モデルを保存する」というロジックを入れ忘れていたため、ゲームクリア時の学習モデルが取得できず…。
上記の学習を再現させようと思ったのですが、できませんでした。
正しいモデルなら再現はできるはずなので、まだ学習モデルが不完全ですね。
デバッグ
DQNが下す判断を見てみました。
すると、選択肢が極端に片方に偏っていました。(ずっと右に動かし続ける、ずっと左に動かし続ける、など)
数式レベルでいろいろ考えたのですが、おそらく原因は以下です。- 報酬の与え方
もともとは失敗=-1だけ与えていました。
正負両方の報酬を与えないと、初期値によって選択が極端に偏ってしまうような気がします。
ということで、生存=+0.005&失敗=-1を与えるようにしました。
DQNの重みの初期化は正規標準分布に従っているため、報酬を-1〜+1にclippingしています。
- 報酬の与え方
いい経験だけを残すようにする
過去の経験からランダムに学習する仕組みになっていますが、良い経験を優先的に学習するような仕組みにしました。
この方法については、以下のサイトを参考にしました。 qiita.com
ここまでやりましたが、グラフの結果よりいいものは得られず。。
雑記
機械学習を仕事にすること
怖い
システムは(雑な言い方をすると)設計書通りに作れば完成になります。一方、機械学習や人工知能は「完成するかどうか」がそもそも保証されません。
(今回のcartpoleに関してはDQNでできた記事が沢山上がっているので、大丈夫だという保証がありますが)
これ、とても怖くないですか?
今は趣味でやっているからよいですが、請負とかになるとすごいプレッシャーがかかりそうです。
作業のやり方が悪い
ある程度プログラムが完成したらいろいろパラメータを触って調整してTry&Errorするのですが、どうもこれが効率が悪いみたいです。
cartpoleにここまで時間を取られるとは正直思っていなかったです。。
性格の問題も大きいと思いますが、自分は以下のような問題に直面しました。
- 頭を使わなくなる
とりあえずパラメータぐちゃぐちゃいじるかーとなる。 - 堂々巡りになる
「あれ?このパラメータ設定前もやったっけ?」どこまでテストしたか把握できなくなる。
疲れてくると考えずすぐ手を動かしてしまい、より迷宮入りするという悪循環。。
解決策として、「やろうとするTryをメモる→やる」という流れを徹底するということを試しに1日やってみました。
こんな感じ
激しくめんどくさいのですが、思考を整理しながらできるのでいい感じです。
その他
- 人工知能の資格が最近できたようで、取ろうか迷い中です。
www.jdla.org
問題見てるとGENERALの方はホントに触りだけって感じで、すこし勉強したら取れそうです。 - AIのオンラインゼミサービス
aidemy.net
明日、これの話を聞こうと思ってます。しばらくは暇なので…。