UC Berkeleyの深層強化学習コース(CS294)のまとめノート
次世代システム研究室のL.G.Wです。今回は、最近勉強したUC Berkeleyの深層強化学習コースを纏めて紹介させていただきます。コースの講義内容は、UC Berkeleyのウェブサイトで公開され、さらにレクチャビデオもYoutubeからアクセスできます。コース全部は24コマですが、ここでは、下記のアウトラインに示した章節に分けて解説します。
アウトライン
- 強化学習の定義、目的関数、基本構造、各種アルゴリズム マルコフ決定過程の視点から強化学習の概念とNotationを定義し、ゴールと基本構造も解説し、さらによく利用されるアルゴリズムを軽く触れる。
- Policy Gradientベースのアルゴリズム Policy Gradientを利用し、強化学習のゴールにどう至るか。この方法の欠点(High Variance)と改善対策(Importance Sampling)。
- Actor-Criticモデル Policy Gradientの欠点を克服するため、Critic役を導入する。Actir-Criticモデルのアルゴリズム詳細と応用。
- Value関数ベースのアルゴリズム(Value function) Value関数のみを学習して、状態のValueからPolicyを決定すると、どうなるか?
- Advanced Q-learning 深層ニューラルネットワークを活用し、状態と動作のQ値を学習する。学習性能改善のトリックも。
- モデルベースのアルゴリズム(Model-based) 状態遷移のダイナミクスをモデリングし、そのモデルからPolicyを決定する強化学習方法。
- 模倣学習(Imitation Learning) Expertの行動を効率よく学習する(Guided Policy Search)。
- 逆強化学習(Inverse Reinforcement Learning) Rewardを明確に定義できない場合、Reward自体を学習する。これを逆強化学習と呼ぶ。
- 探索と活用のトレードオフ(Exploration and Exploitation) Multi-arm BanditやPosterior Matchingなどを利用することで、より良いRewardを得られる。
- 転移学習(Transfer Learning and Multi-task Learning) 転移学習を用いてニューラルネットワークの一部を再利用することで、一つドメインで学習したPolicyを複数ドメインで共有する
- メタ学習(Meta Learning) 学習のコツを学習するのは、メタ学習。(Learning to learn)
強化学習のイントロ
定義
強化学習は、Markov Decision Process(MDP)により、厳密に定義された。MDPには、四つの要素から定義される:(1)S=状態空間、(2)A=動作空間、(3)T=状態遷移確率、(4)r(s_t, a_t)=報酬関数。実世界には、状態を直接計れい問題も存在する。あるシグナルを観測して状態を推定すること、Partitially Observed MDPと呼ぶ。POMDPには、さらに2つ要素が定義される:(5)O=観測空間、(6)E=ある状態からシングルを観測できる確率。強化学習は、その上にPolicyを追加する。Policyとは、ある状態において、最適な動作を決める関数である。下図は、強化学習のプロセスを示してある。

ゴール
あるPolicyに基づき、状態s_tに動作a_tを選択し、次の状態s_t+1に遷移して、またPolicyで次の動作a_t+1を決める。これを繰り返して、学習データを構築する。このプロセスは生成モデルのように、下記の式で確率分布として定義される。

アルゴリズム
学習アルゴリズムは、大体4つに分類される:(1)Policy Gradient:上記の目的関数を直接微分してPolicyを求める。
(2)Value関数:状態の値関数、又は状態と動作のQ値を推定する。(明確なPolicyを作らない)
(3)Actor-critic:上記(1)と(2)の組み合わせで、Value関数を推定し、それを用いて、Policy関数を改善する。
(4)Model-based:状態間のダイナミクス(遷移確率)をモデリングし(つまり、環境を学習する)、そのモデルのParameterを推定した上で、Policy関数を改善する又は最適計画に直接使う。

Policy Gradient
Policy Gradient法は、一般の教師あり学習と類似して、目的関数の微分(Policy Gradient)を計算し、このGradientに沿ってPolicy関数のParameter(θ)を最適化する方法である。下図のように、目的関数(またはコスト関数)J(θ)を微分し、右上の同値Equationを代入して、微分式をLog方式に変形する。Log関数になると、積算を足し算になることで、計算が大変容易になる。



Actor-Criticモデル
Actor-Criticモデルを紹介する前に、状態及び状態-動作のValue関数を定義する。下記のQ関数は、状態s_tから終了まで取得できる報酬である。下記のV関数は、Q関数の同時周辺分布で、つまり、動作a_tと関係せず、状態s_tのみに依存するすべての動作の平均報酬である。下記のA関数(Advantage関数)は、特定動作a_tを選んだ場合、平均報酬よりどのくらい優位差があるか、つまり、Q関数とV関数の差である。そして、前節のPolicy Gradientに定義した目的関数(J(θ))をA関数で置き換える。この場合は、V関数は前節のbに相当することになる。

最終的に、Actor-Criticモデルは下記のアルゴリズムで実現する。バッチモードは、一回複数サンプルを生成し、それらのサンプルの報酬からVφ(s_t)をNeural Networkで近似する。さらに、未来の報酬は、現在の状態と動作に反映すべきではあるものの、割引係数で計上するのは合理的なので、Step 3のように、A関数を計算する。そして、目的関数(コスト)を計算して、微分でPolicyパラメータθを更新する。


未来の報酬はすべて現在状態のV関数に影響するので、Varianceが高くて、収束が遅くて、精度が低い。それを改善するため、下記のように、A関数を、n stepまでしか計上しないようなアルゴリズムが提案された。

Value関数法
まずは、A関数の定義を振り返る:A(s_t, a_t)はPolicy πに従い、動作a_tがほかの動作よりどのくらい有利な報酬が得られるかを表す。もし、A関数が分かれば、下記のルールでPolicy π’を作れば、必ず元Policy πより、よい動作(トータル報酬が高い)を決めることができる。そうすれば、Policy πを求める必要はなく、Policy Gradientを忘れても良い。その場合、A関数を求める必要があるが、前節にも述べたように、A関数はV関数を通して計算できるので、結局、V関数のみ近似すれば、Policy πが明確に求められなくてもいい、ゴールに到達するわけ。これを、Value関数法と呼ぶ。


実は、もしQ関数を近似すれば、Value関数の学習も行わずにすむ。これを、Q関数反復法(又はQ-learningと呼ぶ)。下記のように、Q関数のφを最適化するため、収集したサンプルから、現在のQ_φを利用して、yを計算し、現在状態のQ関数とyの差をなるべく小さくする。

また、上記は、Q関数をFittingする方法で近似化するが、下記のように、Q関数の微分でParameter φを近似化していく方法もある。ただ、これは、目的関数の微分ではないので、Gradient Descentとはいえない。それでも、Value関数の学習理論により、Q関数の微分でも確実にParameterの学習が収束していくことが証明されている。


今回紹介する内容以上で、次回は高度なQ-learning手法を始めとして、より最新な内容を解説します。
次世代システム研究室では、ビッグデータ解析プラットホームの設計・開発を行うアーキテクトとデータサイエンティストを募集しています。ご興味を持って頂ける方がいらっしゃいましたら、ぜひ 募集職種一覧 からご応募をお願いします。
皆さんのご応募をお待ちしています。