デュビデュバの技術ブログ

主に機械学習系の記事を書いていきます。コメント大歓迎です。よろしくお願いします。

Open AI Spinning Up で深層強化学習のお勉強 -Part 1: Key Concepts in RL- [その1]

INTRODUCTION TO RL -Part 1: Key Concepts in RL-

今回のページです。長いので分けます。今回は前半(Key Concepts and TerminologyのThe RL Problemまで)だけ。 spinningup.openai.com

はじめに

INTRODUCTION TO RLで学べる事

  • RLについて議論するための言葉と表記
  • RLアルゴリズムが行うことについての高レベルの説明(どうやってという説明は避けている)
  • アルゴリズムの基礎となる数学(少し)

簡単に言えば、RLとはエージェントと、試行錯誤による学習方法の研究です。エージェントの行動に報酬または罰則を与えることで、今後その行動を繰り返したり行わなくなったりする可能性が高くなるという考えを形式化します。

What Can RL Do?

囲碁とかビデオゲームとかロボット制御とか、いろいろできます。詳しくは上記ページをご覧ください。

Key Concepts and Terminology

エージェントの環境相互作用のループ
Figure 1. エージェントの環境相互作用のループ
図は上記ページから引用。

RLの主なキャラクターは、エージェント環境です。環境は、エージェントが住み、相互作用する世界です。対話のすべてのステップで、エージェントは世界の状態(場合によっては部分的に)を観測し、実行するアクションを決定します。環境は、エージェントがそれに応じて行動するときに変化しますが、単独で変化する場合もあります。

また、エージェントは環境から報酬を与えられます。これは、現在の状態がどれだけ良いか悪いかを伝える数値です。エージェントの目標は、リターンと呼ばれる累積報酬を最大化することです。強化学習は、エージェントが目標を達成するために行動を学習する方法です。

RLをより具体的に説明するには、追加の用語を導入する必要があります。

  • states and observations (状態と観測)
  • action spaces (行動空間)
  • policies (方策)
  • trajectories (軌跡)
  • different formulations of return (リターンのさまざまな定式化)
  • the RL optimization problem (RL最適化問題)
  • value function (価値関数)

States and Observations

状態 sは環境の状態の完全な説明です。環境について隠されている情報はありません。それに対し、観測 oは状態の部分的な説明であり、情報が省略される場合があります。

deep RLでは、ほとんどの場合、状態と観測は実数値のベクトル、行列、または高次テンソルで表されます。たとえば、視覚的な観察は、そのピクセル値のRGBの行列で表すことができます。ロボットの状態は、関節の角度と速度で表すことができます。

エージェントが環境の完全な状態を観測できる場合、環境が完全観測されていると言います。エージェントが部分的な観測のみできる場合、環境は部分的観測されていると言います。これは所謂、完全知覚と不完全知覚の話とは違って、十分か不十分にかかわらず、全体か部分かの話だと思います。

You Should Know

強化学習の記法では観測 oと書いた方が適切な箇所を状態 sと書いてある場合があります。具体的には、エージェントが行動を決定する方法についての記述です。行動は状態を条件に決定されますが( sと記述)、エージェントはしばしば状態にはアクセスできず、観測しか得られないためです(現実的には o)。

Action Spaces

異なる環境では、異なる種類の行動が許されます。特定の環境におけるすべての有効な行動のセットは、多くの場合行動空間と呼ばれます。AtariやGoなどの環境には、エージェントが利用できる動きの数が限られている離散行動空間があります。エージェントが物理的な世界でロボットを制御するような環境には、連続行動空間があります。連続行動空間では、行動は実数値のベクトルです。

この区別は、deep RLのメソッドにとって非常に重要です。環境が離散行動空間か連続行動空間によってアルゴリズムを大きく作り直さなければならない場合もあります。

Policies

方策は実行する行動を決めるために、エージェントが使用するルールです。方策が決定論的である場合、通常は \muを使って次のように表されます。

 a_t = \mu(s_t)\tag{1}

また、確率論的である場合、 \piを使います。

 a_t \sim \pi(\cdot|s_t)\tag{2}

方策は基本的にエージェントの脳なので、「方策」という言葉を「エージェント」の代わりに使用することは珍しくありません。例えば、「方策は報酬を最大化しようとする。」などです。

deep RLでは、パラメータ化された方策を扱います。方策は出力が、一連のパラメータ(例えば、ニューラルネットワークの重みとバイアス)に依存する計算可能な関数であり、最適化アルゴリズムを介して動作を変更するできます。

多くの場合、このような方策のパラメータを\thetaまたは\phiで示し、添え字としてこれを記述して、強調して表示します。


\begin{align}
 a_t &=\mu_\theta(s_t)\tag{3}\\
a_t &\sim \pi_\theta(\cdot|s_t)\tag{4}
\end{align}

Deterministic Policies

