強化学習のセミナーに参加してみた

概要

東大の松尾研究室が主催しているスプリングセミナー2021深層強化学習に参加してみました。正確には2021/3/13現在参加中です。

松尾研のセミナーは初めて参加しました。参加する前は各分野のイントロを速習し、分野に対する馴染みを持とうというレベルだと思っていました。しかし実際には、2019-20年の論文の成果など、最新の潮流も踏まえた授業になっていて、(深層)強化学習に入門しつつも、最新の流れがどのようなものかを把握できるものになっていました。参加して非常に満足しています。

 

内容

セミナーは全6回の授業と、最終プロジェクトから構成されています。

各授業は講義パート+演習パートから構成されています。

演習パートでの実装は全ての講義が終わり次第整理する予定。

 

第1回

  • 強化学習: Agentが環境で得る報酬の総和(収益)を最大化する方策を学習する. その目的関数として、価値関数がある。
  • 状態価値関数 V_π(s) = E_π[R_{t+1} | S_t = s] : ある状態sから方策πに従って行動した場合に得る収益の期待値
  • 行動価値関数(Q関数) Q = E[R_{t+1} | S_t = s, A_t = a] : ある状態sで行動aを行い、その後方策πに従った場合に得る収益の期待値
  • 方策 π(s|a): ある状態sで行動aを選択する確率
  • ベルマン方程式: 価値関数の定義から導かれる再帰的な式。ある方策πの下での状態・行動ペアに対して価値関数を求められる。->方策を評価できる
  • モデルベース強化学習: 環境モデル(遷移関数・報酬関数)が明らかな場合、それをベースに方策を学習する
  • モデルフリー強化学習: 環境モデルを持たず、環境からサンプリングして方策を学習
  • On-Policy: 学習対象の方策と同じ方策で得た経験を用いて方策を改善する。学習は安定するが、更新前の方策でのサンプルを捨てることになり、サンプリング効率は悪い。
  • Off-Policy: 挙動方策で得た経験を、学習対象の方策の改善に使う。過去の方策でサンプルした経験を使えるのでサンプリング効率が良い。その代わり学習は安定しづらい。
  • 各手法(TD学習、Q学習、SARSA)
  • 状態空間が連続な場合、極めて大きい場合、関数近似を行う(方策・価値関数共に)-> 関数近似器としてのDNN
  • 方策を関数近似する手法として、方策勾配法。方策をパラメトライズし、その方策からなる目的関数を勾配法で最適化する。
  • 方策勾配定理: 方策勾配を別の形で書き表した定理。ここからREINFORCEとActor-Criticの2手法を得る。
  • REINFORCE: 方策勾配中のQ関数を収益Rでそのまま置き換える。Rの分散を抑えるためにベースラインb(定数)を引いたR - bで置き換える。
  • Actor-Critic: 方策勾配中のQ関数を、パラメトライズした価値関数の近似器で置き換える。方策を表現するモデル(Actor)と価値関数を表現するモデル(Critic)の両方を同時に学習するため、Actor-Criticという。
  • Actor-Criticの手法(DPG, DDPG, A3C, SAC(強い)など)
  • DQN: DNNをQ関数の近似器として用いる。過去の経験をReplay Bufferに保存しておき、学習の時にバッファからランダムに経験を選んでミニバッチ学習を行う。これをExperience Replayという。
  • Prioritized Experience Replay: バッファ中の経験に対して、TD誤差が大きいものに対して高い優先度を割り当てる。

 

最終プロジェクト

まだ

期間がかなり限られているので大きなものはできませんが、ペンシルベニア州立大学らによるリソースを活用して、強化学習の交通信号制御への応用をやろうと思っています。ラズパイとかArduinoとかでロボット学習や自動運転の実機デモなんかができればよかったですが、期限的に厳しそう...

traffic-signal-control.github.io