試しにやってみただけの雑なメモです。
動機と目的
- 逆強化学習で(連続状態)・連続行動のタスクを扱いたい
- 手頃なテスト環境として、OpenAI GymのPendulum-v0があった
- 深層強化学習ライブラリであるChainerRLをありがたく使わせてもらう
- どの手法が最も優れたエキスパートモデルを得られるのか……?
環境
- CPU : Intel Core i7-8700CPU @ 3.20Hz x 12
- メモリ : 32GB
- グラボ: GeForce RTX2080Ti 11GB
ライブラリとか
- CUDA 10.0 / cuDNN 7.5.0 / CuPy 5.4.0
- Chainer 6.1.0
- ChainerRL 0.7.0
比較手法
ChainerRLで使えるエージェントのうち、連続行動空間に対応し、単一環境(asynchronousとかではない)で学習するものを利用。
- REINFORCE - 1992 の深層版?
- DQN (Deep Q-Network) - 2013
- NAF (Normalized Advantage Functions) - 2016 を利用
- DDPG (Deep Deterministic Policy Gradient) - 2015
- TRPO (Trust Region Policy Optimization) - 2015
- PCL (Path Consistency Learning) - 2017
- A2C (Advantage Actor-Critic) - 2017
- PPO (Proximal Policy Optimization) - 2017
- TD3 (Twin Delayed Deep Deterministic Policy Gradient) - 2018
- SAC (Soft Actor-Critic) - 2018
実験
ChainerRLのexampleをほぼそのまま利用。パラメータはなるべく以下の設定で統一した。
step = 10 ** 6
reward_scale_factor = 1e-2
update_interval = 1000
batchsize = 64
replay_start_size = 1000
final_exploration_step=10 ** 4
eval_interval = 10000
eval_nruns = 10
replaybuffer size = 10 ** 6
gamma = 0.95
opt = chainer.optimizers.RMSpropGraves()
n_hidden_layer = 2
n_hidden_channels = 64
soft_update_tau = 1e-2
実験はほぼ同時にスタート。なのでもしかしたら多少重かったかも(スタート直後にnvidia-smiで見たものの、GPUのメモリは使い切っていなかった気がする)
結果
まず、生のログデータをそのままExcelでグラフ化してみる。横軸はエピソード、縦軸は各エピソードにおける累積報酬。なお、上述のパラメータにあるように、報酬にはスケール1e-2が掛かっている(掛けないとPPOでの学習に失敗)。
……見にくいにも程があるので、50区間での移動平均をとったグラフを次に示す。
学習成功勢と失敗勢に見事に分かれている。
学習時間とテスト時報酬
各種記録データの生成時間から割り出した学習時間と、bestモデルの評価時報酬(100エピソード)の表。
method | time [s] | score(mean) | score(median) | score(stdev) |
---|---|---|---|---|
DQN | 14783 | -1394.794537 | -1446.292322 | 141.6817202 |
REINFORCE | 6623 | -1324.556777 | -1417.614616 | 223.1694692 |
DDPG | 7855 | -155.7196851 | -126.4669975 | 87.37769227 |
TD3 | 13141 | -268.9419578 | -237.1870402 | 176.927272 |
TRPO | 3781 | -175.9193336 | -131.9095672 | 116.1852969 |
PPO* | 5789 | -159.89914 | -127.0784465 | 91.37168868 |
A2C | 2200 | -174.2695782 | -128.9251996 | 103.3684168 |
SAC | 27204 | -160.3874612 | -127.6972927 | 92.99764631 |
PCL | 17285 | -1203.062252 | -1182.344651 | 186.9649068 |
*PPOは設定ミスで最終時モデルしか保存されておらず、やむなくそちらを利用。でも学習曲線的におそらくそこまで変わらない……はず |
感想
bestモデルじゃないのにPPOつよい。DDPGが意外と健闘していてびっくり(学習が不安定だけどたまーに良いモデルがある??)
パラメータチューニングとか色々余地はあるし、一回しか学習していないし、もしかしたら環境によっても違うし、なので一概には言えませんが、何かの参考になれば。
自分は結局PPOでエキスパートを作ろうと思いました。