深層強化学習
- 0. 概要
- 1. 強化学習の基礎 — 用語と枠組み
- 2. 価値関数と行動価値関数
- 3. TD学習とQ学習
- 4. DQN — Q学習に深層学習を持ち込む
- 5. 方策勾配法とActor-Critic
- 6. A3C
- シラバス上の位置づけ
- キーワードまとめ
Contents
0.章の概要
深層強化学習は、E資格のなかでもとくにつまずきやすい分野です。理由ははっきりしていて、教師あり学習とは問題の立て方そのものが違うのに、いきなりDQNやA3Cといった手法名から入ってしまうからです。
この章では、シラバスの出題範囲であるDQN(行動価値関数、TD学習、Q学習、Experience replay)とA3C(方策勾配法、Actor-Critic法)を扱いますが、いきなり手法の説明には入りません。「エージェントとは何か」「なぜ価値関数が必要か」という土台から順に積み上げます。遠回りに見えて、これが結局いちばん速く理解できる道筋です。
1. 強化学習の基礎 — 用語と枠組み
前提知識: エージェント、環境、状態、行動、報酬、方策、割引率
※本章はシラバスのキーワードではありませんが、DQN・A3Cを理解するための前提として整理します。
教師あり学習との決定的な違い
まず、ここを押さえないと先に進めません。教師あり学習では、入力に対する正解ラベルが与えられます。猫の画像には「猫」という答えが最初から付いています。
ところが強化学習には正解ラベルがありません。あるのは報酬という「良し悪しの手がかり」だけです。しかもその報酬は、行動した直後にもらえるとは限りません。将棋でいえば、勝敗が分かるのは何十手も指した後です。「どの一手が良かったのか」は誰も教えてくれません。
この「正解が無く、報酬は遅れてやってくる」という状況で、どうやって良い行動を学ぶか——それが強化学習の問題設定です。
登場人物と用語
強化学習は、次の枠組みで表されます。この用語は問題文で当然のように使われるので、確実に押さえてください。
| 用語 | 記号 | 意味 |
|---|---|---|
| エージェント | — | 学習して行動する主体。ゲームのプレイヤーにあたる |
| 環境 | — | エージェントが働きかける相手。ゲームの盤面やルール |
| 状態 | \(s\) | いまの状況。盤面の配置、ロボットの位置など |
| 行動 | \(a\) | エージェントが選ぶ手。「上に動く」「この駒を指す」など |
| 報酬 | \(R\) | 行動の結果として環境から返る数値。良い行動ほど大きい |
| 方策 | \(\pi\) | 「この状態ならこの行動を選ぶ」という行動の選び方のルール |
| エピソード | — | 与えられた環境に対する行動の開始から終了までの期間。将棋なら1局 |
| 遷移確率 | \(P\) | ある状態で行動をとったとき、次にどの状態へ移るかの確率 |
流れとしては、エージェントが状態 \(s_t\) を見て行動 \(a_t\) を選び、環境が報酬 \(R_{t+1}\) と次の状態 \(s_{t+1}\) を返す——これを繰り返します。このやりとりの繰り返しが、強化学習の全体像です。
収益と割引率 — 「将来の報酬」をどう扱うか
エージェントの目的は、目先の報酬ではなく、将来にわたって得られる報酬の合計を最大にすることです。この合計を収益(リターン)と呼び、次のように定義します。
ここで \(\gamma\)(ガンマ)は割引率で、\(0 \le \gamma \le 1\) の値をとります。遠い未来の報酬ほど \(\gamma\) が何度も掛かるので、価値が小さく見積もられます。
なぜ割引くのでしょうか。理由は2つあります。ひとつは遠い未来ほど不確実だから、もうひとつは無限に続く場合でも合計が発散しないようにするためです。\(\gamma\) が0に近いほど目先の報酬を重視し、1に近いほど長期的な視点になります。
探索と活用のジレンマ
強化学習には避けて通れない悩みがあります。
- 活用(exploitation):いまわかっている中で最も良い行動を選ぶ
- 探索(exploration):まだ試していない行動をあえて選んでみる
活用ばかりでは、もっと良い選択肢があっても永久に気づけません。かといって探索ばかりでは、いつまでも成績が上がりません。このバランスを取る必要があります。
よく使われるのが \(\varepsilon\)-greedy法です。確率 \(\varepsilon\) でランダムな行動を選び、残りの確率 \(1-\varepsilon\) で最善の行動を選ぶという単純な方法ですが、実用上よく機能します。式で書くと次のようになります(\(A\) は取りうる行動の数)。
学習が進むにつれて \(\varepsilon\) を小さくしていくのが一般的です。もう一つ、ソフトマックス法という選び方もあります。価値の高い行動ほど選ばれやすくなる確率で行動を選ぶ手法です。
\(T\) は温度と呼ばれるパラメータです。温度が高ければすべての行動がほぼ同じ確率で選ばれ、低くなるほど価値の高い行動が選ばれやすくなります。
モデルベースとモデルフリー
強化学習の手法は、「環境のモデル(遷移確率と報酬の仕組み)を知っているか」で大きく2つに分かれます。
| 分類 | 前提 | 特徴 |
|---|---|---|
| モデルベース | 環境の遷移確率や報酬の仕組みがわかっている | 実際に動かさずに計画を立てられる。ただし現実の問題では前提が成り立たないことが多い |
| モデルフリー | 環境の仕組みはわからない | 実際に行動して得た経験だけから学ぶ。Q学習・DQN・A3Cはいずれもこちら |
本ページで扱う手法はすべてモデルフリーです。環境の内部構造を知らないまま、試行錯誤の経験だけを頼りに学習する——これが深層強化学習の基本的な立場になります。
2. 価値関数と行動価値関数
学習キーワード: 行動価値関数
なぜ「価値」を考えるのか
報酬は遅れてやってくる、という話をしました。だとすると、「いまこの行動を選んだら、最終的にどれくらい得をするのか」を見積もる仕組みが必要になります。それが価値関数です。
状態価値関数 V(s)
状態価値関数 \(V^\pi(s)\) は、「方策 \(\pi\) に従うとき、状態 \(s\) から先で得られる収益の期待値」です。
ざっくり言えば「この局面は有利か不利か」を表す数字です。
行動価値関数 Q(s, a) — E資格の頻出用語
行動価値関数 \(Q^\pi(s,a)\) は、「状態 \(s\) で行動 \(a\) を選び、その後は方策 \(\pi\) に従うときの収益の期待値」です。頭文字をとってQ関数とも呼ばれます。
\(V\) と \(Q\) の違いは、試験で狙われるポイントです。整理しておきます。
| 関数 | 引数 | 意味 | 使いどころ |
|---|---|---|---|
| \(V(s)\) | 状態のみ | その状態の良さ | 局面の評価 |
| \(Q(s,a)\) | 状態と行動 | その状態でその行動をとることの良さ | 行動の選択に直接使える |
ここが重要です。\(Q\) がわかっていれば、その状態で最も \(Q\) が大きい行動を選ぶだけでよいことになります。つまりQ関数さえ正確に求められれば、方策は自動的に決まるのです。この考え方が、次に説明するQ学習とDQNの出発点になります。
ベルマン方程式 — 価値を「分解」する
収益 \(G_t\) の定義をよく見ると、次のように書き直せます。
「いまの報酬」+「割引された次以降の収益」という再帰的な形です。この関係を価値関数に持ち込んだものがベルマン方程式です。ひとことで言えば「価値 = 即時報酬 + 次の状態の価値(割引後)」という期待値の再帰式です。
期待値 \(\mathbb{E}_\pi\) が付いている点が重要です。同じ状態で同じ行動をとっても、遷移確率によって次の状態は1つに定まりません。起こりうる遷移すべてを確率で重み付けした平均をとる、という意味でこの記号が必要になります。
最適な行動を選ぶ場合(ベルマン最適方程式)は、次の状態で最も価値の高い行動を選ぶので、こうなります。
この \(\max\) の部分が、あとで説明するQ学習の核心になります。いまは「次の状態で一番いい行動を選んだ場合の価値」と読めれば十分です。
3. TD学習とQ学習
学習キーワード: TD学習、Q学習
TD学習 — 「最後まで待たずに」学習する
価値を学習する素朴な方法は、1回のエピソードを最後までやりきって、実際に得られた収益で価値を更新することです(モンテカルロ法)。しかしこれには問題があります。終わるまで一切学習できないのです。囲碁なら1局終わるまで、ロボット制御なら課題が完了するまで待つことになります。
そこで登場するのが TD学習(Temporal Difference Learning:時間的差分学習)です。1ステップ進むごとに、その時点の情報だけで価値を更新します。
考え方はこうです。いまの推定値 \(Q(s_t,a_t)\) と、1ステップ進んで得られた「より確からしい推定値」 \(R_{t+1} + \gamma Q(s_{t+1}, a_{t+1})\) を比べ、そのズレを埋める方向に更新します。このズレをTD誤差と呼びます。
更新はこの誤差を使って行います。\(\alpha\) は学習率です。
状態価値 \(V\) について書くと、次の形になります。
この形は「新しい推定値 ← 古い推定値 + 学習率 ×(最新の更新データ - 古い推定値)」という、価値の更新に共通する型です。ちなみにモンテカルロ法では、\(R_{t+1} + \gamma V(s_{t+1})\) の部分がエピソードを最後まで実行して実際に得られた累積報酬(収益) \(G_t\) に置き換わります。
つまり両者の違いは「何を目標値に使うか」です。モンテカルロ法は実際に最後まで進めて得た収益 \(G_t\)を、TD学習は1ステップ先の推定値 \(R_{t+1} + \gamma V(s_{t+1})\)を使います。TD学習のように自分の推定値を目標に使うことをブートストラップと呼びます。モンテカルロ法はブートストラップを行いません。
「自分の推定値を、少し先の自分の推定値で修正する」——これがTD学習の本質です。自分で自分を引き上げるような操作なので、ブートストラップとも呼ばれます。
Q学習 — 方策オフ型の代表
Q学習は、TD誤差の「次の行動の価値」の部分に\(\max\) を使うのが特徴です。
ここが理解の分かれ目です。実際に次に選ぶ行動が何であれ、更新には「次の状態で最善の行動をとったと仮定した価値」を使います。つまり「実際の行動」と「学習に使う行動」が食い違っていてもかまわないのです。
方策オン型と方策オフ型 — SARSAとの比較で理解する
Q学習の性質を理解するには、よく似た手法であるSARSAと比べるのが近道です。SARSAの更新式は次のとおりで、\(\max\) ではなく実際に選んだ次の行動 \(a_{t+1}\) を使います。
Q学習の式と並べると、違いは1箇所だけだとわかります。
| 項目 | Q学習 | SARSA |
|---|---|---|
| 更新に使う次の行動 | \(\max_{a'} Q(s_{t+1},a')\) 最善の行動を仮定 |
\(Q(s_{t+1}, a_{t+1})\) 実際に選んだ行動 |
| 分類 | 方策オフ型(off-policy) | 方策オン型(on-policy) |
| 特徴 | 行動する方策と学習する方策が別でよい | 行動する方策と学習する方策が同じ |
| 性質 | 最適方策に向かいやすいが、探索中は危険な行動もとりうる | 実際の探索行動を織り込むため、より安全側の方策になりやすい |
Q学習が方策オフ型であることは、次のDQNで決定的に効いてきます。「過去に集めた経験を、いまの方策と関係なく再利用できる」からです。
本ページで扱う手法を、この観点で整理しておきます。オンポリシーかオフポリシーかは、そのまま「どんな工夫が使えるか」を決めます。
| 手法 | 分類 | そこから来る帰結 |
|---|---|---|
| Q学習・DQN | 方策オフ型 (off-policy) |
過去の経験を再利用できる → Experience replay が使える |
| SARSA | 方策オン型 (on-policy) |
いまの方策で集めた経験しか使えない |
| A3C | 方策オン型 (on-policy) |
Experience replay が使えない → 並列実行で相関を下げる(6章) |
4. DQN — Q学習に深層学習を持ち込む
学習キーワード: DQN、行動価値関数、TD学習、Q学習、Experience replay
なぜニューラルネットワークが必要になったのか
ここまでのQ学習は、Qテーブル(状態と行動の組ごとに値を持つ表)で実装できます。マス目の少ない迷路なら、これで十分です。
ところが、状態がゲーム画面のような画像だったらどうでしょう。状態の数が天文学的になり、表に持つことは不可能です。しかも、よく似た画面(1ピクセルだけ違う画面など)はそれぞれ別の状態として扱われ、学習した経験がまったく共有されません。
そこでQ関数をニューラルネットワークで近似します。これが DQN(Deep Q-Network)です。入力は状態(画面)、出力は各行動に対応するQ値です。
DQNの損失関数
Q学習の更新式を、ニューラルネットワークの学習(=損失の最小化)の形に置き換えます。TDターゲットを「正解」とみなし、二乗誤差を小さくする問題として解きます。
ここで \(\theta^-\) はTarget Network の重みです(\(\theta\) は学習中のネットワークの重み)。この「教師ラベルにあたる部分」を安定させる工夫が、次に述べる Fixed Target-network です。
ここまで来ると、教師あり学習とほぼ同じ形になっていることがわかります。違いは「正解ラベルが、自分自身の推定から作られている」点だけです。
Experience replay(経験再生) — 最重要キーワード
シラバスにも明記されている、DQNの核心的な工夫です。なぜ必要なのかから理解してください。
強化学習では、経験は時系列で連続して発生します。直前の状態と次の状態はよく似ているため、そのまま順番に学習させるとデータの相関が強すぎて学習が不安定になります。ニューラルネットワークの学習に使う確率的勾配降下法(SGD)が、データは独立同分布(i.i.d.)から得られるという前提に立っているためです。
そこでDQNでは、経験 \((s, a, r, s')\) をリプレイバッファという記憶領域に貯めておき、そこからランダムに取り出してミニバッチ学習します。これが Experience replay です。
| 効果 | 内容 |
|---|---|
| データの相関を断ち切る | ランダムに取り出すことで、時系列の偏りを解消し学習が安定する |
| データ効率が上がる | 1つの経験を何度も再利用できる(1回使って捨てない) |
| 方策の急変を抑える | 直近の経験だけに引きずられなくなる |
これが成立するのは、Q学習が方策オフ型だからです。過去の(いまとは違う方策で集めた)経験でも、学習にそのまま使えます。方策オン型のSARSAでは、同じことは簡単にはできません。この関係は試験でも問われやすいところです。
Target Network(固定したターゲット)
もう一つの安定化の工夫です。損失関数をもう一度見てください。TDターゲットの中にも \(Q\) が入っています。つまり「目標値」も学習のたびに動いてしまうのです。的が動き続ける射撃のようなもので、学習が発散しやすくなります。
そこで、ターゲットの計算には学習中のネットワークとは別に用意した「固定されたネットワーク」(重み \(\theta^-\))を使います。この重みは毎ステップ更新されるのではなく、一定間隔ごとに学習中のネットワークの重みをコピーして同期します。つまり同期と同期のあいだは完全に固定されているため、目標値が動かず学習が安定します。
なお、DQNではこのほかに報酬のクリッピング(報酬を-1〜1に制限する)や、直近数フレームをまとめて入力するフレームスタックといった工夫も使われています。Atariのゲームを題材にした実験では、画面の画像をCNNで処理することで、画像の特徴量を自ら学習できるようになりました。
DQNの発展形
DQNには、その後いくつかの改良版が提案されています。シラバスのキーワードには含まれませんが、名称と「何を改善したのか」はセットで押さえておくと安心です。
| 手法 | 改善した点 |
|---|---|
| DDQN (Double DQN) |
DQNには価値を過大評価してしまう問題があった。最適行動を選ぶQ関数と、その価値を評価するQ関数を分けることで、誤差計算を安定させた |
| Dueling DQN | Q関数をそのまま学ぶのではなく、状態価値と行動のアドバンテージ価値を別々に学習するアーキテクチャにした |
5. 方策勾配法とActor-Critic
学習キーワード: 方策勾配法(Policy Gradient)、Actor-Critic法
価値ベースの限界と、方策を直接学ぶ発想
DQNは「Q値を求めて、それが最大の行動を選ぶ」という方式でした。これを価値ベースといいます。しかし、この方式には弱点があります。
- 連続的な行動が扱いにくい:ハンドルを何度回すかのように行動が連続値だと、\(\max\) を取ること自体が難しい
- 確率的な方策を表現しにくい:「70%で右、30%で左」のような戦略を直接は表せない
そこで、Q値を経由せず、方策そのものをニューラルネットワークで表して直接学習するという発想が出てきます。これが方策勾配法(Policy Gradient)です。方策を \(\pi_\theta(a \mid s)\) と書き、パラメータ \(\theta\) を勾配法で更新します。
方策勾配法の考え方
目的は「期待収益 \(J(\theta)\) を最大化する方策」を見つけることです。勾配は次の形で表されます(方策勾配定理)。
パラメータの更新は通常の勾配法と同じ形です(\(\alpha\) は学習率)。累積報酬を最大化したいので、符号はマイナスではなくプラスである点に注意してください。
その勾配 \(\nabla_\theta J(\theta)\) を求めるのが方策勾配定理です。
2つの式が等しくなるのは、対数の微分公式 \((\log f(x))' = f'(x) \times \dfrac{1}{f(x)}\) によるものです。
式が難しく見えますが、意味はシンプルです。良い結果につながった行動(\(Q\) が大きい行動)は、次から選ばれやすくなるようにパラメータを動かす——それだけです。逆に結果が悪かった行動は、選ばれにくくなります。
なお、損失を最小化する形で実装する場合は符号を反転させます(最大化したいものにマイナスを付ける)。実装コードを読むときに戸惑いやすいポイントです。
Actor-Critic法
方策勾配法には課題があります。\(Q^\pi(s,a)\) の部分を実際の収益で置き換えると(REINFORCE法)、推定のばらつき(分散)が大きく、学習が不安定になるのです。
そこで、価値関数も同時に学習して、方策の更新に使う方式が考えられました。これがActor-Critic法です。名前のとおり、2つの役割が登場します。
| 役割 | 担当 | 学習するもの |
|---|---|---|
| Actor(行動器) | 行動を決める | 方策 \(\pi_\theta(a \mid s)\) |
| Critic(評価器) | その行動を評価する | 価値関数(実装により \(V(s)\) または \(Q(s,a)\) を学習する) |
Actorが行動し、Criticが「その行動は思ったより良かった/悪かった」と評価を返し、Actorはその評価をもとに方策を更新します。Criticの評価にはTD誤差が使われます。
実装では、1つのネットワークが方策と価値の両方を出力する分岐型のネットワークとして作られることが一般的です。途中まで層を共有し、出力の直前で「方策を出す枝」と「価値を出す枝」に分かれる構造です。
評価にはアドバンテージ関数がよく使われます。
これは「その状態の平均的な価値と比べて、この行動はどれだけ良かったか」を表します。基準(ベースライン)からの差分を使うことで、推定の分散が下がり学習が安定します。
6. A3C
学習キーワード: A3C、方策勾配法(Policy Gradient)、Actor-Critic法
A3Cとは
A3C は Asynchronous Advantage Actor-Critic の略です。この名前を分解すると、そのまま手法の説明になります。試験対策としても、この分解を覚えるのが最も確実です。
| 要素 | 意味 |
|---|---|
| Asynchronous (非同期) |
複数のエージェントを並列に動かし、非同期にグローバルなネットワークを更新する |
| Advantage (アドバンテージ) |
方策の更新にアドバンテージ関数 \(A(s,a) = Q(s,a) - V(s)\) を使う |
| Actor-Critic | 方策(Actor)と価値関数(Critic)を同時に学習する |
なぜ「非同期・並列」なのか — DQNとの対比で理解する
ここがA3Cの肝であり、DQNとの最大の違いです。
DQNは、Experience replayでデータの相関を断ち切っていました。しかしこの方式には、大量のメモリが必要で、方策オフ型の手法にしか使えないという制約があります。方策勾配法は基本的に方策オン型なので、Experience replayをそのままは使えません。
補足:Advantage と n-step Return は別の話です
A3Cの「A」が指すのはアドバンテージ関数 \(A(s,a) = Q(s,a) - V(s)\) を使うことです。一方でA3Cの実装では、収益の推定に1ステップではなく数ステップ分の報酬をまとめて使う「n-step Return」も採用されています。この2つはよく混同されますが、別々の工夫です。1ステップの \(A = R + \gamma V(s') - V(s)\) だけでも、アドバンテージを使っていることに変わりはありません。
A3Cはまったく違う解決策をとります。多数のエージェントをそれぞれ別の環境で同時に動かすのです。各エージェントは異なる状況を経験するため、集まってくる勾配は自然とバラバラになります。つまり並列化そのものが、データの相関を下げる働きをするわけです。
| 項目 | DQN | A3C |
|---|---|---|
| 種類 | 価値ベース | Actor-Critic(方策ベース+価値) |
| 方策の型 | 方策オフ型 | 方策オン型 |
| 相関を断つ方法 | Experience replay | 非同期・並列実行 |
| リプレイバッファ | 必要(メモリを消費) | 不要 |
| 行動空間 | 離散が基本 | 離散・連続のどちらも扱える |
| その他の利点 | — | 分散学習により学習を高速化できる/RNNやLSTMを使い時系列を考慮できる |
A2C — 同期版という派生
A3Cから「非同期(Asynchronous)」を外したA2C(Advantage Actor-Critic)という手法もあります。こちらは各エージェントの結果をまとめて同期的に更新します。実装が単純で、GPUを効率よく使えるため、実用上はA2Cが選ばれることも多くあります。「A3Cの3つ目のAは非同期」という点を押さえておけば、両者の違いで迷うことはありません。
シラバス上の位置づけ
本章はシラバスの「4.深層学習の応用(7)深層強化学習」にあたります。出題範囲は「ⅰ.深層強化学習のモデル」の1項目のみで、細項目はDQNとA3Cの2つです。
| 細項目 | キーワード | 本ページの該当箇所 |
|---|---|---|
| DQN | 行動価値関数、TD学習、Q学習、Experience replay | 2章・3章・4章 |
| A3C | 方策勾配法(Policy Gradient)、Actor-Critic法 | 5章・6章 |
キーワードの数だけ見ると少なく感じますが、DQNを理解するにはQ学習が、Q学習を理解するにはTD学習と行動価値関数が必要という積み上げ構造になっています。本ページで1章から順に説明しているのはこのためです。なおSARSA・モンテカルロ法・ε-greedy法・A2Cなどはシラバスのキーワードには含まれませんが、上記の理解を助けるため、比較対象として本文で触れています。
キーワードまとめ
行動価値関数、TD学習、Q学習、Experience replay、方策勾配法(Policy Gradient)、Actor-Critic法
この分野の理解度をチェック!
最新シラバス対応のオリジナル模試で、本番レベルの問題に挑戦しませんか?
E資格オリジナル模試を見る →