EnsekiTT Blog

EnsekiTTが書くブログです。

ml-agents学習中のTensorBoardを読み解く話

こんにちは、えんせきです。
喉の調子は戻っていません。とりあえずビタミンを補給するために蜜柑を買ってきました。
今年初蜜柑です。甘みの当たりハズレが大きい

つまりなにしたの?

PPOで強化学習する時のベストプラクティスは良いとして、調整するためにはTensorBoardが読めないと難しい。
というわけでTensorBoardに何が表示されているのかまとめておく。
f:id:ensekitt:20180128222616j:plain

参考文献

Getting Started with the Balance Ball ExampleのObserving Training Progress

ml-agents/Getting-Started-with-Balance-Ball.md at master · Unity-Technologies/ml-agents · GitHub

Training Statisticsのベストプラクティス

ml-agents/best-practices-ppo.md at master · Unity-Technologies/ml-agents · GitHub

正直、以降の訳文は情報が落ちてるので読めるなら本家のほうが良い。

TensorBoardとは?

TensorBoardはTensorFlowの理解、デバッグ、および最適化を容易にするために作られた。今回は強化学習の結果を色々表示してPPOの最適化に活用する。
TensorBoard: Visualizing Learning  |  TensorFlow

実行方法は?

PPO.ipynbと同じディレクトリで

tensorboard --logdir=summaries

を実行して、ブラウザから
http://localhost:6006
*1
にアクセスすればいい。

学習結果の話

これは前回のポールを学習している時のTensorBoard。policy_lossはなんか暴れてる。
f:id:ensekitt:20180128222857p:plain

レッスン数

レッスン数(Info/Lesson)はレッスン数で文字通りレッスン回数が表示されている。横に伸びていくだけ。

累積報酬

累積報酬(Info/Lesson)はすべてのエージェントに対する平均累積エピソード報酬。うまく学習すると上昇していく。
報酬の一般的な傾向は、時間とともに一貫して増加するはずだが、小さな浮き沈みがおきる。タスクの複雑さによっては、学習プロセスの何百万ステップまでいかないと報酬が大幅に増加することはないこともある。

エントロピー

エントロピー(Info/entropy)モデルの決定がどれほどランダムかが表示されている。うまく学習できているとだんだん小さくなる。前回の記事でも紹介したけど離散の行動をして、状態空間を保つ場合、あまりにも急激に減少するならbeta値を増やすと良い。

エピソード長

エピソード長(Info/episode_length)は文字通りエピソードの平均ステップ長を表している。これは必ずしも長い方が良いとか短いほうが良いとかはなく、エージェントの目的が長いほうが良いのか短いほうが良いのかによって動くべき方向は変わる。
倒立振子だったら立ちっぱなしのほうが嬉しいからMax Stepsまで増えていけば良い。

学習率

レッスン数(Info/learning_rate)が増加するとともに減少していく。

方策損失

方策関数(Info/policy_loss)の更新の平均損失。方策がどれだけ変化しているかに関連付いてる。成功した訓練セッションの間はこの損失は減少するらしい。
なんか凄い暴れているけどもともと小さいのかもしれない。

価値推定値

価値推定値(Info/value_estimate)はエージェントが実施したすべての状態の平均値見積もり。エージェントがある時点で予測する将来の報酬の量に相当する。成功した学習セッション中に増加する。

価値損失

価値損失(Info/value_loss)は価値観数をアップデートした際の損失。モデルがどれほど良く個々の状態を予測することができるかと相関がある。これは報酬が増大すると、これらの値は増大し、報酬が安定する時に減少する。

最初は眺めていると楽しい!

*1:ポート番号は先に使われていると別のものになることがある。

クリエイティブ・コモンズ・ライセンス
この 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。