近年話題の機械学習ですが、機械学習は大きく教師あり学習、教師なし学習、強化学習の3つに大別されます。教師あり学習は入力と出力(教師データ)のペアを与え、それらの関係を学習させる手法であり、教師なし学習は入力のみを与えて入力データから構造を見つけ出す、というようなものでした。強化学習はこれらのいずれとも異なる、反復試行を繰り返す学習方法です。この記事では強化学習の基礎的な内容について、体系的に解説していきます。
Contents
強化学習とは? 〜試行錯誤するAI〜
強化学習はゲームAIやロボット制御など、幅広い分野で応用されているアルゴリズムです。我々人間は知らない物事に対しては、まず触ってみたり試行を通じて学びます。この、試行を通じて学ぶということをアルゴリズムとした学習方法が強化学習です。
例えば、強化学習を用いずに二足歩行ロボットを歩かせる場合には、まず右足をある角度である高さまで上げて…といった具合に一つ一つルールに沿って計算する必要があり、そのようなルールを一つ一つ記述するのは大変です。関節や足の数が増えるとますます困難になります。一方、強化学習の場合にはロボットにまず適当な行動をさせ、ロボットが望ましい行動をとったときに報酬を与えます。得られる報酬が大きくなるまでこのような試行を何度も繰り返すと、次第にロボットはどのように行動すれば報酬が大きくなるかを学習していきます。つまり、自然と歩き方を学習していくというわけです。
強化学習の定式化
基本的な用語説明
次に、強化学習の基本的な用語について説明します。強化学習は、以下の図のような環境における問題として設定されます。すなわち、行動の主体であるエージェント、行動によって変化する環境とが存在します。エージェントは環境に対して何らかの行動を行い環境を変化させます。すると、環境は変化した後の状態と行動に応じた報酬をエージェントに返し、エージェントは受け取った情報を元に次の行動を決めます。
ここで、受け取った情報から次の行動を決めるモデルのことを方策と呼びます。方策は得られる報酬が大きくなるように試行錯誤を通じて改善されます。この試行錯誤により方策を改善するサイクルを、得られる報酬が大きくなるまで繰り返していくことになります。
以下では、説明に用いる変数として状態$s \in S$, 行動$a \in A$, 方策$\pi$, 報酬$r \in R$を用いることとします。

また、ルールがなにも無い環境では定式化が困難になるため、強化学習では基本的に環境がマルコフ決定過程(MDP)に従うものと仮定します。マルコフ決定過程とは、以下の式のように、未来の状態が現在の状態と行動のみによって決まる、とするものです。ここからは少し数式が多くなりますが、この記事はあくまで基礎の解説なので気楽に読み進めてください。
価値関数
強化学習では報酬が大きくなるような行動を選ぶように方策を改善していくわけですが、報酬は行動をとった直後に得られる即時報酬と、ある行動をとった数ステップ先で得られる遅延報酬とがあります。例えば、二足歩行ロボットが目的地に向かう場合を考え、ある行動をしてロボットが前に進んだらもらえる報酬(即時報酬)と、目的地にゴールすればもらえる報酬(遅延報酬)がある場合、各ステップでのロボットの関節を動かすという行動をとってすぐに遅延報酬が得られるわけではありません。しかし、最終的にはゴールにたどり着いてほしいはずです。

このように、即時報酬だけを最大化するのではなく、長期的に見て最も報酬が大きくなるような行動を選択してほしいのです。したがって、即時報酬だけでなく、その後得られる報酬も全て足し合わせた収益を最大化する必要があります。収益をGtとすると、
のように表せます。ここで、γは割引率と呼ばれ、この数値が大きければ未来の報酬の値も大きくなるため、未来の報酬をどれくらい考慮するかを表します。また、収益さえ最大化すればよいのか、というとそう単純な話でもありません。得られる報酬は方策によって変わってきます。
そこで、ある方策πを採用し、ある状態sに置かれているときの収益の期待値を最大化することを考えます。この「ある方策π、状態sにおける収益の期待値」のことをその状態がどれくらいよいか(=価値)、すなわち状態価値関数と呼びます。状態価値関数はその名の通りある状態に置かれているときの価値を表します。よって、この状態価値関数を最大化するような方策を求めればよいわけです。状態価値関数は以下のように表せます。
また、エージェントがある状態sにおかれているとき、行動aをとった場合の収益の期待値が必要となることもあります。この期待値のことを行動価値関数( $Q_{\pi}$ )と呼びます。行動価値関数は、ある状況である行動をとることの価値を表します。
さらに、価値関数を式変形して使いやすい形にすることも考えます。状態価値関数は以下のような式変形を行うことで、ベルマン方程式と呼ばれる形にすることができます。この形にするといろいろ都合がいいのです。
この形はつまり、現在の価値が「次の行動で得られる即時報酬」と「次の状態の価値」で表せるという強化学習の根幹を表しており、これが多くの強化学習アルゴリズムの基礎になっています。また、行動価値関数も同様に、式変形を行うことでQに対するベルマン方程式を導出することができます。
このようなベルマン方程式の形にすることで、ある状態における価値を次の状態における価値に結び付ける、すなわち再帰的な式で表すことができます。
最適方策と最適価値関数
強化学習では、長期的な報酬を最大化するような方策を試行錯誤を通じて見つけ出すと説明しました。どのような方策が良いかは、価値関数の大小によって方策の良し悪しを比較することで判別できます。例えば、すべての状態 $s$ について
のとき、$\pi$ の方が $\pi_0$ よりも優れているということになります。したがって、最適な方策とは状態価値関数が最も大きくなるような方策ということになります。このような状態価値関数を最適状態価値関数と言います。
同様に、最適行動価値関数は以下のように表されます。
強化学習アルゴリズムの分類
大枠となる強化学習の説明をしてきたことで、強化学習とは環境との試行錯誤を通じてよりよい方策を見つけるものであること、そしてそれがどのように定式化できるかが理解できたと思います。
ここで、強化学習手法はどのように最適な方策を求めるかによってモデルベース型とモデルフリー型、そしてオンポリシー型とオフポリシー型に分類することができます。これらの分類について見ていきましょう。
モデルベース型とモデルフリー型
簡単に言うと、モデルベース型は環境のモデルを構築し、そのモデルを用いて強化学習を行う手法です。ここでいう環境モデルとは、マルコフ決定過程の説明で出てきたような変数間の関係を表すモデルや報酬モデルのことです。環境の動作を表現したシミュレータのようなものだと思って下さい。例えば、状態遷移のモデルはp(s’|s)のように表されますが、モデルベース強化学習ではこのようなモデルをあらかじめ構築し、その情報を使って学習します。モデルベース型はモデルフリー型に比べ、シミュレートしたデータで学習していることになるので、環境と直接やり取りすることなく様々な行動を計画・評価できるという利点があります。

