深層逆強化学習の環境構築
https://github.com/hcnoh/gail-pytorch
プロのGAIL の研究者たちはみんな、conda ではなくpipを使っているので、そちらで環境構築できるようにする必要がある。
上を参照しながら、このように環境構築したのでメモ。
pip で環境構築(https://pytorch.org/get-started/locally/)を見る。私の環境の場合は下記。
# pytorch # MPS acceleration is available on MacOS 12.3+
pip3 install torch torchvision torchaudio
# gym
pip install 'gym[all]'
# ただの pip install gym ではだめ
# jupyter
# pip install jupyter だけでほんとにいいんだっけ? ⇨ 多分大丈夫
pip で gymを動かす(Cartpole)までやる。こいつの出力が昔は四つだったが、最近5つになったせいでバグが生じてしまっている。これを取り除く必要がある。変更点は以下二つ。
(変更点1)
変更前:ob = env.reset()
変更後;
(変更点2)
変更前:ob, rwd, done, info, _ = env.step(act) # <mori>
変更後:
とりあえずこれで動くようになる。上の引用と同じような結果を得るためにはもう一点改善点がある。Cartpoleでは500ステップまで持たせるかどうかが勝負になっている問題なので、これに合わせて下記を追記する。
(追記)
horizon = num_steps_per_iter /4 # equal to 500
逆強化学習は行動の報酬値がなくても、行動の履歴から実行することができるため、上のenv.step(act)にて出てくるrwdを一切使わなくてもアルゴリズムを実行することができる。でもって、行動履歴を深層学習させて、状態価値と行動確率を出してくれるのだから敵対的模倣学習(GAIL)はすごいのである。
・私がGAILが好きな理由
(1)多くの状態を十分に表現するためにNNW(深層学習)を組んでいること。
(2)逆強化学習の手法であり、しかも即時報酬の推定を介さないこと。
(3)actor-crtic法がベースとなっていること。
(4)行動確率(つまり行動価値Q)だけでなく、状態価値Vも出してくれること。
・模倣学習と逆強化学習の違い
(1)入力が状態・行動 の二つか、これに即時報酬が加わるか
(2)初期の報酬設定が必要か否か
GAILを用いればほぼ確実にできるが、他の逆強化学習の手法を使わない理由がわからないのが問題。これは後々調べることとしたい。
0コメント