機械学習とかコンピュータビジョンとか

CVやMLに関する勉強のメモ書き。

OpenAIのSpinning Upで強化学習を勉強してみた その2

はじめに

OpenAIが提供するSpinning Upで深層強化学習の勉強をしたのでメモその2.今回勉強した内容はこちら

Taxonomy of RL Algorithms

RLアルゴリズムを手法ごとに分類しようというもの.Part2のページに木構造でいい感じにまとめた図がある.Part 2の目標として各アルゴリズムが何をどのように学習しているか,アルゴリズムの長所と短所,最近のアルゴリズムをここでの枠組みに当てはめられるようになることの三点.

Model-Free vs Model-Based RL

RLアルゴリズムを分類する上で最も重要な点の一つが,エージェントが環境のモデルを参照もしくは学習するかどうか.ここでの環境のモデルというのは状態遷移と報酬を予測する関数を意味する.

環境モデルを利用する方法は,エージェントが行動を選択した結果何が起こるかを見て計画を立てるというもの.有名な例としてはAlphaZeroがこのアプローチを利用している.将棋や囲碁のようなボードゲームでは指し手を数手先まで予想してから行動を決定する.これが行動の結果を見るということ.

逆にモデルを持たない方法は環境の真のモデルをエージェントは利用できない.仮に利用したいと思う場合には学習して獲得する必要がある.ただ学習することの大きな課題として,学習して得られた環境モデルのバイアスをエージェントが直に受け取ってしまうという点.そのため実環境においてパフォーマンスを大きく低下させる場合がある.基本的にモデルの学習は困難で,大量の時間と計算リソースを費やす必要があるとのこと.

モデルを利用するアルゴリズムをmodel-based methodsといい,その逆をmodel-free methodsという.model-freeはモデルから得られる潜在的な利得を諦める代わりに実装が単純という利点があり,今自分が読んでるpart2執筆時点ではmodel-free methodsが広く使われているということ.

What to Learn

もう一つのアルゴリズム分類基準として何を学習しているかという点がある.学習対象の候補としては以下の4つ.

・policies

・action-value functions (Q関数)

value functions

・environment model(環境モデル)

What to Learn in Model-Free RL

Model-free RLには主に二つのアプローチが存在.

Policy Optimization

Policy \pi_\theta(a|s)を学習する方法.J(\pi_\theta)を直接または間接的に最大化することで\thetaを最適化する.この最適化はほとんどがon-policyとして行われ,実際行動した結果集められたデータを利用して最適化が行われる.また,policy optimizationは普通on-policy value function V^\pi(s)を近似するV_\phi(s)の学習も含む.

Policy optimizationの例として勾配上昇法を利用して直接最大化するA2C/A3CやJ(\pi_\theta)を上昇させるような代わりとなる目的関数を最適化するPPOアルゴリズムなどがある.

Q-Learning

Optimal action-value function Q^\ast(s,a)を近似するQ_\theta(s,a)を学習する方法.Bellman方程式に基づく目的関数を利用するのが一般的.最適化はoff-policyで行われ,エージェントの振る舞いに関わらず任意の時点で得られたデータを使って最適化が行われる.Q-learningによって選ばれる行動は次のように与えられる.

\displaystyle
a(s)=\underset{a}{\mathrm{argmax}}Q_\theta(s,a)

Q-learningの例としてはDQNやC51がある.

Trade-offs Between Policy Optimization and Q-Learning

Policy optimizationの強みとしては,目的に対して直接的に最適化を行うことができるという点.対して,Q-learningはself-consistency equationを満たすようにQ_\thetaを学習することによってエージェントの振る舞いを間接的に最適化するだけで成り立っているため,学習に失敗しやすい.ただ,Q-learningはpolicy optimizationに比べサンプルを効率的に収集/再利用可能なためデータ量において利点がある.

What to Learn in Model-Based RL

Model-free RLと比べてmodel-based RLには簡単な分類手段がないとのこと.ここではいくつかの例をあげる.

Background: Pure Planning

多くの基本的なアプローチはpolicyを陽に表現することはなく,代わりに行動選択のためにmodel-predictive control (MPC)のようなpure planning techniquesを使う.MPCでは,エージェントが環境を観測するたび,モデルに従って最適な行動を選ぶ.この時,現時刻からある固定長先の時刻までの間で取ることができる全ての行動を記述することで最適な行動を選ぶ.将棋や囲碁でいうと,5手先までの選択肢を全て列挙して最適な指し手を選ぶというところ(これが俗に言う水平線効果を生じさせる原因?).

Expert Iteration

Pure planningを単純に改変しようとするとpolicy \pi_\theta(a|s)を陽に表現または学習して獲得するという方法が考えられる.エージェントはモデルを利用したplanning algorithmを使うことで現在のpolicyからサンプリングすることで行動の候補を生成する.この生成された行動はpolicyのみで選択された行動より良い行動となる.そのためこのpolicyに対して"expert"と呼ばれ,policyはplanningアルゴリズムの出力,すなわちexpartのような行動をするように学習されていく.

Data Augmentation for Model-Free Methods

これはpolicyもしくはQ関数を学習するためにmodel-free RLを使うものだが,エージェントの更新においてシミュレーション結果を現実のものとして拡張する(これがどう言う意味かはいまいちわからなかった.),もしかはシミュレーション結果のみを使ってエージェントの更新を行う.

Embedding Planning Loops

もう一つのアプローチとしてはplanning procedureをpolicyとして利用するというもの.この方法はモデルのバイアスを減らすことが可能とのこと.

まとめ

ざっくりとRLのアルゴリズムを分類.各分類ごとに手法の例が示されていたので適当に論文も読んで勉強して行きたい.