Anzeige
Anzeige

Más contenido relacionado

Presentaciones para ti(20)

Anzeige

強化学習アルゴリズムPPOの解説と実験

  1. PPO解説・実験(Pendulum-v0) 1強化学習勉強会 東北大 林部・大脇研究室 M1 納谷克海 強化学習勉強会@7/17
  2. 2強化学習勉強会 目次 1. アルゴリズム 2. 実証(Pendulum-v0)
  3. 3強化学習勉強会 目次 1. アルゴリズム 2. 実証(Pendulum-v0)
  4. 4強化学習勉強会 導入(復習?) Policy Optimization(Policy-Based) 方策π(a|s)を直接学習 〇連続値問題 Q-Learning(Value-Based) 行動価値関数Q(s,a)を学習 〇離散値問題 多腕バンディット問題 (離散値問題) RLアルゴリズムの系譜 エージェント 環境 行動At状態St 報酬Rt MDP(マルコフ決定過程) 1. 環境の情報は状態Stに集約され、それをも とにエージェントはその方策に従ってAtを 選択する。 2. 環境はエージェントの選んだ行動Atに対し て報酬Rtをエージェントに返し、状態Stを 新たな状態St+1に更新する 3. エージェントは、その時点までの観測結 果St,At,Rtに基づいて方策を改善 4. 1~3を方策が収束するまで繰り返す
  5. 5強化学習勉強会 価値関数、行動価値関数 価値関数:ある状態sにおいて、方策πに従う行動選択とMDPによる状態遷移を繰り返したときに期待できる収 益 𝑣π(𝑠) = 𝑬π[𝐺𝑡|𝑆𝑡 = 𝑠] 強化学習の目的「価値関数𝑣πを全ての状態sについて最大化する方策を見つけること」 𝑣π 𝑠 = 𝑎 π(𝑎|𝑠) 𝑠′ 𝑝 𝑠′ 𝑠, 𝑎 𝑟 𝑠, 𝑎, 𝑠′ + γ𝑣π(𝑠′ ) 価値関数はベルマン方程式(価値関数)を用いて再帰的に解くことができる 𝑝 𝑠′ 𝑠, 𝑎 :状態遷移確率 r(s,a,s’):報酬期待値 γ:割引率 ある状態sが与えられたときに最適な行動aを知りたい!=行動の価値を示す行動価値関数を定義 𝑞π(𝑠, 𝑎) = 𝑠′ 𝑝 𝑠′ 𝑠, 𝑎 [𝑟 𝑠, 𝑎, 𝑠′ + γ𝑣π(𝑠′ )] 𝑞π(𝑠, 𝑎) = 𝑠′ 𝑝 𝑠′ 𝑠, 𝑎 𝑟 𝑠, 𝑎, 𝑠′ + γ 𝑎′ π(𝑎′ |𝑠′ )𝑞π(𝑠′ , 𝑎′ )] ベルマン方程式(行動価値関数)
  6. 6強化学習勉強会 PPOとは PPO(Proximal Policy Optimization) • Policy Optimizationベースの手法 • 環境とのやり取りによるデータ取得と、「代理」目的関数の最適化を交互に繰り返す。 • TRPO(Trust Region Policy Optimization)とA3C(Asynchronous Advantage Actor-Critic)を発 展させたアルゴリズム • TRPOより簡単な実装でサンプル効率が良い • ロボット制御のような連続値問題でも、Atariでも従来手法より良い結果 TRPO ? A3C ? Actor-Critic ?
  7. 7強化学習勉強会 Actor-Criticついて(1/2) エージェントが担う方策評価と方策改善の機能を分離 方策改善→行動器(Actor) 方策評価→評価器(Critic) をそれぞれモデル化して交互に学習しながら最適方策を学習する。 〇Actorのモデル化 連続的な行動空間→ガウス方策 𝜋 𝑎 𝑠, θ = 1 (2π) 𝑑/2|Σθ(𝑠)|1/2 exp(− 1 2 𝑎 − 𝜇 𝜃 𝑠 𝑇 Σθ 𝑠 −1 𝑎 − 𝜇 𝜃 𝑠 ) Σθ(𝑠) 𝜇 𝜃 𝑠 状態sの平均値の関数近似 状態sの共分散行列の関数近似 S 1 S 2 θ 𝜇 𝜃 S 3 Σθ Action sampling 行動器 Actor 評価器 Critic 環境 方策評価 状態St 報酬Rt 行動At 出力 学習は?
  8. 8強化学習勉強会 Actor-Criticついて(2/2) 〇Criticのモデル化 価値関数をパラメータωでモデル化したVω(s)をNNで学習 パラメータωを最適化するために目的関数が必要 𝐿 𝑐𝑟𝑖𝑡𝑖𝑐 ω = 𝑡=0 𝑇−1 |𝛿𝑡+1(ω)|2 𝛿𝑡+1 ω = 𝑅𝑡+1 + 𝛾𝑉ω 𝑆𝑡+1 − 𝑉ω(𝑆𝑡) 一方、Actorの学習には方策勾配法を用いるが、方策勾配には アドバンテージ関数が含まれている。 また、TD誤差のπに関する期待値はアドバンテージ関数に等しくなる。 これより、Actorの損失関数が、方策勾配とTD誤差の積で近似できる。 𝐿 𝑎𝑐𝑡𝑜𝑟 ω ≡ −𝐽 θ ∼ − 1 𝑇 𝑡=0 𝑇−1 (𝑙𝑜𝑔π(𝐴 𝑡|𝑆𝑡, θ))𝛿𝑡+1 ω Actor :πθ Critic :Vω 環境 行動At 報酬Rt+1 ωを更新 𝐿 𝑐𝑟𝑖𝑡𝑖𝑐 ω = 𝑡=0 𝑇−1 |𝛿𝑡+1(ω)|2 𝛿𝑡+1 ω = 𝑅𝑡+1 + 𝛾𝑉ω 𝑆𝑡+1 − 𝑉ω(𝑆𝑡) TD誤差 Θを更新 𝐿 𝑎𝑐𝑡𝑜𝑟 ω = − 1 𝑇 𝑡=0 𝑇−1 (𝑙𝑜𝑔π(𝐴 𝑡|𝑆𝑡, θ))𝛿𝑡+1 ω 𝑆𝑡 → 𝑆𝑡+1 ∇𝐽 θ ∼ − 1 𝑇 𝑡=0 𝑇−1 (∇𝑙𝑜𝑔π 𝐴 𝑡 𝑆𝑡, θ Aπ) 方策勾配定理 これでActorが誤差逆伝搬法で学習できる! アドバンテージ関数 Aπ = 𝑞π 𝑠, 𝑎 − 𝑣π(s) 行動aが平均的な行動選択と比べて どれだけ有利かを表す
  9. 9強化学習勉強会 A3Cについて 3つの”A” 1. Advantage 2. Actor-Critic 3. Asynchronous Advantage 𝛿𝑡+1 = 𝑅𝑡+1 + 𝛾𝑉ω 𝑆𝑡+1 − 𝑉ω 𝑆𝑡 価値関数V(t)の更新 を最小化するように更新 1step先を見る これを2step以上先まで動かして更新する 𝛿𝑡+𝑛 = 𝑘=1 𝑛 𝛾 𝑘−1 𝑅𝑡+𝑘 + 𝛾 𝑛 𝑉ω 𝑆𝑡+𝑘 − 𝑉ω 𝑆𝑡 nを増やすと先の状態を学習に取り入れる →大きいほうが良い気もするが、大きすぎると未完成な報酬や 価値関数を使うので不安定になる Asynchronous 非同期的なマルチエージェントな分散学習 エージェントを複数動かし、個々の経験を 集めて学習 →全体としてはランダムに、早く学習できる
  10. 10強化学習勉強会 TRPO(詳しい解説は省略) 1度方策関数が劣化すると、その後の報酬が得られないため、改善が困難になる。 よってニューラルネットの重みを慎重に更新する必要がある。 →更新前後の重みのKL情報量に制約を設ける L θ = 𝐸 πθ 𝑎 𝑠 πθ𝑜𝑙𝑑 𝑎 𝑠 𝐴θ(𝑠, 𝑎) パラメータの更新 θ 𝑘+1 = 𝑎𝑟𝑔𝑚𝑎𝑥 𝐿(θ 𝑘, θ) s.t. 𝐷 𝐾𝐿(θ| θ 𝑘 ≤ 𝛿 Surrogate advantage (代理アドバンテージ) 𝐷 𝐾𝐿(θ| θ 𝑜𝑙𝑑 = 𝐸[𝐷 𝐾𝐿(πθ ∙ 𝑠 ||π 𝑜𝑙𝑑 ∙ 𝑠 )] 実装が複雑! 𝐸 πθ 𝑎 𝑠 πθ𝑜𝑙𝑑 𝑎 𝑠 𝐴θ(𝑠, 𝑎) − 𝛽𝐷 𝐾𝐿(πθ ∙ 𝑠 ||π 𝑜𝑙𝑑 ∙ 𝑠 ) の最大化問題に帰着
  11. 11強化学習勉強会 PPO TRPOとは別のアプローチで更新量に制約を設ける PPO-Penalty : KL情報量を使用。 PPO-Clip : KL情報量を不使用。こっちのほうが精度良い 𝐿 𝐶𝑃𝐼 θ = 𝐸 πθ 𝑎 𝑠 πθ𝑜𝑙𝑑 𝑎 𝑠 𝐴θ(𝑠, 𝑎) = 𝐸 𝑟𝑡(θ)𝐴θ(𝑠, 𝑎) 𝑟𝑡 θ = πθ 𝑎 𝑠 πθ𝑜𝑙𝑑 𝑎 𝑠 TRPOのSurrogate advantage(代理アドバンテージ) TRPOではKL情報量を制約(正則化)→PPOでは𝑟𝑡 θ に制 約 𝐿 𝐶𝐿𝐼𝑃 θ = 𝐸 min 𝑟𝑡 θ 𝐴θ, 𝑐𝑙𝑖𝑝(𝑟𝑡 θ , 1 − 𝜀, 1 + 𝜀)𝐴θ
  12. 12強化学習勉強会 PPO (1 − 𝜀) 𝐴 𝑡 (1 + 𝜀) 𝐴 𝑡 PPO-Clipで方策を更新 (Actor) 価値関数の更新 (Critic)
  13. 13強化学習勉強会 目次 1. アルゴリズム 2. 実証(Pendulum-v0)
  14. 14強化学習勉強会 ハイパーパラメータ  NNの大きさ(方策、価値関数) : 1層(32,) 2層(64,64) 4層(128,128,128,128)  報酬の割引率 γ : 0.9, 0.99, 0.999  PPO-Clip ε : 0.1 0.2 0.3  価値関数の学習率 : 0.01 0.001 0.0001  方策の学習率 : 0.003 0.0003  エポック数 : 3000  エピソード長 : 200step は固定 PPOをPendulum-v0(OpenAI Gym)環境で、様々なハイパーパラメータで実験
  15. 15強化学習勉強会 NNの大きさ変更 NNの大きさ • [32] • [64, 64] ←デフォル ト • [128, 128, 128, 128] で比較 [64, 64]が安定 [32]はぶんぶん回る(制御できていない?) [128,128,128,128]はなかなか振り上げられない [32] [128,128,128,128][64,64]
  16. 16強化学習勉強会 報酬の割引率の大きさ変更 報酬の割引率を • 0.90 • 0.99(デフォルト) • 0.999 で比較 割引率が小さすぎる(未来の価値を重視する) →安定しない 0.90 0.9990.99
  17. 17強化学習勉強会 PPO-Clipの大きさ変更 PPO-Clipを • 0.1 • 0.2(デフォルト) • 0.3 で比較 Clipが小さい→学習が安定しない Clipが大きい→学習が安定するものの、 そもそもうまく学習しない 0.1 0.30.2
  18. 18強化学習勉強会 価値関数の更新率の大きさ変更 価値関数の更新率を • 0.01 • 0.001(デフォルト) • 0.0001 で比較 デフォルト値である0.01が最も早く安定 小さすぎると学習しない 0.01 0.00010.001
  19. 19強化学習勉強会 方策の更新率の大きさ変更 方策の更新率を • 0.003 • 0.0003 で比較 方策の更新率が小さすぎると全然学習しない 0.003 0.0003
  20. 20強化学習勉強会 感想 • 今まで何となく使っていた強化学習のアルゴリズムについて、改めて調べることで 理解が深まった。 • 昔読んで理解ができなかった本や資料を今改めてみると少し理解できるようになっていた。 • 解説記事もいろいろ読んだが、やはり原著論文から逃げてはいけない (各解説記事のパラメータの名前や記号が異なったりする)
  21. 21強化学習勉強会 参考資料 • (PPOの原著論文) Proximal Policy Optimization Algorithms, John Schulman, et al., OpenAI, 2017, https://arxiv.org/abs/1707.06347 • (A3Cの原著論文) Asynchronous Methods for Deep Reinforcement Learning, Volodymyr Mnih, el al., 2016 https://arxiv.org/abs/1602.01783 • ゼロから始める深層強化学習(NLP2018講演資料) https://www.slideshare.net/pfi/nlp2018-introduction-of-deep-reinforcement-learning • OpenAI解説記事 https://openai.com/blog/openai-baselines-ppo/ • SpinningUp https://spinningup.openai.com/en/latest/algorithms/ppo.html • 各種Qiita記事 • 【強化学習】実装しながら学ぶA3C【CartPoleで棒立て:1ファイルで完結】 https://qiita.com/sugulu/items/acbc909dd9b74b043e45 • 【強化学習】実装しながら学ぶPPO【CartPoleで棒立て:1ファイルで完結】 https://qiita.com/sugulu/items/8925d170f030878d6582 • 【論文】Proximal Policy Optimization Algorithms (PPO, 2017) https://qiita.com/keisuke-nakata/items/87b742bcb09149b6d8d1 など
  22. 22強化学習勉強会 参考資料(以前に読んだ本) 現場で使える!Python深層強化学習入門 強化学習と 深層学習による探索と制御 (AI & TECHNOLOGY) つくりながら学ぶ! 深層強化学習 ~PyTorchによる実践プログラミング~ 機械学習スタートアップシリーズ Pythonで学ぶ強化学 習 [改訂第2版] 入門から実践まで (KS情報科学専門書) PytorchでQ学習からA2Cまで実装 わかりやすい ただこれだけだと内容は薄い Kerasで各種アルゴリズム実装 強化学習についてかなり網羅的 に収録 ただコードは難解 KerasでREINFORCEから最適化問題な ど 強化学習の応用まで収録 アルゴリズムの説明がわかりやすい

Hinweis der Redaktion

  1. 価値関数 Eは方策πに従うエージェントが所与のMDPに従って状態遷移して得られるすべての行動履歴についての期待値を意味します。 この価値関数を再帰的に解くのがベルマン方程式 この価値関数はある状態の価値 ある状態sが与えられた時の最適な行動aを知りたい→行動の価値を行動価値関数によって定義 時刻tのときに方策πに従わず、行動aをとる その後は方策に従う よって方策πの重みづけの項は1となる ここで価値関数のベルマン方程式は、状態sと行動aを引数とする関数を方策πで重みづけして足し上げている
  2. エージェントの方策評価、方策改善の機能を二つに分ける 方策を改善、方策πに従って行動Atを行う→Actor 方策の評価をしてActorを改善する→Critic Actorのモデル化として、連続値問題の例としてガウス方策 多次元正規分布として定義されるガウスモデルを用いる。
  3. Criticが価値関数をパラメータωによる関数近似でモデル化し、ActorがCriticによる方策評価をTD誤差として受け取って方策勾配法により方策改善を行う
  4. #NNの大きさ変更 python main.py run 0713_ppo_pendulum --env Pendulum-v0 --algo ppo --steps 200 --epochs 3000 python main.py run 0713_ppo_pendulum_NN_4 --env Pendulum-v0 --algo ppo --hid 32 --l 1 --steps 200 --epochs 3000 #報酬の割引 python main.py run 0713_ppo_pendulum_gamma_1 --env Pendulum-v0 --algo ppo –-gamma 0.9 --steps 200 --epochs 3000 python main.py run 0713_ppo_pendulum_gamma_1 --env Pendulum-v0 --algo ppo –-gamma 0.99 --steps 200 --epochs 3000 #PPO-Clip(ソースコード変更) python main.py run 0713_ppo_pendulum_clip_1 --env Pendulum-v0 --algo ppo --steps 200 --epochs 3000 python main.py run 0713_ppo_pendulum_clip_3 --env Pendulum-v0 --algo ppo --steps 200 --epochs 3000 #価値関数の学習率 python main.py run 0713_ppo_pendulum_vf_1 --env Pendulum-v0 --algo ppo --steps 200 --epochs 3000 python main.py run 0713_ppo_pendulum_vf_3 --env Pendulum-v0 --algo ppo --steps 200 --epochs 3000 #方策の学習率 python main.py run 0713_ppo_pendulum_pf_1 --env Pendulum-v0 --algo ppo --steps 200 --epochs 3000
  5. python -m spinup.run ppo --env Pendulum-v0 --exp_name 0713_ppo_pendulum_clip_1 --steps_per_epoch 200 epochs 3000 --clip_ratio 0.1
  6. python -m spinup.run ppo --env Pendulum-v0 --exp_name 0713_ppo_pendulum_clip_1 --steps_per_epoch 200 epochs 3000 --clip_ratio 0.1
  7. python -m spinup.run ppo --env Pendulum-v0 --exp_name 0713_ppo_pendulum_clip_1 --steps_per_epoch 200 epochs 3000 --clip_ratio 0.1
  8. python -m spinup.run ppo --env Pendulum-v0 --exp_name 0713_ppo_pendulum_clip_1 --steps_per_epoch 200 epochs 3000 --clip_ratio 0.1
Anzeige