例:決定的方策。以下は、Tensorflowで連続行動空間の単純な決定的方策を構築するためのコードスニペットです。

obs = tf.placeholder(shape=(None, obs_dim), dtype=tf.float32)
net = mlp(obs, hidden_dims=(64,64), activation=tf.tanh)
actions = tf.layers.dense(net, units=act_dim, activation=None)

ただし、mlpは、指定されたサイズと活性化関数で複数のdenseレイヤーを互いに積み重ねる関数です。

Stochastic Policies

主に2種類あり、離散行動空間で使えるカテゴリー方策 (categorical policies)と、連続行動空間で使える対角ガウス方策 (diagonal Gaussian policies)です。

確率的方策の使用と訓練には、主に2つの計算が重要です。

  • 方策からの行動のサンプリング
  • 特定の行動の対数尤度の計算  \log\pi_\theta(a|s) 以下では、カテゴリー方策と対角ガウス方策を行う方法について説明します。

Categorical Policies

いったん後回し

Diagonal Gaussian Policies

いったん後回しその2

Trajectories

軌跡\tauとは、環境の一連の状態と行動であり、

 \tau= (s_0,a_0,s_1,a_1,...)\tag{5}

環境の初期状態s_0は、初期状態分布から確率\rho_0でランダムにサンプリングされます。

 s_0 \sim \rho_0(\cdot)\tag{6}

状態遷移(時刻tの状態s_tと時刻t+1の状態s_{t+1}との間に環境に何が起こるか)は、環境の自然の法則に支配され、唯一の直近の行動a_tに依存しています。それらは決定的であれば、

 s_{t+1} = f(s_t,a_t)\tag{7}

確率的であれば、

 s_{t+1} \sim P(\cdot|s_t,a_t)\tag{8}

です。行動はエージェントの方策から得られます。

You Should Know

軌跡は、エピソード(episodes)ロールアウト(rollouts)とも呼ばれます。

Reward and Return

報酬関数R強化学習において非常に重要です。それは、環境の現在の状態、今とった行動、そして次の環境の状態に依存します。

 r_t = R(s_t, a_t, s_{t+1})\tag{9}

多くの場合は現在の状態 r_t = R(s_t)または状態行動対 r_t = R(s_t, a_t)にのみに依存するように単純化されます。

エージェントの目標は、軌跡上の累積報酬を最大化することです。累積報酬はすべてのケースを[tax:R(\ tau)]で表しますが、実際にはいくつかの意味があります。どの意味かは状況からわかるので、表記はあまり重要ではありません。

累積報酬の1つに有限期間の割引なしリターンがあります。これは、一定のステップ数で得られる報酬の合計です。

\begin{align}
R(\tau)=\sum^T_{t=0}r_t\tag{10}
\end{align}

別の累積報酬に無限期間の割引リターンがあります。これは、エージェントがこれまでに獲得したすべての報酬の合計ですが、報酬が獲得される時刻によって割引されます。割引係数は\gamma\in(0,1) です。

\begin{align}
R(\tau)=\sum^\infty_{t=0}\gamma^tr_t\tag{11}
\end{align}

現在得られる報酬の方が、将来得られる報酬よりも大きくなります。つまり、時間が経つにつれて、報酬が減っていきます。数学的には、有限期間のリターンは収束しない場合がありますが、無限期間の割引リターンは、割引係数によって収束します。

You Should Know

これら二つのリターンの違いは明確ですが、実際にdeep RLで用いるとき、使いわけが曖昧に記述されている場合があります。

The RL Problem

リターンの種類や方策の種類に関係なく、RLの目標は、エージェントが期待リターンを最大化する方策を選択することです。

期待リターンについて話すには、まず、軌跡上の確率分布について話す必要があります。

環境の遷移と方策の両方が確率的であると仮定します。この場合、Tステップの軌跡の確率は次のとおりです。

 \begin{align} P(\tau|\pi)=\rho_0(s_0)\prod_{t=0}^{T-1}P(s_{t+1}|s_t,a_t)\pi(a_t|s_t) \tag{12}\end{align}

期待リターンはJ(\pi)を用いて次のように表されます。

 \begin{align}J(\pi)= \int_{\tau} P(\tau | \pi)R(\tau)= \underset{\tau \sim \pi}{\rm E}[R(\tau)]\tag{13} \end{align}

RLの主要な最適化問題は、

 \begin{align}\pi^* = \arg \max_{\pi} J(\pi)\tag{14}\end{align}

と表され、\pi^*最適方策です。

前半まとめ

ボリューミーですね。RLのやっていることは図の通りですし、リターンを最大化したいというのも自然です。RLは、エージェントが方策を徐々に改善していって、リターンが最大になる方策を見つけるということです。Stochastic Policiesのところは後で更新します。

OpenAI Spinning Upの記事一覧 coffee-g9.hatenablog.com