一方、モデルフリー型は簡単に説明すると通常の強化学習のことで、観察された状態、行動、報酬から完全に学習するため、実際にエージェントが行動して状態、行動、報酬などの経験を蓄積しその経験から学習することになります。環境のモデルが必要ないため、実装がモデルベース型よりも楽という利点があります。モデルフリー型では経験を蓄積してその経験から学習することになりますが、最適な行動を求めることを優先するか(活用)、それともいろいろな行動を行って様々な経験を蓄積することを優先するか(探索)がトレードオフの関係にあります。これを探索と活用のトレードオフと言います。
オンポリシー型とオフポリシー型
オンポリシー型とオフポリシー型はモデルフリー型からの分類です。オンポリシー型では現在の方策(ポリシー, policy)に従って経験を蓄積し、方策を評価あるいは改善します。つまり、経験の蓄積に使用される方策=最適化される方策です。
一方、オフポリシー型では行動方策(経験を蓄積する方策)と目標方策(最適化される方策)とが別々です。こうすることで何が良いのかと言うと、最適な方策を学習しながらも、いろいろな経験を蓄積することが可能になります。経験を蓄積する方策と最適化される方策とが同じだと、だんだん行動が偏り蓄積される経験も偏ってしまいますが、オフポリシー型なら経験を蓄積する方策と最適化される方策とが異なるため、その問題を解決できるわけです。つまり、現在の方策だけでなく任意の方策によって生成されたデータから学習できるため、非常に柔軟でサンプル効率が高いです。しかし、オンポリシー型に比べると、行動方策と目標方策とが大きく乖離すると学習が不安定になってしまうという問題もあります。
ここまでをまとめると、以下のような分類になることがわかります。

価値ベース型と方策ベース型、Actor-Clitic型
強化学習はさらに価値ベース型、方策ベース型とにも大別することができます。価値ベース型は収束するまでベルマン方程式などに基づいて「価値関数を学習してから」最適な方策を求める形式です。一方、方策ベース型は明示的に価値関数を学習せず、「直接方策を最適化」します。具体的には、方策モデルをニューラルネットワークで実装し、そのパラメータを期待報酬の勾配に従って最適化するといった具合です。また、Actor-Critic型のように、価値ベースと方策ベースを組み合わせたハイブリッド型も存在します。
具体的な強化学習アルゴリズム例
具体的な強化学習アルゴリズムとして、基本的なものであるQ学習とSARSAを取り上げます。他にも様々なアルゴリズムがありますが、今回は紹介しません。
Q学習
Q学習は強化学習における「価値を学習する」という概念を最もシンプルに体現した基本的なアルゴリズムです。行動価値(Q値)を一覧表(Qテーブル)に記録し、その表を更新していくことで最適な行動を学びます。分類としては価値ベース型、モデルフリー型、オフポリシー型に相当します。数式では、以下のようにQ値を更新していきます。
SARSA
SARSAはQ学習と非常によく似ていますが、Qテーブルを更新する際に「次に行動する予定の行動」を使って更新します。つまり、価値ベース型でモデルフリー型なのはQ学習と同じですが、オンポリシー型ということです。Q値の更新式はQ学習と似ていますが、遷移後の行動At+1から計算されるQ値を目標にしていることがわかります。
まとめ
本記事では、強化学習の基礎的な内容について解説しました。
- 強化学習とは何なのか
- どのように定式化できるのか
- アルゴリズムはどのような分類があり、具体的にどのようなアルゴリズムがあるのか
を理解できるとよいでしょう。この記事で基礎的な内容を理解した後は、実際に手を動かして簡単な強化学習のコードを書いてみたり、興味を持ったアルゴリズムについてより詳しく調べてみたり、逆強化学習などの別のトピックについても調べてみるとよいでしょう。





