読書記録 ゼロから作るDeep Learning 4 強化学習編
0. この投稿の概要
- ゼロから作るディープラーニングの新作、強化学習編を読んで学んだことをまとめます。ご存知の方が多いと思いますが、このシリーズは可能な限りライブラリを使わずにディープラーニングを実装しながら理解を深めていく構成になっています。
- 本書のサポートページにコードは公開されているため、この投稿には特にコードを載せていません。トピックの箇条書きになって読みづらいと思いますが、購入の際の参考になれば幸いです。
1. 各章の概要
1章 バンディット問題
2章 マルコフ決定過程
3章 ベルマン方程式
- 決定論的ではない場合、状態価値関数を手計算で求めるのが困難になる。この場合現在の状態の価値関数と次に取りうる状態の価値関数の関係性を示すベルマン方程式を用いる。
- 特に最適方策を考える場合は方策は決定論的になるためベルマン方程式は簡略化される。
- ベルマン方程式により、価値の連立方程式が得られる。それを解ければ行動価値を最大にするような方策を得ることができる。
- 本章で行動価値関数(Q関数)が導入される。これは状態価値関数の条件に行動aが追加される。この行動は方策には関係なく任意に決められる。このQ関数を最大化するようにaを選ぶと最適方策が得られる。この場合環境のモデルに依存しないで方策を求められるので、後ほど環境のモデルが未知の場合はQ関数を主に使っていくことになる。
4章 動的計画法
- ベルマン方程式で得られた連立方程式を解く方法は状態が増えると途端に解くのが困難になる。本章では3×4のグリッドワールドの問題に取り組む。
- 動的計画法(DP)はベルマン方程式の価値関数を推定値に置き換える。適当な初期値を与えて反復計算することで、真値に近づく反復方策評価。
- 価値の評価と方策の改善を繰り返して最適方策を得る方策反復法(Policy Iteration)。方策の改善ではその時点での各状態の価値関数を最大にするように決定論的な方策を選ぶ。
- 評価と改善をそれぞれ最大限行うことを繰り返す方策反復法に対して、それぞれ最小限だけ行うのが価値反復法(Value Iteration)。状態1つ毎に評価と改善を行う。評価と改善で現れる式はほとんど同じであることから、価値反復法は価値の更新式の1つにまとめられて実装もシンプルになっている。
5章 モンテカルロ法
- DPでは環境のモデル(状態遷移関数、報酬関数)が既知であることが前提だった。モンテカルロ法はエージェントが環境とやり取りを繰り返して得た経験から価値関数を推定する。
- 方策評価はエージェントの各ステップ毎に状態、行動、報酬を記録しておき、エピソードが終わったらそれを使って価値関数を計算する。
- 方策制御はε-greedy法を用いる。完全なgreedyでは行動が固定されて同じ経験しか得られないため。また、方策が更新されていくため価値関数は指数移動平均を用いて得る。
- これまでは評価と改善の対象となるターゲット方策と、エージェントが実際に行動を起こす際に使われる挙動方策を区別しないでいた。挙動方策に探索をさせ、ターゲット方策に活用させる手法を方策オフ型という。この時異なる分布からサンプルしたデータを使うため、重点サンプリングを用いる。
6章 TD法
- モンテカルロ法はエピソードの終わりにたどり着かないと更新できないという欠点がある。TD法はサンプリングしたデータを元に価値関数を更新するが、エピソードの終わりをまたずにnステップ先の情報を使って逐次更新する。
- 方策制御はSARSAが使われる。方策を決める際は環境モデルが必要でないQ関数を更新していく。1ステップ先の情報を用いるため、更新に必要なのはSt,At,Rt,St+1,At+1でありこれがSARSAの名前の由来になっている。方策オン型の場合は探索を行うためにε-greedy法を用いる。
- 方策オフ型の場合は重点サンプリングを組み合わせるが、結果が不安定になりやすいという弱点がある。これを解決するのがQ学習。SARSAでは方策からサンプリングされたQ関数をターゲットに更新していたのに対し、Q学習ではQ関数の最大値をターゲットにする(方策に依存しない)ので、重点サンプリングによる補正が不要。
- エージェントの実装方法は分布モデルとサンプルモデルがある。分布モデルでは行動の確率分布を明示的に保持するが、サンプルモデルでは分布を保持せずに行動を選択する場合はQ関数を最大化する行動をサンプリングする。
7章 ニューラルネットワークとQ学習
- 状態と行動のサイズが大きくなるとQ関数をテーブルとして保持してそれを更新することが困難になる。これを解決するためにQ関数をディープラーニングで近似する。
- グリッドワールドの問題をNNベースのQ学習で定式化。状態はone-hotベクトルで表し、NNは状態を入力にして行動の候補の数だけQ学習を出力する。
- Q学習における更新のターゲット(Rt+γmaxQ(St+1,a))を教師データとする回帰問題と考えることができる。
8章 DQN
- 取り組む問題はOpenAI Gymのカートポール。DQNでは学習を安定させるために経験再生とターゲットネットワークという技術が使われる。
- Q学習ではエージェントの経験を使い学習を行うが、経験は前後のデータに強い相関があり学習データに偏りが生まれる。経験再生では経験を保存しておいて、そこからランダムに学習用データをサンプルすることで偏りを防ぐ。
- DQNにおける正解ラベルであるQ学習のターゲットはQ関数の更新に伴い変動する。これでは学習が安定しないため、ターゲットの値を固定するために重みを更新するネットワークとは別にラベルを生成するためのターゲットネットワークを用意する。
- DQNの拡張:
- Double DQN: 学習のターゲットを2つのネットワークのQ関数を元に設定する。
- 優先度付き経験再生: ターゲットとQ関数の差の大きさを元にサンプルする経験に優先度をつける。
- DuelingDQN: Q関数をアドバンテージ関数+価値関数Vに分けてそれぞれを別のネットワークで学習する。
9章 方策勾配法
- 価値関数を経由しないで方策を直接表す方策ベースの手法も存在する。報酬の総和の期待値を目的関数とし、ニューラルネットワークでモデル化した方策を勾配上昇法で最適化するのが方策勾配法。
- 方策勾配法の改善:
- REINFORCE: 勾配の計算時に、報酬の総和ではなくその時刻以降の報酬Gtだけを考える。それ以前の時刻の報酬は関係ないので。
- ベースライン: 報酬Gtから予測値(ベースライン)を引いたものを使う。ベースラインには価値関数が使われることが多い。これにより、例えばカートポールが絶対に倒れるようなタイミングによる学習をスキップできる。
- Actor-Critic: ベースラインとしてニューラルネットワークでモデル化した価値関数を用いる。価値ベースかつ方策ベースの手法。